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 NorthHolland (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