Ugrás a tartalomhoz

Komponensalapú szoftverfejlesztés

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából
Példa UML 2.0-ban kifejezett két összetevőre. A pénztár komponens, amely elősegíti az ügyfél rendelését, megköveteli, hogy a kártyafeldolgozó komponens terhelje az ügyfél hitel- vagy betéti kártyáját (az utóbbi által biztosított funkció)

A komponensalapú szoftverfejlesztés (CBSE), más néven komponensalapú fejlesztés (CBD) a szoftvertervezés egyik ága, amely hangsúlyozza az adott szoftverrendszerben elérhető széles körű funkcionalitással kapcsolatos aggályok elkülönítését. Ez egy újrafelhasználáson alapuló megközelítés a lazán összekapcsolt független komponensek rendszerbe történő meghatározásához, megvalósításához és komponálásához. Ennek a gyakorlatnak az a célja, hogy egyformán széles körű előnyöket érjen el rövid és hosszú távon mind a szoftver, mind a szoftvert támogató szervezetek számára.

A szoftvertervezéssel foglalkozó szakemberek az alkotóelemeket a szolgáltatásorientáció kiinduló platformjának tekintik. Az alkatrészek ezt a szerepet töltik be például a webszolgáltatásokban, újabban pedig a szolgáltatásorientált architektúrákban (SOA), amelyek során a webszolgáltatás egy alkotórészt átalakít szolgáltatássá, és ezt követően további jellemzőket örökít meg egy átlagos komponenshez képest.

Az alkatrészek előállíthatnak vagy felhasználhatnak eseményeket, és felhasználhatók eseményvezérelt architektúrákhoz (EDA).

Komponensek karakterisztikája és definíciója

[szerkesztés]

Egy egyedi szoftverkomponens egy szoftvercsomag, egy webszolgáltatás, egy webes erőforrás vagy egy modul, amely a kapcsolódó funkciók (vagy adatok) halmazát foglalja magában.

Az összes rendszerfolyamat különálló komponensekbe van foglalva, így az egyes összetevők belsejében lévő összes adat és funkció szemantikailag kapcsolatban áll egymással (akárcsak az osztályok tartalmával). Ezen elv miatt gyakran mondják, hogy az alkatrészek modulárisak és összetartók.

A rendszer egészére kiterjedő koordinációt illetően az komponensek interfészeken keresztül kommunikálnak egymással. Amikor egy komponens szolgáltatásokat kínál a rendszer többi részének, felvesz egy biztosított interfészt, amely meghatározza azokat a szolgáltatásokat, amelyeket a többi komponens használhat, és hogy hogyan tudják ezt megtenni. Ez az interfész a komponens aláírásának tekinthető – az ügyfélnek nem kell tudnia a komponens belső működéséről (megvalósításról) annak használatához. Ebből az elvből kiindulva nevezzük a komponenseket beágyazottaknak. A cikk UML-illusztrációi a komponens külső széléhez rögzített nyalóka-szimbólummal jelölt interfészeket ábrázolják.

Ha azonban egy összetevőnek egy másik összetevőt kell használnia a működéséhez, felvesz egy használt interfészt, amely meghatározza a számára szükséges szolgáltatásokat. A cikk UML-ábráin a használt interfészeket egy nyitott foglalat szimbólum képviseli, amely az alkatrész külső széléhez van rögzítve.

Egyszerű példa több szoftverkomponensre – az UML 2.0-ban képviselt elméleti üdülési foglalási rendszerben.

Az összetevők másik fontos tulajdonsága, hogy helyettesíthetők, így egy alkatrész helyettesíthet egy másikat (tervezési vagy futási időben), ha az utód komponens megfelel az eredeti komponens követelményeinek (az interfészeken keresztül kifejezve). Következésképpen az alkatrészek cserélhetők egy frissített verzióval vagy egy alternatívával anélkül, hogy megszakítanák a rendszert, amelyben az alkatrész működik.

A komponenseket helyettesítő mérnökökre vonatkozó bevett szabályként a B komponens azonnal helyettesítheti az A komponenst, ha a B komponens legalább azt biztosítja, amit az A komponens biztosított, és nem használ többet, mint amit az A komponenst használt.

