Architektura komponentowa

Architektura komponentowa (ang. Component Architecture)

W architekturze komponentowej oprogramowanie budowane jest w oparciu o współpracujących ze sobą, niezależne komponenty programowe. Komponent to element oprogramowania posiadający dobrze wyspecyfikowany interfejs oraz zachowanie. Każdy komponent powinien realizować założoną funkcjonalność i dostarczać jej innym komponentom tylko za pośrednictwem własnego interfejsu.  Komponenty traktuje się jako twory generyczne. Dopiero zbiór takich połączonych ze sobą komponentów stanowi rzeczywistą aplikację. Dany komponent może być wykorzystany w wielu aplikacjach. Warto zauważyć, że komponent to element gotowy do użycia (np. skompilowana wersja biblioteki).

Zalety architektury komponentowej
  • Komponenty mogą być wykorzystane w wielu aplikacjach. Każdy komponent może zawierać swoją własną konfigurację i być konfigurowany w różny sposób dla różnych aplikacji;
  • Skraca czas budowy nowych aplikacji i obniża koszty projektu - poprzez zastosowanie istniejących komponentów. Wykorzystując istniejące komponenty po pierwsze, nie musimy ich pisać od nowa, po drugie testować i dokumentować. Poszczególne komponenty mogą być tworzone równolegle. Poprzez dobre wyspecyfikowanie interfejsów poszczególnych komponentów można łatwo zlecać implementacje komponentów na zewnątrz;
  • Wspiera tzw. modyfikowalność aplikacji - konkretna funkcjonalność skupia się w dedykowanych komponentach programowych więc w przypadku konieczności wprowadzenia zmiany, z reguły proces ten dotyczy modyfikacji jednego lub co najwyżej kilku komponentów a nie całej aplikacji. Tutaj warto zwrócić zatem uwagę na spójność funkcjonalną poszczególnych komponentów (ang. coherence). Spójność komponentów wspiera modyfikowalność - im większa spójność tym łatwiej modyfikować aplikację.

Przykładem architektury komponentowej jest architektura EJB, gdzie poszczególne ziarenka stanowią komponenty, których logika biznesowa może być udostępniana przez wyspecyfikowane interfejsy ( @Remote/Local). Poszczególne komponenty EJB są osadzone i zarządzane przez serwer aplikacyjny.


Poniżej przedstawiłem schemat poglądowy prostej aplikacji, w której logika biznesowa jest zrealizowana w architekturze komponentowej.