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

edytuj

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

edytuj

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

edytuj

Frameworki są stosowane zarówno jako szkielety kompletnych aplikacji, jak i pojedynczych komponentów. Obszary zastosowań frameworków:

Zobacz też

edytuj

Przypisy

edytuj
  1. a b c d Rebecca Wirfs-Brock, Alan McKean: Object design: roles, responsibilities, and collaborations. Addison-Wesley, 2002, s. 27. ISBN 978-0201379433. (ang.).
  2. 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.
  3. 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. 
  4. 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.).
  5. 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. 
  6. Birrer, A, Eggenschwiler, T: Frameworks in the financial engineering domain: an experience report. Springer-Verlag, 1993, s. 21-35.
  7. 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. 
  8. 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. 

📚 Artikel Terkait di Wikipedia

Informatyka

Geographic Information Systems . Kirk D. Borne. Astroinformatics: data-oriented astronomy research and education. „Earth Science Informatics”. 3 (1–2)

Lista skrótów i skrótowców używanych w informatyce

oprogramowanie on-premises OOBE – Out of Box Experience OOP – Object Oriented Programming OQL – Object Query Language ORB – Object Request Broker ORM – Object-Relational

Adaptive Communication Environment

systemów operacyjnych. Między innymi: komunikację między-procesową (inter-process communication), zarządzanie wątkami (thread management), efektywne zarządzanie

Metodyki projektowania systemów wieloagentowych

Software Development Methodologies. International Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2002. Seattle USA 2002

Spring Framework

Framework zapewnia obsługę programowania aspektowego (ang. Aspect Oriented Programming, AOP) zapewniające takie usługi jak zarządzanie transakcjami. AOP

Spis formatów plików

Packed mail; FTN software WEB WEB source code file; WebOOGL Web Object Oriented Graphics Library; WFB Turtle Beach WaveFront Bank; AWAVE WFD Turtle Beach