Wzorce, style i architektury referencyjne - miszmasz terminologiczny

Kategoria II

Analizując materiały poświęcone architekturze oprogramowania/architekturze korporacyjnej często spotyka się z określeniami: wzorzec architektoniczny, styl architektoniczny, architektura referencyjna. Niestety często pojęcia te są mylone lub stosowane w niewłaściwym kontekście. Niniejszy tekst ma pomóc uporządkować tą problematykę. Wzorzec architektoniczny, według : L. Bassa, P. Clementsa i R. Kazmana stanowi podstawowy element projektowania architektury systemu, który wykorzystywany jest do tworzenia stylów architektury i modeli referencyjnych. Wzorzec architektoniczny definiuje się jako rozwiązanie architektoniczne mające wpływ na cechy jakościowe budowanego systemu w zakresie jego dostępności, modyfikowalności, efektywności, bezpieczeństwa, testowalności, używalności.

Należy tutaj zauważyć, że o ile nie ma problemów z tą definicją na poziomie systemu informatycznego, o tyle zdecydowanie trudniej jest ją odnieść do architektury korporacyjnej. Wówczas można odnieść się do definicji wzorca architektonicznego zawartego w TOGAF: “konfiguracja bloków budowlanych (ang. building blocks), która była użyteczna w jednym kontekście i będzie prawdopodobnie użyteczna w innych”. Dzięki wprowadzeniu pojęcia “blok budowlany” zyskujemy możliwość odniesienia tego pojęcia nie tylko do warstwy IT (np. wzorzec ETL [Extract, transform, load], wzorzec ESB [Enterprise Service Bus]), ale również biznesowej (np. wzorzec punktu obsługi klienta).

Styl architektoniczny jest to pakiet wzorców architektonicznych, który obsługuje i przedstawia rozwiązanie powtarzającego się problemu architektonicznego i który powstaje w konkretnych sytuacjach projektowych. Dokumentuje on istniejące, dobrze sprawdzone doświadczenia w zakresie projektowania architektury systemów oraz zapewnia wspólny słownik i rozumienie zasad projektowania, a przez to ułatwia dokumentowanie i interpretowanie architektury systemu.
Zaletą stosowania stylów architektonicznych jest to, że wykazują one znane atrybuty jakościowe, np. w zakresie bezpieczeństwa, dostępności, efektywności. Wybór stylów architektonicznych, które mają być zastosowane, jest poważną, jeżeli nie wręcz kluczową, decyzją architekta systemu.
Każdy styl ogranicza dopuszczalne formy typów elementów i wzorów ich interakcji, co wprowadza do architektury pewną jednorodność. Jest on określany przez zbiór następujących elementów:

  • zbiór typów elementów,
  • układ topologiczny elementów prezentujący ich wzajemne związki,
  • zbiór ograniczeń semantycznych,
  • zbiór mechanizmów wzajemnego oddziaływania, które określają sposób koordynowania elementów w ramach dozwolonej topologii.

Jako przykłady stylów architektonicznych można podać: klient-serwer, SOA

Architektura referencyjna dostarcza ogólnie uznanej wiedzy dotyczącej wybranej klasy zagadnień, zawierającej na bieżących zaleceniach w tym zakresie. Określa ona wybrany zakres komponentów architektonicznych i rodzajów ich powiązań wraz ze zbiorem ograniczeń dotyczących sposobu używania tych komponentów. Najczęściej ograniczenia te związaną są z konkretną dziedziną/problemem.
R. Gabryelczyk i M. Lasek definiują architekturę referencyjną jako architekturę opracowaną dla określonej dziedziny zastosowań, mającą charakter ogólny. Jest ona podstawą, na bazie której konstruowane są rozwiązania architektoniczne dla konkretnych, realizowanych w organizacji projektów. Architektura referencyjna i style architektoniczne nie wykluczają się nawzajem. Przy projektowaniu architektury referencyjnej można wykorzystać style architektonicznej. Jako przykłady architektury referencyjnej wskazać można np. BIAN’a dla bankowości dla Frameworx dla telekomunikacji.