A szoftverkomponensek gyakran objektumok (nem osztályok) vagy objektumgyűjtemények formájában (objektum-orientált programozásból), valamilyen bináris vagy szöveges formában, ragaszkodva valamilyen interfészleíró nyelvhez (IDL) jelennek meg, így az más komponensektől függetlenül létezhet egy számítógépben . Más szavakkal, egy komponens a forráskód megváltoztatása nélkül működik. Bár a komponens forráskódjának viselkedése megváltozhat az alkalmazás bővíthetősége alapján, amelyet az írója biztosít.

Amikor egy komponenst elérni vagy megosztani akarnak futtatási kontextusok közt vagy hálózati linkeken, gyakran olyan technikákat alkalmaznak, mint például a sorosítás vagy a rendezés, hogy az összetevőt a rendeltetési helyre juttassák.

Az újrafelhasználhatóság fontos jellemzője egy kiváló minőségű szoftverkomponensnek. A programozóknak úgy kell megtervezniük és megvalósítaniuk a szoftver-összetevőket, hogy sok különféle program újra felhasználhassa őket. Továbbá figyelembe kell venni az alkatrészalapú használhatóság tesztelését, amikor a szoftverkomponensek közvetlenül kölcsönhatásba lépnek a felhasználókkal.

Jelentős erőfeszítésre és tudatosságra van szükség egy olyan szoftverkomponens megírásához, amely hatékonyan újrafelhasználható. A komponensnek a következőknek kell lennie:

  • teljesen dokumentált
  • alaposan tesztelt
    • robusztus – átfogó input-érvényesség ellenőrzéssel
    • képes a megfelelő hibaüzenetek vagy kódok visszaadására
  • annak a tudatában készül, hogy előre nem látott felhasználási környezetekben lesz alkalmazva

Az 1960-as években a programozók tudományos alprogram könyvtárakat építettek, amelyek mérnöki és tudományos alkalmazások széles körében újrafelhasználhatók voltak. Bár ezek az alprogram könyvtárak hatékonyan használták jól körülhatárolt algoritmusokat, korlátozott alkalmazási területük volt. A kereskedelmi webhelyek rendszeresen létrehoztak alkalmazási programokat újrafelhasználható modulokból, amelyek Assembly , COBOL, PL / 1 és más második és harmadik generációs nyelveken íródtak, mind a rendszer, mind a felhasználói alkalmazás könyvtárak segítségével.

2010 óta a modern újrafelhasználható komponensek egybefoglalják az adatszerkezeteket és az azokra alkalmazott algoritmusokat. A komponensalapú szoftverfejlesztés számos korábbi elméletre épít a szoftver objektumok, szoftver architektúrák, szoftver keretrendszerek és szoftver tervezési mintákból, valamint a kiterjedt objektum-orientált programozás elméletéből és ezek objektum-orientált felépítéséről. Azt állítja, hogy a szoftver komponensek, mint a hardver komponensek melyeket például a telekommunikációban használnak, felcserélhetővé és megbízhatóvá tehetőek.

Története

[szerkesztés]

Az ötlet, hogy a szoftvert komponensekre kell építeni – előre gyártott komponensekből – először Douglas McIlroy beszédével vált hangsúlyossá az 1968-ban a szoftvertervezésről rendezettNATO-konferencián a németországi Garmisch-ban, Mass Produced Software Components címmel.[1] A konferencia az úgynevezett szoftverválság leküzdésére indult. McIlroy a későbbi csövek és szűrők beépítésével a Unix operációs rendszerbe valósított meg először egy infrastruktúrát ehhez az ötlethez.

A stepstone-i Brad Cox nagyrészt meghatározta a szoftverkomponens modern koncepcióját.[2] Szoftver IC-knek nevezte őket, és nekilátott, hogy az Objective-C programozási nyelv feltalálásával infrastruktúrát és piacot hozzon létre ezekhez az összetevőkhöz. (Ezt a nézetet foglalja össze Object-Oriented Programming – An Evolutionary Approach 1986 című könyvében.)

A szoftverkomponenseket két különböző kontextusban és kétféle módon használják: I) komponensek részekként történő felhasználása egyetlen futtatható fájl létrehozásához, vagy II) mindegyik futtatható összetevő komponensként kezelhető elosztott környezetben, ahol az összetevők az internet vagy intranet protokollok segítségével együttműködnek az IPC-hez (Inter Process Communications). A fentiek az előbbi, míg az alábbiak a későbbi fajtához tartoznak.

