Bevezetés Mi a szoftver? Számítógép-programok és kapcsolódó dokumentációk, illetve konfigurációs adatok, amelyek elengedhetetlenek ahhoz, hogy ezek a programok helyesen működjenek. Szoftvertermékek fejleszthető k egyedi ügyfelek számára vagy akár általános piacra. Általános termékek: Ezek az egyedülálló rendszerek, amelyeket egy fejleszt ő szervezet készít és ad el a piacon bármely vevő nek, aki azt képes megvásárolni. Ezek a dobozos szoftverek. Pl. adatbáziskezelők, szövegszerkesztők, projektmenedzselési eszközök. Mi a szoftvertervezés? A szoftvertervezés mérnöki tudományág, mely a szoftvertermékek minden lehetséges aspektusát érinti a rendszerspecifikáció korai szakaszaitól a rendszerkarbantartáson át egészen a rendszer bevezetéséig. Elméleteket, módszereket és eszközöket alkalmaznak ott, ahol azok megfelelő ek. A mérnököknek azt is fel kell ismerniük, hogy szervezeti és pénzügyi megszorítások közt kell dolgozniuk, megkeresni a megoldást. 1
Mi a különbség a szoftvertervezés és a számítógép-tudomány között? A számítógép-tudomány elméletekkel és alaptételekkel foglalkozik, a szoftvertervezés pedig a használható szoftverek fejlesztésének és leszállításának gyakorlati aspektusait érinti. Mi a különbség a szoftvertervezés és a rendszertervezés között? A rendszertervezés a számítógép alapú rendszerek tervezésével foglalkozik, ide értve a hardver, a szoftver és a folyamatok tervezését. A szoftvertervezés ennek egy része. Mi a szoftverfolyamat? A szoftverfolyamat tevékenységek és kapcsolódó eredmények olyan halmaza, amely szoftverterméket állít el ő. Tevékenységek: 1. Szoftverspecifikáció: a szoftver működését és a mű ködésre vonatkozó megszorításokat kell definiálni. 2. Szoftverfejlesztés: A specifikáció szerint el kell készíteni a szoftvert. 3. Szoftvervalidáció: Validálni kell a szoftvert, hogy biztosítsuk azt, hogy azt készítettük el, amit a vásárló megrendelt. 4. Szoftverevolúció: Fejleszteni kell a szoftvert a vásárló igényeinek megfelelően. 2
Szoftvertervezői etikai és szakmai gyakorlati előírások ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices Számítógép alapú rendszerek tervezése A szoftvertervező knek ismerniük kell a rendszertervezést, mert a szoftvertervezés problémái gyakran rendszertervezési döntések eredményei. Rendszermodellezés A rendszer követelményeinek elemzési és a rendszer tervezési tevékenysége részeként a rendszert komponensek és a közöttük található kapcsolatok halmazaként kell modellezni. A rendszerarchitektúrát általában blokkdiagrammal ábrázoljuk, melyből leolvashatók a fő bb alrendszerek, illetve a köztük fennálló kapcsolatok. 3
1. Ábra. Pl. Egy légiforgalom-irányító rendszer felépítése 4
A rendszerarchitektúra tervezése funkcionális alrendszerenként is történhet. A funkcionális komponenseket osztályozhatjuk: 1. Érzékel ő komponensek: Információkat gyű jtenek a rendszer környezetéről. 2. Működtet ő komponensek: Változásokat okoznak a rendszer környezetében. 3. Számítási komponensek: Valamilyen adott inputon valamilyen számítási folyamatot hajtanak végre és valamilyen outputot állítanak el ő. 4. Kommunikációs komponensek: Feladatuk, hogy biztosítsák a kommunikációt más rendszerkomponensekkel. 5. Koordinációs komponensek: Feladatuk a többi komponens üzemeltetésének koordinációja. 6. Interfész komponensek: A különböz ő komponensek által használt ábrázolásmódokat transzformálják más komponensek által is értelmezhet ő formátumba. 5
A rendszerfejlesztés folyamata 2. Ábra A rendszerfejlesztés folyamata A rendszerkövetelmények meghatározása Feladat, hogy teljes egészében feltárja a rendszer követelményeit. A folyamat az ügyféllel, illetve a végfelhasználókkal történő konzultációt is magába foglalja. 3 fázis: 1. Absztrakt funkcionális követelmények: A rendszer által szolgáltatandó alapfunkciók absztrakt szinten definiáltak. 2. Rendszertulajdonságok: Olyan tulajdonságokat foglalnak magukba, mint az elérhetőség, a teljesítmény, a biztonságosság stb. 3. Megmutatott jellemző k: Néha ugyanolyan fontos definiálni, mi az, amit a rendszernek nem kell megcsinálni, mint azt, hogy mit kell megtennie. 6
A rendszer tervezése A rendszer tervezése azzal foglalkozik, hogyan lehet biztosítani a rendszer funkcionalitását különböz ő komponensek segítségével. Ehhez a folyamathoz a következ ő tevékenységek tartoznak: 3. Ábra A rendszertervezés folyamata Rendszerintegráció A rendszerintegráció nem más, mint az egymástól függetlenül fejlesztett alrendszerek összeillesztése, hogy teljes rendszert alkossanak. A rendszer telepítése A rendszer telepítése azt jelenti, hogy a rendszert abba a környezetbe kell helyezni, amelyben működnie kell. Ez látszólag egyszerű folyamatnak tűnik, ugyanakkor számos probléma léphet föl közben. 7
A rendszer evolúciója A nagy és összetett rendszerek nagyon hosszú élettartamúak. Az életük alatt fel kel ismerniük az eredeti rendszer követelményeinek hibáit, és megfelelni a felmerül ő új követelményeknek. A rendszer evolúciója költséges. A rendszerek üzemen kívül helyezése A rendszerek üzemen kívül helyezés nem más, mint hasznos élettartamuk után kivonni azokat a forgalomból, felfüggeszteni az általuk nyújtott szolgáltatásokat. A rendszer beszerzése A rendszer beszerzésének folyamata magába foglalja a rendszer meghatározását, a szükséges tervezetek elő készítését, a beszállítók kiválasztását, illetve a rendszerhez kapcsolódó szerző dések megkötését. Általában a nagy számítógép alapú rendszerek bizonyos részei lehetnek kulcsrakész piaci komponensek is. 8
Egy programfejlesztés alapvetően a következ ő lépésekből áll: Igények elemzése: miért van szükség a rendszerre megvalósíthatóság tanulmányozása rendszerrel szembeni követelmények megfogalmazása Specifikáció: a rendszer mű ködésének, környezetének és korlátainak pontos leírása Nagyvonalú tervezés: a rendszer modulokra bontása, esetleg lehető vé téve az egyes részek egyidej ű fejlesztését Részletes tervezés a modulok megtervezése, az adatstruktúrák és algoritmusok megválasztása Implementáció a megtervezett algoritmusok megvalósítása valamilyen programozási nyelven Egységek tesztelése a modulok önmagukban helyesen működnek-e Integrációs teszt a modulokból összeállított teszt program jól működik-e Rendszer teszt az összeállított program a specifikációnak megfelelő en működik-e Elfogadási teszt az elkészített rendszer kielégíti-e a vele szemben támasztott követelményeket Üzemeltetés, karbantartás esetleges hibákból adódó változtatások pótlólagos követelmények jobb algoritmusok a régiek helyett 9
Mivel foglalkozunk a félév során Projektmenedzsment Az emberek menedzselése A szoftver költségeinek becslése A minőség kezelése, A szoftverfejlesztés minőségmenedzsmentje A munkahely ergonómiája A szoftver-ergonómia tárgya Tervezési és vizsgálati módszerek Elvek és ajánlások A minimalista kézikönyv Szabványok, direktívák, törvények. Az ISO 9000 A szoftverfejlesztés és az ISO Az ISO szabványcsaládok szoftverfejlesztésre vonatkozó pontjainak áttekintése 10
Ajánlott irodalom M. Helander: Handbook of Human-Computer Interaction North- Holland (1990) A. Dix, J. Finlay, G. Abowd, R. Beale: Human-Computer Interaction Prentice Hall (1997) I. Sommerville: Szoftverrendszerek fejlesztése Panem (2002) E. Denerth: Software-engineering Methodische Projektabwicklung Springer Verlag (1991) F. Lehner: Softwareartung - Management, Organization und Methodische Unterstützung Hanser (1991) G. Myers: The Art of Software Testing John Wiley & Sons (1979) I. Sommerville: Software Engineering Addison-Wesley (1992) E. Denerth: Software Engineering Springer Verlag (1992) R. S. Pressman: Software Engineering Osborne McGraw-Hill (1992) 11