ASWI Flashcards
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?
- pohled:
1) On Schedule
2) On Budget
3) To Specification - Pohled
1) Plní potřeby skutečné potřeby stakeholderů
2) Doručuje sw vysoké kvality se snadnou údržbou
3) Poskytuje nejlepší ROI
4) Doručuje když je projekt vhodný k předání
Čí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
- Technické
- Komunikace
- Plánování
- Modelování
- Konstrukce
- Nasazení - Podpůrné
- Řízení
- Kontrola kvality
- Správa konfigurace
- Správa prostředí
- Dokumentace
Programování != SW inženýrství
Sw proces: role
- Technické
- analytik
- architekt
- vývojář
- správce konfigurace
- tester
- databázový specialista - Manažerské
- team leader
- technický vedoucí projektu
- šéf vývojářů
- šéf projektu
- CTO
- CEO - Podpůrné
- poradce
- lektor
- už. podpora
- dokumentace
Příklad rolí Scrum/RUP
Scrum:
- Team
- Product owner
- Scrum master
RUP:
podrobně cca 25 rolí
Význam artefaktů
- Preskriptivní metodiky
- artefakty jsou cílem fáze procesu - Empirický přístup
- artefakty jsou prostředkem
- cíl = smysluplný stav/přírůstek produktu
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.
- Každý projekt běží podle nějakého procesu.
- Metodika je přepis, který říká, jak by měl proces vypadat. (předdefinovaný proces).
- Proces se buď řídí metodikou, nebo je vlastně vytvářen projektem
Životní cyklus
- Životní cyklus ještě nad metodikou
1. vývoj
2. výroba
3. údržba
4. útlum
Vývoj a výroba součástí metodiky.
Varianty sw procesu (vykřičník)
- The “null” process
- Dle parametrů
- Míra cykličnosti činností (iterativní x vodopádové)
- Míra komplexnosti pravidel (low x high ceremony)
- Míra danosti pravidel (empirické x preskriptivní)
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ě
- plán pro celý projekt
- stepwise refinement (od abstraktního po konkrétní)
- oddělené mezirprodukty
Sledování plánu
- neměnny kontext
- zadání a technologie zřejmé
- typicky preskriptivní proces
Př:
- Vodopádový model (autor zamýšlel 2 iterace)
- V-model
Cyklický postup
- Opakování technických aktivit
- Produkt postupně roste
- Omezování rizika (kontext zřejmý, zadání nebo technologie nejasné)
Př:
- Spirálový model
- Iterativní přístup
Adaptivní postup
Cyklický postup:
- krátké iterace, důraz na technické disciplíny
- !empirický proces
- Adaptace na změnu
- Kontext, zadání proměnlivé, nejasné
- Změny rozsahu pravdědpodobné
- Technologie nevyzkoušené
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
- Čím větší projekt, tím pravděpodobnost úspěchu klesá
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