Utolsó módosítás: 2017. szeptember 8.

Gyakorlati agilis szoftverfejlesztés

- speciálkollégium -

17/18 I. félév

Dr. Beszédes Árpád egy. docens

SZTE TTIK Informatikai Intézet által gondozott BSc képzési programok számára

Kurzus meghirdetése

Általános információk 
Értékelés
 On-line anyagok
 Linkek
 Vissza a fő oldalra
 e-mail: 


Általános információk

Figyelem: A kurzus meghirdetésre került a Neptunban!

További kérdésekkel az oktatóhoz lehet fordulni.

A kurzus rövid elméleti bevezető után lehetőséget biztosít a hallgatóknak valódi szoftverfejlesztési projektekbe bekapcsolódni, amelyben mai modern agilis fejlesztési módszertanokat alkalmaznak. A kurzus célja a hallgatók bevezetése az agilis szemléletbe és a kapcsolódó keretrendszerek és technikák alapszintű megismertetése. A félév során a hallgatók egy egyszerű szoftvert fejlesztenek az agilis módszerek szerint, csoportos projektmunka keretében ipari partnereink közreműködésével. A projektfeladat során a hallgatókat egy állandó mentor segíti az agilis projektfolyamatok kialakításában. Csapat méretek: 3-7 fő.

A speciálkollégium két partnercégünk segítségével valósul meg (Tigra és CAS), a projekteket és a projektirányítást ők adják. Cégenként 1-1 projekt lesz definiálva (nagy érdeklődés esetén 2-2), ezekhez lehet a kurzus elején csatlakozni. A félév során dedikált időpontokban tantermi foglalkozások lesznek, ahol az előrehaladás lesz bemutatva és ellenőrizve. Ezen kívül, szükség és érdeklődés esetén a projekt a két cég telephelyén, illetve otthon is megvalósítható további időpontokban. Előzetes terveink szerint a foglalkozások 50%-a lesz tantermi foglalkozás, amelyeken a megjelenés kötelező.

Külsős oktatóink 2017-ben:
Kódszám: IMN003E-00070 (kurzuskód: IB001e-00122). Kreditszám: 3 (0 előadás + 2 gyakorlat).

Előfeltétel: magasabb évfolyamok. Előnyt jelent a Rendszerfejlesztés I és/vagy II. megléte. (részletes feltételek, kivételek az annotációban, illetve az első foglalkozáson lesznek ismertetve)

A kurzus konfirmációs. A hallgatók a félév elején lesznek kiválasztva eddigi tanulmány/tapasztalat és/vagy beugró teszt alapján.

Helyszín: Irinyi 108 "hálózatok" Labor. Helyszín felváltva Irinyi labor és külsős helyszín, céges telephely (ld. ütemezés alább).

Állandó időpont: KEDD 16-18.

A konzultáció időpontja: CSÜTÖRTÖK 11:00-12:00 Beszédes Árpád szobájában (Dugonics téri főépület, 152. szoba).

Tervezett ütemezés:

Dátum
CAS csoport
Tigra csoport
szeptember 5. Irinyi: közös tájékoztató
Irinyi: közös tájékoztató
szeptember 12. Irinyi: közös tájékoztató Irinyi: közös tájékoztató
szeptember 19. Irinyi: elméleti előadás
Irinyi: elméleti előadás
szeptember 26. Irinyi: elméleti előadás Irinyi: elméleti előadás
október 3. Irinyi: projekt
Telephely: projekt
október 10.
Telephely: projekt Irinyi: projekt
október 17. Irinyi: projekt Telephely: projekt
október 24. Telephely: projekt Irinyi: projekt
október 31. Irinyi: projekt Telephely: projekt
november 7. Telephely: projekt Irinyi: projekt
november 14. Irinyi: projekt Telephely: projekt
november 21. Telephely: projekt Irinyi: projekt
november 28. Irinyi: közös értékelés Irinyi: közös értékelés
december 5. Irinyi: közös értékelés
Irinyi: közös értékelés


Tervezett tematika a 2017-os tanévben:

•    Bevezetés
Az agilis szoftverfejlesztés alapjai. Mire jók a szoftverfejlesztési módszertanok. Az agilis kiáltvány, agilis alapelvek, agilis módszertanok. A LEAN gyártás szemlélete és elemei, mint az agilitás alapja. Érték vs. pazarlás, állandó tanulás. Kanban, XP, Scrum elemei és összehasonlítása és kapcsolata.

•    A Scrum keretrendszer elemei és szerepkörei
Scrum master, Product owner, fejlesztő csapat, iterációk. Értekezletek.

•    Agilis tervezés szintjei
Hogyan lehet egy szoftver-terméket, illetve annak kiadásait (release) megtervezni, és hogyan lehet a szállítási időket jól becsülni. Kiadás (release) tervezés, felhasználói sztorik (user story), epic, user voice. Becslési technikák, Iteráció tervezés, Daily Standup.

•    Agilis tervezés a gyakorlatban: backlog készítése, sprint tervezés
Egy konkrét alkalmazás tervezését kezdjük meg. Megbecsüljük az egyes felhasználói sztorik méretét (pl. Playing Poker segítségével), elkészítési idejét, elfogadási kritériumokat használunk.

•    Prioritások
Az agilis fejlesztés középpontjában az értékkel bíró szoftver hatékony kiadása áll. Prioritások nélkül ez nem megvalósítható. Lehetséges priorizálási módszerek, prioritások felülvizsgálata, story backlog menet közbeni módosítása.

