Software engineering (Software techológia) Bevezetés, alapfogalmak Utolsó módosítás: 2006. 02. 16. SWENGBEV / 1 Történelem 1. 60-as évek Megoldandó problémák: egyedi problémákra kis programok Fejlesztő: Speciális tudású személy (kutató) Eszköz: assembler, memória térkép Módszer: nincs Software engineering (Bevezetés) SWENGBEV / 2 Történelem 2. a software krízis (1960. évek vége) zuhanó hardware árak növekvő hardware teljesítmény növekvő igény a software-ekre software költségeinek ugrásszerű növekedése a software minősége nem megfelelő. Software engineering (Bevezetés) SWENGBEV / 3
Történelem 3. 70-es évek Megoldandó problémák: Visszatérő problémák Nagy, monolitikus programok Nincs (vagy korlátozott) interaktivitás Fejlesztő: speciális szaktudású szakember esetleg informális csoportok Software engineering (Bevezetés) SWENGBEV / 4 Történelem 4. 70-es évek (folyt) Eszköz: editor compiler linker, kezdetleges debugger első generációs. majd strukturált programnyelvek célnyelvek (pl. report generator) egyedi adatkezelés Módszer: algoritmusok, adatszerkezetek kutatása strukturált, majd moduláris programozás Software engineering (Bevezetés) SWENGBEV / 5 Történelem 5. 80-es évek Megoldandó problémák: nagyméretű, folyamatosan működő, nagy megbízhatóságot követelő programok Egyre bonyolultabbá váló felhasználói felületek Nagy mennyiségű adatok, tranzakció szemléletű feldolgozás Adatok tárolási és feldolgozási struktúrája elválik Hálózat megjelenése Software engineering (Bevezetés) SWENGBEV / 6
Történelem 6. Fejlesztő: csoportmunka igénye szakmán belüli specializálódás Management problémák megjelenése Eszköz: fejlesztői környezetek korai CASE (Computer Aided Software Engineering) rendszerek adatbázis kezelő rendszerek Módszer: kezdeti módszertanok - dekompozíció Software engineering (Bevezetés) SWENGBEV / 7 Történelem 7. 90-es évektől Megoldandó problémák: hálózat és internet széles körűvé válása elosztott rendszerek igénye információk változatos megjelenési formája fejlesztési ciklus idejének rövidülése (üzleti nyomás a folyamatos továbbfejlesztésre) nyílt, hordozható sőt platform független megoldások igénye minőségbiztosítás igénye Fejlesztő: csoportmunka, sokszor térben elosztva Software engineering (Bevezetés) SWENGBEV / 8 Történelem 8. Eszköz: integrált, csoportmunkát támogató fejlesztő környezetek szélessávú CASE rendszerek keretrendszerek software management támogatása Módszer: Objektum orientált technológia Szabványok (X, Corba, DCOM, Java RMI) Komponens alapú programozás kutatások további technológiai fejlesztésekre Software engineering (Bevezetés) SWENGBEV / 9
Mi a software? TERMÉK, azaz Hasznosnak kell lennie (szolgáltatások) Elvárt minőségűnek kell lennie Előállításának költsége és határideje van Általában fizetnek érte a használói (ára van) Marketing szempontok is befolyásolják a technikai szempontok mellett Sokszor divatkövetőnek kell lennie DE Speciális tulajdonságai vannak Általában hosszú élettartamú Software engineering (Bevezetés) SWENGBEV / 10 A software speciális tulajdonságai nem anyagi jellegű másolat = eredeti használat miatt nem igényel karbantartást nincs sorozatgyártás tükröznie kell a valóságot Software engineering (Bevezetés) SWENGBEV / 11 A software speciális tulajdonságai (folytatás) komplexitása nagyobb a legtöbb műszaki terméknél viselkedése nem folytonos hibák előzetes jelek nélkül alkalmazkodás a külső környezethez Software engineering (Bevezetés) SWENGBEV / 12
A software engineering definíciói 1. Ha termék, előállítási ("gyártási") folyamat kell Egy előállítási folyamat szabályait technológiának nevezzük. A software technológia egy egyszerű definíciója: Eszközök és módszerek a szoftver termékszerű előállítására Software engineering (Bevezetés) SWENGBEV / 13 A software engineering definíciói 2. A klasszikus definíció (Boehm, 1976): The practical application of scientific knowledge in the design and construction of computer programs and the associated documentation required to develop, operate and maintain them. Software engineering (Bevezetés) SWENGBEV / 14 A software engineering definíciói 2. Magyarul: Tudományos ismeretek gyakorlati alkalmazása számítógépes programok és a fejlesztésükhöz, használatukhoz és karbantartásukhoz szükséges dokumentációk tervezésében és előállításában. Software engineering (Bevezetés) SWENGBEV / 15
A software engineering definíciói 3. A hivatalos definíció (IEEE, 1983): The technological and managerial discipline concerned with systematic production and maintenance of software products that are develop and modified on time and within cost estimated. Software engineering (Bevezetés) SWENGBEV / 16 A software engineering definíciói 4. Magyarul: Technológiai és vezetési alapelvek, amelyek lehetővé teszik programok termékszerű gyártását és karbantartását a költség- és határidő korlátok betartásával. Software engineering (Bevezetés) SWENGBEV / 17 A szoftver fejlesztés fázisai 1. 1.Követelmény analízis Mit is kellene csinálni? Mikorra, és mennyiért? Kikkel? 2.Specifikáció Mit kell csinálni? Software engineering (Bevezetés) SWENGBEV / 18
A szoftver fejlesztés fázisai 2. 3.Tervezés Hogyan kell megcsinálni? 4.Implementáció Na, akkor csináljuk!! 5.Installáció és tesztelés Mit műveltünk? Software engineering (Bevezetés) SWENGBEV / 19 A szoftver fejlesztés fázisai 3. 6. Karbantartás Ha elszúrtad, javítsd is ki! Aki elszúrta, azóta már főnök - TE javítsd ki! Ha pedig a rendszer hibátlan(nak látszik) - Az Úr (a felhasználó) szava : igazából nem is ez kellene, hanem... azt pedig nem úgy értettem, hanem... ha már ezt tudja, tudhatná azt is, hogy... újabban ezt már nem is így kell csinálni, hanem... Azaz: esmétlés onnan, hogy... Software engineering (Bevezetés) SWENGBEV / 20 Kiegész szítő munkafolyamatok Projekt menedzsment Verzió kezelés / verzió követés Erőforrás management Minőségbiztosítás Terméktámogatás Projekt értékelés, fejlesztési folyamat továbbfejlesztése Software engineering (Bevezetés) SWENGBEV / 21
Software életciklus modellek Az egyes fejlesztési fázisok viszonya egymáshoz Software engineering (Bevezetés) SWENGBEV / 22 Klasszikus ("waterfall waterfall") 1. Boehm, 1976 Analízis Specifikáció Tervezés Implem. Tesztelés Használat Software engineering (Bevezetés) SWENGBEV / 23 Klasszikus ("waterfall waterfall") 2. Jellemzői: technikai problémának tekinti a fejlesztést nem foglalkozik a kommunikációs problémákkal visszacsatolás túl későn (a teljes rendszer elkészülte utáni tesztelés után) lehetséges hol a helye a karbantartásnak? Software engineering (Bevezetés) SWENGBEV / 24
Gyors prototípus (rapid prototyping) 1. Analízis Specifikáció ^ Tervezés Implem. V Tesztelés Prototípus > Használat Software engineering (Bevezetés) SWENGBEV / 25 Gyors prototípus (rapid prototyping) 2. Jellemzői: segíti a fejlesztő és a felhasználó kommunikációját főleg kisebb csoportoknál vált be Software engineering (Bevezetés) SWENGBEV / 26 Inkrementális (vagy evolúciós) 1. Analízis Specifikáció Tervezés Specifikáció Tesztelés Implem. Tesztelés Tervezés Implem. Specifikáció Tervezés Implem. Tesztelés Használat Software engineering (Bevezetés) SWENGBEV / 27
Inkrementális 2. Jellemzői: az eredeti célhoz egyre közelebb álló rendszerek sorozata minden rendszer átmegy legalább a tervezés - implementálás - tesztelés fázisokon csökkenthető a fejlesztés kockázata az objektum orientált fejlesztési módszertanok általában ezt ajánlják szokás iterációs modellnek is nevezni Software engineering (Bevezetés) SWENGBEV / 28 Újrafelhasználás 1. Analízis Specifikáció Tervezés Kész elemek Implem. Kész elemek Kész elemek Tesztelés Használat Software engineering (Bevezetés) SWENGBEV / 29 Újrafelhasználás 2. Jellemzői: ez alulról felfelé építkező modell (bottom - up) gyors módszer, ha van elég "építőanyag" a hatékonyság a szükséges helyeken utólag javítható Software engineering (Bevezetés) SWENGBEV / 30
Újrafelhasználás 3. Újrafelhasználható elemek Implementáció algoritmusok függvény könyvtárak osztály és objektum könyvtárak software komponensek korábban fejlesztett, hasonló rendszerek Software engineering (Bevezetés) SWENGBEV / 31 Újrafelhasználás 4. Tervezés tervezési minták (design patterns) bevált architekturális megoldások Analízis, specifikáció leginkább az előző fejlesztések tapasztalatai Software engineering (Bevezetés) SWENGBEV / 32 Very High Level Languages 1. Analízis Specifikáció Fejlesztõeszköz Tervezés és implementáció Tesztelés Használat Software engineering (Bevezetés) SWENGBEV / 33
Very High Level Languages 2. (nem-procedurális nyelvek, alkalmazásgenerátorok) Jellemzői: a fejlesztőeszköz számára le kell írni, hogy MIT csináljon - a többi az eszköz dolga általában jól körülhatárolt területekre (pl. FOCUS, Oracle, Magic - AB alk.) esetleg hatékonysági problémák Software engineering (Bevezetés) SWENGBEV / 34 Spirál-modell (Boehm( Boehm,, 1988) 1. Célok kitűzése, Célok, megoldási Alternatívák kiértékelése, keértékelése, alternatívák alternatívák kidolgozása kockázat elemzés, prototípus kockázat elemzés készítés A következő Új ciklus iteráció megtervezése és elindítása, vagy a befejezés eldöntése (Prototípus) A prototípus elemzése, gyártás, tesztelése tesztelés Software engineering (Bevezetés) SWENGBEV / 35 Spirál-modell (Boehm( Boehm,, 1988) 2. Jellemzői: A fejlesztés iterációs lépések sorozata Az egyes iterációkban kitűzött célok folyamatosan fejlődnek Valamennyi fázis ciklikusan ismétlődik Minden (rész)megoldást ki kell értékelni Elemezni kell az adott megoldás kockázatát Ha a kockázat kisebb, mint a várható haszon, újabb ciklus kezdődhet Újdonság: kockázat kezelés Software engineering (Bevezetés) SWENGBEV / 36
Eszközkészlet Módszer (Methodology) Technika (Technique) Eszköz (Tool) Software engineering (Bevezetés) SWENGBEV / 37 Eszközkészlet Módszer Technika Technika Technika Eszköz Módszer Technika Technika Technika Software engineering (Bevezetés) SWENGBEV / 38 Módszerek és a software engineering Módszer (methodology): tudás (tapasztalat) + ajánlott technikák A jó módszer jellemzői: hatékony racionális: tudományos alapok, amelyeket a gyakorlat igazol konzisztens az egyes fázisokban Software engineering (Bevezetés) SWENGBEV / 39
A jó módszer jellemzői: (folytatás) teljes: minden fázisra ajánl megoldást ismételhető: személytől független, jól definiált, megtanulható automatizálható (és automatizált) Software engineering (Bevezetés) SWENGBEV / 40 Technikák Az egyes részfolyamatok segítésére. Célja: információk rögzítése (egyértelműség!) kapcsolatok rögzítése ellentmondások kiszűrése. Leggyakrabban grafikus. Software engineering (Bevezetés) SWENGBEV / 41 Eszközök Programok, amelyek támogatnak módszer(eke)t technikákat dokumentáció készítést. Jellemzője az integráltság szintje és a támogatott fázisok száma. Software engineering (Bevezetés) SWENGBEV / 42
A dekompozíció Alapprobléma: a software komplexitása Megoldás reménye: részek összege < az egész Dekompozíció: a teljes software módszeres részekre bontása. Egy módszer meghatározza a dekompozíció elveit. Software engineering (Bevezetés) SWENGBEV / 43 Dekompozíció funkcionális szemléletben Program = adatszerkezetek + algoritmusok Dekompozíció alapja: adat vagy process Dekompozíció módja: felülről lefelé (top - down) alulról felfelé (bottom - up) Modulok között kommunikáció szükséges => belső interface Software engineering (Bevezetés) SWENGBEV / 44 Dekompozíció funkcionális szemléletben (folytatás) Dualitás elve: Modul Processz alapú (Algoritmus) Adat alapú (adatszerkezet) Interface Adatszerkezet Algoritmus Több lépés szükséges => absztrakciós szintek! Software engineering (Bevezetés) SWENGBEV / 45
Dekompozíció objektum orientált szemléletben Program = együttműködő objektumok halmaza Struktúra: osztályok/objektumok közötti kapcsolatok Működés: üzenetváltás A modulok egysége az osztály. Software engineering (Bevezetés) SWENGBEV / 46 Vizsgált módszertanok 1. A tárgy során két módszertanra fogunk hivatkozni Mindkettő objektum orientált szemléletű. OMT (Object Modelling Technique) Viszonylag korai, ezért jól áttekinthető Jól definiált eljárásokat javasol Komplex rendszerek fejlesztésére nem elég hatékony Software engineering (Bevezetés) SWENGBEV / 47 Vizsgált módszertanok 2. RUP (Rational Unified Process) Keretrendszer, a mai modern fejlesztése feladatokra tulajdonságainak figyelembe vételével Testre szabással tehető alkalmassá a fejlesztés jellege és a projekt nagysága szerint egy adott feladatra Jól definiált munkafolyamatok Számos dokumentációs sablon Software engineering (Bevezetés) SWENGBEV / 48