Eötvös Loránd Tudományegyetem Informatikai Kar Szoftvertechnológia 1. előadás A szoftverfejlesztési folyamat 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
In short, software is eating the world. (Marc Andreessen)
Szoftverfejlesztés A szoftverek nélkülözhetetlen alkotóelemei a modern világnak számos célt szolgálhatnak, különböző felépítésűek, működési elvűek emiatt megvalósításuk módja is jelentősen eltérhet A szoftverek jelentős része hibás, a szoftverfejlesztési munkák jelentős része kudarcba fullad, ennek okai: egyre nagyobb számban, egyre összetettebb programokra van szükség alacsonyak az elvárások a szoftverekkel szemben Emiatt nagy szükség van a professzionális szoftverfejlesztésre ELTE IK, Szoftvertechnológia 1:3
Minőségi mutatók A szoftvereknek megfelelő színvonalon kell biztosítania az elvárt funkciókat, amit a szoftver minőségi mutatóival (quality characteristics) írhatunk le karbantarthatóság (maintainability): módosíthatóság, továbbfejleszthetőség lehetőségei megbízhatóság és biztonság (dependability and security): meghibásodások valószínűsége, támadásokkal szembeni védelem, sebezhetőségi pontok hatékonyság (efficiency): erőforrások használata, korlátai, válaszidő, skálázhatóság használhatóság (acceptability): érthetőség, használat elsajátítása, ergonómia ELTE IK, Szoftvertechnológia 1:4
A szoftvertechnológia Egy szoftvernek, mint terméknek gyártási technológiára van szüksége, amely garantálja a program funkcióit, minőségét, költségét és határidejét A szoftvertechnológia feladata szoftverek rendszerezett, felügyelt, minősített fejlesztése, működtetése és karbantartása a szoftver a program(ok), dokumentáció(k), konfiguráció(k), valamint adatok együttese A szoftverek többsége nagy méretű, nagy bonyolultságú programrendszer, amely rendszerint csapatmunkában készül hosszú élettartamú, karbantartást és bővítést igényel ELTE IK, Szoftvertechnológia 1:5
Szoftvertechnológiai projekt A szoftver fejlesztésének folyamatát projektnek, előállításának felügyeletét projektmenedzselésnek nevezzük A projektért felelős személy a projektmenedzsernek (project manager), aki biztosítja, hogy a szoftver megfelel az előírt minőségnek, elkészül a megadott határidőre költségkereten belül szervezi, irányítja, ütemezi a projektben részt vevő csapat munkáját, biztosítja a fejlesztéshez szükséges hardver és szoftver erőforrásokat, a módszerek és szabványok megfelelő alkalmazását gondoskodik a projekt dokumentáltságáról ELTE IK, Szoftvertechnológia 1:6
Szoftvertechnológiai projekt A szoftverfejlesztési csapatnak számos további tagja lehet, akik különböző szerepeket töltenek be, pl.: termékgazda (product management): üzleti folyamatok és prioritások és elfogadási feltételek kezelése programgazda (program management): fejlesztés ütemezése, feladatok elosztása és követése tervező (architect): szoftver magas szintű tervének elkészítése, technikai döntések kezelése fejlesztő (developer): szoftver implementációja minőségbiztosítás (quality assurance): tesztelés tervezése, magvalósítása, minőségi kritériumok ellenőrzése ELTE IK, Szoftvertechnológia 1:7
Szoftvertechnológiai projekt projektmenedzsment termékgazda programgazda tervező fejlesztő minőségbiztosítás ELTE IK, Szoftvertechnológia 1:8
A szoftver életciklus Minden szoftver rendelkezik életciklussal, amely meghatározza létét a feladat kitűzésétől a program használatának befejeztéig Az életciklus általában négy fő fázisra bontható: 1. specifikáció: a szoftver funkcionalitásának és megszorításainak megadása 2. tervezés és implementáció: a specifikációnak megfelelő szoftver előállítása 3. verifikáció és validáció: a szoftver ellenőrzése a specifikációnak történő megfelelésre 4. evolúció: a szoftver továbbfejlesztése a változó elvárásoknak megfelelően ELTE IK, Szoftvertechnológia 1:9
A szoftver életciklus feladat specifikáció tervezés és implementáció validáció evolúció kész szoftver ELTE IK, Szoftvertechnológia 1:10
Specifikáció A specifikáció (software specification) célja a feladatot megoldó szoftver funkcióinak tisztázása, a rendszerre és a fejlesztésre vonatkozó elvárások megadása feltérképezi a követelményeket felhasználói, valamint fejlesztői szemszögből, lépései: megvalósíthatósági elemzés követelmény feltárás és elemzés követelmény specifikáció követelmény validáció eredménye a szoftver követelmény-leírása (software requirements specification) ELTE IK, Szoftvertechnológia 1:11
Tervezés és implementáció A szoftver tervezése és implementációja (software design and implementation) feladata a specifikáció átalakítása egy végrehajtható rendszerré meghatározza a rendszer szerkezetét (felépülés), felületét (be- és kimenet), működését (alkalmazott algoritmusok, kommunikációs folyamatok) a folyamat során elkészül a szoftver rendszerterve (software design description), amely tartalmazza a program statikus és dinamikus szerkezetét, a kommunikációs csatornák feltérképezését, az implementációs és tesztelési tervet elkészíthető a szoftver prototípusa (prototype), amely a program egyszerűsített megvalósítását tartalmazza ELTE IK, Szoftvertechnológia 1:12
Tervezés és implementáció az implementációhoz megfelelő szoftverfejlesztési környezetet kell használnunk, a programkód változásait verziókövetéssel tartjuk nyilván az implementáció részeként az egyes programegységek tesztelése is megtörténhet a szoftverek tervezésének és programozásának módszerét nevezzük programozási paradigmának meghatározza a programozási stílust, az absztrakciós szintet meghatározza az alkalmazható programozási nyelvek körét is, és fordítva ELTE IK, Szoftvertechnológia 1:13
Programozási paradigmák csak adatstruktúrák tartományleíró rekord Turing-teljes λ-kalkulus eljárás állapot ekvivalencia funkcionális relációs (logikai) adatfolyam folyam-alapú deklaratív procedurális lokalizáció strukturált öröklődés objektum-orientált imperatív ELTE IK, Szoftvertechnológia 1:14
Validáció és evolúció A verifikáció és validáció (software verification and validation) célja megmutatni, hogy a rendszer megfelel a specifikációnak, valamint a felhasználói elvárásoknak alapvetően tesztelés, amely több fázisban, több módszerrel történik (a felhasználói tesztek csak az utolsó lépésben történnek) Az evolúció (software evolution) során továbbfejlesztjük, hogy új követelményeknek feleljenek meg, az esetlegesen felmerülő hibákat korrigáljuk átlagosan a szoftver élettartamának 80%-a, ezért eleve bővíthetőre, módosíthatóra kell kialakítani a szoftvert ELTE IK, Szoftvertechnológia 1:15
A szoftver életciklus További lépések is kísérhetik a fejlesztési folyamatot, pl. kihelyezés (deployment): a program üzembe állítása, és elérhetővé tétele tréning és támogatás (training and support): annak biztosítása, hogy a szoftvert megfelelően tudják kezelni és használni, tehát a felhasználókkal való kapcsolattartás A szoftver dokumentációja két részből tevődik össze: felhasználói dokumentáció, amely tartalmazza a szoftver üzembe helyezését, funkcióinak prezentálását fejlesztői dokumentáció, amely tartalmazza a szoftver megvalósítását folyamatát és részletes ismertetését ELTE IK, Szoftvertechnológia 1:16
Ütemterv A szoftver életciklus fázisai (feladatai) további fázisokra (részfeladatokra) tagolhatóak, így egy hierarchikus feladatszerkezetet kapunk az egyes feladatokra erőforrásokat és időkorlátot adhatunk az egyes feladatok között függőségeket állapíthatunk meg (a feladat nem kezdhető el, amíg a függősége el nem készül) ezek alapján elkészíthetjük a projekt ütemtervét tartalmazza a feladatok időbeli beosztását, függőségeit, felelőseit, így áttekinthetővé teheti az erőforrás szükségleteket általában a specifikáció során készül el, de később módosulhat ELTE IK, Szoftvertechnológia 1:17
Mérföldkövek A feladatokhoz mérföldköveket (milestone) rendelhetünk, amelyek lehetőséget adnak a projekt haladásában történő betekintésre a mérföldkő egy adott cél adott időpontra történő elérését jelenti, így névvel, eseménnyel, céllal rendelkezik a mérföldkövek be nem tartása általában korrekciókat követel a projekt lefutásában kellően konkrétnak, ellenőrizhetőnek, számon kérhetőnek kell lennie (akár a termékgazda számára is) a fő mérföldkövek az egyes fázisok lezárását jelentik, ezen kívül számos további mérföldkő adható ELTE IK, Szoftvertechnológia 1:18
Ütemterv t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10 F 1 F 2 F 3 F 4 F 5 F 6 F 7 M 1 M 2 M 3 ELTE IK, Szoftvertechnológia 1:19
Az UML A szoftverfejlesztési életciklust folyamatosan követi a modellezés, amelynek eszköze az egységes modellezési nyelv (Unified Modeling Language, UML) öt pillérű szemléletrendszere van: használati: szolgáltatásokkal kapcsolatos követelmények szerkezeti (statikus): a rendszer és a programegységek felépítése, kapcsolatai dinamikus: a programegységek viselkedése implementációs: a megvalósítás szempontjai, komponensei környezeti: hardver és szoftver erőforrások ELTE IK, Szoftvertechnológia 1:20
Az UML szerkezeti implementációs használati dinamikus környezeti ELTE IK, Szoftvertechnológia 1:21
Szoftverfejlesztési modellek Amellett, hogy a szoftverfejlesztés betartja az életciklus fázisait, a folyamat lefolyása különféle módokon történhet, amiket szoftverfejlesztési modelleknek nevezünk klasszikus modellek: vízesés, prototipizálás, inkrementális, iteratív, spirális, V-Model agilis modellek: RAD (rapid application development), XP (extreme programming), scrum speciális célú modellek: BDD (behavior-driven development), TDD (test-driven development), FDD (feature-driven development) formális modellek: B-módszer ELTE IK, Szoftvertechnológia 1:22
Esettanulmányok 1. esettanulmány: Készítsük el Marika néni kávézójának eladási nyilvántartását végigkövető programot. a kávézóban 3 féle étel (hamburger, ufó, palacsinta), illetve 3 féle ital (tea, narancslé, kóla) közül lehet választani az ételek ezen belül különfélék lehetnek, amelyre egyenként lehet árat szabni, és elnevezni, az italok árai rögzítettek rendeléseket kell kezelnünk, amelyben tetszőleges tétel szerepelhet, illetve a rendelés tartozhat egy törzsvásárlóhoz lehetőségünk van utólagosan lekérdezni a függőben lévő rendeléseket, valamint napi, havi és törzsvásárolói számra összesített nettó/bruttó fogyasztást ELTE IK, Szoftvertechnológia 1:23
Esettanulmányok 1. esettanulmány: minőségi mutatók (célkitűzés) karbantarthatóság: a program általános funkcionalitása várhatóan nem változik, de az egyes tételeket könnyen kell tudnunk módosítani megbízhatóság és biztonság: az alkalmazásnak garantálnia kell a hibátlan használatot, de nem kell garantálnia az adatok hibátlan megőrzését, a biztonság nem szempont hatékonyság: egy átlagos asztali gépen is működnie kell, az egyes funkcióknak azonnal le kell futnia (kivéve indítás, leállítás) használhatóság: az alkalmazás használatát azonnal el kell tudni sajátítani ELTE IK, Szoftvertechnológia 1:24
Esettanulmányok 1. esettanulmány: mérföldkövek 1. specifikáció időpont: 2015.10.10. esemény: elkészül a követelmény-leírás cél: felhasználói esetek, követelmények megállapítása 2. statikus tervezés időpont: 2015.11.10. esemény: elkészül a statikus terv cél: osztályok kapcsolatainak, leírásának elkészülte 3. dinamikus tervezés ELTE IK, Szoftvertechnológia 1:25
Esettanulmányok 1. esettanulmány: mérföldkövek 4. menürendszer időpont: 2016.01.05. esemény: elkészül a menürendszer implementációja és tesztelése cél: menüpontok tartalmának kiírása, felhasználói bevitel kezelése, mozgás a menüpontok között 5. rendelések megadása és tárolása időpont: 2016.01.20. esemény: elkészül a rendelések bevitelének implementációja és tesztelése ELTE IK, Szoftvertechnológia 1:26
Esettanulmányok 2. esettanulmány: Készítsünk egy Memory kártyajátékot, amelyben két játékos küzd egymás ellen. A játékmezőn kártyapárok találhatóak, és a játékosok feladata ezek megtalálása. a játékban választhatunk kártyacsomagot, a játékosok megadhatják neveiket, valamint a játék méretét (kártyák száma) a játékosok felváltva lépnek, minden lépésben felfordíthatnak két kártyát, amennyiben egyeznek, úgy felfordítva maradnak és a játékos ismét léphet, különben 1 másodperc múlva visszafordulnak a játékot az nyeri, aki több kártyapárt talált meg ELTE IK, Szoftvertechnológia 1:27
Esettanulmányok 3. esettanulmány: Készítsük el egy utazási ügynökség apartmanokkal foglalkozó rendszerét. az apartmanok épületekben találhatóak, amelyek városokban találhatóak az épületek különböző adatokkal (leírás, szolgáltatások, pontos hely, tengerpart távolság, ), valamint képekkel rendelkeznek a felhasználók egy webes felületen keresztül foglalhatnak apartmanokat (adataik, valamint a foglalás időpontja megadásával), amelyeket városok szerint böngészhetnek a munkatársak egy grafikus felületű alkalmazásban szerkeszthetik az apartmanok adatait, képeit ELTE IK, Szoftvertechnológia 1:28
Szoftvereszközök A fejlesztőcsapat munkáját megfelelő szoftvereszközökkel kell alátámasztani projektmenedzsment eszközzel (project tracking system), amely támogatja a folyamatos dokumentálást és a feladatok követését fejlett tervezőeszközzel (case tool), ahol a fejlesztés folyamata és a felelősség is nyomon követhető integrált fejlesztőkörnyezettel (IDE), amely elősegíti a csapatmunkát verziókövető rendszerrel (revision control system), amely lehetővé teszi a programkód változásainak követését, korábbi változatok eltárolását ELTE IK, Szoftvertechnológia 1:29
Projektmenedzsment eszközök lehetőségei A projektmenedzsment eszköz lehetőséget ad az alábbiakra: fejlesztés ütemtervének, kockázatainak meghatározása fejlesztés egyszerű és folyamatos dokumentálásának lehetősége és generálása feladatok, tevékenységek rögzítése, követése a tesztelés során előfordult hibák rögzítése, a javítási folyamat követése integrált verziókezelés és forráskód böngészés webes vagy grafikus felület, amely biztosítja a könnyű használatot, és bárhonnan való elérést ELTE IK, Szoftvertechnológia 1:30
Ütemterv és időzítés A szoftver lehetőséget ad, hogy a projekt ütemtervét elkészítsük, és azt folyamatosan szem előtt tarthassuk definiálhatunk mérföldköveket, amelyre adott feladatokat el kell végezni a fejlesztők külön-külön láthatják a saját feladataikat, menedzselhetik annak előrehaladását beoszthatjuk a fejlesztési lépések erőforrásait definiálhatunk függőségeket a programrészek között kezelhetjük az egyes fejlesztési lépések időbeli lefolyását, előrevetíthetjük a tervezettől való eltérések hatásait az erőforrásokra, illetve a további fejlesztési időkre ELTE IK, Szoftvertechnológia 1:31
Feladat és hibakövetés A rendszerek lehetőséget adnak a tervezők számára feladatok kitűzésére, valamint a tesztelők számára a programban fellelhető hibák jelzésére a feladatokat úgynevezett cédulák (ticket, issue) segítségével írhatóak ki jelölhetnek új funkcionalitást (feature), hibát (bug), egyéb fejlesztési feladatot (task), vagy dokumentációs feladatot (documentation) megadható a leírása, felelőse, határideje kommentálhatóak, lezárhatóak, újra kinyithatóak a cédulák biztosítják a fejlesztési és tesztelési folyamat naplózását ELTE IK, Szoftvertechnológia 1:32
A Trac projektmenedzser ELTE IK, Szoftvertechnológia 1:33
A Redmine projektmenedzser ELTE IK, Szoftvertechnológia 1:34
Projektmenedzsment eszközök Az eszközök felületi része alkalmas webes technológiával, míg az adattárolás adatbázis-motor segítségével valósítják meg a legtöbb eszköz szabad forráskódú, és a projektvezetés ugyanazon eszközzel van menedzselve Néhány népszerű projektmenedzser: Trac: Python alapú, MySQL/SQLite/PostgreSQL adatbázis háttérrel Redmine: Ruby on Rails alapú, MySQL/SQLite/PostgreSQL adatbázis háttérrel Microsoft Team Fundation Server: ASP.NET, Exchange és MSSQL alapú, elsősorban Visual Studio számára ELTE IK, Szoftvertechnológia 1:35
Projektvezető szolgáltatások A projektvezető szolgáltatások (project hosting services) általában rendelkezésre bocsátanak több projektfejlesztő eszközt projektmenedzsment, kód tárolás, kód megtekintés, verziókövetés, dokumentáció (Wiki), levelezési lista, adatbázis hozzáférés általában nyílt forráskódú szoftverek esetén ingyenes a szolgáltatás pl.: SourceForge, GitHub, CodePlex egyes szolgáltatások bizonyos programozási nyelvek, vagy témakör köré csoportosulnak (pl. mozdev, RubyForge) ELTE IK, Szoftvertechnológia 1:36