Difference between revisions of "Simulace implementace SW projektu pro potreby PM"
(→Model) |
(→Výsledky) |
||
(23 intermediate revisions by the same user not shown) | |||
Line 30: | Line 30: | ||
[[File:PM_Sumulace_SF.png|900px|down|]] | [[File:PM_Sumulace_SF.png|900px|down|]] | ||
− | |||
− | + | ===Proměnné modelu=== | |
− | |||
− | ==Proměnné modelu== | ||
Proměnné modelu, které je možné v rámci simulace měnit a sledovat, jak se změna projeví v rámci systému: | Proměnné modelu, které je možné v rámci simulace měnit a sledovat, jak se změna projeví v rámci systému: | ||
Line 42: | Line 39: | ||
Počáteční hodnota: 200 (Rosah 1 - 2000) | Počáteční hodnota: 200 (Rosah 1 - 2000) | ||
− | ---- | + | ---- |
'''Complexity''': reprezentuje rozsah, obecnost a také míru nepřesnosti průměrného požadavku. Použitou jednotkou je StoryPoint. | '''Complexity''': reprezentuje rozsah, obecnost a také míru nepřesnosti průměrného požadavku. Použitou jednotkou je StoryPoint. | ||
Počáteční hodnota: 21 (1 - 56) | Počáteční hodnota: 21 (1 - 56) | ||
− | ---- | + | ---- |
'''AnalysisVelocityPerDay''': Udává rychlost analýzy v počtech StoryPoints za den. | '''AnalysisVelocityPerDay''': Udává rychlost analýzy v počtech StoryPoints za den. | ||
Počáteční hodnota: 20 (0 - 20) | Počáteční hodnota: 20 (0 - 20) | ||
− | ---- | + | ---- |
'''ImplementationVelocityPerDay''': Udává rychlost implementace v počtech StoryPoints za den. | '''ImplementationVelocityPerDay''': Udává rychlost implementace v počtech StoryPoints za den. | ||
Počáteční hodnota: 5 (0 - 40) | Počáteční hodnota: 5 (0 - 40) | ||
− | ---- | + | ---- |
'''TestingVelocityPerDay''': Udává rychlost testování v počtech StoryPoints za den. | '''TestingVelocityPerDay''': Udává rychlost testování v počtech StoryPoints za den. | ||
Počáteční hodnota: 5 (0 - 20) | Počáteční hodnota: 5 (0 - 20) | ||
− | + | ---- | |
'''FailRate''': Udává procento chybovosti při testování. | '''FailRate''': Udává procento chybovosti při testování. | ||
Počáteční hodnota: 0.2 (0.01 - 0.99) | Počáteční hodnota: 0.2 (0.01 - 0.99) | ||
+ | ===Stocks === | ||
+ | |||
+ | '''AnalysisDays''': Počet dní potřebných pro analýzu a kdy. | ||
+ | |||
+ | Vzorec: +ActiveAnalysisDay | ||
---- | ---- | ||
− | |||
− | Vzorec: | + | '''Bugs''': Chyby nalezené během testování se vracejí zpět k analýze a implementaci. |
+ | |||
+ | Vzorec: BugsDiscover - AnalysisOfBugs | ||
---- | ---- | ||
− | '''Analysis''': je tok, který zajišťuje přeměnu Requirements | + | '''ImplementationDays''': Počet dní potřebných pro implementaci a kdy. |
+ | |||
+ | Vzorec: +AddActiveImplementationDay | ||
+ | ---- | ||
+ | '''Requirements''': Stav představující rozsah projektu po obdržení požadavků. Požadavky jsou v průběhu Analýzy převáděny na zadání práce pro vývojáře WorkToDo. | ||
+ | |||
+ | Počáteční hodnota: NumberOfRequirements*Complexity | ||
+ | |||
+ | Vzorec: -Analysis | ||
+ | |||
+ | ---- | ||
+ | '''TestingDays''': Počet dní potřebných pro testování a kdy. | ||
+ | |||
+ | Vzorec: +AddActiveImplementationDay | ||
+ | ---- | ||
+ | |||
+ | '''TimeSpent''': Celkový čas potřebný pro realizaci projektu. | ||
+ | |||
+ | Vzorec: IF THEN ELSE( | ||
+ | (Requirements + WorkToDo + WorkDone + Bugs) > 0 , + 1 , + 0 ) | ||
+ | ---- | ||
+ | '''TotalStoryPoints''': Celkový rozsah projektu včetně bugů. | ||
+ | |||
+ | Vzorec: AddPoints | ||
+ | ---- | ||
+ | |||
+ | '''WorkAccepted''': Funkcionalita, která úspěšně prošla testováním. | ||
+ | |||
+ | Vzorec: Implementation-Accepting-BugsDiscover | ||
+ | ---- | ||
+ | '''WorkDone''': Nová funkcionality systému, která je určena k testování. | ||
+ | |||
+ | Vzorec: Implementation-Accepting-BugsDiscover | ||
+ | ---- | ||
+ | |||
+ | '''WorkToDo''': Technická dokumentace připravená ke zpracování vývojovým týmem. V průběhu testování do ní přibívají í opravy bugů. | ||
+ | Počáteční hodnota: 0 | ||
+ | |||
+ | Vzorec: Analysis+AnalysisOfBugs-Implementation | ||
+ | ---- | ||
+ | |||
+ | ===Flows === | ||
+ | |||
+ | '''Accepting''': je tok, který zajišťuje přeměnu WorkDone na WorkAccepted, tj. konečnou fázi a cíl projektu. | ||
+ | |||
+ | Vzorec: IF THEN ELSE((WorkDone>0:AND:TimeSpent>TestingStartDelay), MIN(WorkDone, TestingVelocityPerDay*(1-FailRate)) , 0 ) | ||
+ | ---- | ||
+ | |||
+ | '''Analysis''': je tok, který zajišťuje přeměnu Requirements na technickou specifikaci WorkToDo, tj. zadání práce pro vývojový tým. | ||
+ | |||
+ | Vzorec: IF THEN ELSE(Requirements>0, MIN(Requirements, AnalysisVelocityPerDay) , 0 ) | ||
+ | ---- | ||
+ | |||
+ | '''AnalysisOfBugs''': je tok, který reprezentuje převod nalezených chyb na technický popis WorkToDo. | ||
Vzorec: IF THEN ELSE(Requirements>0, MIN(Requirements, AnalysisVelocityPerDay) , 0 ) | Vzorec: IF THEN ELSE(Requirements>0, MIN(Requirements, AnalysisVelocityPerDay) , 0 ) | ||
+ | ---- | ||
− | + | '''BugsDiscovery''': je tok, který reprezentuje odhalování chyb v průběhu testování. | |
− | + | Vzorec: IF THEN ELSE((WorkDone>0:AND:TimeSpent>TestingStartDelay), MIN( (TestingVelocityPerDay*FailRate) , WorkDone*FailRate ) , 0 ) | |
+ | ---- | ||
− | ===Kód | + | '''Implementation''': je tok, který zajišťuje implementaci technické dokumentace WorkToDo a vznik nové verze aplikace připravené k testování. Začátek implementace je možné zpozdit oproti analýze. V modelu je nastaven začátek implementace až po zkončení analýzy. |
+ | |||
+ | Vzorec: IF THEN ELSE(WorkToDo>0 :AND: TimeSpent > ImplementationStartDelay, MIN(ImplementationVelocityPerDay, WorkToDo ) , 0 ) | ||
+ | ---- | ||
+ | |||
+ | ==Výsledky== | ||
+ | |||
+ | Na běžícím modelu je možné měnit hodnoty jednotlivých proměnných a vidět jejich vliv na průběh implementace projektu a vizualizovat je přímo v kontextu projektu. | ||
+ | |||
+ | [[File:PM_Simulace_Running.png|900px|down|]] | ||
+ | |||
+ | |||
+ | ==Závěr== | ||
+ | I když je model velice jednoduchý a zdaleka nezachycuje všechny aspekty životního cyklu projektu, mohl by být využit jako Proof of Concept možného využití modelu systémové dynamiky pro potřeby projektového managementu. | ||
+ | |||
+ | ==Kód== | ||
[[File: PMSimulation_Pavl11.mdl]] | [[File: PMSimulation_Pavl11.mdl]] | ||
− | + | == Zdroje == | |
− | |||
LI, Suinan. A generic model of project management with Vensim. 2008. Master's Thesis. Universiteteti Agder/Agder University. | LI, Suinan. A generic model of project management with Vensim. 2008. Master's Thesis. Universiteteti Agder/Agder University. |
Latest revision as of 22:09, 10 June 2024
Contents
Simulace implementace SW projektu pro potřeby projektového řízení
Zadání
Název simulace: Simulace implementace SW projektu pro potřeby projektového řízení
Předmět: 4IT495 Simulace systémů
Semestr: LS 2023/2024
Autor: Lucie Pavlová
Typ modelu: Systémová dynamika
Modelovací nástroj: Vensim
Cíl
Cílem simulace projektu pomocí Vensim je vizualizovat jednotlivé kroky softwaroveho projektu a umožnit tak celkový pohled a odhad reakce systému na změny v jednotlivých vstupech. Díky simulaci by mělo být možné odhadnout, jaký je optimální poměr mezi rychlostí analýzy, implementace a testování, tak aby nedocházelo k prodlevám, ale tým nebyl ani přetížený. Například pokud přidáme kapacity do týmu testování, pozitivní efekt na termín dodání se nemusí projevit, protože nebude, co testovat. Jednou z metrik průběžně sledovaných v průběhu projektu je velocity (produktivita) týmu v počtech StoryPoints za Sprint. Aktuální hodnota Velocity analýzy, implementace a testování, může být dosazena do modelu a projektový manažer vidí efekt na konečný termín dodání. Cílem projektového řízení je také plánování nasazení jednotlivých rolí, tak aby na sebe práce plynule navazovali, nedocházelo k čekání, ale ani přetíženíjednotlivých rolí. Simulace poskytne odhady času potřebného od jednotlivých členů týmu a umožní simulovat načasování práce bude nejefektivnější.
Metoda a prostředí simulace
Simulace je realizována prostřednictvím nástroje Vensim.
Model
Diagram stavů a toků
Proměnné modelu
Proměnné modelu, které je možné v rámci simulace měnit a sledovat, jak se změna projeví v rámci systému:
NumberOfRequirements: celkový počet funkčních požadavků v úvodu projektu, ovlivňuje rozsah projektu.
Počáteční hodnota: 200 (Rosah 1 - 2000)
Complexity: reprezentuje rozsah, obecnost a také míru nepřesnosti průměrného požadavku. Použitou jednotkou je StoryPoint.
Počáteční hodnota: 21 (1 - 56)
AnalysisVelocityPerDay: Udává rychlost analýzy v počtech StoryPoints za den.
Počáteční hodnota: 20 (0 - 20)
ImplementationVelocityPerDay: Udává rychlost implementace v počtech StoryPoints za den.
Počáteční hodnota: 5 (0 - 40)
TestingVelocityPerDay: Udává rychlost testování v počtech StoryPoints za den.
Počáteční hodnota: 5 (0 - 20)
FailRate: Udává procento chybovosti při testování.
Počáteční hodnota: 0.2 (0.01 - 0.99)
Stocks
AnalysisDays: Počet dní potřebných pro analýzu a kdy.
Vzorec: +ActiveAnalysisDay
Bugs: Chyby nalezené během testování se vracejí zpět k analýze a implementaci.
Vzorec: BugsDiscover - AnalysisOfBugs
ImplementationDays: Počet dní potřebných pro implementaci a kdy.
Vzorec: +AddActiveImplementationDay
Requirements: Stav představující rozsah projektu po obdržení požadavků. Požadavky jsou v průběhu Analýzy převáděny na zadání práce pro vývojáře WorkToDo.
Počáteční hodnota: NumberOfRequirements*Complexity
Vzorec: -Analysis
TestingDays: Počet dní potřebných pro testování a kdy.
Vzorec: +AddActiveImplementationDay
TimeSpent: Celkový čas potřebný pro realizaci projektu.
Vzorec: IF THEN ELSE( (Requirements + WorkToDo + WorkDone + Bugs) > 0 , + 1 , + 0 )
TotalStoryPoints: Celkový rozsah projektu včetně bugů.
Vzorec: AddPoints
WorkAccepted: Funkcionalita, která úspěšně prošla testováním.
Vzorec: Implementation-Accepting-BugsDiscover
WorkDone: Nová funkcionality systému, která je určena k testování.
Vzorec: Implementation-Accepting-BugsDiscover
WorkToDo: Technická dokumentace připravená ke zpracování vývojovým týmem. V průběhu testování do ní přibívají í opravy bugů. Počáteční hodnota: 0
Vzorec: Analysis+AnalysisOfBugs-Implementation
Flows
Accepting: je tok, který zajišťuje přeměnu WorkDone na WorkAccepted, tj. konečnou fázi a cíl projektu.
Vzorec: IF THEN ELSE((WorkDone>0:AND:TimeSpent>TestingStartDelay), MIN(WorkDone, TestingVelocityPerDay*(1-FailRate)) , 0 )
Analysis: je tok, který zajišťuje přeměnu Requirements na technickou specifikaci WorkToDo, tj. zadání práce pro vývojový tým.
Vzorec: IF THEN ELSE(Requirements>0, MIN(Requirements, AnalysisVelocityPerDay) , 0 )
AnalysisOfBugs: je tok, který reprezentuje převod nalezených chyb na technický popis WorkToDo.
Vzorec: IF THEN ELSE(Requirements>0, MIN(Requirements, AnalysisVelocityPerDay) , 0 )
BugsDiscovery: je tok, který reprezentuje odhalování chyb v průběhu testování.
Vzorec: IF THEN ELSE((WorkDone>0:AND:TimeSpent>TestingStartDelay), MIN( (TestingVelocityPerDay*FailRate) , WorkDone*FailRate ) , 0 )
Implementation: je tok, který zajišťuje implementaci technické dokumentace WorkToDo a vznik nové verze aplikace připravené k testování. Začátek implementace je možné zpozdit oproti analýze. V modelu je nastaven začátek implementace až po zkončení analýzy.
Vzorec: IF THEN ELSE(WorkToDo>0 :AND: TimeSpent > ImplementationStartDelay, MIN(ImplementationVelocityPerDay, WorkToDo ) , 0 )
Výsledky
Na běžícím modelu je možné měnit hodnoty jednotlivých proměnných a vidět jejich vliv na průběh implementace projektu a vizualizovat je přímo v kontextu projektu.
Závěr
I když je model velice jednoduchý a zdaleka nezachycuje všechny aspekty životního cyklu projektu, mohl by být využit jako Proof of Concept možného využití modelu systémové dynamiky pro potřeby projektového managementu.
Kód
Zdroje
LI, Suinan. A generic model of project management with Vensim. 2008. Master's Thesis. Universiteteti Agder/Agder University. https://uia.brage.unit.no/uia-xmlui/bitstream/handle/11250/137043/Suinan_Li.pdf?sequence=1
BESTEIRO, Élen Nara Carpim; DE SOUZA PINTO, Jefferson; NOVASKI, Olívio. Success factors in project management. Business management dynamics, 2015, 4.9. https://web.archive.org/web/20180420205905id_/http://bmdynamics.com/issue_pdf/bmd110530a-%2019-34.pdf
WYSOCKI, Robert: Effective Project Management: Traditional, Agile, Extreme. Seventh edition. Indianapolis: Wiley, 2014.