Framework
Framework albo platforma programistyczna – szkielet do budowy aplikacji. Definiuje on strukturę aplikacji oraz ogólny mechanizm jej działania, a także dostarcza zestaw komponentów i bibliotek ogólnego przeznaczenia do wykonywania określonych zadań. Programista tworzy aplikację, rozbudowując i dostosowując poszczególne komponenty do wymagań realizowanego projektu, tworząc w ten sposób gotową aplikację.
Frameworki bywają nieściśle zaliczane do bibliotek programistycznych. Typowe cechy, które każą wyróżniać je jako samodzielną kategorię oprogramowania, to:
- odwrócenie sterowania – w odróżnieniu od aplikacji oraz bibliotek, przepływ sterowania jest narzucany przez framework, a nie przez użytkownika[1][2].
- domyślne zachowanie – domyślna konfiguracja frameworka musi być użyteczna i dawać sensowny wynik, zamiast być zbiorem pustych operacji do nadpisania przez programistę[1].
- rozszerzalność – poszczególne komponenty frameworka powinny być rozszerzalne przez programistę, jeśli ten chce rozbudować je o niezbędne mu dodatkowe funkcje.
- zamknięta struktura wewnętrzna – programista może rozbudowywać framework, ale nie poprzez modyfikację domyślnego kodu.
Architektura
Według Pree[3] framework składa się z zamrożonych i gorących punktów. Zimne punkty definiują ogólną architekturę konkretnego typu oprogramowania, tj. zestaw podstawowych komponentów oraz zależności między nimi. Pozostają one niezmienne (zamrożone) we wszystkich aplikacjach zbudowanych w oparciu o konkretny framework. Gorące punkty reprezentują te części, które programista rozszerza, dodając własne cechy specyficzne dla konkretnego projektu.
Zgodnie z zasadą odwrócenia sterowania, to gorące punkty osadzone są we frameworku, a nie na odwrót. Wykorzystywana jest tutaj tzw. „reguła Hollywood”: nie dzwoń do nas, my zadzwonimy do Ciebie[4]. Klasy i komponenty użytkownika otrzymują sygnały od frameworka, który zarządza wykonywaniem aplikacji.
Zalety i wady
Zalety[1]:
- efektywność – tworzenie aplikacji z wykorzystaniem frameworków wymaga od programisty mniejszej ilości kodu do napisania,
- poprawa jakości kodu – ponieważ frameworki są projektowane z myślą o elastyczności, mają one dobrą wewnętrzną organizację i logikę, którą narzucają aplikacji,
- niezawodność – frameworki jako szkielety aplikacji są dobrze zaprojektowane i przetestowane.
Wady[1]:
- złożoność – ze względu na swoją elastyczność oraz wykorzystywanie zaawansowanych koncepcji, opanowanie frameworków nie jest łatwe,
- wydajność – często ceną za elastyczną budowę jest niższa wydajność tworzonego oprogramowania.
Zastosowania
Frameworki są stosowane zarówno jako szkielety kompletnych aplikacji, jak i pojedynczych komponentów. Obszary zastosowań frameworków:
- kompilatory różnych języków programowania[5]
- aplikacje modelowania finansowego[6]
- aplikacje do modelowania w naukach o Ziemi[7]
- systemy wspomagania decyzji[8]
- frameworki multimedialne
- middleware
- frameworki do aplikacji webowych
Zobacz też
Przypisy
- ↑ a b c d Rebecca Wirfs-Brock, Alan McKean: Object design: roles, responsibilities, and collaborations. Addison-Wesley, 2002, s. 27. ISBN 978-0201379433. (ang.).
- ↑ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku. Helion, 2010, s. 40. ISBN 978-83-246-2662-5.
- ↑ W Pree. Meta Patterns-A Means For Capturing the Essentials of Reusable Object-Oriented Design. „Proceedings of the 8th European Conference on Object-Oriented Programming”, s. 150-167, 1994.
- ↑ Craig Larman: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process. Prentice Hall, 2001. ISBN 0-13-092569-1. (ang.).
- ↑ Johnson, R E, McConnell, C, Lake, M J, Giegerich, R i inni. The RTL system: a framework for code optimization. „Proceedings of the International workshop on code generation”, s. 255-274. Springer-Verlag.
- ↑ Birrer, A, Eggenschwiler, T: Frameworks in the financial engineering domain: an experience report. Springer-Verlag, 1993, s. 21-35.
- ↑ Hill, C, DeLuca, C, Balaji, V, Suarez, M i inni. Architecture of the Earth System Modeling Framework (ESMF). „Computing in Science and Engineering”, s. 18-27, 2004.
- ↑ Gachet, A. Software Frameworks for Developing Decision Support Systems – A New Component in the Classification of DSS Development Tools. „Journal of Decision Systems”. 12 (3), s. 271-281, 2003.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.