Komponens alapú szoftverfejlesztés. 1. Előadás Bevezetés



Hasonló dokumentumok
S01-7 Komponens alapú szoftverfejlesztés 1

S01-8 Komponens alapú szoftverfejlesztés 2

01. gyakorlat - Projektalapítás

Komponens alapú programozás Bevezetés

KobrA. előadás. A KobrA programfejlesztési modell Komponens megtestesítés 6. előadás

FORMÁLIS SZOFTVERVERIFIKÁCIÓS ESZKÖZÖK ALKALMAZÁSÁNAK NEHÉZSÉGEI A GYAKORLATBAN. Dávid Ákos Pannon Egyetem, Műszaki Informatikai Kar.

Komponens modellek. 3. Előadás (első fele)

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Software Engineering Babeş-Bolyai Tudományegyetem Kolozsvár

Verifikáció és validáció Általános bevezető

UML (Unified Modelling Language)

Programozási Technológia előadás bevezetés. Előadó: Lengyel Zsolt

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Már megismert fogalmak áttekintése

Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája. Készítette: Urbán Norbert

Szoftvertechnológia ellenőrző kérdések 2005

Bevezetés a programozásba

V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus

Közösség, projektek, IDE

Komponens alapú fejlesztés

Szoftverarchitektúrák 3. előadás (második fele) Fornai Viktor

Programfejlesztési Modellek

Programozási technológia

Bevezetés Mi a szoftver? Általános termékek: Mi a szoftvertervezés?

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Verziókövető rendszerek használata a szoftverfejlesztésben

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

Bevezetés. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Szendrei Rudolf. Bevezetés. Szoftvertechnológia

Interfészek. PPT 2007/2008 tavasz.

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

CORBA Áttekintés. Mi a CORBA? OMG and OMA. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Osztott Objektumarchitektúrák

Név: Neptun kód: Pontszám:

Objektumorientált paradigma és a programfejlesztés

Szoftver-technológia II. Architektúrák dokumentálása UML-lel. Irodalom. Szoftver-technológia II.

Előzmények

Ismeretanyag Záróvizsgára való felkészüléshez

Szoftver újrafelhasználás

Objektumorientált paradigma és programfejlesztés Bevezető

Szoftverminőségbiztosítás

SOA modell: Ez az interfész definiálja az elérhető adatokat, és megadja, hogy hogyan lehet azokhoz hozzáférni.

Intelligens eszközök fejlesztése az ipari automatizálásban Evosoft Hungary kft., Evosoft Hungary Kft.

Szoftvertechnológia szakirány

ELTE, Informatikai Kar december 12.

Informatika szigorlati témakörök gazdasági informatika egyetemi képzés hallgatói részére

Objektum orientált software fejlesztés (Bevezetés)

A SZOFTVERTECHNOLÓGIA ALAPJAI

4. A szoftvergyártás folyamata

A Java EE 5 plattform

Szoftverprototípus készítése. Szoftverprototípus készítése. Szoftverprototípus készítése

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

problémák elvárások megoldások EAI MDA MOF CWM köztes Sw eszközök hatékonyság konklúzió 09:09 problémák elvárások megoldások EAI MDA MOF CWM

Alkalmazások fejlesztése A D O K U M E N T Á C I Ó F E L É P Í T É S E

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

A TANTÁRGY ADATLAPJA

Osztott alkalmazások fejlesztési technológiái Áttekintés

Szoftvertechnológia 12. előadás. Szoftverfejlesztési módszerek és modellek. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Objektum orientált programozás Bevezetés

Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban

Nagy bonyolultságú rendszerek fejlesztőeszközei

Tartalom. Szoftverfejlesztési. Szoftver = Termék. módszertan. la Rational XDE CASE eszköz. Az előállításához technológiára van szükség

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

A dokumentáció felépítése

Részletes szoftver tervek ellenőrzése

A TANTÁRGY ADATLAPJA

Specifikáció alapú teszttervezési módszerek

Specifikáció alapú teszttervezési módszerek

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

Szoftver architektúra, Architektúrális tervezés

A fejlesztési szabványok szerepe a szoftverellenőrzésben

UML Feladatok. UML Feladatok

The Unified Software Development Process. Történet. Feltételek. Rational Unified Process. Krizsán Zoltán Ficsor Lajos

A DevOps-kultúra eszközei

Szoftver-technológia I.

CORBA bevezetés. Paller Gábor Internet és mobil rendszerek menedzselése

Orvostechnikai eszköz tesztelése DSS Unit test. Taliga Miklós BME-IIT

Informatika szigorlati témakörök gazdasági informatika egyetemi képzés hallgatói részére