Az IBM az 1990-es évek elején a System Object Model (SOM) rendszerrel járt az élen. Válaszként a Microsoft megnyitotta az utat az objektum-összekapcsolás és beágyazás (OLE) és a komponens-objektum modell (COM) használatával a komponensszoftver tényleges telepítése felé.[3] 2010-ben már sok sikeres szoftverkomponens-modell létezik.

Felépítés

[szerkesztés]

A több szoftverkomponenst futtató számítógépet gyakran alkalmazáskiszolgálónak nevezik. Az alkalmazáskiszolgálók és a szoftverkomponensek ilyen kombinációját általában megosztott számításnak hívják. Valóságbeli alkalmazása például pénzügyi alkalmazásokban vagy üzleti szoftverekben történik.

Komponens modellek

[szerkesztés]

A komponensmodell azoknak a tulajdonságoknak a meghatározása, amelyeknek az alkotóelemeknek meg kell felelniük, avagy az összetevők összetételének módszerei és mechanizmusai.[4]

Az elmúlt évtizedekben a kutatók és a gyakorlati szakemberek több, különböző jellemzőkkel rendelkező komponensmodellt javasoltak. A meglévő alkatrészmodellek besorolása adott.[4][5] Példák alkatrész modellekre: Enterprise JavaBeans (EJB) modell, Component Object Model (COM) modell, dotNET modell, X-MAN komponens modell,[6] és a Common Object Request Broker Architecture (CORBA) komponens modell.

Technológiák

[szerkesztés]

Jegyzetek

[szerkesztés]
  1. McIlroy: Mass produced software components. Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968. Scientific Affairs Division, NATO, 1969. január 1.
  2. Rainer Niekamp: Software Component Architecture. Gestión de Congresos - CIMNE/Institute for Scientific Computing, TU Braunschweig. (Hozzáférés: 2011. július 29.) „The modern concept of a software component largely defined by Brad Cox of Stepstone, => Objective-C programming language”
  3. Raphael Gfeller: Upgrading of component-based application. HSR - Hochschule für Technik Rapperswill, 2008. december 9. (Hozzáférés: 2011. július 29.) „1990, IBM invents their System Object Model. 1990, as a reaction, Microsoft released OLE 1.0 OLE custom controls (OCX)”[halott link]
  4. a b Crnkovic (2011). „A Classification Framework for Software Component Models”. IEEE Transactions on Software Engineering 37 (5), 593–615. o. DOI:10.1109/TSE.2010.83. 
  5. Lau (2007. november 23.). „Software Component Models”. IEEE Transactions on Software Engineering 33 (10), 709–724. o. DOI:10.1109/TSE.2007.70726. ISSN 0098-5589. 
  6. Lau (2005. november 23.). „Exogenous Connectors for Software Components” (angol nyelven). Component-Based Software Engineering 3489, 90–106. o, Kiadó: Springer Berlin Heidelberg. DOI:10.1007/11424529_7. 
  7. MASH defines assets as people, property and information and management as monitoring, control and configuration. Presented at the 2013 IEEE IoT conference in Mountain View MASH includes a full IDE, Android client and runtime. "MASH YouTube channel"
  8. A component-oriented approach is an ideal way to handle the diversity of software in consumer electronics. The Koala model, used for embedded software in TV sets, allows late binding of reusable components with no additional overhead.
  9. Component model for embedded devices like TV developed by Philips based on paper by van Ommering, R.: Koala, a Component Model for Consumer Electronics Product Software Archivált másolat. [2014. augusztus 9-i dátummal az eredetiből archiválva]. (Hozzáférés: 2021. június 11.)
  10. Arad, Cosmin. Programming Model and Protocols for Reconfigurable Distributed Systems. Stockholm, Sweden: KTH Royal Institute of Technology (2013. április 1.). ISBN 978-91-7501-694-8 
  11. Arellanes (2017. november 23.). „Exogenous Connectors for Hierarchical Service Composition”. 2017 IEEE 10th Conference on Service-Oriented Computing and Applications (SOCA), Kanazawa, 125–132. o, Kiadó: IEEE. DOI:10.1109/SOCA.2017.25. 

Források

