Tvorba software
Dvadsiata prvá prednáška
Stiahnuť PDF · 383 kBPreber si túto poznámku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto poznámky.
Náhľad poznámky
Fakulta riadenia a informatiky ŽU
Tvorba softvéru
1
Cieľ
Tvorba softvéru
životný cyklus softvéru
karty CRC
Príklad - taxislužba
2
Tvorba softvéru
projekty doteraz
– hotová definícia tried
definícia tried – najdôležitejšia časť práce
celý softvér je realizovaný triedami
životný cyklus softvéru
všetky činnosti tvorby a použitia
začiatok(narodenie) – rozhodnutie riešiť problém
koniec(smrť) – softvér sa prestane používať
niektorý softvér umiera bez použitia
3
Modely životného cyklu
vodopádový model – prvý formálny
špirálový model – princíp prototypu
UP (RUP)
– rozklad na iterácie
agilné metodiky
extrémne programovanie, Scrum, TDD
malé tímy (dvojice)
rýchle prototypy
4
Modely životného cyklu
rozsiahle projekty
– riešia veľké tímy
komunikácia – spoločný jazyk (UML)
konvencie
– zjednodušenie komunikácie
veľké tímy – špecializácia členov
5
Vodopádový model
analýza
návrh
implementácia
testovanie
údržba
6
Špirálový model – agilné metodiky
analýza
návrh
implementácia
testovanie
údržba
prototyp1
prototyp2
7
Model RUP (Rational Unified Process)
fázy
iterácie
činnosti
zahájenie rozpracovanie
tvorba
odovzdanie
biznis modelovanie
špecifikácia požiadaviek
analýza a návrh
implementácia
testovanie
nasadenie
1
2
3
4
5
6
7
8
riadenie projektu
8
Základné činnosti životného cyklu
analýza – pochopenie problému, model jadra
čo bude program robiť
návrh – doplnenie jadra, GUI, dátová vrstva
ako
to bude robiť
implementácia – písanie programu
urobme to
testovanie
– začína od analýzy
overme
, či všetko funguje ako má
nasadenie (údržba)
opravme
skryté chyby, zber nových požiadaviek
9
Jednoduché prostriedky analýzy
cieľ analýzy – vyhľadať a navrhnúť triedy jadra
metóda verb&noun
karty CRC
10
Popis problému - zadanie
stručný zápis podstatných častí formou textu –
slohová práca
klient nemá skúsenosti – nutná spolupráca
rozhovory, exkurzie, materiály, postupy
terminologický slovník domény
11
Príklad – taxislužba – zadanie
Taxislužba používa taxíky a mikrobusy. Taxíky prepravujú
jednotlivcov alebo skupiny ľudí z jedného miesta nástupu do
jedného cieľa. Mikrobusy sa používajú na zbieranie ľudí na
rôznych miestach nástupu a rozvoz do rôznych cieľov.
Taxislužba prijíma telefonické objednávky od jednotlivcov,
hotelov a cestovných kancelárií. Šofér taxíka i mikrobusu
oznamuje do centrály príchod do miesta nástupu aj do cieľa
cestujúceho. Centrála neudržuje žiadny systém čakajúcich,
objednávky prijíma len ak má voľné vozidlo.
Firma chce zistiť, či má rozšíriť vozový park, lebo rozširuje
oblasť, v ktorej poskytuje služby. Softvér by mal dať odpoveď
na otázky koľko zákazníkov museli odmietnuť, aký čas
strávia vozidlá jazdou bez pasažierov, koľko času stoja
nevyužité.
12
Rozbor zadania
– metóda verb&noun
podstatné mená – kandidáti na triedy
slovesá – kandidáti na operácie (správy,
metódy)
terminologický slovník domény
odstránenie synoným
odstránenie nepotrebných podstatných mien
opatrne, neponáhlať
13
Príklad – kandidáti na triedy(1)
Taxislužba používa taxíky a mikrobusy. Taxíky prepravujú
jednotlivcov alebo skupiny
ľudí z jedného miesta nástupu do
jedného cieľa. Mikrobusy sa používajú na zbieranie ľudí na
rôznych miestach nástupu a rozvoz do rôznych cieľov.
Taxislužba prijíma telefonické objednávky od jednotlivcov,
hotelov a
cestovných kancelárií. Šofér taxíka i mikrobusu
oznamuje do centrály príchod do miesta nástupu aj do cieľa
cestujúceho. Centrála neudržuje žiadny systém čakajúcich,
objednávky prijíma len ak má voľné vozidlo.
Firma
chce zistiť, či má rozšíriť vozový park, lebo rozširuje
oblasť, v ktorej poskytuje služby. Softvér by mal dať odpoveď
na
otázky koľko zákazníkov museli odmietnuť, aký čas
strávia vozidlá jazdou bez pasažierov, koľko času stoja
nevyužité.
14
Príklad – kandidáti na triedy(2)
podstatné mená v jednotnom čísle
taxislužba, taxík, mikrobus, jednotlivec, skupina, miesto
nástupu, cieľ, objednávka, hotel, cestovná kancelária, šofér,
cestujúci, centrála, vozidlo, firma, vozový park, oblasť,
služba, odpoveď, otázka, softvér, zákazník, pasažier
15
Príklad – odstránenie synoným(1)
taxislužba, centrála, firma – firma
jednotlivec, zákazník, pasažier, cestujúci – cestujúci
skupina
– vyjadruje počet cestujúcich – X (nepoužijeme)
taxík,
mikrobus,
vozidlo
– taxík aj mikrobus, spoločné veci
miesto nástupu, cieľ – poloha
objednávka, hotel, cestovná kancelária – zdroj cestujúcich
šofér – a vozidlo tvoria celok – X
vozový park – množina vozidiel
16
Príklad – odstránenie synoným(2)
softvér – budeme tvoriť – X
oblasť – reprezentovaná polohami – X
otázka – formulovať až keď bude model fungovať – X
odpoveď – súvisí z otázkou – X
17
Príklad – triedy
firma
cestujúci
taxík,
mikrobus,
vozidlo
poloha
zdroj cestujúcich
vozový park
18
Príklad – operácie(1)
firma
riadi taxíky a mikrobusy
prijíma objednávky
plánuje jazdy vozidiel
cestujúci
poloha
zdroj cestujúcich
žiada firmu o službu pre cestujúceho
19
Príklad – operácie(2)
taxík
prepravuje jedného cestujúceho (skupinu)
mikrobus
prepravuje jedného alebo viac cestujúcich
vozidlo
zoberie cestujúceho z polohy
prichádza na polohu
informuje firmu o nastúpení cestujúceho
informuje firmu o vystúpení cestujúceho
20
karty CRC
CRC: class
– responsibility – colaborators
fyzické karty – formát A6
názov triedy
spolupráca
zodpovednosť
21
Firma
má zodpovednosť
spolupracuje s
22
Vytváranie kariet CRC
dve etapy
slovný popis zodpovednosti triedy – 1. sada
návrh rozhrania triedy – správy – 2. sada
23
Vytváranie kariet CRC – prvá etapa
pre každú triedu karta s jej menom
riešenie pomocou scenárov
akú má trieda zodpovednosť
s ktorou triedou bude spolupracovať
riešenie v tíme - scenár
členovia tímu hrajú rolu triedy
spoločne rozoberajú priebeh – scenár
tímové testovanie – je to všetko?, je to správne?
24
Príklad – základný scenár
preprava cestujúceho z miesta nástupu do cieľa
začína objednávkou prepravy
postupnosť krokov realizujúcich scenár
Scenár – preprava cestujúceho
Zdroj cestujúcich vytvorí nového cestujúceho
Zdroj cestujúcich vygeneruje polohu a cieľ
cestujúceho
Cestujúci príjme polohu a cieľ
Zdroj cestujúcich požiada firmu o prepravu
cestujúceho
...
Taxislužba – CRC 1. etapa
25
26
Scenár do CRC(1)
Zdroj cestujúcich vytvorí cestujúceho
CRC
trieda
– ZdrojCestujucich
zodpovednosť – vytvorí cestujúceho
spolupracujúca trieda – Cestujuci
27
ZdrojCestujucich
zodpovednosť
vytvorí cestujúceho
spolupracovníci
Cestujuci
28
Scenár do CRC(2)
Zdroj cestujúcich vygeneruje polohu a cieľ
cestujúceho
29
ZdrojCestujucich
zodpovednosť
vytvorí cestujúceho
generuje polohu a cieľ
spolupracovníci
Cestujuci
Poloha
30
Scenár do CRC(3)
Cestujúci príjme polohu a cieľ
31
Cestujúci
zodpovednosť
prijme polohu a cieľ
spolupracovníci
Poloha
32
Testovanie scenára
členovia tímu hrajú role tried
simulujú scenár
testovanie v priebehu analýzy
kontrolujú, dopĺňajú alebo menia
zodpovednosť a spolupracujúce triedy
Doplnenie polymorfizmu
33
34
Karty CRC
– druhá etapa
návrh rozhrania triedy – správy – 2. sada
návrh identifikátorov správ vychádza zo
zodpovednosti triedy
zodpovednosť môže byť transformovaná do
viac ako jednej správy
správy a ich parametre (návratové hodnoty)
35
Scenár do CRC(1)
Zdroj cestujúcich vytvorí cestujúceho
36
ZdrojCestujucich
zodpovednosť
vytvorCestujuceho() : Cestujuci
spolupracovníci
Cestujuci
37
Scenár do CRC(2)
Cestujúci príjme polohu a cieľ
Atribúty cestujúceho
38
Cestujúci
zodpovednosť
new(Poloha paOdkial, Poloha paKam) :
Cestujuci
spolupracovníci
Poloha
Scenár do CRC(3)
Zdroj cestujúcich požiada firmu o prepravu
cestujúceho
okamžite po vytvorení
firma
– atribút
v parametri správy new
39
40
ZdrojCestujucich
zodpovednosť
new(Firma paFirma) : ZdrojCestujucich
vytvorCestujuceho() : Cestujuci
spolupracovníci
Cestujuci
Poloha
Firma
Scenár do CRC(4)
Firma prijíma žiadosť o prepravu cestujúceho
41
42
Firma
zodpovednosť
ziadostOPrepravu(Cestujuci) : void
spolupracovníci
Cestujuci
43
Prototypovanie -
iterácie
postupná realizácia návrhu
najdôležitejšie triedy – 20% tried robí 80% práce
spolupracujúce triedy – simulácia, konštantné
operácie
priebežné testovanie – unit testy
jeden scenár – iteračný krok
po každej iterácii – testy regresie
44
Implementácia prototypu(1)
z rozhraní – Java
metódy na začiatku prázdne telá
metódy s návratovou hodnotou
triviálny return null, 0, false
všetky metódy
UnsupportedOperationException
testovacie triedy na prázdne metódy
45
Implementácia prototypu(2)
prototyp je dobrý, lebo
zapojenie klienta do tvorby
vidí vznik produktu,
nadobudne dôveru vo výsledok
má pripomienky včas
má tendenciu podporovať tím
46
Dokumentácia
po vytvorení rozhrania tried
pred vlastnou implementáciou metód
dokumentácia triedy
dokumentácia metód
47
Priklad
– trieda Firma
public class Firma
{
private Vozidlo[] aVozovyPark;
public Firma()
{
int pocetVozidiel = 1;
aVozovyPark = new Vozidlo[pocetVozidiel];
}
public void ziadostOPrepravu(Cestujuci paCestujuci)
{
throw new UnsupportedOperationException();
}
...
48
Priklad
– trieda Taxik
/**
* Nastavi ciel pohybu taxika do miesta nastupu.
* Nastavenim ciela je taxik obsadeny.
*
* @param paPoloha Poloha miesta nastupu cestujuceho.
*/
@Override
public void chodNaNastup(Poloha paPoloha)
{
throw new UnsupportedOperationException();
}
A
ďalej to už poznáte...
Ďakujem za pozornosť
Automaticky vygenerovaný textový náhľad. Pre plné formátovanie si stiahnite súbor.
nechodím na prednášky