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 after5 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 2020a projekt október elsején kezdődik;saturday are closedszombaton nincs munkavégzés;sunday are closedvasárnap nincs munkavégzés;2020/10/17 is openoktóber 17. szombat, de narancssárga munkanap;2020/10/23 to 2020/10/25 are closedoktó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 redma a projekt 28-ik napja van és ezt pirossal jelöljük;note bottomésend noteközött megjegyzést fűzhetünk a feladathoz;[Fejlesztés] as [F] lasts 15 day and pause on 2020/10/20fejlesztés október 20.-án szünetel;then [Intergráció] as [I] lasts 6 day and pause on tuesdayaz 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és1x10010 napját egytervező10 nap alatt végzi el. - A
Tervezés1x5010 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és2x50két 50%-os fejlesztővel = 100%, vagyis 10 nap alatt végezhetnek - A
Fejlesztés2x100ké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.