Szerepjáték Project Story of my life

Szoftverminőségbiztosítás

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

OOP és UML Áttekintés

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

A TANTÁRGY ADATLAPJA

30 MB INFORMATIKAI PROJEKTELLENŐR

Információtartalom vázlata

Models are not right or wrong; they are more or less useful.

Járműinformatika A járműinformatikai fejlesztés

Átírás:

Komponens alapú szoftverfejlesztés 1. Előadás Bevezetés

1. Bevezetés Hagyományos, nem komponensalapú fejlesztés: általában top-down, felülrőllefelé haladó módszer Komponensalapú fejlesztési módszer: bottom-up, alulról-felfelé építkező módszer.

Felülről lefelé történő fejlesztés Az egész elkészíteni kívánt rendszert egyre kisebb alrendszerekre bontjuk Az önállóan kezelhető alrendszereket egyenként specifikáljuk megtervezzük megvalósítjuk Az így elkészült alrendszereket rendszerbe integráljuk Az elkészült alrendszerek illeszkednek a projektünkhöz, de általában csak ahhoz

Komponensalapú fejlesztés Meglévő szoftverkomponensekből építsük fel a rendszerünket, használjuk azokat mint építőköveket. Ezek az építőkövek kellően általánosak általában korábban hoztuk létre őket pontosan erre a célra vagy egy másik szoftverrendszer részeként Tipikus bottom-up megközelítés

Általában a kétféle megközelítés keveredik Hagyományos szoftverfejlesztésnél használunk függvénykönyvtárakat, rendszerhívásokat, ezek gyakran komponensként viselkedhetnek Egyszerűen összeillesztve néhány, már meglévő komponenst, valószínűleg nem pontosan az elvárt eredményt kapjuk, ezért a komponensalapú fejlesztésnél is szükségünk lesz a top-down technikák egy részére

Napjaink általános fejlesztői gyakorlata A létrehozandó rendszert dekomponáljuk kisebb részekre Ezeket a részeket már létező funkcionalitású komponensekre próbáljuk leképezni, ha ilyenek már rendelkezésre állnak Ha nem, akkor tovább dekomponáljuk a rendszert Végül az egyes alrendszerekhez rendelt komponenseket felhasználjuk az új rendszer felépítésére vagy ha ez nem lehetséges, akkor elkészítjük a szükséges komponenseket

Minden komoly szoftverfejlesztési projektnek valamilyen modellen kell alapulnia Egy jó modell eljárást definiál a következő tevékenységek végrehajtására: Analízis Tervezés Megvalósítás (Programozás) Verifikáció Dokumentáció Stb.

A szoftverfejlesztési modell fogalma Alapvetően eljárások, ajánlások gyűjteménye Segíti a szoftverfejlesztés teljes ciklusát Megmondja, hogy egy adott fejlesztési lépésben mit kell tenni és azt hogyan kell megtenni Egyetlen mondatba sűrítve a szoftverfejlesztési modell egy recept a programok létrehozására Szoftverfejlesztési modellek vízesés modell / V-modell spirál modell Komponens alapú stb. A kurzus során részletesebben tárgyaljuk a KobrA szoftverfejlesztési modellt

Komponens alapú szoftverfejlesztés Component based Software Development (CBSD) A CBSD ideális esetben nem más, mint a megfelelő komponensek összeillesztése, integrálása egy rendszerbe. Kérdés, hogyan történik ez a gyakorlatban? Az a probléma, hogy a legritkább esetben egyezik meg a fejlesztés környezete a tényleges felhasználás környezetével, ezért az elkészült rendszeren integrációs vizsgálatot kellene végrehajtanunk. Kérdés, milyen elméleti alapjai vannak az újra felhasználhatóságnak? A célrendszer létrehozásakor valamilyen technológiát alkalmazunk és ezenközben eszközöket használunk. Kérdés milyen eszközök állnak rendelkezésünkre a komponens alapú szoftverfejlesztés során Ezekre a kérdésekre keressük a választ a félév során

Fókuszban a komponens o A komponens alapú rendszerek központi fogalma a komponens o Első közelítésben a komponens legfontosabb tulajdonságai: Jól definiált felhasználói felület Minőségi attribútumok Újrahasznosíthatóság - reusability Fejleszthetőség - evolution Megbízhatóság - reliability