[szerkesztés]
  1. Foukalas et al "Protocol Reconfiguration Using Component-Based Design"
  2. Wallace, Bruce (May 19, 2010). "A hole for every component, and every component in its hole". Existential Programming. There is no such thing as a Component
  3. McIlroy, Malcolm Douglas (January 1969). "Mass produced software components" (PDF). Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968. Scientific Affairs Division, NATO. p. 79.
  4. Rainer Niekamp. "Software Component Architecture" (PDF). Gestión de Congresos – CIMNE/Institute for Scientific Computing, TU Braunschweig. p. 4. Retrieved 2011-07-29. The modern concept of a software component largely defined by Brad Cox of Stepstone, => Objective-C programming language
  5. Raphael Gfeller (December 9, 2008). "Upgrading of component-based application". HSR – Hochschule für Technik Rapperswill. p. 4. Retrieved 2011-07-29. 1990, IBM invents their System Object Model. 1990, as a reaction, Microsoft released OLE 1.0 OLE custom controls (OCX)[permanent dead link]
  6. Crnkovic, I.; Sentilles, S.; Vulgarakis, A.; Chaudron, M. R. V. (2011). "A Classification Framework for Software Component Models". IEEE Transactions on Software Engineering. 37 (5): 593–615. doi:10.1109/TSE.2010.83. S2CID 15449138.
  7. Lau, Kung-Kiu; Wang, Zheng (2007). "Software Component Models". IEEE Transactions on Software Engineering. 33 (10): 709–724. doi:10.1109/TSE.2007.70726. ISSN 0098-5589.
  8. Lau, Kung-Kiu; Velasco Elizondo, Perla; Wang, Zheng (2005). Heineman, George T.; Crnkovic, Ivica; Schmidt, Heinz W.; Stafford, Judith A.; Szyperski, Clemens; Wallnau, Kurt (eds.). "Exogenous Connectors for Software Components". Component-Based Software Engineering. Lecture Notes in Computer Science. Springer Berlin Heidelberg. 3489: 90–106. doi:10.1007/11424529_7. ISBN 9783540320494. S2CID 17971442.
  9. MASH defines assets as people, property and information and management as monitoring, control and configuration. Presented at the 2013 IEEE IoT conference in Mountain View MASH includes a full IDE, Android client and runtime. "MASH YouTube channel"
  10. A component-oriented approach is an ideal way to handle the diversity of software in consumer electronics. The Koala model, used for embedded software in TV sets, allows late binding of reusable components with no additional overhead. [1]
  11. Component model for embedded devices like TV developed by Philips based on paper by van Ommering, R.: Koala, a Component Model for Consumer Electronics Product Software [2] Archived 2014-08-09 at the Wayback Machine
  12. Arad, Cosmin (April 2013). Programming Model and Protocols for Reconfigurable Distributed Systems (PDF). Doctoral Dissertation. Stockholm, Sweden: KTH Royal Institute of Technology. ISBN 978-91-7501-694-8.
  13. Arellanes, Damian; Lau, Kung-Kiu (2017). "Exogenous Connectors for Hierarchical Service Composition" (PDF). 2017 IEEE 10th Conference on Service-Oriented Computing and Applications (SOCA). Kanazawa: IEEE: 125–132. doi:10.1109/SOCA.2017.25. ISBN 9781538613269. S2CID 31211787.

Fordítás

[szerkesztés]

Ez a szócikk részben vagy egészben a Component-based software engineering című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

További irodalom

[szerkesztés]
  • Brad J. Cox, Andrew J. Novobilski (1991). Objektumorientált programozás: evolúciós megközelítés . 2. kiadás Addison-Wesley, ReadingISBN 0-201-54834-8
  • Bertrand Meyer (1997). Objektumorientált szoftverépítés 2. kiadás Prentice Hall.
  • George T. Heineman, William T. Councill (2001). Komponens alapú szoftverfejlesztés: A darabok összekapcsolása . Addison-Wesley Professional, Reading 2001ISBN 0-201-70485-4
  • Richard Veryard (2001). Komponens alapú üzlet : plug and play . London : Springer.ISBN 1-85233-361-8ISBN 1-85233-361-8
  • Clemens Szyperski, Dominik Gruntz, Stephan Murer (2002). Komponens szoftver: Az objektum-orientált programozáson túl . 2. kiadás ACM Press – Pearson Educational, London, 2002ISBN 0-201-74572-0

További információk

[szerkesztés]

Kapcsolódó szócikkek

[szerkesztés]