Proč se zaobírat SW inženýrstvím? (motivace)
Studie 95:
15 % -> Success
55 % -> Challenge
30 % -> Failure
O 20 let později:
Failure stále kolem 10 %,
ale různé metodiky různé výsledky
+ dají se najít příklady, kdy selhání vývoje SW mělo fatální finanční důsledky
Profesionalita a etika softwarového inženýra
Rozhodnutí SW. inženýra má dopady na fungování společnosti, tudíž by měl přijmout zodpovědnost za tato rozhodnutí. (profesionál vs. expert)
Př. bubliny na sociálních sítí zvyšují polarizace společnosti, vysoce návykové hry/webové stránky
Co s tím?
Learn: Studovat i věci mimo informatiku, filozofii etiku etc., poučení se z minulosti
Think: Zvažovat možnosti zneužití vyvíjeného SW
Act: Např. odejít z firmy, které se nechová eticky. Whistleblowing
Educate: Vzdělávat lidi i z jiných profesí
Connect: LinkedIn např.
Jak definovat úspěch softwarového projektu?
Čím dál více se posouvá vnímání úspěchu k 2. pohledu
Příčiny selhání SW projektu
1) Nefunguje komunikace se zákazníkem
2) Nefunguje náš vlastní management a proces
Z toho vycházíme při vývoji SW, abychom zvýšili pravděpodobnost úspěchu.
Příčiny úspěchu SW projektu
1) Správná metodika
2) Lidi kteří tomu rozumí (makáči)
Cesta ven z vysokého podílu neúspěšných projektů:
1) Dobře zvolený přístup
2) Dobře provozované konkrétní technické aktivity
3) Lidi, kteří to umějí uřídit
Softwarový proces - principy (vykřičník)
Proces: Systematická série akcí vedoucí k určitému výsledku
Softwarový proces: výsledek = kvalitní software
Prvky každého procesu: 1. Čas (činnosti, fáze) 2. Činitelé (role) 3. Výstupy (artefakty) \+ návody a nástroje
Sw proces: aktivity
Programování != SW inženýrství
Sw proces: role
Příklad rolí Scrum/RUP
Scrum:
RUP:
podrobně cca 25 rolí
Význam artefaktů
Testovací příklady jako cíl / testovací příklady jako prostředek k dobře otestovanému SW
Proces X Projekt X Metodika
Projekt:
cíl, čas, zdroje
V určeném čase dojít k nějakému cíli. Jsou dostupné nějaké zdroje.
Životní cyklus
Vývoj a výroba součástí metodiky.
Varianty sw procesu (vykřičník)
Z toho vyplývá:
A) Sekvenční - vodopád
B) Iterativní - RUP
C) Adaptivní - eXtreme Programming
There is no silver bullet
The null process
Buď analýza -> kódování
V horším případě jen kódování
Sekvenční postup
Hlavní technické aktivity lineárně po sobě
Sledování plánu
Př:
Cyklický postup
Př:
Adaptivní postup
Cyklický postup:
Agilní manifest
Jednotlivci a interakce před procesy a nástroji
Fungující software před vyčerpávající dokumentací
Spolupráce se zákazníkem před vyjednáváním o smlouvě
Reagování na změny před dodržováním plánu
Jakkoliv jsou body napravo hodnotné,
bodů nalevo si ceníme více.
Varianty procesu x míra nejistoty
2. S adaptivními metodikami větší šance uřídit větší projekt
Metodiky pro adaptivní přístup
Extrémní programování Scrum DAD = disciplined agile delivery SAFe = scaled agile framework LeSS = large scale scrum
Alternativy dodávek funkčnosti
1) Velký třesk - na konci najednou
2) Přírůstkově - na základě plánu, úpravy obtížné
3) Evolučně - cíl -> dodávka -> zpřesnění
Vazba SW procesu na obchodní model
1) Na začátku výsledná cena -> produkt dodaný -> dle smlouvy. Změny účtované zvlášť.
2) Rozdělení projektu na dvě fáze.
A) Analytická
B) Realizace, nasazení
Každá fáze vlastní smlouva. Výsledky první fáze vstup do druhé fáze.
3) Na začátku rámcová smlouva. Placeno po částech na konci určitého úseku.
4) Předplatné. Produkt dodáván jako služba.
Driving forces při výběru procesu pro projekt
1) Velikost problému
2) Složitost problému
3) Míra nejistoty
4) Návaznosti projektu
5) Kritičnost systému
6) Definice úspěchu
7) Charakter týmu
8) Typ a chování zákazníka