055.1 Lecke 1
Tanúsítvány: |
Open Source Essentials |
---|---|
Verzió: |
1.0 |
Témakör: |
055 Projektmenedzsment |
Fejezet: |
055.1 Szoftverfejlesztési modellek |
Lecke: |
1/1 |
Bevezetés
Az élet tele van projektekkel. Projekt lehet egy moziest, egy kirándulás, egy családi esemény vagy a gyerekek hetének megtervezése, vagy akár egy hobbi tökéletesítése. Nem számít, hogy mit szeretnénk megvalósítani: terveket kell készítenünk és intézkedéseket kell tennünk. Általában több forgatókönyvet készítünk, B tervvel, C tervvel stb. Nincs ez másképp a szoftverfejlesztés világában sem.
Szerepkörök a szoftverfejlesztésben
A sikeres projektmenedzsmenthez sokféle készségre van szükség, ezért hasznos, ha különböző embereket találunk a jól meghatározott szerepek betöltésére. A következő szakaszok a szoftverprojektekben gyakran előforduló szerepek közül néhányat ismertetnek.
Projektmenedzser
Egy projekt irányítása rendkívül összetett feladat. Egyes helyzetek elsőre könnyűnek tűnnek, de a helyes megoldásukhoz gondosságra és tapasztalatra van szükség. Az ezt végző személy a projektmenedzser (project manager).
A projektmenedzser felelősségi körébe tartozik annak biztosítása, hogy a projektet időben, a költségvetésen belül és elfogadható minőségben fejezzék be. Még ha nem is írnak egyetlen sor kódot sem, a projektmenedzserek azok, akik felelősek és elszámoltathatók a csapat eredményeiért. A határidőkkel kapcsolatban egyeztetniük kell az ügyfelekkel. Emellett beszélnek a más szerepkörökben dolgozókkal is, hogy megbizonyosodjanak arról, hogy minden rendben van.
Business analyst és requirement engineer
Nincs helye a mikromenedzsmentnek — legalábbis egy egészséges munkahelyen nincs. A business analyst-ok (üzleti elemző — BA) és requirement engineer-ek (követelménymérnök — RE), a projektcsapat belső vagy külső munkatársai, a projektmenedzserek jobb kezei. Ők felelősek a követelményekről szóló gazdag és egyértelmű dokumentáció létrehozásáért. Ők képezik a hidat az ügyfelek és a fejlesztők között. Az ügyfelek közérthető nyelven kommunikálnak, amelyet a BA/RE világos és egyértelmű dokumentációvá alakít, ezzel biztosítva, hogy a fejlesztők hatékonyan végezhessék munkájukat.
Képzeljük el, hogy megkérnek, hogy vigyünk egy “nagy tortát” egy partira. Mit jelent az, hogy “nagy”? Tíz szelet vagy húsz? Talán egy nagy esküvő tortájáról van szó, és száz szeletesnek kellene lennie. A BA/RE-nek pontosan meg kell határoznia az olyan követelményeket, mint például a mennyiségek, hogy a fejlesztők tudják, hogy egy alkalmazást egy bizonyos számú felhasználóra terveztek.
Még csak a követelmények meghatározásának elején járunk, de már most láthatjuk, milyen fontos a világos kommunikáció. Minden közös munkához elengedhetetlen, de egy nyílt forráskódú projekt esetében talán még fontosabb, mivel a projekt egyes részein nagyon eltérő háttérrel rendelkező emberek dolgozhatnak. Lehet, hogy valaki diákként, valaki más szülőként, nyugdíjasként vagy két munkahely között lévő személyként stb. dolgozik. Még így is zökkenőmentesnek kell lennie a haladásnak ebben a környezetben — tehát a kommunikáció nem hátráltathatja a haladást.
Fejlesztők, architektek és tesztelők
A követelmények megvalósításához egy szoftverprojektnek fejlesztőkre (developer) van szüksége, akik a dokumentáció és a tervezési döntések alapján hozzák létre a terméket. Munkájukat az architect bírálja el, aki általában a projektben részt vevők közül a legszélesebb körű technikai és szakterületi ismeretekkel rendelkezik. Minden fejlesztő, különösen a vezető fejlesztők, felelősek a saját kódjukért, de a nagy döntéseket az architekt hozza meg vagy hagyja jóvá.
Néha az embereket kifejezetten tesztelőknek nevezik ki, akik felelősek mindenféle tesztelésért, az eredmények dokumentálásáért és hibajegyek létrehozásáért.
Tervezés és ütemezés
Most, hogy az alapvető szerepekről megbeszéltünk, jöhetnek a projekt fázisai: tervezés, ütemezés, megvalósítás, karbantartás/tesztelés és átadás. Néhány fázis a különböző szoftverfejlesztési modellek esetén eltérő lehet, de a tervezés és az ütemezés olyan általános témák, amelyeket megvitatunk, mielőtt mélyebben belemerülnénk a különböző modellekbe.
A tervezésre (planning) azután kerül sor, hogy a BA-k/RE-k rendelkezésre bocsátják a követelmények listáját. A tervezés egy vagy több megbeszélésből áll, amelyeken megvitatják, hogy a csapat mit szeretne elérni, hogyan tervezik azt megvalósítani, és mennyi időbe telik. Általában ezeken a megbeszéléseken kerül sor némi kockázatelemzésre (risk analysis) is.
A tervezőknek ezután be kell ütemezniük (schedule) a munkát, és mérföldköveket (milestone) kell létrehozniuk. Minden egyes mérföldkőnél tudja a csapat, hogy egy nagy, fontos rész elkészült. A hosszútávú komponensek vagy funkciók hónapokig is eltarthatnak, ezért a tervezőknek be kell számolniuk a szabadságokat, ünnepeket és — különösen a hideg évszakokban — némi betegszabadságot, hogy biztosítsák a pontos szállítási időt, és elkerüljék a rohanást és a pánikot a határidő közeledtével. Egy jó ütemterv mellett a fejlesztők nyugodtabbak, és időben, összeomlások nélkül tudnak minőségi megoldásokat szállítani.
Általános eszközök
Két olyan eszköz, amely minden modell és általában a projektmenedzsment számára is előnyös, a verziókezelő rendszer (version control system — VCS) és az alkalmazás-életciklus-kezelő (application lifecycle management — ALM) platform. A verziókezelést egy másik leckében tárgyaljuk részletesen, ezért ejtsünk néhány szót az ALM-ekről.
Az ALM egy olyan átfogó keretrendszer, amely a szoftveralkalmazások életciklusát kezeli a kezdeti fejlesztéstől a karbantartáson át az esetleges nyugdíjazásig. Az ALM integrálja az embereket, a folyamatokat és az eszközöket az együttműködés és a hatékonyság fokozása érdekében, biztosítva, hogy a szoftver életciklusának minden szakasza jól koordinált és az üzleti célokkal összhangban legyen. Ez a megközelítés segít fenntartani az alkalmazások minőségét, teljesítményét és megbízhatóságát azok teljes élettartama alatt.
Most, hogy általános áttekintést kaptunk a szerepekről és az életciklus fázisairól, térjünk rá a modellekre!
Vízesésmodell
Ez az egyik legkorábbi és legegyszerűbb módszertan a szoftverfejlesztésben. Úgy képzelhetjük el, mint egy lépcsőt, ahol minden lépcsőfokot be kell fejezni, mielőtt továbblépnénk. A modell azonban csak egy irányba halad, így olyan projektekhez alkalmas, amelyekben egyértelmű követelmények vannak, és egyáltalán nem várható változás vagy csak minimális.
Bár e modell egyszerűsége előnyös lehet, a merev metodológia hátrányt jelenthet, amikor rugalmasságra és alkalmazkodóképességre van szükség. Márpedig manapság általában minden változik, miközben egy projekten dolgozunk.
Amint azt az előző szakaszok kifejtették, a fejlesztés megkezdéséhez a projektnek rendelkeznie kell a követelményekkel, egy kész tervvel és egy véglegesített ütemtervvel, amelyek tartalmazzák a mérföldköveket. A vízesésmodellben ezek a követelménytervezés és az üzleti elemzés eredményei.
Requirement Engineering (követelmények meghatározása)
Ebben a kezdeti fázisban összegyűjtik és dokumentálják a projekt összes követelményét. Ez a munka kiterjedt megbeszéléseket foglal magában a projektmenedzser és az érdekelt felek között, hogy megértsék igényeiket és elvárásaikat. Az eredmény egy átfogó követelményspecifikációs dokumentum, amely felvázolja, hogy a rendszernek mit kell tennie.
Business Analysis (üzleti tervezés)
Az üzleti elemzők üzleti szempontból vizsgálják meg a követelményeket, hogy azok összhangban legyenek a szervezeti célokkal. A BA-k megvalósíthatósági tanulmányokat, kockázatértékeléseket és költség-haszon elemzéseket végeznek annak megállapítására, hogy a projekt életképes-e és érdemes-e megvalósítani. Az így nyert ismereteket a projekt hatókörének és célkitűzéseinek finomítására használják fel.
Software Design (szoftvertervezés)
A szoftvertervezés az a lépés, amikor az architect részletes tervezési specifikációt készít, amelyet a fejlesztők követhetnek. E specifikáció birtokában a csapat elkezdheti a követelmények megvalósítását — más szóval a fejlesztési fázis megkezdését, amely ezután következik.
Development (fejlesztés)
A fejlesztési fázis az, ahol a varázslat történik — ahol a kódot írják. A dokumentációt és a tervezési döntéseket szorgalmasan követve a fejlesztők megírják a részüket. Miután a fejlesztők a többi fejlesztővel vagy az architecttel átnézik és ellenőrzik a kódot, ez a fázis befejezettnek tekinthető.
Testing (tesztelés)
A fejlesztést egy tesztelési szakasz követi, amelyet a tesztelők irányítanak. A tesztelésnek különböző típusai vannak, amelyeket egy másik leckében ismertetünk, mint például az egységtesztelés (unit testing), az integrációs tesztelés (integration testing), a rendszertesztelés (system testing) és az átvételi tesztelés (acceptance testing).
Ezeknek a teszteknek az a célja, hogy még a kiadás előtt felszínre hozzák a problémákat, és lehetővé tegyék a fejlesztők számára, hogy időben kijavítsák azokat — nem pedig azután, hogy a projektet már telepítették és publikálták, és a felhasználókat a hibák irritálják és frusztrálják.
Operations (tevékenységek)
A tesztek lebonyolítása és a hibák kijavítása után a projekt kiadható –- azaz üzembe helyezhető az éles környezetben. Ez a fázis tartalmazhat telepítést, konfigurálást és néha még a felhasználói oktatást is. Miután a projekt használatra kész, karbantartási fázisban van, ahol a csapat kezelheti a felhasználók problémáit, és szükség esetén frissítéseket is biztosíthat.
A vízesésmodell értékelése
Mit vettünk észre, miközben erről a modellről olvastunk? Hatékonynak találjuk? Hiányzik valami? Lássuk az előnyöket és hátrányokat!
A vízesésmodell előnyei:
- Tiszta szerkezet
-
A lineáris folyamat megkönnyíti a kezelést, megértést és követést.
- Aprólékos dokumentáció
-
Részletes és alapos dokumentáció minden fázisban segít a csapatnak megérteni, hogy mire van szükség a fejlesztés és a későbbi karbantartás során.
- Kiszámíthatóság
-
Az egyértelmű, meghatározott mérföldkövek segítenek előre látható ütemtervet és költségvetést biztosítani.
- Egyszerűbb projektmenedzsment
-
A modell lineáris és egyszerű folyamatának köszönhetően könnyen kezelhető.
A vízesésmodell hátrányai:
- Merevség
-
A modell lineáris rugalmatlansága megnehezíti a változtatások végrehajtását a követelmény-fázis befejezése után.
- Késői tesztelés
-
A fejlesztési fázisban a tesztelés rendszertelen vagy hiányzik, ami a fontos problémák késői felismeréséhez vezethet.
- Tökéletes követelmények feltételezése
-
A modell megköveteli és feltételezi, hogy minden követelmény helyes és egyértelmű, ami nagyon irreális lehet. A modell nem ad teret a fejlesztés során történő ellenőrzésnek, hogy megbizonyosodjunk arról, hogy a követelmények pontosak és a fejlesztők megértették azokat.
- A visszajelzés hiánya
-
Az ügyfél csak az utolsó fázisban mondhat bármit is a termékkel kapcsolatban. Ha tehát valami (vagy sok minden) nem felel meg az elvárásainak, a probléma csak a legvégén derül ki.
Agilis szoftverfejlesztés, Scrum és Kanban
A modernebb szoftverfejlesztési modellek ezen halmazának felfedezéséhez kezdjük a agilis szóval: Mit is jelent? Az agilitás a gyors reagálási és mozgási képességet fejezi ki, mind a fizikai, mind a szellemi világban. A cél ugyanaz a szoftverfejlesztésben is.
Az agilis szoftverfejlesztés olyan módszertan, amely az iteratív fejlesztésre, a rugalmasságra és az együttműködésre épül. Az apró fejlesztésekre összpontosít, miközben mindig visszajelzéseket gyűjt és azokat a fejlesztés során megvalósítja. Ez a megközelítés gyors reakciókat, kiigazításokat és válaszokat tesz lehetővé, időt takarít meg, és biztosítja, hogy a projekt megfeleljen a felhasználók és az ügyfelek elvárásainak.
Az agilis mozgalom 2001-ben indult útjára egy online Manifesto for Agile Software Development (Manifesztó az agilis szoftverfejlesztésről) című dokumentummal, amely az alábbi alapelveket tartalmazza:
We are uncovering better ways of developing software by doing it and helping others do it. (A szoftverfejlesztés hatékonyabb módját tárjuk fel saját tevékenységünk és a másoknak nyújtott segítség útján.)
Through this work we have come to value: (E munka eredményeképpen megtanultuk értékelni:)
Individuals and interactions over processes and tools (Az egyéneket és a személyes kommunikációt a módszertanokkal és eszközökkel szemben)
Working software over comprehensive documentation (A működő szoftvert az átfogó dokumentációval szemben)
Customer collaboration over contract negotiation (A megrendelővel történő együttműködést a szerződéses egyeztetéssel szemben)
Responding to change over following a plan (A változás iránti készséget a tervek szolgai követésével szemben)
That is, while there is value in the items on the right, we value the items on the left more. (Azaz, annak ellenére, hogy a jobb oldalon szereplő tételek is értékkel bírnak, mi többre tartjuk a bal oldalon feltüntetetteket.)
Scrum
A Scrum az egyik legnépszerűbb keretrendszer — talán a legnépszerűbb — az agilis szoftverfejlesztésen belül. A Scrum a következő építőelemekre épül:
In a nutshell, Scrum requires a Scrum Master to foster an environment where: (Dióhéjban, a Scrum egy Scrum Mastert követel meg, aki olyan környezetet elősegítésében vesz részt, ahol:)
A Product Owner orders the work for a complex problem into a Product Backlog. (Egy Product Owner a komplex problémához tartozó munkát egy Product Backlogban sorrendezi.)
The Scrum Team turns a selection of the work into an Increment of value during a Sprint. (Egy Scrum Team a munka kiválasztott részét egy értéket képviselő Inkrementummá alakítja egy Sprint folyamán.)
The Scrum Team and its stakeholders inspect the results and adjust for the next Sprint. (A Scrum Team és az érdekelt felek megvizsgálják az eredményeket és ezekhez igazítják a következő Sprintet.)
Repeat (Az előző lépések ismétlődnek újra és újra.)
De ki a scrum master és a product owner? Mi az a product backlog és a sprint? Merüljünk el a szerepekben és folyamatokban!
Sprintek és sprint planning
A sprint egy jellemzően 2-4 hétig tartó fejlesztési fázis, amely során néhány előre egyeztetett feladatot és/vagy funkciót fejeznek be. A feladatokról való megállapodás érdekében jelenik meg a sprint planning (sprint tervezés). Ebben a folyamatban a csapat döntéseket hoz arról, hogy mely feladatokat lehet elvégezni a következő sprint során.
Ezek a döntések a projektet irányító és gyakran a finanszírozást is biztosító product owner (terméktulajdonos — PO) által meghatározott prioritásokon alapulnak.
Product Backlog és Sprint Backlog
Amint az imént kifejtettük, a PO kezeli a prioritási listát, amely a projekt összes kívánt munkáját tartalmazza. A Scrumban ezt a listát product backlog-nak nevezik. Minden sprint backlog az aktuális sprinthez a product backlog-ból kiválasztott feladatokat tartalmazza. A sprint backlog azokat az elemeket tartalmazza, amelyeket a csapat a sprinttervezés során kiválasztott.
Daily Scrum vagy Stand-up
A daily Scrum vagy stand-up megbeszélések rövid, hatékony meetingek, ahol a csapatok megbeszélik az előrehaladásukat, kiemelik a problémákat és az akadályokat, és megosztják a napi terveiket. A stand-upot általában a munkanap legelején tartják.
Increment
Az increment egy sprint során elért cél. Minden sprintnek egy vagy több inkrementumot kell eredményeznie. Az incrementtel elért feladat vagy funkciók helyességét teszteléssel kell ellenőrizni.
Sprint Review
A sprint review a sprint eredményének ellenőrzésére szolgáló megbeszélés. Ezek az értekezletek általában többről szólnak, mint a demók — a cél a Scrum-csapat eredményei alapján történő visszajelzés. Mivel a cél a termékcél elérése, az érdekeltek véleményt és javaslatokat adnak a jövőbeli kiigazításokkal kapcsolatban. Ezeknek a meetingeknek az eredménye lehet a product backlog módosítása vagy kiegészítése.
Sprint Retrospective
A sprint retrospective célja a minőség és a hatékonyság javítása — és nem csak az aktuális termékben. A retrospektívnek fel kell tárnia a csapaton belüli rejtett feszültségeket, a folyamatokat lassító információhiányt, a külső függőségeket, amelyeket enyhíteni kellene a csapat terheinek csökkentése érdekében stb. A csapat megbeszéli, mi ment jól, milyen problémákkal szembesültek, és milyen megoldásokat találtak (vagy nem találtak) ezekre a problémákra.
Az eredmény a problémák és a lehetséges megoldások listája, amelyet a felelős személyhez rendelnek.
Scrum Master
Az összes ilyen megbeszélést a Scrum master vezeti. Minden Scrum-csapatnak szüksége van rájuk. Ők felelősek a Scrum-folyamatok facilitálásáért, és segítenek a csapatnak a termékcél felé haladni, miközben a sprintek során problémák merülnek fel. A Scrum-master nemcsak irányítja a folyamatokat, hanem coachként is funkcionál, hogy biztosítsa a hatékony kommunikációt a csapaton belül.
Product Owner
A product owner felelős a Scrum-csapat által létrehozott termék értékének maximalizálásáért. Ez a szerepkör különböző szervezetekben és csapatokban változhat. Még a feladatok delegálása esetén is a product owner marad felelős az eredményekért.
A sikerhez a product owner döntéseinek szervezeti tiszteletben tartása szükséges, ami a product backlogban és a sprint felülvizsgálatának inkrementumában tükröződik. A product owner egyetlen személy, aki a különböző érdekelt felek igényeit képviseli a termékháttérben. Bárkinek, aki változtatni szeretne a backlogon, a product ownert kell meggyőznie erről. Ő határozza meg és rangsorolja a termékvíziót és a backlogot, és biztosítja a product backlog átláthatóságát, láthatóságát és érthetőségét.
A Scrum-master és a product owner együttműködik a projekt sikere érdekében. Partnerségük segíti a fejlesztőcsapatot abban, hogy hatékonyan és eredményesen szállítson értékes funkciókat.
Fejlesztők
A fejlesztők az elfogadott sprint backlogot követve valósítják meg a követelményeket. Dolgozhatnak önállóan is, de számos alkalommal előfordulhat, hogy együttműködnek: például páros programozás vagy egy másik fejlesztő kódjának felülvizsgálata (review) során.
A Scrum modell értékelése
A Scrum a szoftvercsapatok körében népszerűvé vált, de megvannak a maga előnyei és hátrányai.
A Scrum modell előnyei:
- Flexibilitás
-
A folyamatok rugalmasak és iteratívak, lehetővé téve a visszajelzéseken alapuló változtatásokat.
- Ügyfelek bevonása
-
Az érdekelt felek rendszeres visszajelzései biztosítják az ügyfelek igényeihez való igazodást.
- Javított minőség
-
A gyakori tesztelés és felülvizsgálat javítja a termék minőségét.
- Csoportszintű együttműködés
-
A modell a csapatmunkát és a kommunikációt hangsúlyozza a napi megbeszélések és a rendszeres megbeszélések révén.
A Scrum modell hátrányai:
- Szükséges diszciplína
-
A Scrum szigorúan betartatja a gyakorlatokat, ami kihívást jelenthet.
- Terjedelmi korlátok
-
Fennáll annak a veszélye, hogy egyre több ügyfélkérés kerül hozzáadásra a product backloghoz, ami hátráltatja a releaset, ha a product backlog nincs megfelelőn menedzselve.
- Szerepzavar
-
A standard szerepek, mint például a Scrum master és a product owner, félreérthetők vagy rosszul alkalmazhatók.
- Erőforrás-intenzivitás
-
A napi megbeszélések és a gyakori felülvizsgálatok (review) időigényesek lehetnek.
Kanban
A Kanban egy másik népszerű agilis keretrendszer, amely a munka vizualizálására, a munkafolyamatok irányítására és a folyamatok javítására helyezi a hangsúlyt. Az egyik nagy különbség a Scrum és a Kanban között az, hogy a Kanban nem igényel fix hosszúságú iterációkat, így rugalmasabbá teszi a folyamatos szállítást, és képes egyensúlyt teremteni a különböző munkaprioritások között.
A következő alfejezetekben megvizsgáljuk, hogy mire van szüksége a csapatoknak egy Kanban projekt megvalósításához.
Kanban boardok
A Kanban board egy olyan vizuális eszköz, amely nyomon követi a munka szakaszokon keresztül történő haladását. A fő és legfontosabb oszlopok a “To Do” (teendők), “In Progress” (folyamatban), és “Done” (kész). További oszlopok is hozzáadhatók, de ennek a három fő oszlopnak mindenképpen szerepelnie kell a táblán. Ez a vizualizáció segít a csapatoknak abban, hogy felismerjék a szűk keresztmetszeteket, és egy szempillantás alatt lássák a feladatok állapotát.
Work in Progress Limit
A work in progress limit (folyamatban lévő munka — WIP) korlátozása segít elkerülni a multitaskingot és javítja a koncentrációt. Ezzel a korlátozással van egy pont, amikor már nem lehet több feladatot hozzáadni a “Folyamatban” oszlophoz. Így a fejlesztők nem lesznek túlterhelve feladatokkal, és azokra tudnak koncentrálni, amelyeken éppen dolgoznak.
Csapattagok
A csapattagok felelősek a feladatok elvégzéséért és a Kanban-rendszeren belüli zökkenőmentes folyamatok kialakításáért. Együttműködnek a munkák rangsorolásában, valamint a felmerülő problémák kiemelésében és kezelésében.
Kanban Manager
A Kanban manager felügyeli a Kanban folyamatot, és biztosítja, hogy a csapat a Kanban elveket és gyakorlatokat kövesse. Ez a menedzser segíti a megbeszéléseket, felügyeli a munkafolyamatokat, és segít megoldani minden felmerülő problémát.
A Kanban modell értékelése
A modell lényege egyszerű. Nézzük az előnyöket és hátrányokat!
A Kanban modell előnyei:
- Visual workflow (vizuális munkafolyamat)
-
A kanban boradok egyértelmű láthatóságot biztosítanak a munka állapotáról és előrehaladásáról.
- Flexibilitás
-
Mivel a modell nem tartalmaz rögzített iterációkat, jelentős alkalmazkodóképességgel támogatja a folyamatos szállítást.
- A feladatokra vonatkozó korlátozások
-
A WIP-korlátozás segít megelőzni a csapattagok túlterheltségét, és ezáltal javítja a koncentrációt és a hatékonyságot.
- Folyamatos fejlesztés
-
A modell ösztönzi a rendszeres értékelést és a folyamatok javítását.
A Kanban modell hátrányai:
- Időkeretek hiánya
-
Az időgazdálkodás meghatározott határidők nélkül kihívást jelent.
- Kevesebb szerkezet
-
A modellből hiányozhat az a struktúra, amelyre néhány csapatnak szüksége van ahhoz, hogy szervezett maradjon.
- Szükséges diszciplína
-
A hatékony WIP-korlátok és a board irányítása gondos figyelmet igényel.
- Lehetséges túlegyszerűsítés
-
A feladatleírások túlságosan leegyszerűsíthetik az összetett projekteket, ha nem átgondoltan hajtják őket végre.
DevOps
A DevOps egy olyan szoftverfejlesztési megközelítés, amely integrálja a fejlesztői (Dev) és az üzemeltetési (Ops) csapatokat az együttműködés, a hatékonyság és a szállítási sebesség növelése érdekében. A DevOps elsődleges célja a szoftverfejlesztési életciklus lerövidítése és a folyamatos szállítás biztosítása magas szoftverminőség mellett. A DevOps hangsúlyt fektet az automatizálásra, a folyamatos integrációra és a folyamatos szállításra (CI/CD), valamint a hagyományosan elszigetelt csapatok közötti szoros együttműködésre.
Az automatizálás kulcsfontosságú olyan DevOps feladatok esetében, mint a kódintegráció, a tesztelés, a telepítés és az infrastruktúra kezelése. Az ismétlődő feladatok automatizálása csökkenti a hibákat, felgyorsítja a folyamatokat, és lehetővé teszi a csapatok számára, hogy a stratégiai szempontból fontosabb munkára összpontosítsanak.
A folyamatos felügyelet és naplózás elengedhetetlen a rendszer állapotának és teljesítményének fenntartásához. A DevOps-gyakorlatok közé tartozik az átfogó felügyeleti és naplózási rendszerek felállítása a problémák észlelése, a trendek elemzése és a rendszer megbízhatóságának javítása érdekében.
A DevOps modell értékelése
Bár a DevOps erősen ajánlott a modern szoftverprojektek számos típusa esetén, az előnyöket és hátrányokat figyelembe kell venni.
A DevOps modell előnyei:
- Gyorsaság és hatékonyság
-
A modell felgyorsítja a fejlesztési és telepítési ciklusokat az automatizálás segítségével.
- Javított együttműködés
-
A modell áthidalja a szakadékot a fejlesztési és az üzemeltetési csapatok között.
- Folyamatos szállítás
-
A modell biztosítja, hogy a szoftver mindig telepíthető állapotban legyen, ami gyakoribb releaseket eredményez.
- Nagy megbízhatóság
-
Az automatizált tesztelés és felügyelet növeli a megbízhatóságot és csökkenti a hibák számát.
A DevOps modell hátrányai:
- Kulturális váltás
-
A modell jelentős kulturális változást és a szervezet egészének részvételét igényli.
- Komplexitás
-
A CI/CD-csatornák és az automatizált infrastruktúra kezelése összetett lehet.
- Biztonsági kockázatok
-
A folyamatos telepítés biztonsági résekkel járhat, ha nem kezelik gondosan.
- Eszköztúlterhelés
-
A DevOps az eszközök és technológiák sokasága miatt túlterhelő lehet.
Gyakorló feladatok
-
Mit jelent az agilitás?
-
Mi a Scrum definíciója a Scrum Guide szerint?
-
Miért tud a Scrum jobban teljesíteni a vízesésmodellnél az ügyfelek visszajelzései tekintetében?
-
Mik a DevOps pozitív aspektusai?
Gondolkodtató feladatok
-
Gyorsan változó környezet esetén miért nem a vízesésmodell a legjobb?
-
Mi történhet, ha a Scrum master szerepe rosszul van megvalósítva?
Összefoglalás
A projektmenedzsment jelentősége a szoftverfejlesztésben, különösen a nyílt forráskódú projektekben, abban rejlik, hogy képes struktúrát biztosítani, javítani a kommunikációt, meghatározni a szerepeket, kezelni a kockázatokat és biztosítani a minőséget. Ezek az elemek döntő fontosságúak a projektek sikeres befejezéséhez, valamint az együttműködő és produktív fejlesztési környezet elősegítéséhez.
Ebben a leckében a vízesésmodellt, az agilis módszertanokat és a DevOps-ot tekintettük át. E modellek ismerete elengedhetetlen a szoftverfejlesztés projektmenedzsmentjének megértéséhez. Nincs tökéletes helyes munkamódszer — minden projekt más és más. Ebben a leckében megismerhettük a különböző megközelítések szerepeit, folyamatait, valamint előnyeit és hátrányait, ami a jövőben segíthet megérteni és esetleg kiválasztani a megfelelő modellt egy projekthez.
Válaszok a gyakorló feladatokra
-
Mit jelent az agilitás?
Az agilitás a gyors reagálási és mozgási képességet fejezi ki, mind a fizikai, mind a szellemi világban.
-
Mi a Scrum definíciója a Scrum Guide szerint?
-
Egy Product Owner a komplex problémához tartozó munkát egy Product Backlogban sorrendezi.
-
Egy Scrum Team a munka kiválasztott részét egy értéket képviselő Inkrementummá alakítja egy Sprint folyamán.
-
A Scrum Team és az érdekelt felek megvizsgálják az eredményeket és ezekhez igazítják a következő Sprintet.
-
Az előző lépések ismétlődnek újra és újra.
-
-
Miért tud a Scrum jobban teljesíteni a vízesésmodellnél az ügyfelek visszajelzései tekintetében?
Mivel a visszajelzéseket a fejlesztés során gyűjtik, a végtermék jobban megfelelhet az ügyfelek elvárásainak.
-
Mik a DevOps pozitív aspektusai?
Gyorsaság és hatékonyság — Jobb együttműködés — Folyamatos szállítás — Magas megbízhatóság
Válaszok a gondolkodtató feladatokra
-
Gyorsan változó környezet esetén miért nem a vízesésmodell a legjobb?
A vízesésmodell csak a fejlesztés végén gyűjt visszajelzéseket, így minden olyan követelményt, amelyet a fejlesztők félreértettek, a legvégén kell kijavítani. Ha a környezet nagyon gyorsan változik, ezt a modellt nem szabad használni, mert a fejlesztési ciklus közepén nincs lehetőség a visszajelzésre.
-
Mi történhet, ha a Scrum master szerepe rosszul van megvalósítva?
A rosszul bevezetett Scrum master szerep akadályozhatja a csapat képességét a magas minőségű termékek hatékony előállítására, és alááshatja a Scrum bevezetésének előnyeit. A csapat nem kaphat megfelelő útmutatást a Scrum-gyakorlatokról és -elvekről, ami a keretrendszer következetlen vagy helytelen alkalmazásához vezethet.
Ha nincs hatékony Scrum master, aki elhárítja az akadályokat, azok lelassíthatják a haladást és csökkenthetik a csapat termelékenységét. A csapattagok és az érdekelt felek között félreértésekhez és nem összehangolt elvárásokhoz vezető kommunikáció alakulhat ki. A csapatban csökkenhet a morál és a motiváció a megoldatlan problémák, a támogatás hiánya és a Scrum-rendezvények nem hatékony facilitálása miatt. Hatékonysági problémák adódhatnak a rosszul lebonyolított megbeszélésekből, a fókusz hiányából, valamint a sprinttervezés és a reviewk eredménytelenségéből.