A komponens fogalma Hans-Gerhard Gross: A komponens a kompozíció egy újra felhasználható eleme, amely pontosan definiált külső felülettel (interfész) és minőségi attribútumokkal rendelkezik mind a szolgáltatás mind pedig a neki szolgáltató oldaláról. Az interfészeket absztrakcióval adjuk meg, amelyek módosítás nélkül egymással kombinálhatóak. C. Szyperski: A komponens a kompozíció egy újra felhasználható eleme, amely pontosan definiált külső felülettel (interfész) és környezeti függőségekkel rendelkezik, amelyek egymástól függetlenül felhasználhatók harmadik fél részéről is. J. Hopkins: Egy szoftverkomponens egy jól definiált és nyilvános külső felülettel bíró fizikai csomagja egy végrehajtható szoftvernek.

A kompozíció lényege A komponens a kompozíció újrahasznosítható egysége A komponensek különböző környezetekben működőképesek legyenek Rekurzív kompozíció megengedett

Kompozíciós UML diagram

Interfészek Szolgáltatott interfész. Szolgáltatások és viselkedések gyűjteménye, melyeket a komponens biztosít a kliensei számára. A komponens vezérlésének belépési pontja. Megkövetelt, elvárt interfész. Szolgáltatások és viselkedések, melyeket a komponens elvár a környezetétől. Korrekt környezeti támogatás hiányában nem garantált, hogy a komponens biztosítani tudja a szolgáltatott interfészben definiált funkcionalitást a kliensei számára.

Kliens szerver kapcsolat A szolgáltatott interfész szempontjából egy komponens szerverként működik a környezete számára A megkövetelt interfész szempontjából egy komponens kliensként működik a környezete számára A szolgáltatott és megkövetelt interfészek között szerződések biztosítják az együttműködést.

Komponensek UML típusú reprezentációja szolgáltatott és megkövetelt interfészekkel

Minőségi attribútumok Követelményeket fogalmaznak meg a komponenssel szemben Teljesítmény Függőségek A kliens csak akkor veheti igénybe a szerver szolgáltatásait, ha az a megfelelő minőségi attribútumokat biztosítani tudja.

Minőségi követelmények dokumentálása A komponens specifikációnak, illetve a specifikáció finomításának a részét képezi. Sokszor szükség van rá, mert a specifikáció túlságosan absztrakt, nehéz megérteni például, hogy egy komponens műveletét, hogyan kell hívni, vagy alkalmazni. Különösen hasznos dokumentálni a műveletek szekvenciáinak és kombinációinak a hatását a teljes működés szempontjából. Mélyebb betekintést ad a komponens használatához.

Komponens meta-modell A következő ábrán egy UML meta-modell segítségével foglaljuk össze egy komponens fogalmát és kapcsolatait. A meta-modell egy modell modellje, ami nem egy fizikai komponenst ír le,hanem csak egy koncepciót, amely alapján a fizikai komponensek megkomponálhatók. Az ábrán egy olyan komponenst definiálunk, mint aminek van legalább egy szolgáltatott és egy megkövetelt publikus interfésze. A publikus interfész jelölése: <<public>>

Komponens meta-modell diagram

Komponens implementációja Egy komponens implementációja algoritmusok olyan gyűjteménye, melyek megvalósítják a komponens elvárt funkcionalitását, annak belső attribútumait, a belső és külső műveleteket,valamint a komponens al-komponensei műveleteire vonatkozó hívásokat. Az implementáció el van rejtve és tetszőlegesen lecserélhető, amíg ugyanazt a külső viselkedést (interfészt) valósítja meg. A komponens szolgáltatásai a műveletein keresztül érhetők el.

Komponens implementációja 2. A fizikai komponens a futtatható, bináris változata a komponensnek. A realizáció megadja, hogyan implementálja a komponens a specifikációban meghatározott funkcionalitást.

A műveletek elő- és utófeltételei Egy művelet funkcionalitása a művelet elő- és utófeltételétől függ Egy előfeltétel egy invariáns, melynek igaznak kell lennie ahhoz, hogy a komponens garantálnia tudja az utófeltétel teljesülését. Előfeltételek lehetnek: bemeneti paraméterekre vonatkozó korlátozások, definiálják a komponensnek a művelet hívása előtti korrekt kezdeti állapotát. Az utófeltétel tartalmazza a művelet végrehajtása után a kimenti paraméterek megengedett értéktartományát, illetve azt a végállapotot melybe a komponens a művelet végrehajtása után kerül. Az elő- és utófeltételek a művelet aktuális paraméterekkel történő hívásával együtt egy állapotátmenetet definiál a művelet hívása előtti állapotból a művelet befejezése utáni végállapotba.

