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.

1
2
3
4
[Tervezés] lasts 14 days
[Fejlesztés] lasts 7 days and 1 weeks
[Intergráció] lasts 1 week and 7 days
[Tesztelés] lasts 7 days and 7 days

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.

1
2
3
4
5
6
7
8
9
10
11
12
[Tervezés] lasts 10 day 
[Tervezés] is 50% completed
[Tervezés] is colored in Red/Green
then [Fejlesztés] as [F] lasts 5 day
[Intergráció] as [I] lasts 5 day and starts 5 day after [F]'s end
[Tesztelés] as [T] lasts 0 days and starts 2 days after [F]'s end and ends 2 day before [I]'s end
[UAT] happens at [F]'s end
[UAT] happens at [T]'s end
[UAT] happens at [I]'s end
[Zárás] happens on 3 days after [UAT]'s end
[Zárás] is colored in White/red
[UAT] is colored in Red/Black

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és end/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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Project starts the 1th of october 2020
saturday are closed
sunday are closed
2020/10/17 is open
2020/10/17 is colored orange
2020/10/23 to 2020/10/25 are closed
2020/10/23 is colored green

today is 28 days after start and is colored in red
[Tervezés] lasts 6 day
note bottom
az előzetes felmérések
alapján a teljes tervdokumentáció
elkészítése és leadása
end note
then [Fejlesztés] as [F] lasts 15 day and pause on 2020/10/20
note bottom
egy ciklusban történik
folyamatosan végezzük
maximum erőforrás kihasználással
end note
then [Intergráció] as [I] lasts 6 day and pause on tuesday
then [Tesztelés] as [T] lasts 5 days
[UAT] happens at [T]'s end

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 és end 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.

1
2
3
4
5
6
7
8
9
10
11
-- tervezés egy tervezővel --
[Tervezés1x100] on {tervező} lasts 10 day

-- tervezés50 egy tervező 50% terheléssel --
[Tervezés1x50] on {tervező:50%} lasts 10 day

-- fejlesztés két fejlesztővel 50%-50% --
[Fejlesztés2x50] on {fejlesztő1:50%} {fejlesztő2:50%} lasts 10 day

-- fejlesztés két fejlesztővel 100%-100% --
[Fejlesztés2x100] on {fejlesztő1:100%} {fejlesztő2:100%} lasts 10 day

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 egy tervező 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.