•    Daily Standup
Napindító agilis ceremónia szimulálása, maximum 15 percben, ahol a csapattagok három kérdésre válaszolnak: „1. Mivel járultam hozzá az előző „munkanapon” a Sprinthez? 2. A Sprint melyik részén fogok „ma” dolgozni? 3. Milyen problémákkal találkoztam, mi akadályozza a fejlesztési folyamatot?”

•    Sprint review:
A csapattagok demózzák a lefejlesztett termék adalékot/növekedést. Egyesével megvizsgálják a User Story-kat és azokat vagy elfogadják és késznek nyilvánítják (ha megfelelnek az elfogadási kritériumnak), vagy visszautasítják és megjelölik a további feladatokat.

•    Sprint retrospective:
A csapattagok kiértékelik a két hetes Sprintidőszakot és csapatmunkát. 1. Mi ment jól, mik a pozitívumok? 2. Mi volt „csak” rendben? 3. Mi ment kimondottan rosszul? 4. Milyen lépéseket írunk ki a jelzett problémák orvoslására és ki lesz ezen lépések betartásáért a felelős?

•    Agilis tesztelés
Az agilis módszertan a hagyományostól eltérő tesztelést igényel. Ezek a tesztek magukba foglalnak a fejlesztők által megírt, és a tesztelők által végzett teszteket. Bemutatjuk, hogy egy adott szoftver esetében hogyan tudjuk meghatározni, hogy milyen típusú tesztekből mennyire van szükség ahhoz, hogy minőségi szoftvert készíthessünk. Automatizált tesztek, UI tesztek, funkcionális tesztek, unit tesztek, integrációs tesztek.

•    Unit tesztelés a gyakorlatban és TDD
A tesztvezérelt fejlesztés (Test Driven Development) egy kulcsfontosságú gyakorlat az extrém programozásban. TDD alkalmazása esetén a végrehajtó-kód a teszt-kóddal együtt fejlődik, ezzel is biztosítva a jó minőséget. TDD alapelvek, alapfogalmak (tesztelt kód - Code under test, teszt-lefedettség - code coverage, elvárt eredmények - expectation). Egy gyakorlat keretében a hallgatók elsajátíthatják a TDD fejlesztéshez kapcsolódó gyakorlatokat, trükköket, technikákat, és megtapasztalják, hogy hogyan lehet hatékony unit teszteket írni.

•    Refactoring
A legtöbb szoftver életciklusa során eljut abba a fázisba, amikor már nehezen karbantartható. Minőségi szoftver csak úgy készíthető, ha ezt a minőségbeli romlást tudatosan, már a fejlesztés közben megakadályozzuk. Ennek egyik leghatékonyabb módja a refaktorálás. Konkrét szoftver refaktorálásának részletes bemutatása program-kódon keresztül. A hallgatók maguk is refaktorálnak konkrét program kódot. A gyakorlat keretében bemutatjuk a refaktorálási lehetőségek katalógusát és egyéb refaktorálási trükköket, amelyek lehetővé teszik minőségi kód elkészítését.

•    Folyamatos integráció elmélete és gyakorlata
A folyamatos integráció szintén fontos eleme az agilis fejlesztésnek, mivel a becslések és a projekt státusza csak akkor vehetőek figyelembe, ha az egyes fejlesztési feladatok folyamatosan integrálva vannak. Gyakorlat keretében készítünk egy folyamatos integrációs eszközbe építve egy build scriptet, amivel ellenőrizhetjük az elkészült kód integritását. CI keretrendszerek, 10-minute Build, Test suite, Release train.

•    Automatizált tesztelés
A folyamatos integrációt csak úgy tudjuk elérni, ha kód minden verziójáról el tudjuk dönteni, hogy az megfelel-e a követelményeknek. Ezt csak automatizált tesztekkel érhetjük el. Áttekintjük az automatizált tesztelési eszközöket, elfogadási teszteket, megtárgyaljuk azok előnyeit, hátrányait, majd bemutatjuk tipikus problémáit.

•    eXtrém programozás
Az extrém programozás öt Értékre (kommunikáció, egyszerűség, visszacsatolás, bátorság és bizalom) épülő gyakorlatok összessége, ahol az értékek és gyakorlatok közötti kapcsolatot az Elvek jelentik. Bemutatjuk, hogy az egyes gyakorlatok (pl. TDD) hogyan valósítják meg ezeket az értékeket. Értékek, elvek, gyakorlatok. Gyakorlatok részletes tárgyalása, hétköznapi jelentésük, megvalósításuk, előnyök, hátrányok. Bemutatjuk, hogy mit jelentenek ezek a gyakorlatok egy projekt esetében a napi munkában. Pair programming módszertan.

•    Agilis csapatok skálázhatósága
Nexus és a Spotify módszer.

Teljesítés feltételei

Teljesítés hivatalos feltételei, valamint a tematika és ajánlott irodalom megtalálhatók a Coospace és Neptun megfelelő felületein.

A félév teljesítése a projektmunka kiértékelésén alapul. A tárgy célja többek között az agilis csapatmunka elősegítése, amelynek a közös felelősség az egyik alappillére. Ezért az értékelésnél is alapvetően a csoportot fogjuk egységként értékelni, a félév elején meghatározott kritériumok alapján. Azonban, indokolt esetben egyéni értékelést is alkalmazunk.

A kurzus látogatása (úgy az egyetemi mint a céges helyszineken) kötelező, hiszen a csapatmunka enélkül nehezen valósítható meg. A közös projekmegbeszélések fő témája a projekt előrehaladás, illetve a technikai kérdések megbeszélése. Maga a fejlesztés egyénileg, külön időpontokban történik.

Online anyagok

Hasznos linkek

Vissza a lap elejére