Komponens alapú fejlesztés A komponens alapú fejlesztés alapvetően két diszjunkt területre bomlik: a komponens fejlesztés a komponensek, mint egyedi építőkövek kifejlesztésére koncentrál az alkalmazás fejlesztés a kész komponensekből a rendszer felépítésére koncentrál. Egy másik megközelítés szerint az alkalmazásfejlesztés a létrehozandó rendszer dekomponálásával foglalkozik a komponensfejlesztés pedig azzal, hogy az egyes komponensek, hogyan illeszkednek az alkalmazásfejlesztés során létrehozott dekompozíciós hierarchiához

Komponens fejlesztés Az alkalmazás építőkövét, a komponenst hozza létre A fejlesztést a komponens szolgáltató végzi Fontos szempont az újrafelhasználhatóság Felelős azért, hogy mennyire lesz újrahasznosítható a komponens Feladata, hogy meghatározza, hogy az egyes komponensek miként illeszkednek a logikai dekompozíciós hierarchiába, amelyet az alkalmazás fejlesztő hoz létre

Alkalmazás fejlesztés Arra koncentrál, hogy a komponensek miként építhetők össze egy alkalmazássá. A fejlesztést a komponens felhasználója végzi. A komponensek újrafelhasználására koncentrál Feladata a rendszert egyre finomabb részekre felbontani A dekomponálás iteratív eljárás.

CBSD a gyakorlatban Szükséges elemek: Komponens-könyvtár Komponens-modell CORBA (CCM) Object Management Group (OMG) fejlesztette ki DCOM A Microsoft COM kiterjesztése Java (EJB) Szoftver-architektúra A szoftver elkészítésének általános elvei

Egy keretrendszer statikus modellje

Univerzális komponens

Az újra felhasználhatóság elméleti alapjai Bertrand Meyer által javasolt szerződések - contracts a résztvevő felek, komponensek (kliens-szerver struktúrában) jogait és kötelezettségeit rögzítik a komponens helyességére vonatkozó kontraktusokat (helyességi információkat) beépítjük a komponensbe, amelyek a fejlesztés befejezése után is folyamatosan jelen lesznek Ily módon a komponens is vizsgálhatja, hogy együtt tud-e dolgozni az új munkatársaival, illetve a környezet is ellenőrizheti, hogy befogadja-e a jövevényt.

A szerződések fajtái Alapvető, szintaktikus megszorítások Basic contracts, syntactic contracts Viselkedési leírás behavioral contracts egy komponens átfogó funkcionalitását fejezik ki Szinkronizációs megszorítások synchronization contracts A folyamatok együttműködésére vonatkozó előírások A szolgáltatások minőségére vonatkozó megszorítások Quantitative contracts or quality-of-service contracts...

Verifikált komponensek Verifikációs eljárások Helyességbizonyítás, viselkedés elemzés Példa: kölcsönös kizárás Peterson megoldása Programszintézis Modell-ellenőrzés Példa: kölcsönös kizárás Peterson nyomdokain Tesztelés Modell alapú tesztelés (model-based testing) A tesztelés modellezése (test modelling)

FEJLESZTÉSI DIMENZIÓK

FEJLESZTÉSI DIMENZIÓK

FEJLESZTÉSI DIMENZIÓK

FEJLESZTÉSI DIMENZIÓK

FEJLESZTÉSI DIMENZIÓK

A kurzus felépítése Röviden tárgyaljuk a komponens modelleket Bemutatjuk a szoftver architektúrákat, részletesebben a J2EE/EJB architektúrát Tárgyaljuk a komponens alapú és modell vezérelt fejlesztést UML alapokon Bemutatjuk a KobrA programfejlesztési modellt Tárgyaljuk röviden a komponensek verifikációs módszereit Végül eszközöket mutatunk be kész komponensekből álló verifikált rendszerek automatikus előállítására

Irodalom Gross, H-G.: Component-based Software Testing with UML. Springer-Verlag, 2005. Bass, L., Clements P., Kazman R.: Software Architecture in Practice. Addison-Wesley, 2003. Clarke, E. M. Jr., Grumberg, O., Peled, D. A.: Model Checking. The MIT Press, 1999.

Ajánlott irodalom Kozma L., Varga L.: A szoftvertechnológia elméleti kérdései. ELTE Eötvös kiadó, 2006. Kröger, F.: Temporal Logic of Programs. Springer-Verlag, 1987. McIver, A., Morgan, C.: Programming Methodology. Springer- Verlag, 2005. Meyer, G. B.: Object-Oriented Software Construction, Second edition. Prentice Hall, 1997. Nyékyné Gaizler Judit eds.: Java 2 útikalauz programozóknak. ELTE TTK Hallgatói Alapítvány, 1999. Sike Sándor, Varga László: Szoftvertechnológia és UML. ELTE Eötvös kiadó, 2003. http://uml.org/#uml2.0