Szoftverkeretrendszer

A Wikipédiából, a szabad enciklopédiából
(Szoftverkörnyezet szócikkből átirányítva)

A számítógép-programozásban a szoftverkörnyezet egy absztrakció, ami a szoftver által nyújtott általános funkcionalitást képes szelektíven megváltoztatni a felhasználói kód alapján, így alkalmazásspecifikus szoftvert biztosítanak. A keretrendszer szabványosítja az alkalmazások felépítésére és telepítésére. Általános, újrafelhasználható szoftverkörnyezet, ami egy nagyobb platform részeként megkönnyíti alkalmazások, termékek és megoldások fejlesztését. Tartalmazhatnak programokat, fordítókat, könyvtárakat, eszközkészleteket, alkalmazásprogramozási interfészek (API) programkönyvtárakat, amelyek komponenseket raknak össze, hogy támogassák a projekt vagy a rendszer fejlesztését.

Ezen környezetek fontos megkülönböztetéseket tartalmaznak, amik elválasztják őket a normál könyvtáraktól:

  1. az irányítás megfordítása – Egy szoftverkörnyezetben, nem úgy mint normál felhasználói alkalmazások könyvtáraiban, a teljes programfolyamat ellenőrzését nem a program hívója, hanem a környezet végzi.[1]
  2. alapértelmezett viselkedés – Egy környezetnek vannak alapértelmezett viselkedései. Ezeknek lényegében hasznos működésűeknek és nem NOOP-oknak (programnyelvi utasítások, amik nem csinálnak semmit) kell lenniük.
  3. bővíthetőség – Egy környezet bővíthetőnek kell lennie a felhasználó által szelektíven felülírva vagy specializálva a kódot a felhasználói kód által nyújtott specifikus funkciókkal.
  4. nem módosítható környezeti kód – A szoftverkörnyezet kódja, általában nem módosítható. A felhasználók kibővíthetik a környezetet, de nem módosíthatják a kódját.

A környezeteknek különböző típusai vannak: konceptuális, szoftver, domain, platform, összetevő, szolgáltatás, fejlesztés stb.[2]

Céljai[szerkesztés]

A keretrendszerek megalkotói támogatni akarják a szoftverfejlesztést, hogy a tervezők és a programozók foglalkozhassanak azzal, hogy megfeleljenek a követelményeknek, mint hogy alacsonyabb szinten azzal foglalkozzanak, hogy megteremtsék a háttérszolgáltatásokat. Ezzel lerövidíti a teljes fejlesztési időt.[3] Például egy webes keretrendszer használatával egy banki programot író csapat speciálisan a banki szolgáltatások megvalósításával foglalkozhat, mint a követelménykezeléssel és az állapotkezeléssel.

A keretrendszerek hozzájárulnak a kód felfúvódásához, vagyis megnövelik a program méretét. Egy termék megalkotása az ügyfelek igényei alapján néha több keretrendszert is felhasználnak. A keretrendszer API-jának megtanulása elviheti azt az időt, amit a keretrendszer használatával nyerni lehet. Ha a keretrendszert nem használják más projektekben is, illetve túl gyakran térnek át egy másik keretrendszerre, akkor a csapat jobban járna, ha nem használná egyik keretrendszert sem.

Ezzel szemben ha sok projekthez használják ugyanazt a keretrendszert, akkor a befektetett munka megtérül. A további projektek gyorsabban és könnyebben elkészülhetnek. Ugyanez nem teljesül a kód méretére, amit a keretrendszer hozzáad, nem szólva a hatékonyságról és a tömörségről. Minden behúzott könyvtár tartalmaz szükségtelen kódrészleteket is, amiket nem biztos, hogy a rendszer kioptimalizál.

Egy több, mint tízéves tapasztalat szerint a leghatékonyabb keretrendszer nem a külsősök által fejlesztett, hanem a saját gyakran használt kódokból refaktorálással összeállított keretrendszer. Erre példa lehet a felhasználói felület, ami egységes megjelenést kölcsönöz a programoknak.

