Difference between revisions of "Simulace implementace SW projektu pro potreby PM"

From Simulace.info
Jump to: navigation, search
(Výsledky)
 
(36 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Simulace implementace SW projektu pro potřeby projektového řízení ==
 
== 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íl ===
Cílem této simulace je vytvořit model systémové dynamiky softwarového projektu, který zohlední známé proměnné i prvek náhody a pomůže zkoumat vliv jednotlivých faktorů a vzájemné ovlivňování  v důležitých parametrech projektu
+
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ší.
  
=== Využití ===
+
=== Metoda a prostředí simulace ===
Model by mohl být použit při naceňování, stanovení termínu dodání, nebo odhadu míry rizika. Mohl by být použit i na modelování důsledků změn v projektu.
+
Simulace je realizována prostřednictvím nástroje Vensim.
  
=== Metoda a prostředí simulace ===
+
==Model==
Simulace bude realizována prostřednictvím nástroje Vensim.
 
  
===Model===
 
 
'''Diagram stavů a toků'''
 
'''Diagram stavů a toků'''
  
 
[[File:PM_Sumulace_SF.png|900px|down|]]
 
[[File:PM_Sumulace_SF.png|900px|down|]]
  
'''Běžící simulace'''
 
  
[[File:PM_Simulace_Running.png|900px|down|]]
+
===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í.
  
=== Proměnné ===
+
Vzorec: Implementation-Accepting-BugsDiscover
. Scope
+
----
. Costs
 
. Time
 
. Resources
 
. Quality
 
. Risk
 
===Proměnné modelu===
 
  
'''Number of requirements''': celkový počet funkčních požadavků v úvodu projektu.  
+
'''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
  
Hodnota: 100
+
Vzorec: Analysis+AnalysisOfBugs-Implementation
 
----
 
----
'''Complexity''': reprezentuje rozsah, obecnost a také míru nepřesnosti průměrného požadavku. Předpokládanou jednotkou je StoryPoint.
 
  
Hodnota: 21
+
===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 )
 
----
 
----
'''Requirements''': Jde o zásobním představující rozsah projektu ve StoryPointech.
 
  
Vzorec: NumberOfRequirements*Complexity
+
'''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 )
 
----
 
----
'''Analysis''': je tok, který zajišťuje přeměnu Requirements v Work to do, tj. zadání práce pro vývojový tým.  
+
 
 +
'''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í.
  
=== Náhodné proměnné ===
+
Vzorec: IF THEN ELSE((WorkDone>0:AND:TimeSpent>TestingStartDelay), MIN( (TestingVelocityPerDay*FailRate) , WorkDone*FailRate ) , 0 )
 +
----
  
nemoc výpověď dovolená chyba v analýze
+
'''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.
  
===Kód===
+
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 ==
=== 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

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ů

PM Sumulace SF.png


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.

PM Simulace Running.png


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

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.