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
Ortogonální charakteristy výběru procesu pro projekt
1) Na zakázku / interní / krabicový / pro radost
2) Greenfield / brownfield / integrační produkt
3) Výzkum / Vývoj / Rozvoj / Údržba
4) Closed source / Open source
5) Utilita / Systémová komponenta / Business critical / Safety Critical
6) Komerční zákazník, státní sféra, vertikály
Vertikály př. banky x telcom banky -> potřeba stability telcom -> rychlé změny (nový balíček) Je dobré vědět pro koho dělám, co očekávám
Rozdíl program / produkt / systém
Program -> Produkt -> Systém
Při každém přechodu výš cca 3x obtížnější
Úrovně flexibility při volbě SW procesu
- Principy
- Metodiky a standardy
- Software process improvement
- Vlastní ad-hod úpravy
Jak funguje iterativní vývoj
- Rozdělelní projektu do řady miniaturních projektů
- Iteraci řeším vodopádově
- Cíl = iterační release (neúplný produkt)
- Opakovaný postup (téměř stále stejné aktivity)
Průběh iterace (vykřičník)
- Plánování
- cíle iterace
- funkčnost - Zpřesnění požadavků
- Úprava návrhu (pokud je třeba)
- Implementace
- Ověření
- Předání do provozu (validace zákazníkem)
- Zhodnocení
- Je dobré vnímat na úrovni jednotlivých požadavků
Parametry: počet a délka iterací
Počet:
- dle charakteru projektu
- obvykle alespoň 3
- dle fází vývoje
Délka:
- malá je lepší
- 1-4 týdny pro malé, 3-6 týdnů pro velké projekty
- produktivita vyšší při blízkém cíli
- psychologie: včas nutí k těžkým rozhodnutím a kompromisům
Techniky: Pravidla pro iterace
- Běžící iterace uzavřená vůči změnám
- Vždy pevné datum ukončení
- Iterace timeboxované = délka známá předem (každá iterace stejně dlouhá)
Techniky: Předání a zhodnocení (iterativní vývoj)
A) Customer demo
- Předvedení zákazníkovi (nebo ne)
- Interní x Externí release
- Akceptace (nebo také ne)
Explicitně naplánovaná událost
- Ne úplně na konci iterace (rezerva)
- Živý produkt (no slideware)
B) Retrospektiva
co se dařilo = co zachovat
co se nedařilo a proč = co změnit
jak můžeme být příště lepší
kořeny v Kaizen
Kontext iterace v procesu vývoje
Sprint X Release X Product
Daily Plan x Iteration Plan x Release Plan x Product Roadmap x Product Vision
- Iterace jako kolečkou v soukolí
- Pro stromy nevidět les
Viz obrázek
Globální řízení: milníky => fáze (vykřičník)
Cíl: eliminovat momentálně největší riziko, zabránit oddivergování projektu od původního cíle
- LCO = zahájení
- definování terče - Vize produktu - LCA = projektování
- určení způsobu řešení - architektura technického řešení
- ověření - modely, technické prototypy, testy (executable)
- vývojářská infrastruktura - IOC = konstrukce
- schopnost efektivně vyrobit řešení
- beta verze, all features
- unit a funkční testy - GA = nasazení
- uvést produkt do rutinního provozu
- support team v provozu
Výhody iterativního vývoje oproti sekvenčnímu
- Better progress profile
- nepřesnosti, nedospecifikované věci atd. se projevíc brzy, sekvenční na konci a projekt se protáhne - Přesnost odhadu ceny/času
- Ze začátku může být 4x větší/menší než skutečnost
- Jak postupujeme iterace zpřesňujeme odhady kvalifikovaněji než u sekvenčního vývoje
Fáze vývoje a charakter iterací
Základní schema pevné, mění se činnosti a artefakty
Zahájení – analytické činnosti, validace vize zákazníkem
1-2 iterace
Projektování – analytické a designérské činnosti,
ověřování prototypy, implementace
2+ iterací
Konstrukce – designérské a programátorské činnosti,
změnové řízení, testování a ověřování
N iterací,
Nasazení – integrační a konzultační činnosti, ověřování
provozem, náběh uživatelské podpory
1-2 iterace
PDCA
Metodika
Plan - Do - Check - Adapt (act)
Každá iterace PDCA cyklus
Význam plánování (eisenhower)
Plánování je nepostradatelné, ačkoliv se v průběhu ukáže, že ho stejně není možné 100% dodržet. Ale kdybysme neplánovali, tak narazíme na mnohem více problémů.
Základní fakta o plánování
1) Plánujeme konkrétní projekt
2) Rámec plánu udává metodika (iterace, plány, milníky)
3) Nějaký plán nutný vždy (harmonogram, přiřazení zdrojů)
4) Sledování plánu nutné vždy (kontrola postupu, reakce na změny/rizika)
Prediktivní plánování
- Plan the work, work the plan
- Pro sekvenční postup
Na začátku zmapuju, co je třeba udělat -> soupis prací, harmonogram do konce projektu
WBS - Work breakdown structure = rozpis prací
- Jasné milníky/artefakty
Problémy:
- velká míra nejistoty
- neznalost odhadů
- měnící se požadavky
Řešení:
- zkušenosti
- data z minulých projektů
- menší projekty
Adaptivní plánování
Přístup
- detailně plánovat možné jen to, na co máme data
- přesnější odhady a plán až po nějaké době
Typické pro adaptivní metodiky
Postup:
- základ = hrubý rozpis prací a harmonogram
- plán na N+1 krok zpřesněn poznatky z N (adaptace)
Základní problém = náročnost a orientace
- vyžaduje průběžné sledování a kvalitní management
- zvenku může působit nesystematicky
Co s tím: globální pevné body plánu předem
tj. - na začátku hrubý rozpis prací/harmonogram, naplánovat nejbližší období, další kroky řešíme včas později
Stupně volnosti při plánování (vykřičník)
Základ: čas, zdroje (cena), rozsah (funkčnost), kvalita
Klasicky: rozsah pevný, čas + zdroje plánované
- obtížně měnitelné, odhadované
- kvalita obtížně řiditelná
x typický požadavek: „bude to v termínu, s daným rozpočtem,
samozřejmě v bezchybné kvalitě “
x typická realita: „you get crappy SW late“
: Železný trojúhelník projektového plánování
-> Když chci snížit čas, musím zvýšit cenu nebo snížit kvalitu (rozsah plocha trojúhelníku, čas + kvalita + cena jeho body)
Agilně: čas + zdroje pevné, rozsah plánovaný
- nejlepší faktor pro řízení projektu
- nejsnáze měnitelný
- vhodná granularita
- snadné a přesné odhady
Estimate vs Commitment při plánování
- Plánování založeno na odhadech
- Nedá se to určit přesně, ale jakmile z toho je plán, tak se z toho udělá commitment
- Vzniklá stres/konflikt, když plán nevyjde
=> Princip: software development tvořivá činnost, nikoliv rutinní výrobní aktivita
Plán nemůže být commitment
Techniky pro plánování
1) Určení rozsahu
2) Určení kvality
3) Určení času
4) Určení nákladů
5) Určení pořadí aktivit a termínů
Určení rozsahu při plánování
= Co všechno má být hotovo
Rozsah (scope) = množství fcí a jejich charakter Sběr a analýza požadavků Work Breakdown Structure (WBS) - dekompozice problému - identifikace činností
Problémy
- „Feature Creep“ = vymýšlení dalších a dalších vlastností nad mez užitečnosti
- „Analysis Paralysis“ = jste schopní na rozboru věcí, co je potřeba strávit více čas než je nutné a odkládat tak samotnou práci
Určení kvality při plánování
DoD = You are not finished with a sprint/feature/story/task until it meets the benchmark defined by Done Project and team dependent Generally accepted traits
„Many Agile projects are not able to deliver value to the customer at the end of each sprint. The software these projects deliver at the end of each sprint is only half ready for release.“
Určení času při plánování
„Jak dlouho to bude trvat?“
- klíčová součást plánování (čas + zdroje => cena)
Čas => Praconost (effort)
Faktory: dopad činnosti, rozsah, kvalita, čas, úvazky lidí, …
Metriky
- člověko-hodiny (co znamená „6 člověko-hodin“)
6 člověko-hodin nemusí znamenat kalendářní hodiny
- Story points (obtížnost x hodiny)
Práce s časem
- ideální inženýrská hodina vs režie
- pesimismus vs optimismus dle role
Odhadování pracnosti
1) Analyticky
viz WBS => pracnost jako součet dílčích
2) Adaptivně
- Planning poker
- Wideband Delphi
3) Analogií a odhadem
- zkušenosti, data
4) Výpočtem
- nástrojem
Určení nákladů při plánování
- Kolik to bude stát
Cena:
- práce (vývoj)
- prostředků (auta, počítače, license)
- infrastruktury (elektřina)
- režie (sekretářka, obchodní zástupce)
Způsob určení:
- analyticky - pracnost, čas, cena
- tabulkově - typy prací a prostředků, objemy
- limitem - rozpočet omezený, od něj odvozený výkon
Make Vs. Buy
Určení pořadí aktivit a termínů
„Do kdy má být co hotovo?“
Klasicky: WBS → návaznosti → CPM / PERT → Gantt
určení závislostí prací (zdroje, technologické postupy)
graf projektu, analýza kritické cesty
-> Program Evaluation and Review Technique
zohlednění kalendářního času
-> zdroje, termíny
Klasický způsob někdy rizikový … proto
=> Řízení riziky
vyhodnotit rizikové faktory projektu
- designová/architektonická rizika, obchodní, legislativní
- neznámá funkčnost, použitelnost, …
začít částmi funkčnosti/designu s největší mírou rizika
=> Řízení prioritami klienta
určení pořadí výstupů je na zákazníkovi
- množství omezeno délkou časového úseku
- iterativní přístup: umožňuje pružně reagovat na aktuální potřeby
začít částmi s největším významem pro zákazníka
Okamžiky pro adaptivní plánování
- Na počátku projektu
hlavní cíle, hrubé odhady – pracnost, čas, zdroje => cena
viz „globální řízení projektu“ - Na začátku každé iterace
seznam aktivit (úkolů) s přesnými odhady => “customer demo”
(aktualizace plánu projektu)
viz “průběh iterace”
X. Během iterace
… se neplánuje, pokud možno
Pozn.: Nutný předpoklad: jsou zachycené požadavky
Plánování projektu v iterativním vývoji
Výchozí bod: vize produktu
Okamžik: fáze zahájení projektu
- Odhadnout pracnost (rámcově)
- hrubé WBS, člověko-měsíce - Definovat milníky
- po stupních přesnosti, míře rizika
- (vodopád: po činnostech) - Rozdělit prj na oddělené fáze
- jasné určení cílů a výsledků
- 1 fáze = 1..N iterací, jejich rámcové definování
Plánování iterace
Cíle: určit účel iterace, podmnožinu funkčnosti k implementaci (např. implementovat kostru programu)
Kdy:
- první den iterace (nejpozději)
- průběžná příprava podkladů
Odhadnout pracnost <=> vybrat požadavky
Definovat jednotlivé úkoly
- přechod od “requirements” k “change management”
Stanovit finální obsah iterace
Výsledek
- Plán iterace / iterační backlog
Planning Meeting – postup
Naplánování miniprojektu
0. Cíl: co má být výsledkem iterace (business value)
1. Určení / výběr požadavků
podmnožina „DSP“ odpovídající cíli, úroveň „use case“
využívá dosud získané informace o požadavcích (priority)
2. Zpřesnění požadavků <=> odhad pracnosti
zdroje: obsah vybraných požadavků + „Done“
rozpad na úkoly (tasks)
3. Určení a commitment prací
co je nejdůležitější + co je reálné udělat => co bude uděláno
(vy)řazení / výměna úkolů
přístupy: direktivní / týmové / Planning Game
4. Vytvoření plánu
forma: dle dané míry ceremonie
Vypíchnutí:
- Plán je dohoda týmu -> commitment
- Část zpřesnění požadavků a odhad pracnosti mimo meeting
Zpřesňování požadavků
Pro plánování nutné odhady, pro ně detaily požadavků
Podklady:
specifikace požadavků (Vize, DSP, backlog, info od zákazníka, …)
architektonické informace, dostupnost zdrojů
Postup:
vyjasnění konkrétní funkčnosti / EFR se zákazníkem
vytvoření návrhu pro realizaci (model, aspoň „v hlavě“ či na tabuli)
stanovení realizačních prací (viz Definition of Done)
Výsledek: 1 requirement => 1..M úkolů v plánu iterace
Úkoly (Work Item, Task)
Povaha:
implementace části požadavku
technické, podpůrné a administrativní aktivity
Vlastnosti: konkrétnost
zadání, kritéria splnění
komu přiřazeno
termín
odhad pracnosti [hod] – max 1 pracovní den
související úkoly (nadřazený / blokující / …)
Forma:
post-it
úkolovník (Trello ap.)
ALM
Tradiční přístup: Iteration Plan (Dokument jako plán)
Obsah
úkoly k realizaci funkčnosti
opravy chyb
organizační atd aktivity
- Odhad pracnosti a alokace zdrojů
- Priorita, návaznosti
- Dokument
Agilní metodiky: Backlog jako plán (vykřičník)
Zahrnuje • požadavky • priority • odhadování • plánování • průběh
Product backlog
- epics + user stories = požadavky na produkt
Iterační backlog
- stories + tasks = plán iterace
Priority, rozpracovanost položek
=> pořadí implementace
Aktivity související s používáním backlogu
- Produktový: backlog grooming, dot voting
- Iterační: planning meeting/game, daily standup
Zkratka DEEP
Zkratka DEEP:
- Detailed Appropriately
Items in the backlog should contain enough contextual information for you cross-functional team to understand and discuss. Higher-priority user stories will have greater detail and context and be clearly defined.
- Estimated
The effort involved with each user story should roughly estimate with a standardized measure agreed upon by the team. While lower-priority items will have less precise estimates than items at the top of the backlog, all items should have at least a rough estimate
- Emergent
Because a product backlog evolves, it’s easy to add new stories and items—or remove them—as new information arises. Nothing is permanent.
- Prioritized
Items on the backlog are ranked based on their value and the strategic purpose(s) they serve, with higher-value items placed at the top.
Vztah produktového backlogu a iteračním backlogem
Iterační backlog je mapován na položky v produktovém backlogu
Štíhlé přístupy
Kanban board
TODO - DOING - DONE
- průběžný vývoj
- toto je třeba udělat, kdo má zrovna čas pracuje na úkolu
Sledování průběhu (plánu)
Nutnost. Důvody:
rozpoznat blížící se riziko
schopnost reagovat na změnu
Project tracking and oversight
cíl vs aktuální stav
odhadovaný vs skutečně strávený čas
Metody
metriky – produktové (velikost, kvalita), procesní (velocity, burnup)
reporting – analytické nástroje
transparentnost – veřejně přístupný plán („information radiator“)
komunikace – schůzky, XP role „Tracker“
Komunikace pro sledování postupu
1) Schůzky a porady (s vazbou na nástroje a metriky)
- plánovací
- kontrolní dny
2) Scrum / agile: Dauily Standup
- 15 minut standing up
- what have you been doing since last standup
- what will you be doing
- do you have any obstacles
3) Průběžné zjišťování
- management by walking around
Burndown chart (vykřičník)
Vodorovná osa čas
Svislá osa pracnost
Dvě křivky
1) Časový plán (interpolace odhadovaných hodin)
2) Skutečnost (jak se daří plán plnit)
Když zjistím, že nestíhám, tak můžu snížit rozsah
Když jsem zapomněl něco naplánovat, tak burndown chart užitečný, jestli stíhám
Úprava postupu
Výchozí zkušenosti
plán není nedotknutelný
ani krátkodobé plány (iterace) se vždy nepovedou
Uvnitř iterace
opravdu nutné?
výjimečné stavy a jejich řešení
Mezi iteracemi
ideální chvíle pro reflexi a úpravy (plán, proces)
viz retrospektiva iterace
Určení výkonnosti týmu
Viz „globální řízení“ iterativního vývoje
chceme dosáhnout vize
umíme odhadovat (víceméně) pouze iterace
Zákazník: „Kdy to tedy bude hotovo?“
Team velocity
faktory: tým (lidi) + požadavky (pracnost) + plán (čas) + realita (změny)
průměrná, přibližná hodnota (>= 3 iterace)
Použití pro další plánování (ne pro hodnocení)
Fáze zahájení: Přehled a cíle
RUP a DAD „Inception“ původní Scrum “Pre-game”
Nápad -> poptávka -> nabídka -> zformování vize || kontrakt -> zahájení projektu
Cíl fáze:
„To achieve concurrence among all stakeholders on the lifecycle objectives for the project“
vize produktu – co se má vytvořit
business case – zdůvodnění, že se to vyplatí
technický koncept – ověření proveditelnosti
- důležité porozumění mezi stakeholdery, aby projekt nedivergoval
Milník: LCO
Role analytika ve fázi zahájení
Analytik
1) analyzuje problém
2) snaží se porozumět potřebám stakeholderů
3) definuje systém a rozsah
Výstupem:
1) vize projektu
2) požadavky
Požadavky jsou:
1) identifikované
2) nastíněné (outline)
3) prioritizované
Charakteristiky fáze zahájení
Důležitá zejména pro nově zahajované projekty
pokračující / well-defined projekty: význam pro znovu-ověření předpokladů a odhadů
Počáteční „chaos“ => důsledky pro plánování iterací
Význam „měkkých“ disciplín
= business modelování
= komunikace
Fáze projektování: Přehled a cíle
RUP a OpenUP „Elaboration“, DAD část „Construction“
Zahájený projekt (vize) => sběr a analýza požadavků => návrh architektury technického řešení => ověření návrhu => příprava na vývoj
„To baseline the architecture of the system to provide a stable basis for … the design and implementation effort “
- > rozumně kompletní DSP – všechny klíčové/kritické požadavky
- > architektura – základní rysy technického řešení
- > vývojářská infrastruktura – prostředí pro realizaci
Milník: LCA
Fáze zahájení: Klíčové disciplíny a aktivity
rozsah a hranice projektu návrh ceny a harmonogramu acceptance criteria klíčové funkcionality (use cases) a omezující podmínky koncept technické architektury ověření proveditelnosti určení rizik příprava prostředí projektu
Zakroužkované na obrázku: Requirements
Fáze projektování: Klíčové disciplíny a aktivity
doladění vize sběr požadavků zpřesnění klíčových požadavků návrh architektury validace architektury výběr technologií a komponent ujasnění procesu příprava vývojového prostředí naplánování iterací pro realizaci
Zakroužkované na obrázku: Analysis & Desing, Environment
Role analytika ve fázi projektování
Analytik:
1) Zpřesňuje systém
2) Řízení požadavků
3) Změny požadavků
Výstupem:
1) Change requests
2) Detailnější požadavky
Požadavky: co, proč, kdy
Sběr požadavků, analýza: co se chce
pochopení problému
model reálného/projektovaného světa
podklady – realizace, plán
(Návrh: jak to realizovat)
Úrovně detailu
zahájení projektu: klíčové, obrysy
projektování: podstatné, úplnost
konstrukce: podrobnosti
Pozn: Fáze zahájení a projektování. Disciplíny „requirements“ a „analýza+návrh“
Požadavek definice
Schopnost nebo vlastnost, kterou má
software mít, aby jej uživatel mohl používat k vyřešení
problému nebo dosažení cíle, který vedl k zadání, nebo aby splnil podmínky stanovené smlouvou, standardem, nebo jinou specifikací.
nepotřebuje-li uživatel X, není X požadavkem
požadavky jsou omezeny vnějšími podmínkami
Účel specifikace požadavků:
popsat zadání tak, aby se z toho dalo vycházet pro implementaci =>
srozumitelnost pro zákazníka, jednoznačnost+struktura pro vývojáře
Typy požadavků (vykřičník)
A) Jádro týkající se SW:
1) Funkční požadavky (to co najdete v menu)
2) Business rules (pravidla, které zpřesňují funkčnost)
3) Constraints (musí vyhovovat zákonu o veřejných zakázkách např.)
4) Mimofunkční (jak rychle, jak často, jak dobře… vlastnosti)
B) Businessové požadavky (zvýšit počet zákazníků v předvánočním období)
C) Systémové požadavky (požadavky na systém, např. celková spotřeba robota)
D) Smluvní požadavky (termín dodání, správná dokumentace)
E) Právní požadavky (GDPR)
Kategorie funkčních požadavků
Klasifikace funkčnosti do čtyř kategorií jaké informace systém obsahuje, udržuje jaké funkce poskytuje uživatelům jaké analýzy dat provádí jaké jsou interakce s jinými systémy
Pro každý druh příslušné vlastnosti
stačí jednoduché seznamy
+ not this time (až příště)
mimo rozsah zadání
doplňková funkčnost
Lidé v analýze
Zákazník (právnická osoba)
externí, interní
doménový expert
x Uživatel (fyzická osoba)
Zainteresovaný hráč (stakeholder)
ředitel / investor / standardizační orgán / daňový poplatník
vliv na úspěch projektu
Analytik
zprostředkovatel mezi zákazníkem a programátory
Postup práce s požadavky (vykřičník)
A) Reqts development (zachycení požadavků a počáteční rozvoj)
1) Zjištění požadavků (elicit)
2) Analýza požadavků + komunikace (negotiate)
potenciálních požadavky -> stabilní (pevné) požadavky
3) Dokumentace požadavků
4) Revidování požadavků (review)
-> baselined požadavky (závazné)
B) Reqts management (změny požadavků)
Účel definice systému
Základní, stručný popis účelu projektovaného systému
Vyjádřit cíl projektu
soulad zákazník - dodavatel
zabránit divergování během vývoje
prevence nárůstu požadavků (feature creep)
Etalon pro zhodnocení úspěšnosti projektu
Rozsah definice systému
Stručný popis problému
25 slov / jeden odstavec k čemu má systém sloužit jaké informace bude udržovat kdo jej bude používat co přinese, čemu pomůže
Tisková zpráva
jak si představujeme výsledné řešení
Šablona RUP • problém … • postihuje … [koho] • což vede k … [důsledky] • řešení bude … [cílový stav]
Kontextový model (definice systému)
Zobrazení vztahů systému s okolními entitami
systém jako černá skříňka
aktéři, stakeholders
ostatní systémy
Rozsah systému
Rozhraní na okolí
HCI, API, data
Vize produktu a rozsah projektu
Popis cíle, který má vzniknout
esenciální, klíčové, vysoko-úrovňové požadavky
„problem behind the problem“
Související artefakty:
+ Business case: proč se to chce
-> zdůvodnění výhodnosti-návratnosti projektu
Požadavky: co to má dělat
Též např. Concept of Operations, Definice systému, …
Vize produktu: kostra (vykřičník)
Popis problému a účelu
smysl a účel cílového produktu
obchodní příležitost, důvod ekonomické návratnosti
Přehled stakeholders
kdo jsou zájemci o systém, typy uživatelů
(potenciální konkurence)
Přehled očekávaných schopností a funkcí produktu
popis, kvalitativní charakteristiky, priority
stručný výčet bez detailů
Omezení, standardy, závislosti
vztahující se k projektu
(Rámec plánu projektu)
časový rozsah, plánované verze / vydání
Use Case - definice
Sekvence akcí, které systém provádí v důsledku nějakého vnějšího podnětu a které vedou k výsledkům viditelným pro některého jeho uživatele.
-> elementární business process -> pro aktéra proces užitečný
Definice systému s případy užití (vykřičník)
1) Víme jaká je vision and scope
2) Víme kdo jsou aktéři
3) Známe základní skupiny připadů užití
4) Od každého use casu máme stručný popis
UML připady užití mapuje aktéry na případy užití