Egy olyan keretrendszer létrehozása, ami még elegáns is, inkább művészet mint tudomány. Az elegancia magában foglalja a kód átláthatóságát, tömörséget, és kevés olyan kód jelenlétét, aminek nincs szerepe. Például a kódgenerátorok átlátható, olvasható kódot hoznak létre szemben azzal, aminél csak a működőképesség a követelmény. A keretrendszerek közül csak kevés felel meg ennek a követelménynek. Lehet, hogy egy újabb verzió már jobb, de még itt is van lehetőség a régebbi működés visszakapcsolására.

Példák[szerkesztés]

A szoftverkörnyezetek tipikusan tekintélyes hasznos kódokat tartalmaznak, például a bootstrap programok segítésére, de általában specifikus problémákra fókuszálnak, mint:

Architektúra[szerkesztés]

Pree szerint a keretrendszerek fagyott pontokból és forró pontokból állnak.[10] A fagyott pontok határozzák meg a program architektúráját, azaz az alapvető komponenseket és kapcsolataikat. Ezek változatlanok maradnak a keretrendszer minden példányosításakor. A forró pontok azok a helyek, amiket a kertrendszer használói saját kódjukkal töltenek ki. Ez hordozza a projektre jellemző működést.

Objektumorientált környezetben egy keretrendszer tartalmaz absztrakt és konkrét osztályokat. A példányosítás ezek kompozícióját és a belőlük való öröklést jelenti.[11]

A szoftver keretrendszerek a Hollywood-elvre hagyatkoznak: Ne hívjon, mi hívjuk!.[12] Ez azt jelenti, hogy a felhasználó által definiált osztályok kapnak üzenetet a keretrendszer előre definiált osztályaitól. Ez többnyire az absztrakt metódusok megvalósításával tehető meg.

Jegyzetek[szerkesztés]

  1. Riehle, Dirk (2000), Framework Design: A Role Modeling Approach, Swiss Federal Institute of Technology, <http://www.riehle.org/computer-science/research/dissertation/diss-a4.pdf>
  2. Shan, Tony: Taxonomy of Java Web Application Frameworks. Proceedings of 2006 IEEE International Conference on e-Business Engineering (ICEBE 2006), 2006 (Hozzáférés: 2010. október 10.)
  3. Framework. DocForge. [2017. december 29-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. december 15.)
  4. Vlissides, J M & Linton, M A (1990), "Unidraw: a framework for building domain-specific graphical editors", ACM Transactions of Information Systems 8 (3): 237–268, DOI 10.1145/98188.98197
  5. Johnson, R E (1992), "Documenting frameworks using patterns", Proceedings of the Conference on Object Oriented Programming Systems Languages and Applications (ACM Press): 63–76
  6. Johnson, R E; McConnell, C & Lake, M J (1992), Giegerich, R & Graham, S L, eds., "The RTL system: a framework for code optimization", Proceedings of the International workshop on code generation (Springer-Verlag): 255–274
  7. Birrer, A & Eggenschwiler, T (1993), Frameworks in the financial engineering domain: an experience report, Springer-Verlag, pp. 21–35
  8. Hill, C; DeLuca, C & Balaji, V et al. (2004), "Architecture of the Earth System Modeling Framework (ESMF)", Computing in Science and Engineering: 18–28
  9. Gachet, A (2003), "Software Frameworks for Developing Decision Support Systems - A New Component in the Classification of DSS Development Tools", Journal of Decision Systems 12 (3): 271–281
  10. Pree, W (1994), "Meta Patterns: A Means for Capturing the Essentials of Reusable Object-Oriented Design", Proceedings of the 8th European Conference on Object-Oriented Programming (Springer-Verlag): 150–162
  11. Buschmann, F (1996), Pattern-Oriented Software Architecture Volume 1: A System of Patterns. Chichester, Wiley, ISBN 0-471-95869-7
  12. Larman, C (2001), Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process (2nd ed.), Prentice Hall, ISBN 0-13-092569-1

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a Software framework című angol Wikipédia-szócikk 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.