720 likes | 1k Views
Szoftvertechnológia. 5. előadás. Szoftvertechnológia. Agilis módszerek. Gyors szoftverfejlesztés – agilis módszerek. Lassú fejlesztési folyamatok Gyorsan változó környezet
E N D
Szoftvertechnológia 5. előadás Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Szoftvertechnológia Agilis módszerek Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Gyors szoftverfejlesztés – agilis módszerek • Lassú fejlesztési folyamatok • Gyorsan változó környezet • A gyors szoftverfejlesztési folyamatokat arra tervezték, hogy segítségükkel gyorsan készíthessük használható szoftvereket Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Kiáltvány az agilis szoftverfejlesztéséért (2001. február) http://agilemanifesto.org/ Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Az agilis fejlesztés 12 alapelve1 Legfontosabbnak azt tartjuk, hogy a vevőnk elégedett legyen, mert értékes szoftvert szállítunk neki hamar és folyamatosan. Elfogadjuk, hogy a követelmények változhatnak akár a fejlesztés vége felé is. Az agilis módszertanok befogadják a változást a megrendelő versenyképességének érdekében. Gyakran szállítsunk működő szoftvert, pár hetes és hónapos időközönként, lehetőleg a rövidebb periódust választva. A megrendelők, üzleti szakemberek és a szoftverfejlesztők dolgozzanak együtt minden nap a teljes projekt során. Építsük motivált egyénekre a projekteket. Teremtsük meg nekik a számukra szükséges környezetet és támogatást, és bízzunk bennük, hogy elvégzik a munkát. A személyes beszélgetés az információ átadásának leghatásosabb és hatékonyabb módja a fejlesztő csapaton belül. Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Az agilis fejlesztés 12 alapelve Az előrehaladás elsődleges mércéje a működő szoftver. Az agilis módszertanok elősegítik a fenntartható fejlesztést. A szponzoroknak, fejlesztőknek, felhasználóknak korlátlan ideig képesnek kell lenniük az egyenletes sebesség megőrzésére. A folyamatos figyelem a technikai kiválóságra és a jó tervezésre fokozza az agilitást. Az egyszerűség – az el nem végzett munkamennyiség maximalizálásának művészete – alapvető érték. A legjobb architektúrák, követelmények és rendszertervek az önszerveződő csapatmunkából alakulnak ki. A fejlesztői csapat rendszeres időközönként megfontolja, hogyan válhatna hatékonyabbá, és ennek megfelelően változtatja viselkedését. Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Általános jellemzők - alapelvek A specifikáció, a tervezés és az implementálás párhuzamosan zajlik. Nincs részletes rendszerspecifikáció. Inkrementális fejlesztés. A végfelhasználók is részt vesznek minden lépés specifikációjában és az eredmény kiértékelésében. Indítványozhatnak változtatásokat és új követelményeket (gyakran). Felhasználói felület vizuális tervezéssel Kezelési egyszerűség: az egyszerűségre kell koncentrálni, mind a fejlesztendő szoftver, mind a fejlesztési folyamat tekintetében. Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Előnyök A szolgáltatások hamar használhatók Mivel a felhasználót bevonják a fejlesztésbe, a rendszer sokkal jobban meg fog felelni az igényeiknek és ráadásul jobban elkötelezik magukat a szoftver mellett Az inkrementális szoftverfejlesztés közel áll az emberek probléma-megoldási módjához: mivel ritkán dolgozunk ki teljes megoldásokat, hanem a megoldásainkat lépésenként továbbfejlesztjük, és visszalépünk, ha hibáztunk Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Nehézségek Nem biztos, hogy az ügyfél tud és akar is időt tölteni a fejlesztőcsapattal Személyi adottságok hiánya Gyakori áttervezés Az egyszerűség fenntartása külön munkát igényel Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Hátrányok Kezelési problémák - kevés a rendszerdokumentáció Szerződésbeli problémák - nincs rendszer-specifikáció A független validáció nehezen oldható meg A folyamatos változtatás elronthatja a rendszer struktúráját Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Alkalmazás • Mikor alkalmazzák? • Kis rendszerek/ kis projekt • Kevés fejlesztő • Alacsony kritikussági fok • Gyakran változó követelmények • Csak gyakorlott, szenior fejlesztők esetén • Mikor nem? • Nagy és elosztott rendszerek • Kritikus rendszerek • Hosszú élettartamú rendszerek Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Agilis technikák eXtrém Programozás Scrum KristályTiszta és más Kristály módszertanok Dynamic Systems DevelopmentMethod FeatureDrivenDevelopment (Funkcionalitáson Alapuló Fejlesztés) Test DrivenDevelopment(Tesztelésen Alapuló Fejlesztés) Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
eXtrém Programozás Minden követelmény forgatókönyv (felhasználói történet) Ez feladatokra bontható és egy-egy feladat önállóan implementálható A programozók változó párokban dolgoznak, és minden feladatra teszteket készítenek mielőtt még a kódot megírnák Minden tesztnek sikeresen le kell futnia, mielőtt az új kódot elhelyeznék a rendszerben A rendszer kiadásai között csak kis idő telik el (pl. 1 hét) Folyamatos tökéletesítés (a kódot át kell írni, átszervezni, hatékonyabbá tenni, amikor csak lehet) Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
XP lépések A kiadáshoz történő felhasználói történet kiválasztása A történet feladatokra bontása A kiadás tervezése A szoftver fejlesztése/integrálása/tesztelése A szoftver kiadása A rendszer értékelése Vissza 1. Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Felhasználói történet „Egy cikk letöltése és kinyomtatása Először válasszuk ki egy megjelenített listából a kívánt cikket. Aztán adjuk meg a rendszernek a fizetési módot – ez lehet előfizetéses vagy vállalati számláról történő vagy hitelkártyával. Ezután kapunk egy kitöltendő szerzői jogi űrlapot. Ha ezt elküldtük, a cikk letöltődik a számítógépünkre. Ezután választunk egy nyomtatót és kinyomtatjuk a cikk egy másolatát. Közöljük a rendszerrel a sikeres nyomtatás tényét. Ha a cikk csak nyomtatható, akkor nem őrizhetjük meg a PDF-verziót, így az automatikusan törlődik a számítógépünkről.” Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Feladatokra bontás „3. feladat: A fizetési lehetőségek implementálása A fizetés három különböző úton történhet. A felhasználó kiválasztja, hogy milyen módon szeretne fizetni. Ha a felhasználónak van könyvtári olvasójegye, akkor beírhatja ide annak azonosítóját, amit a rendszernek ellenőriznie kell. Másik lehetőség, hogy megad egy szervezeti számlaszámot. Ha az érvényes, akkor a cikknek megfelelő költséggel megterhelik a számlát. Végül beírható a 16 számjegyből álló hitelkártyaszám és lejárati dátum. Ellenőrizni kell ennek az érvényességét, és amennyiben érvényes, akkor terhelést kell küldeni a hitelkártyaszámlára.” Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Teszteset-leírás 4. teszt: Hitelkártya érvényességének ellenőrzése Bemenet: A hitelkártyaszám egy karaktersorozat, míg a kártya lejárati hónapját és évét két egész szám reprezentálja. Tesztek: Ellenőrizni kell, hogy a karaktersorozat minden bájtja számjegy-e. Ellenőrizni kell, hogy a hónap egy és 12 között van-e és az év nagyobb vagy egyenlő-e az aktuális évvel. A hitelkártya számának első négy számjegye alapján ellenőrizni kell, a kibocsátó érvényességét a kártyakibocsátók táblázata alapján. A hitelkártya érvényességét ellenőrizzük úgy, hogy elküldjük a kártyaszámot és a lejárati dátuminformációt a kártya kibocsátójához. Kimenet: OK vagy hibaüzenet, ami a kártya érvénytelenségét jelzi. Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
SCRUM Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Scrum HirotakoTakeuchi & IkoyiroNonaka (1986) új, gyors termékfejlesztési módszer A Scrum elnevezés a rugby-ből ered Iteratív és inkrementális agilis szoftverfejlesztési keretrendszer Rugalmas Demokratikus, rugalmas, felelősség- és eredményközpontú, emberközpontú módszer A határidő szent és sérthetetlen Elsősorban kis csapatok 5-9 fő esetén működik jól A csapat végig együtt dolgozik Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Scrum jellemzők Szóbeli kommunikáció Gyakran önszerveződő csapat Nem fedi le a teljes termékfejlesztési életciklust, ezért gyakran együtt alkalmazzák más módszerekkel Pl. kezdeti követelményelemzés, prioritások meghatározása, kezdeti magas szintű tervezés, ütemezés Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Scrum alapelvek • Avevő igényei menet közben változhatnak • Elfogadjuk, hogy lehet, hogy a feladatot nem tudjuk teljesen megérteni vagy definiálni • Arra összpontosít a csapat, hogy a lehető leggyorsabban • szállítson • reagáljon az új követelményekre Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Szerepkörök1 • Termékgazda (ProductOwner): Termék teendőlista (ProductBacklog) • Biztosítja az értékteremtést • Felhasználói történeteket ír és karbantartja azokat • A fejlesztő csapat tagja lehet, lehet ő a projektmenedzser • Fejlesztő csapat • Feladata a sprint cél teljesítése • A sprint végére átadható terméket kell előállítson • 7±2 fő Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Szerepkörök2 • SrumMaster: • Segíti a csapatot • Elhárítja a sprintcélt veszélyeztető akadályokat • Gondoskodik arról, hogy helyesen alkalmazzák a Scrum-ot • Nem csapatvezető, nem lehet azonos a projekt menedzserrel Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
A Scrum folyamat Termék teendőlista (ProductBacklog) Sprint teendőlista (Sprint Backlog) Futam (Sprint) Egy működő szoftveregység (Working increment of the software) 2-4 weeks 24h
Termék teendőlista (ProductBacklog) • Magas szintű követelmény leírások • Fejlesztési célok (funkciók leírásai, kívánságok, ötletek, stb.) • Prioritások • Üzleti érték becslés ← Terméktulajdonos • Ráfordításigény becslés ← Fejlesztők Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Sprint - Futam • Egy előre meghatározott időtartamú részfolyamat • 1 hét … 1 hónap (ált. 2 hét) • Futamtervező megbeszélés → feladatok beazonosítása → Futam teendőlistája • Sprintcélok megvalósítása (fejlesztés) és napi megbeszélés • A végén értékelés (sprint forduló) • Futamáttekintés • Visszatekintés Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Futamtervező megbeszélés (Sprint planning) Elvégzendő feladatok kijelölése a termék teendőlistájáról (productbacklog) a terméktulajdonos közreműködésével Futam teendőlistájának előkészítése, amely a teljes csapat figyelembevételével részletezi az egyes részfeladatok időszükségleteit Annak meghatározása és kommunikálása, hogy mennyi feladat elvégzése várható el az aktuális futam során 4 hetes futam esetén maximum 8 óra hosszúságú, rövidebb futam esetén ez az esemény is rövidebb Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Futam teendőlistája (Sprint Backlog) A fejlesztő csapat "vállalja be a termék teendőlistáról" A csapat kezeli Felhasználói történetek/Funkciók részfeladatokra bontva A csapattagok önkéntesen vállalnak egy-egy részfeladatot a napi megbeszélések során – prioritások és készségek alapján Követés: ScrumTaskBoard Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
ScrumTaskBoard Forrás: http://upload.wikimedia.org/wikipedia/commons/1/1b/Scrum_task_board.jpg Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Napi megbeszélés (Daily Scrum) Ábra: http://en.wikipedia.org/wiki/File:Daily_sprint_meeting.jpg • Minden nap ugyanott, ugyanakkor, max. 15 perc • Minden csapattagnak válaszolni kell: • Mit csináltál az előző „Daily Scrum” óta? • Mit tervezel mára? • Akadályozza-e valami a munkádat? Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Burndown chart Ábra: http://en.wikipedia.org/wiki/File:SampleBurndownChart.png Naponta frissített diagram a futam állapotáról A hátralevő munka mennyisége Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Futamáttekintés (Demo vagy Sprint Review) Mely munkák készültek el és melyek nem? Az elkészült munka bemutatása a terméktulajdonos és a fejlesztésben érdekeltek részére (demo) Be nem fejezett munkát nem lehet bemutatni 4 hetes futam esetén maximum 4 óra hosszúságú, rövidebb futam esetén ez az esemény is rövidebb Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Visszatekintés (Sprint Retrospective) • A csapattagok véleményt alkotnak az elmúlt futamról • Javaslatokat tesznek a folyamatok továbbfejlesztésére • Két kérdés merül fel a megbeszélésen: • Mi az, ami jól ment a futam alatt? • Mi az, amit a következő futam során jobban lehetne csinálni? • 4 hetes futam esetén maximum 3 óra hosszúságú, rövidebb futam esetén ez az esemény is rövidebb Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Szoftvertechnológia Szoftverek ellenőrzése és elemzése Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Verifikáció és validáció Verifikáció: a specifikációnak való megfelelés ellenőrzése Validáció: a vevői elvárások teljesülésének ellenőrzése (pl. ide tartozhat a hatékonyság e., hibatűrés e., erőforrásigény e. is) V&V-re a teljes fejlesztési folyamat során szükség van Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
V modell Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Ellenőrzési technikák • Statikus elemzés • Szoftver átvizsgálás • Automatikus elemzés • Dinamikus tesztelés • Hiányosság tesztelés • Stressz tesztelés • Komponens tesztelés • Rendszer (integrációs) tesztelés Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Szoftver átvizsgálás • Legalább 4 fős csapat: szerző, olvasó, tesztelő, moderátor • Átvizsgálás ↔ Szerző módosít • Tipikus hibák: adath., vezérlési h., I/O h., interfész h., tárkezelési h., kivételkezelési h. • A program hibáinak több mint 60%-a felderíthető ily módon Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Automatikus elemzés • Szoftver, ami a forrásszöveget vizsgálja (nem futtat) • Nem használt kódrészlet, inicializálatlan változók • Tipikus hibák: adath., vezérlési h., I/O h., interfész h., tárkezelési h. • Pl. LINT/Splint C; VS beépített figyelmeztetések, ReSharper • Nem ismeri fel a helytelen inicializálást Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Szoftverek ellenőrzése és elemzése Technikák • Statikus elemzés • Szoftver átvizsgálás • Automatikus elemzés • Dinamikus tesztelés • Hiányosság tesztelés • Stressz tesztelés • Komponens tesztelés • Rendszer tesztelés Hogyan? Milyen céllal? Mit? Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
A hiányosságtesztelés folyamata Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Hiányosság tesztelés Célok • A specifikáció és a megvalósított program közötti eltérések felderítése • A rendszer helytelen működésének előidézése Irányelvek • Válasszunk olyan bemeneteket, amelyekkel az összes lehetséges hibaüzenetet előidézhetjük • Próbáljuk meg elérni a bemeneti pufferek túlcsordulását • Ugyanaz a bemenet ugyanazt a kimenetet adja mindig? • Kényszerítsük ki az érvénytelen kimenetet Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Hiányosság-tesztelési módszerek • Fekete doboz tesztelés • A rendszer/komponens belseje nem ismert • A bemenetre adott válaszok tanulmányozása • Fehér doboz tesztelés • Ismert a szerkezet • Kis egységekre alkalmazzák • Minden független végrehajtási utat kipróbálnak (útvonal teszt) Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Fehér doboz tesztelés Útvonalak felderítése • Egyszerű esetekben folyamatgráf felrajzolása kézzel • Bonyolult esetekben dinamikus programelemzővel (DPE) • DPE: a fordítóval együttműködő szoftver, számolja, hogy az egyes utasítások hányszor kerültek végrehajtásra – mi maradt ki → futási profil Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Útvonalak - folyamatgráf Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Stressz (teljesítmény) tesztelés Cél • A teljesítmény és a megbízhatóság tesztelése • A tervezett terhelés mellett képes legyen dolgozni a rendszer • Olyan hiányosságok is kiderüljenek, amelyek nem jelennek meg normál körülmények között Eljárás • Addig növeljük a terhelést, amíg a rendszer teljesítménye elfogadhatatlanná nem válik Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Szoftverek ellenőrzése és elemzése Technikák • Statikus elemzés • Szoftver átvizsgálás • Automatikus elemzés • Dinamikus tesztelés • Hiányosság tesztelés • Stressz tesztelés • Komponens tesztelés • Rendszer tesztelés Hogyan? Milyen céllal? Mit? Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Komponenstesztelés (egységteszt) Cél a komponensekben levő hibák felderítése Általában hiányosságtesztelés Mit tesztelünk? Metódusok Osztályok Teljes komponens (több osztály) funkcionalitása Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Rendszertesztelés A komponensek integrálásával kapott egész tesztelése Szakaszok Integrációs tesztelés – fehér doboz tesztelésCél a hiányosságok felderítése Kiadás tesztelés – fekete doboz tesztelésJól működik-e a rendszer? Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014
Integrációs tesztelés Cél az együttműködésből adódó problémák felderítése Képesek-e együttműködni? Megfelelőek-e a metódushívások? Mely komponens csoportok biztosítják az egyes funkcionalitás elemeket? Leggyakoribb az inkrementális integrációs tesztelés Dr. Johanyák Zs. Csaba - Szoftvertechnológia - 2014