Gantt diagram készítése szövegből PlantUML segítségével
A Kroki és PlantUML házasságáról írtam a Kroki - egységes felületen integrálja a diagramkészítő motorokat oldalon. Ott csak a Kroki működését mutattam be, de egyik feladatban szerettem volna használni a PlantUML Gantt diagramot készítő lehetőségét.
Projektvezetőként gyakran kell prezentálni a projekt vagy annak státuszát és ilyenkor a Gantt az egyik barátom, mert azt sokan ismerik és megértik.
Mivel szeretek dolgokat hatékony eszközökkel megoldani, gondoltam, hogy a diagramot generáltatni fogom és nem szerkeszteni. Régebben próbáltam (és most is szoktam használni) ingyenes vagy nyílt forráskódú eszközöket:
- ProjectLibre aki a Microsoft Project alternatívájaként hirdeti magát és szembe állítja a Microsoft komplexitását a ProjectLibre hatékonyságával.
- GanttProject ami képes a Microsoft Project formátum import- és exportálására. A felület nem annyira szép, de mentes a csicsától és billentyűzetről is jól használható.
- Kanboard amit azért említek meg, mert az agilis projektvezetésben hiszek és nem tudnám kihagyni ezt az egyszerű, de nagyszerű szervert.
- Microsoft Project ami ugyan fizetős eszköz, ennek ellenére bekerült ebbe listába, mert - szerintem - az egyik nagyon hasznos alkalmazása a Microsoft korporációnak.
Linuxon dolgozom és nem szeretem a kliens rendszert virtualizálni, ezért a MS Project nem jöhetett szóba. Tesztelés céljából pedig ki akartam próbálni a Kroki, PlantUML és Gantt párosítást, hogy lássam mennyire használható.
PlantUML Gantt diagramkészítője
PalntUML-nek van egy Gantt kiterjesztése ami szerintem jobban használható mint a Mermaid hasonló megoldása. A Korki mindkettőt szóra tudja bírni, ezért a bemutató ábrák készítésében, a Hexo, Markdown, Kroki, PlantUML lesz segítségemre.
A PalntUML se egy tökéletes ganttdiagram készítő, első ránézésre a követekző előnyöket és hátrányokat véltem felfedezni.
Előnyök vagyis ami tetszett
A PlantUML Gantt ábráján:
- szinte mindent meg tudok jeleníteni amire szükségünk van;
- a projekt leíró nyelve szinte irodalmi;
- erőforrás is rendelhető a eladathoz;
- projektnaptárat lehet definiálni.
Hátrányok vagyis ami nem tetszett
A PlantUML Gantt ábráján:
- nem tudtam összefogni feladatokat, helyette szeparátort tudtam használni;
- a legkisebb időegység az 1 nap;
- még béta tesztelés alatt van.
Feladatok és kapcsolatuk
A feladat/task nevét []
zárójelben írjuk és rövidíthetjük az as
szóval. A feladat időtartamát a lasts
változóval jelezzük.
Két feladat közötti kapcsolatban használhatjuk az end
és start
szavakat valamint a feladat végrehajtásának mérték a complete
szóvval jelezzük. Egymás után követekző feladatokat a then
szóval kapcsolhatjuk össze.
Egy feladat jellemzőit írhatjuk külön sorokban vagy and
szóval kapcsolhatjuk egy sorba. Lássunk egy példát az időtartam ábrázolására.
|
||
|
A fenti példában láthatjuk, hogy a feladat időtartamát két paraméterrel is meg lehet adni a napot day
vagy days
a heteket pedig week
vagy weeks
szavakkal.
A következő példában határozzuk meg a feladatok közötti kapcsolatot, a teljesülés mértékét és plusz egy-két újdonságot is beleteszek.
| ||
|
Ha elolvassuk a forrásszöveget, akkor az így hangzik:
- a tervezés 10 napig tart, 50%-ig
completed
/készen van, pirossal töltjük ki; - a tervezést a fejlesztés
then
/követi és 10 napig tart; - az integráció is 10 napig tart és
starts 5 day after
5 nappal a fejlesztésend
/befejezése után kezdődik; - a tesztelés 2 nappal a fejlesztés befejezése után kezdődik és az integráció befejezése vége előtt 3 nappal ér végett;
- az UAT egy mérföldkő/
happens
és a fejlesztés, a tervezés vagy az integráció végének a legtávolabbi idejére esik; - a zárás 3 nappal az UAT után történik.
Az ábrán is ugyan ezt láthatjuk.
Figyeljük meg, hogy a tesztelést bezártuk két megszorítás közzé, mer a fejlesztés és integráció végéhez kötöttük. A PlantUml ebben az esetben nem veszi figyelembe a feladat időtartamát, hanem a megszorításokból számolja azt ki.
Naptár és dátumok
Eddig egy projekt tervezését végeztük, de a végrehajtáshoz elengedhetetlen a projekt kezdésének a dátuma és a munkanapok kezelése.
A projekt kezdésének dátumát a feladatok megadása előtt a Project starts
változóval határozzuk meg. Ugyan itt tudjuk meghatározni a rendszeres munkaszüneti napokat, például a szombatot és vasárnapot sunday are close
vagy egy konkrét munkaszüneti napot a május elsejét: 2020/05/01 is closed
.
A diagramon konkrét napokat színezhetünk ki, a feladatokhoz megjegyzést is fűzhetünk és egyes feladatok végrehajtásába szünetet is tervezhetünk.
Lássunk ezekre is példát:
| ||
|
A fenti leíró szöveg magyarázata:
Project starts the 1th of october 2020
a projekt október elsején kezdődik;saturday are closed
szombaton nincs munkavégzés;sunday are closed
vasárnap nincs munkavégzés;2020/10/17 is open
október 17. szombat, de narancssárga munkanap;2020/10/23 to 2020/10/25 are closed
október 23. és 25. között munkaszünet;2020/10/23 is colored green
és 23.-át zölddel jelöljük;today is 28 days after start and is colored in red
ma a projekt 28-ik napja van és ezt pirossal jelöljük;note bottom
ésend note
között megjegyzést fűzhetünk a feladathoz;[Fejlesztés] as [F] lasts 15 day and pause on 2020/10/20
fejlesztés október 20.-án szünetel;then [Intergráció] as [I] lasts 6 day and pause on tuesday
az integráció keddenként nem dolgozik.
A megjegyzésnél a note top
nem működik és csak a note bottom
-ot lehet használni.
Erőforrás kezelés és ábrázolás
Projekt terv nem lehet teljes a szükséges erőforrások tervezése nélkül. A PlantUML ere is gondolt.
Az erőforrást az on
jelöli és utána meg kell adni {}
között az erőforrás nevét és a tervezett ráfordítás mennyiségét. Például: [Feladat] on {junior fejlesztő: 25%} {senior fejlesztő: 90%}
.
A %
jel azt mondja meg, hogy az adott erőforrás egy napon mennyi százalékban dolgozik a feladaton. Ez befolyásolja a feladat elvégzésének hosszát is. Példákon keresztül jobban meg lehet érteni, a feladatok mindegyikére 10 nap erőforrás terveztem és különböző arányban rendeltem hozzá erőforrásokat.
| ||
|
A fenti forrásszöveg és abból generált diagram alapján látszik, hogy amikor egy feladatnál meghatározzuk, hogy 10 nap, akkor az nem az átfutási időt, hanem a 100%-os erőforrás szükségletet mondjuk meg.
- A
Tervezés1x100
10 napját egytervező
10 nap alatt végzi el. - A
Tervezés1x50
10 napját egy 50%-ra tervezett tervező 20 nap alatt végzi el. Ezért kétszer hosszabb ideig tart ez a feladat az előbbinél. - A
Fejlesztés2x50
két 50%-os fejlesztővel = 100%, vagyis 10 nap alatt végezhetnek - A
Fejlesztés2x100
két teljes munkaidős fejlesztő 5 nap azaz fele idő alatt végez a 10 napos feladattal.
Ha használunk erőforrásokat, akkor az erőforrás terhelést a diagram alján erőforrásokra lebontva is megkapjuk. A 100% feletti terhelés külön színnel kerül kiemelésre.
A fenti diagramban is látszik, hogy a -- --
jelek elválasztóként rajzolódnak meg és helyettesíthetik a feladat csoportosítást.
Összefoglalva
A PlantUML Gantt diagramkészítője jól használható online felületeken vagy akár egy projektmegbeszélésen ahol azonnal láthatóvá tehető az aktuális állapot.
Én a projekt megbeszéléseken (nem az agiliseken) egy egyszerű szövegszerkesztővel, markdown formátumban vezetem a jegyzeteimet, mer ennél többre nem nagyon van/volt szükség. A végén pedig szinte bármilyen formátumba át lehet konvertálni és feleknek továbbítani.
A PlantUML segítségével pillanatok alatt összedobható egy projektterv amit utána az intézménynél rendszeresített projektkövető rendszerben lehet finomítani.