SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
Rola projektowania architektonicznego w inŜynierii
         oprogramowania zorientowanej na usługi

                                  Wojciech Podgórski

                            w.podgorski@student.pwr.wroc.pl



      Abstract. Niniejsza praca ma na celu zaprezentowanie idei inŜynierii
      oprogramowania systemów zorientowanych na usługi (SOA) oraz
      architektonicznego podejścia do ich projektowania i implementacji. Jako
      przykład systemu SOA przedstawiono aspekt serwisu webowego słuŜący
      planowaniu imprez. Następnie opisano zastosowanie meta-architektury
      PCBMER-A jako fundamentu budowy systemów zorientowanych na usługi
      oraz jej cechy, istotne z punktu widzenia inŜynierii oprogramowania SOA. W
      podsumowaniu przedstawia się propozycje modyfikacji i rozszerzeń
      powyŜszego rozwiązania oraz potencjalne regiony zastosowań.


      Keywords: PCBMER-A, Service Oriented Architecture, Aspect Oriented
      Programming, design patterns, object oriented practices, web services,
      integration, interoperability



1 Wprowadzenie

Prawie od samego początku powstawania zintegrowanych systemów
informatycznych, jednym z ich głównych celów było wspomaganie szeroko
rozumianego biznesu. Poczynając od klasycznych problemów takich jak bankowość
elektroniczna (np. usługi kredytowe) przez elektroniczne hurtownie towarów
(systemy B2B), aŜ po wyszukiwarki najniŜszych cen i portale aukcyjne (systemy B2C
i C2C), biznes elektroniczny (e-Bussiness) stanowił i wciąŜ stanowi jedną z
najwaŜniejszych domen Internetu. Pomimo dość długiego okresu rozwoju tej
dziedziny wciąŜ, istnieją fundamentalne problemy związane z efektywną, zarówno
implementacją, jak i późniejszą eksploatacją i pielęgnacją zintegrowanych systemów
obsługi biznesu. Problemy te moŜna podzielić na kilka warstw abstrakcji:

   1. Warstwę wymiany danych – głównym problemem jest integracja na
      poziomie fizycznym, dane wymieniane między systemami posiadają inną
      reprezentację (zaleŜną od platformy), nadawcy i odbiorcy danych są z góry
      ustaleni i „zaszyci” w systemie, występuje niezgodność parametrów (np. inny
      format daty) , synchroniczna wymiana danych.

   2. Warstwę komunikacji – problem stanowi umiejętny i odpowiedni do sytuacji
      dobór sposobu komunikacji między systemami, oparty na jednym z
paradygmatów interoperacyjności takich jak zorientowanie na proces (process
      oriented interoperability), zorientowanie na interfejsy (interface oriented
      interoperability) itp.

   3. Warstwę architektury – problem stanowi budowa i architektura systemu,
      projektując, implementując a później pielęgnując system naleŜy odpowiedzieć
      na takie pytania jak: jak osiągnąć duŜą skalowalność, w jaki sposób uzyskać
      efektywną komunikację z róŜnego rodzaju systemami (heterogeniczność
      systemów współpracujących), jak zapewnić systemowi adaptacyjność, czy
      system powinien być samo opisujący się (semantyczny), itp.

Próby rozwiązania powyŜszych problemów i opracowania standardów przetwarzania
rozproszonego oraz efektywnych technik e-Biznesu sięgają lat 70-tych XX wieku,
kiedy opracowano technikę RPC (Remote Procedure Call). Kolejne rozwiązania
zarówno usprawniały dotychczasowe jak i wprowadzały nowe podejścia. W latach
90-tych wprowadzono komunikację opierającą się na przetwarzaniu komunikatów
(message processing), natomiast po roku 2000 zaprezentowano EAI - korporacyjną
integrację aplikacji (Enterprise Application Integration). Najnowszym podejściem do
projektowania zintegrowanych systemów wspomagających biznes jest SOA.


1.1 SOA (Service Oriented Architecture)

SOA czyli architektura zorientowana na usługi jest stylem, a zarazem zbiorem zasad
wytwarzania i integracji aplikacji. Główny nacisk kładziony jest na promowanie i
stosowanie otwartych standardów definiujących usługi, komunikację i wymianę
danych oraz architekturę serwisów spełniających wymagania uŜytkownika.
Oprogramowanie wytworzone zgodnie z SOA cechuje się bardziej składaniem
funkcjonalności z istniejących rozwiązań, niŜ implementacją nowych od początku
(np. choreografie web service’ów). Ponadto opiera się na idei programowania
obiektowego, proceduralnego oraz zorientowanego na dane, łącząc wszystkie
najlepsze cechy powyŜszych. Architektura poprawnie zbudowanej aplikacji SOA z
załoŜenia cechuje się:

       •   modularnością (modularity)
       •   enkapsulacją (encapsulation)
       •   luźnymi powiązaniami (loose coupling)
       •   separacją aspektów (seperation of concerns)
       •   ponownym uŜyciem (reuse)
       •   kompozytową i niezaleŜną implementacją (composite & stand-alone
           implementation)

PoniŜej przedstawia się przykład aplikacji realizującej usługi zgodnie z SOA oraz
wpływ projektowania architektonicznego z uŜyciem meta-architektury PCBMER-A
na osiągnięcie zgodności z SOA oraz zwiększenie integracji i interoperacyjności
wytwarzanego oprogramowania.
2 Studium przypadku

SOA definiuje czym powinno cechować się wytworzone zgodnie z nią
oprogramowanie oraz jak powinno być zbudowane (zorientowanie na usługi). Nie
definiuje jednak sposobu (oprócz sugestii zgodności ze standardami) osiągnięcia
jakości (qualities) aplikacji w niej zbudowanych. Stąd kluczowym aspektem budowy
kaŜdego systemu zgodnego z SOA jest poprawny i efektywny projekt
architektoniczny, który nie tylko opisuje w jaki sposób zbudować zgodność z SOA,
ale takŜe proponuje rozwiązania problemów postawionych w punkcie 1. Aby lepiej
zrozumieć w jaki sposób poprawnie budować aplikacje SOA, zgodnie z przyjętymi
załoŜeniami architektonicznymi posłuŜymy się przykładem.

Problem: decentralizacja procesu organizacji na podstawie przykładu zaplanowania
imprezy okolicznościowej




                          wynajęcie sali                   wynajęcie firmy
                              (A)                               (B)



      lista gości            miejsce             czas          catering



                                                            lista prezentów
                                zaproszenia


                                                               rezerwacja
                                                               prezentów

Rys. 1. Proces organizacji imprezy urodzinowej

RozwaŜmy proces jakim jest organizacja imprezy urodzinowej. Pierwszym krokiem
jest ustalenie listy gości obecnych na imprezie. Następnie dokonuje się wyboru
miejsca imprezy, który wiąŜe się z rezerwacją sali. Gospodarz wybiera w serwisie A
salę do wynajęcie i dokonuje procesu rezerwacji sali na określony termin. Znając
szczegóły odbycia się imprezy, gospodarz tworzy zaproszenia dla wszystkich gości i
wysyła je pocztą. Kolejnym krokiem jest dokonanie wyboru firmy cateringowej w
serwisie B, obsługującej imprezę, oraz ustalenie szczegółów związanych z usługą.
Ostatnią rzeczą jest ustalenie listy prezentów, które gospodarz chciałby otrzymać od
zaproszonych gości.
Tak zdefiniowany proces wymaga odwołania się do dwóch zewnętrznych instytucji
(serwis A i B) oraz sporządzenia zaproszeń i listy prezentów. Łatwo zauwaŜyć, Ŝe
proces organizacji cechuje się duŜym stopniem decentralizacji – kontakt z firmami
zewnętrznymi, wysyłanie zaproszeń. Problem ten nie tylko sprawia dyskomfort
uŜytkownikowi, ale przede wszystkim wiąŜe się z innymi problemami, takimi jak:
brak gwarancji zapewnienie unikalności prezentów, firma cateringowa nie obsługuje
danego miejsca (zbyt daleka lokalizacja), zaproszenia nie dochodzą na czas itp.
Rozwiązaniem postawionych problemów moŜe być utworzenie prostego serwisu
webowego (Organizator), skupiającego wszystkie powyŜsze funkcjonalności w
jednym miejscu, korzystającego z innych serwisów oraz oferującego własne usługi.

 deployment Organizator



      «Web Service»                       «J2EE Server»
        Serw is A                     Organizator (PCBMER-A)

                                                        Baza danych

                                System pocztow y
                                                                                   Gość
      «Web Service»
        Serw is B
                                                         «Web Service»
                                                          MenadŜer               «WWW»
                              Interfej s uŜytkow nika
                                                          Prezentów      Portal społecznościow y



      «Web Service»
       Google Maps

                                                        «Web Service»
                                                        Porów nyw arka
                                   Gospodarz                 Cen




Rys. 2. Diagram rozmieszczenia dla serwisu Organizator, ukazujący architekturę SOA oraz
choreografię serwisów w systemie

Serwis Organizator, zbudowany zgodnie z SOA, wykorzystuje usługi oferowane
przez inne serwisy, oferując przy tym własne usługi. Główną częścią systemu jest
aplikacja Organizator oparta na meta-architekturze PCBMER-A, która korzysta z
usług oferowanych przez Serwisy A i B. Teraz Gospodarz imprezy korzystając z
interfejsu uŜytkownika Organizatora, jest w stanie w jednym miejscu wynająć salę
oraz zamówić catering na planowaną imprezę. Korzystając z dodatkowych serwisów
takich jak np. Google Maps jest w stanie znaleźć najbliŜsze interesującego go lokacje
dające moŜliwość zorganizowania imprezy, a takŜe firmy, które zapewnią catering,
ponadto jest w stanie pokazać zaproszonym gościom w którym dokładnie miejscu
odbędzie się impreza. Chcąc zaprosić gości, nie jest zmuszony do wysyłania ręcznie
tworzonych zaproszeń, poniewaŜ moŜe zautomatyzować ten proces wprowadzając
jedynie listę zaproszonych do systemu pocztowego, który automatycznie wyśle
zaproszenia do wszystkich, korzystając z wbudowanego szablonu wiadomości. Po
utworzeniu listy prezentów, goście zarejestrowani w zewnętrznej aplikacji np.
serwisie społecznościowym, są w stanie pobrać listę prezentów oraz zarezerwować
prezent, który chcą kupić gospodarzowi, aplikacja Organizator nie tylko udostępnia
usługi związane z zarządzaniem listą prezentów w postaci Web Service’u, ale takŜe
korzysta z usług zewnętrznych porównywarek cen, tak aby gość mógł wybrać gdzie
kupi prezent najtaniej.
Projektując i implementując system zgodnie z SOA uzyskano nie tylko centralizację
procesu organizacji, ale równieŜ zwiększenie elastyczności rozwiązania, które
pozwala na dynamiczne dodawanie i usuwanie usług z których korzysta i które
oferuje system. Tak jak zostało wspomniane powyŜej kluczowym aspektem w
wytwarzaniu systemu był projekt architektoniczny i uŜycie meta-architektury
PCBMER-A.


3 SOA w kontekście meta-architektury PCBMER-A

Rozpatrując SOA w kontekście meta-architektury PCBMER-A naleŜy wyjść od
podstawowego stwierdzenia, iŜ obie koncepcje mają wspólny cel – zapewnić
systemowi adaptacyjność. Z punktu widzenia biznesu w SOA cecha adaptacyjności
tworzonych aplikacji jest najistotniejsza, ze względu na wciąŜ zmieniające się
wymagania. Zmiany tych wymagań propagują nie tylko tworzenie nowych rozwiązań,
ale przede wszystkim dopasowywanie istniejących do panujących warunków. Stąd
budowanie aplikacji adaptacyjnych jest kluczowym wymogiem SOA.


3.1 Adaptacyjność


Adaptacyjność rozumiana jako połączenie skalowalności (scalability), zrozumiałości
(understandability) oraz pielęgnowalności (maintainability) stanowi istotę PCBMER-
A. Zwiększenie pielęgnowalności systemu w SOA pozwala na dołączanie nowych
funkcjonalności małym kosztem, oferowanie i korzystanie z nowych usług oraz ciągły
rozwój aplikacji. Zrozumiałość systemu to nie tylko przejrzysta implementacja, łatwa
w rozwoju i konserwacji, ale równieŜ tolerancja na pewne zewnętrzne zachowania,
które mogą zostać przewidziane i poprawnie obsłuŜone. Skalowalność systemu
pozwala na zapewnienie coraz wydajniejsze pracy w miarę zwiększania zasobów. W
PCBMER-A adaptacyjność jest rozumiana jako wyznacznik zarządzania złoŜonością.
Stąd w meta-architekturze główną ideą zwiększenia adaptacyjności jest minimalizacja
zaleŜności pomiędzy bytami w niej występującymi. W celu kontrolowania złoŜoności,
nie moŜna dopuścić do niekontrolowanych połączeń pomiędzy bytami - tworzenie się
sieci bytów P2P (kaŜdy z kaŜdym) powoduje, Ŝe liczba zaleŜności rośnie
wykładniczo. Rozwiązaniem jest stosowanie hierarchii, w których wzrost liczby
zaleŜności spada do wielomianowego. Ponadto ułoŜenie bytów w hierarchie
powoduje zrozumiałość kaŜdej z występujących relacji (zaleŜności). Kluczem do
poprawnego zarządzania złoŜonością, a co za tym idzie zwiększenia adaptacyjności,
jest zdawanie sobie sprawy z kaŜdej istniejące w systemie zaleŜności oraz rozumienie
jej sensu. Tylko tak sprecyzowana zaleŜność moŜe zaistnieć w systemie, nie mając
negatywnego wpływu na jego jakości.
PCBMER-A uzyskuje cechę adaptacyjności poprzez budowę warstwową (layers)
oraz ścisłą definicję występowania zaleŜności pomiędzy bytami, opisaną siedmioma
zasadami:

   1. zasada zaleŜności w dół (downward dependency principle)
   2. zasada powiadamiania w góre (upward notification principle)
   3. zasada komunikacji z sąsiadami (neighbor communication principle)
4.   zasada jawnych asocjacji (explicit association principle)
      5.   zasada eliminacji cykli (cycle elimination principle)
      6.   zasada nazywania klas (class naming principle)
      7.   zasada pakietu znajomości (acquaintance package principle)

PowyŜsze zasady określają w jaki sposób byty zawarte w warstwach mogą ze sobą
współpracować, tak aby zaleŜności między nimi były zminimalizowane.
Odstępstwem są zasady numer 6 i 7, które mówią odpowiednio: w jaki sposób
odpowiednio nazywać klasy oraz interfejsu oraz manifestują istnienie oddzielnej
warstwy, w której przechowywane są interfejsy słuŜące do bardziej złoŜonej
komunikacji pomiędzy bytami, nie stosującej się do zasad 1-5.


3.2 Cechy architektoniczne SOA i PCBMER-A


Zasady budowy meta-architektury PCBMER-A niemal całkowicie przekładają się na
cechy architektury SOA. Modularność oraz separacja aspektów, osiągana jest przez
zastosowanie oraz oddzielenie od siebie sześciu warstw: Prezentacji (Presentation),
Ziaren (Bean), Kontrolera (Controller), Mediatora (Mediator), Encji (Entity) oraz
Zasobów (Resource). Byty zlokalizowane w danej warstwie odpowiadają za
realizację pewnego aspektu i nie mogą zostać przeniesione do innych warstw, razem
stanowią nierozłączny moduł. Z separacji aspektów w PCBMER-A, wynika równieŜ
luźne powiązanie, poniewaŜ byty które skupiają odpowiedzialność na jednym
aspekcie cechują się wysoką kohezją, która z kolei implikuje luźne powiązanie. Meta-
architektura PCBMER-A jest oparta na idei holarchii, byty w niej występujące
(zarówno warstwy, klasy jak i interfejsy) są holonami, wykazującymi naturę zarówno
części jak i całości. Interpretując holon jako część zakładamy, iŜ jest on analitycznie
złoŜony i posiada wewnętrzne relacje, niewidoczne z zewnątrz, stąd kaŜdy holon
cechuje się enkapsulacją. Holony są złoŜone i mają charakter rekursywny,
architektura SOA zakłada kompozytową (composite) implementację, PCBMER-A
wprowadza rozróŜnienie pomiędzy bytem złoŜonym (complex), a składanym
(compound) w postaci aspektu relacji wewnętrznych. W przypadku pierwszego
relacje wewnętrzne są istotne i świadczą o jego naturze, w przypadku drugiego są
nieistotne. JeŜeli załoŜyć, Ŝe kompozyt jest zbliŜony znaczeniowo to bytu złoŜonego
(kompozyt1 - materiał złoŜony z co najmniej dwóch składników, mający właściwości
lepsze od nich lub nowe) to moŜna powiedzieć, Ŝe PCBMER-A w pełni implementuje
koncepcję SOA. Ostatnią cechą jest ponowne uŜycie, jako Ŝe PCBMER-A jest meta-
architekturą, oznacza to Ŝe kaŜda jej instancja (architektura) moŜe być dopasowana do
odrębnego problemu, stąd uzyskuje się najwyŜszy poziom ponownego uŜycia.




1   Słownik Języka Polskiego PWN
4 Rozszerzenia PCBMER-A

Meta-architektura PCBMER-A wywodzi się z lat doświadczeń w dziedzinie inŜynierii
oprogramowania dlatego cięŜko, jest zaproponować rozszerzenie lub modyfikację, nie
popartą odpowiednimi argumentami.


4.1 Programowanie aspektowe


Jedną z rzeczy, która naturalnie wynikają z istoty meta-architektury PCBMER-A są
aspekty. PCBMER-A minimalizując zaleŜności stara się oddzielić w jak największym
stopniu byty ze sobą funkcjonalnie niezwiązane. W tym celu wykorzystuje się
architekturę warstwową oraz paradygmat programowania obiektowego.
Programowanie obiektowe z idei jednak, jest pionową kompozycją w procesie
kompozycji oprogramowania. Kompozycję poziomą stanowi właśnie paradygmat
programowania aspektowego. Programowanie aspektowe stara się maksymalnie
oddzielić od siebie funkcjonalnie odrębne części oprogramowania co prowadzi do
najlepszej modularności, zwiększenia kohezji, nie tylko klas ale całych modułów i w
konsekwencji wzrostu adaptacyjności. W czasie projektowania wyróŜnia się odrębne
aspekty dla oddzielnych jakości oprogramowania takich jak: bezpieczeństwo,
niezawodność, wydajność itd. Następnie w tzw. procesie „tkania” (weaving) integruje
się ze sobą poszczególne aspekty i wyznacza punkty w których ze sobą współpracują.
Zalety tworzenia aspektów moŜna zauwaŜyć nawet w odniesieniu do SOA. JeŜeli
potraktować kolaborację (dąŜenie elementów(ról), poprzez wykonywanie
wyspecjalizowanych funkcji, do wspólnego osiągnięcia poŜądanej funkcjonalności)
jako aspekt, moŜna sobie wyobrazić, Ŝe Web Service realizujący jedną
funkcjonalność jest właśnie kolaboracją grupy bytów (klas, interfejsów). Idąc dalej
jeŜeli grupa takich Web Service’ów w SOA jest odpowiedzialna za wspólną realizację
procesu biznesowego, to moŜna powiedzieć, Ŝe programowanie aspektowe jak i idea
aspektów wspiera zarówno rozumienie jak i implementację procesów biznesowych, a
co się z tym wiąŜe całą SOA. Warto więc rozwaŜyć aplikację aspektów do PCBMER-
A jako przynajmniej opcjonalną część architektury.


4.2 Projekt warstwy Resource

Warstwa Zasobów jest odpowiedzialna za wszelką komunikację z zewnętrznymi
persystantnymi źródłami danych oraz innymi systemami oferującymi/Ŝądającymi
usługi. Jak w kaŜdym systemie warstwa odpowiedzialna za komunikację z bazą
danych, moŜe stać się bardzo łatwo wąskim gardłem, drastycznie ograniczającym
wydajność. Dlatego projekt tej warstwy jest kluczową sprawą w aspekcie wydajności,
i nie tylko. Dobranie odpowiednich wzorców projektowych do serializacji danych i
obsługi transakcji w kontekście persystancji jest bardzo istotną rzeczą, stąd zanim
przejdzie się do implementacji tej warstwy zawsze naleŜy rozwaŜyć takie problemy
jak częstotliwość i rodzaj zapytań, rodzaj medium persystancji (baza danych, pliki,
hurtownia danych), architektura medium persystancji, typ problemu (baza danych
genotypów człowieka, baza danych wypoŜyczalni samochodów).
Drugim powodem, dla którego warstwa Zasobów powinna być dobrze
zaprojektowana, jest koncepcja PCBMER-A, która mówi, Ŝe warstwy na niŜszym
poziomie powinny być bardziej stabilne niŜ warstwy na wyŜszym poziomie. Warstwa
Resource znajduje się na samym dole hierarchii, stąd powinna mieć największą
stabilność (wszystkie wyŜsze warstwy są od niej pośrednio zaleŜne). W ogólności
moŜna powiedzieć, Ŝe jeŜeli współczynnik stabilności (Instability) zdefiniujemy jako:

                                             .                                    (1)

gdzie Ca (afferent coupling) to liczba zaleŜności przychodzących a Ce (efferent
coupling) liczba zaleŜności wychodzących, to

                                 IResource → 0 .                                  (2)



4.3 Podział warstwy Resource

Warstwa Zasobów stanowi podstawę PCBMER-A, jednak z punktu widzenia
funkcjonalności, skupia za duŜo odpowiedzialności. Propozycja modyfikacji polega
na podziale warstwy Resource na dwie (róŜne w zaleŜności od sytuacji):

Warstwa pierwotna:      Po podziale:             Opis:
                        External Resource        Zew. źródła danych + komunikacja
Resource
                        Internal Resource        Wewnętrzne źródła danych
                        Communication            Komunikacja
Resource
                        Persistance              Wewnętrze i zewnętrzne źródła danych

Pierwszy podział dzieli warstwę Resource na External Resource i Internal Resource.
Warstwa Zasobów Zewnętrznych jest odpowiedzialna za wszelką komunikację (Web
Service’y, RMI, Sockets itp.) oraz zewnętrzne persystantne źródła danych, tzn. takie z
system korzysta ale nie moŜe nimi zarządzać. Warstwa Wewnętrznych Zasobów
odpowiada za wewnętrzne persystantne źródła danych tzn. takie, którymi moŜe
zarządzać i ma do nich pełne prawa.
Drugi podział dzieli warstwę Resource na Communication i Persistance. Warstwa
komunikacji odpowiada tylko i wyłącznie za wszelką komunikację (Web Service’y,
RMI, Sockets, Remote APIs, Message Processing itp.), natomiast warstwa
persystancji za persystantne źródła danych, zarówno wewnętrzne jak i zewnętrzne.
PowyŜszy podział nie tylko zwiększa stabilność architektury, ale równieŜ zmniejsza
ryzyko ze strony systemów zewnętrznych i wprowadza dekompozycję
odpowiedzialności na mniejsze jednostki.
4.4 PCBMER-A i metodyki zwinne

Ostatnią propozycją jest integracja meta-architektury PCBMER-A z rodziną metodyk
zwinnych. Integracja, tak samo jak w przypadku SOA, odbywa się na wspólnej
koncepcji zapewnienia systemowi adaptacyjności. Metodyki zwinne z natury są
przygotowane na projekty o wysokim ryzyku i bardzo zmiennych wymaganiach, stąd
uŜycie PCBMER-A jako wzorca niezwykle elastycznego idealnie pasuje do tego
rozwiązania. Sprzeczność pojawia się w momencie projektowania architektonicznego.
Metodyki zwinne nie przewidują takiego projektowania, jednak jak najbardziej
korzystają z gotowych rozwiązań do ponownego uŜycia (wzorców projektowych)
dlatego w tym kontekście PCBMER-A moŜna potraktować jako wzorzec projektowy
gotowy do adaptacji i implementacji, szczególnie nadający się do zwinnych
projektów webowych o wciąŜ modyfikowanych i dodawanych funkcjonalnościach
(beta non-stop).




Bibliografia

1.   Booch, g. (2007): The Economics of Architecture-First, IEEE Software, Sept/Oct, pp.18-
     20
2.   Maciaszek, L.A. (2007): Modeling and Engineering Adaptive Complex Systems,
     Challenges in Conceptual Modelling. Tutorials, Posters, Panels and Industrial
     Contributions to the 26th International Conference on Conceptual Modeling - ER 2007,
     CRPIT No. 83, ed. J. Grundy, S. Hartmann, L. Laender, L. Maciaszek, J. Roddick, ACS,
     pp.31-38
3.   Maciaszek, L.A. (2008): Analiza Struktur ZaleŜności w Zarządzaniu Intencją
     Architektoniczną Systemu (Dependency Structure Analysis for Managing Architectural
     Intent), InŜynieria Oprogramowania – Od Teorii do Praktyki, ed. Z. Huzar, Z. Mazur,
     Wydawnictwa Komunikacji i Łączności, Warszawa, pp.13-26. (invited paper)
4.   Maciaszek, L.A. (2008): Architectural Design and Software Engineering of Adaptive
     Complex Systems, series of lectures at Wroclaw University of Technology, Wrocław
     2008

Weitere ähnliche Inhalte

Ähnlich wie Rola projektowania architektonicznego w inżynierii oprogramowania zorientowanej na usługi

Architektura SOA - wstęp
Architektura SOA - wstępArchitektura SOA - wstęp
Architektura SOA - wstępSages
 
SharePoint 2010 Community Launch - Co nowego w rodzinie Microsoft SharePoint ...
SharePoint 2010 Community Launch - Co nowego w rodzinie Microsoft SharePoint ...SharePoint 2010 Community Launch - Co nowego w rodzinie Microsoft SharePoint ...
SharePoint 2010 Community Launch - Co nowego w rodzinie Microsoft SharePoint ...Tobias Koprowski
 
Case study Pekao24 - K2 User Experience
Case study Pekao24 - K2 User ExperienceCase study Pekao24 - K2 User Experience
Case study Pekao24 - K2 User ExperienceMaciej Lipiec
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaWydawnictwo Helion
 
Modelowanie katalogu i kosztów usług IT - przewodnik (20.04.2015)
Modelowanie katalogu i kosztów usług IT - przewodnik (20.04.2015)Modelowanie katalogu i kosztów usług IT - przewodnik (20.04.2015)
Modelowanie katalogu i kosztów usług IT - przewodnik (20.04.2015)remigiusz_orzechowski
 
SharePoint przyszłość i teraźniejszość
SharePoint przyszłość i teraźniejszośćSharePoint przyszłość i teraźniejszość
SharePoint przyszłość i teraźniejszośćGrzegorz Rudno-Rudzinski
 
Summit EOIF GigaCon 2017 - katalog
Summit EOIF GigaCon 2017 - katalogSummit EOIF GigaCon 2017 - katalog
Summit EOIF GigaCon 2017 - katalogJustyna Cieślak
 
Zastosowania systemu BCC ECM
Zastosowania systemu BCC ECMZastosowania systemu BCC ECM
Zastosowania systemu BCC ECMBCC_Group
 
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLAWysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLATobias Koprowski
 
Microsoft Dynamics NAV 2013 - prezentacja systemu ERP
Microsoft Dynamics NAV 2013 - prezentacja systemu ERPMicrosoft Dynamics NAV 2013 - prezentacja systemu ERP
Microsoft Dynamics NAV 2013 - prezentacja systemu ERPIT-integro
 
Microsoft WebsiteSpark - Paweł Kryszczyszyn
Microsoft WebsiteSpark - Paweł KryszczyszynMicrosoft WebsiteSpark - Paweł Kryszczyszyn
Microsoft WebsiteSpark - Paweł KryszczyszynWebhosting.pl
 
Budowanie przewagi konkurencyjnej BPM
Budowanie przewagi konkurencyjnej BPMBudowanie przewagi konkurencyjnej BPM
Budowanie przewagi konkurencyjnej BPMAlicja Sieminska
 
Nowości Windows Azure
Nowości Windows AzureNowości Windows Azure
Nowości Windows Azurepbubacz
 
ADONIS - funkcjonalnosci i scenariusze zastosowania
ADONIS - funkcjonalnosci i scenariusze zastosowaniaADONIS - funkcjonalnosci i scenariusze zastosowania
ADONIS - funkcjonalnosci i scenariusze zastosowaniaZbigniew Misiak
 

Ähnlich wie Rola projektowania architektonicznego w inżynierii oprogramowania zorientowanej na usługi (20)

3
33
3
 
Architektura SOA - wstęp
Architektura SOA - wstępArchitektura SOA - wstęp
Architektura SOA - wstęp
 
SharePoint 2010 Community Launch - Co nowego w rodzinie Microsoft SharePoint ...
SharePoint 2010 Community Launch - Co nowego w rodzinie Microsoft SharePoint ...SharePoint 2010 Community Launch - Co nowego w rodzinie Microsoft SharePoint ...
SharePoint 2010 Community Launch - Co nowego w rodzinie Microsoft SharePoint ...
 
Case study Pekao24 - K2 User Experience
Case study Pekao24 - K2 User ExperienceCase study Pekao24 - K2 User Experience
Case study Pekao24 - K2 User Experience
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga eksperta
 
WF w zastosowaniach Web
WF w zastosowaniach WebWF w zastosowaniach Web
WF w zastosowaniach Web
 
NET flow
NET flowNET flow
NET flow
 
Modelowanie katalogu i kosztów usług IT - przewodnik (20.04.2015)
Modelowanie katalogu i kosztów usług IT - przewodnik (20.04.2015)Modelowanie katalogu i kosztów usług IT - przewodnik (20.04.2015)
Modelowanie katalogu i kosztów usług IT - przewodnik (20.04.2015)
 
Projektowanie i programowanie aplikacji nowej generacji
Projektowanie i programowanie aplikacji nowej generacjiProjektowanie i programowanie aplikacji nowej generacji
Projektowanie i programowanie aplikacji nowej generacji
 
SharePoint przyszłość i teraźniejszość
SharePoint przyszłość i teraźniejszośćSharePoint przyszłość i teraźniejszość
SharePoint przyszłość i teraźniejszość
 
Aim szkolenie
Aim szkolenieAim szkolenie
Aim szkolenie
 
Summit EOIF GigaCon 2017 - katalog
Summit EOIF GigaCon 2017 - katalogSummit EOIF GigaCon 2017 - katalog
Summit EOIF GigaCon 2017 - katalog
 
Platforma SOA
Platforma SOAPlatforma SOA
Platforma SOA
 
Zastosowania systemu BCC ECM
Zastosowania systemu BCC ECMZastosowania systemu BCC ECM
Zastosowania systemu BCC ECM
 
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLAWysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLA
 
Microsoft Dynamics NAV 2013 - prezentacja systemu ERP
Microsoft Dynamics NAV 2013 - prezentacja systemu ERPMicrosoft Dynamics NAV 2013 - prezentacja systemu ERP
Microsoft Dynamics NAV 2013 - prezentacja systemu ERP
 
Microsoft WebsiteSpark - Paweł Kryszczyszyn
Microsoft WebsiteSpark - Paweł KryszczyszynMicrosoft WebsiteSpark - Paweł Kryszczyszyn
Microsoft WebsiteSpark - Paweł Kryszczyszyn
 
Budowanie przewagi konkurencyjnej BPM
Budowanie przewagi konkurencyjnej BPMBudowanie przewagi konkurencyjnej BPM
Budowanie przewagi konkurencyjnej BPM
 
Nowości Windows Azure
Nowości Windows AzureNowości Windows Azure
Nowości Windows Azure
 
ADONIS - funkcjonalnosci i scenariusze zastosowania
ADONIS - funkcjonalnosci i scenariusze zastosowaniaADONIS - funkcjonalnosci i scenariusze zastosowania
ADONIS - funkcjonalnosci i scenariusze zastosowania
 

Mehr von Wojciech Podgórski

[PL] Krótkozasięgowe systemy telemetryczne i identyfikacyjne
[PL] Krótkozasięgowe systemy telemetryczne i identyfikacyjne[PL] Krótkozasięgowe systemy telemetryczne i identyfikacyjne
[PL] Krótkozasięgowe systemy telemetryczne i identyfikacyjneWojciech Podgórski
 
[PL] Mechanizmy bezpieczeństwa w sieciach z rodziny 802.11x
[PL] Mechanizmy bezpieczeństwa w sieciach z rodziny 802.11x[PL] Mechanizmy bezpieczeństwa w sieciach z rodziny 802.11x
[PL] Mechanizmy bezpieczeństwa w sieciach z rodziny 802.11xWojciech Podgórski
 
Metryki obiektowe i ich interpretacja
Metryki obiektowe i ich interpretacjaMetryki obiektowe i ich interpretacja
Metryki obiektowe i ich interpretacjaWojciech Podgórski
 
[PL] XPrince: balance between agility and discipline
[PL] XPrince: balance between agility and discipline[PL] XPrince: balance between agility and discipline
[PL] XPrince: balance between agility and disciplineWojciech Podgórski
 
Artificial Intelligence Methods in Virus Detection & Recognition - Introducti...
Artificial Intelligence Methods in Virus Detection & Recognition - Introducti...Artificial Intelligence Methods in Virus Detection & Recognition - Introducti...
Artificial Intelligence Methods in Virus Detection & Recognition - Introducti...Wojciech Podgórski
 
eXtensible Markup Language APIs in Java 1.6 - Simple and efficient XML parsin...
eXtensible Markup Language APIs in Java 1.6 - Simple and efficient XML parsin...eXtensible Markup Language APIs in Java 1.6 - Simple and efficient XML parsin...
eXtensible Markup Language APIs in Java 1.6 - Simple and efficient XML parsin...Wojciech Podgórski
 

Mehr von Wojciech Podgórski (6)

[PL] Krótkozasięgowe systemy telemetryczne i identyfikacyjne
[PL] Krótkozasięgowe systemy telemetryczne i identyfikacyjne[PL] Krótkozasięgowe systemy telemetryczne i identyfikacyjne
[PL] Krótkozasięgowe systemy telemetryczne i identyfikacyjne
 
[PL] Mechanizmy bezpieczeństwa w sieciach z rodziny 802.11x
[PL] Mechanizmy bezpieczeństwa w sieciach z rodziny 802.11x[PL] Mechanizmy bezpieczeństwa w sieciach z rodziny 802.11x
[PL] Mechanizmy bezpieczeństwa w sieciach z rodziny 802.11x
 
Metryki obiektowe i ich interpretacja
Metryki obiektowe i ich interpretacjaMetryki obiektowe i ich interpretacja
Metryki obiektowe i ich interpretacja
 
[PL] XPrince: balance between agility and discipline
[PL] XPrince: balance between agility and discipline[PL] XPrince: balance between agility and discipline
[PL] XPrince: balance between agility and discipline
 
Artificial Intelligence Methods in Virus Detection & Recognition - Introducti...
Artificial Intelligence Methods in Virus Detection & Recognition - Introducti...Artificial Intelligence Methods in Virus Detection & Recognition - Introducti...
Artificial Intelligence Methods in Virus Detection & Recognition - Introducti...
 
eXtensible Markup Language APIs in Java 1.6 - Simple and efficient XML parsin...
eXtensible Markup Language APIs in Java 1.6 - Simple and efficient XML parsin...eXtensible Markup Language APIs in Java 1.6 - Simple and efficient XML parsin...
eXtensible Markup Language APIs in Java 1.6 - Simple and efficient XML parsin...
 

Rola projektowania architektonicznego w inżynierii oprogramowania zorientowanej na usługi

  • 1. Rola projektowania architektonicznego w inŜynierii oprogramowania zorientowanej na usługi Wojciech Podgórski w.podgorski@student.pwr.wroc.pl Abstract. Niniejsza praca ma na celu zaprezentowanie idei inŜynierii oprogramowania systemów zorientowanych na usługi (SOA) oraz architektonicznego podejścia do ich projektowania i implementacji. Jako przykład systemu SOA przedstawiono aspekt serwisu webowego słuŜący planowaniu imprez. Następnie opisano zastosowanie meta-architektury PCBMER-A jako fundamentu budowy systemów zorientowanych na usługi oraz jej cechy, istotne z punktu widzenia inŜynierii oprogramowania SOA. W podsumowaniu przedstawia się propozycje modyfikacji i rozszerzeń powyŜszego rozwiązania oraz potencjalne regiony zastosowań. Keywords: PCBMER-A, Service Oriented Architecture, Aspect Oriented Programming, design patterns, object oriented practices, web services, integration, interoperability 1 Wprowadzenie Prawie od samego początku powstawania zintegrowanych systemów informatycznych, jednym z ich głównych celów było wspomaganie szeroko rozumianego biznesu. Poczynając od klasycznych problemów takich jak bankowość elektroniczna (np. usługi kredytowe) przez elektroniczne hurtownie towarów (systemy B2B), aŜ po wyszukiwarki najniŜszych cen i portale aukcyjne (systemy B2C i C2C), biznes elektroniczny (e-Bussiness) stanowił i wciąŜ stanowi jedną z najwaŜniejszych domen Internetu. Pomimo dość długiego okresu rozwoju tej dziedziny wciąŜ, istnieją fundamentalne problemy związane z efektywną, zarówno implementacją, jak i późniejszą eksploatacją i pielęgnacją zintegrowanych systemów obsługi biznesu. Problemy te moŜna podzielić na kilka warstw abstrakcji: 1. Warstwę wymiany danych – głównym problemem jest integracja na poziomie fizycznym, dane wymieniane między systemami posiadają inną reprezentację (zaleŜną od platformy), nadawcy i odbiorcy danych są z góry ustaleni i „zaszyci” w systemie, występuje niezgodność parametrów (np. inny format daty) , synchroniczna wymiana danych. 2. Warstwę komunikacji – problem stanowi umiejętny i odpowiedni do sytuacji dobór sposobu komunikacji między systemami, oparty na jednym z
  • 2. paradygmatów interoperacyjności takich jak zorientowanie na proces (process oriented interoperability), zorientowanie na interfejsy (interface oriented interoperability) itp. 3. Warstwę architektury – problem stanowi budowa i architektura systemu, projektując, implementując a później pielęgnując system naleŜy odpowiedzieć na takie pytania jak: jak osiągnąć duŜą skalowalność, w jaki sposób uzyskać efektywną komunikację z róŜnego rodzaju systemami (heterogeniczność systemów współpracujących), jak zapewnić systemowi adaptacyjność, czy system powinien być samo opisujący się (semantyczny), itp. Próby rozwiązania powyŜszych problemów i opracowania standardów przetwarzania rozproszonego oraz efektywnych technik e-Biznesu sięgają lat 70-tych XX wieku, kiedy opracowano technikę RPC (Remote Procedure Call). Kolejne rozwiązania zarówno usprawniały dotychczasowe jak i wprowadzały nowe podejścia. W latach 90-tych wprowadzono komunikację opierającą się na przetwarzaniu komunikatów (message processing), natomiast po roku 2000 zaprezentowano EAI - korporacyjną integrację aplikacji (Enterprise Application Integration). Najnowszym podejściem do projektowania zintegrowanych systemów wspomagających biznes jest SOA. 1.1 SOA (Service Oriented Architecture) SOA czyli architektura zorientowana na usługi jest stylem, a zarazem zbiorem zasad wytwarzania i integracji aplikacji. Główny nacisk kładziony jest na promowanie i stosowanie otwartych standardów definiujących usługi, komunikację i wymianę danych oraz architekturę serwisów spełniających wymagania uŜytkownika. Oprogramowanie wytworzone zgodnie z SOA cechuje się bardziej składaniem funkcjonalności z istniejących rozwiązań, niŜ implementacją nowych od początku (np. choreografie web service’ów). Ponadto opiera się na idei programowania obiektowego, proceduralnego oraz zorientowanego na dane, łącząc wszystkie najlepsze cechy powyŜszych. Architektura poprawnie zbudowanej aplikacji SOA z załoŜenia cechuje się: • modularnością (modularity) • enkapsulacją (encapsulation) • luźnymi powiązaniami (loose coupling) • separacją aspektów (seperation of concerns) • ponownym uŜyciem (reuse) • kompozytową i niezaleŜną implementacją (composite & stand-alone implementation) PoniŜej przedstawia się przykład aplikacji realizującej usługi zgodnie z SOA oraz wpływ projektowania architektonicznego z uŜyciem meta-architektury PCBMER-A na osiągnięcie zgodności z SOA oraz zwiększenie integracji i interoperacyjności wytwarzanego oprogramowania.
  • 3. 2 Studium przypadku SOA definiuje czym powinno cechować się wytworzone zgodnie z nią oprogramowanie oraz jak powinno być zbudowane (zorientowanie na usługi). Nie definiuje jednak sposobu (oprócz sugestii zgodności ze standardami) osiągnięcia jakości (qualities) aplikacji w niej zbudowanych. Stąd kluczowym aspektem budowy kaŜdego systemu zgodnego z SOA jest poprawny i efektywny projekt architektoniczny, który nie tylko opisuje w jaki sposób zbudować zgodność z SOA, ale takŜe proponuje rozwiązania problemów postawionych w punkcie 1. Aby lepiej zrozumieć w jaki sposób poprawnie budować aplikacje SOA, zgodnie z przyjętymi załoŜeniami architektonicznymi posłuŜymy się przykładem. Problem: decentralizacja procesu organizacji na podstawie przykładu zaplanowania imprezy okolicznościowej wynajęcie sali wynajęcie firmy (A) (B) lista gości miejsce czas catering lista prezentów zaproszenia rezerwacja prezentów Rys. 1. Proces organizacji imprezy urodzinowej RozwaŜmy proces jakim jest organizacja imprezy urodzinowej. Pierwszym krokiem jest ustalenie listy gości obecnych na imprezie. Następnie dokonuje się wyboru miejsca imprezy, który wiąŜe się z rezerwacją sali. Gospodarz wybiera w serwisie A salę do wynajęcie i dokonuje procesu rezerwacji sali na określony termin. Znając szczegóły odbycia się imprezy, gospodarz tworzy zaproszenia dla wszystkich gości i wysyła je pocztą. Kolejnym krokiem jest dokonanie wyboru firmy cateringowej w serwisie B, obsługującej imprezę, oraz ustalenie szczegółów związanych z usługą. Ostatnią rzeczą jest ustalenie listy prezentów, które gospodarz chciałby otrzymać od zaproszonych gości. Tak zdefiniowany proces wymaga odwołania się do dwóch zewnętrznych instytucji (serwis A i B) oraz sporządzenia zaproszeń i listy prezentów. Łatwo zauwaŜyć, Ŝe
  • 4. proces organizacji cechuje się duŜym stopniem decentralizacji – kontakt z firmami zewnętrznymi, wysyłanie zaproszeń. Problem ten nie tylko sprawia dyskomfort uŜytkownikowi, ale przede wszystkim wiąŜe się z innymi problemami, takimi jak: brak gwarancji zapewnienie unikalności prezentów, firma cateringowa nie obsługuje danego miejsca (zbyt daleka lokalizacja), zaproszenia nie dochodzą na czas itp. Rozwiązaniem postawionych problemów moŜe być utworzenie prostego serwisu webowego (Organizator), skupiającego wszystkie powyŜsze funkcjonalności w jednym miejscu, korzystającego z innych serwisów oraz oferującego własne usługi. deployment Organizator «Web Service» «J2EE Server» Serw is A Organizator (PCBMER-A) Baza danych System pocztow y Gość «Web Service» Serw is B «Web Service» MenadŜer «WWW» Interfej s uŜytkow nika Prezentów Portal społecznościow y «Web Service» Google Maps «Web Service» Porów nyw arka Gospodarz Cen Rys. 2. Diagram rozmieszczenia dla serwisu Organizator, ukazujący architekturę SOA oraz choreografię serwisów w systemie Serwis Organizator, zbudowany zgodnie z SOA, wykorzystuje usługi oferowane przez inne serwisy, oferując przy tym własne usługi. Główną częścią systemu jest aplikacja Organizator oparta na meta-architekturze PCBMER-A, która korzysta z usług oferowanych przez Serwisy A i B. Teraz Gospodarz imprezy korzystając z interfejsu uŜytkownika Organizatora, jest w stanie w jednym miejscu wynająć salę oraz zamówić catering na planowaną imprezę. Korzystając z dodatkowych serwisów takich jak np. Google Maps jest w stanie znaleźć najbliŜsze interesującego go lokacje dające moŜliwość zorganizowania imprezy, a takŜe firmy, które zapewnią catering, ponadto jest w stanie pokazać zaproszonym gościom w którym dokładnie miejscu odbędzie się impreza. Chcąc zaprosić gości, nie jest zmuszony do wysyłania ręcznie tworzonych zaproszeń, poniewaŜ moŜe zautomatyzować ten proces wprowadzając jedynie listę zaproszonych do systemu pocztowego, który automatycznie wyśle zaproszenia do wszystkich, korzystając z wbudowanego szablonu wiadomości. Po utworzeniu listy prezentów, goście zarejestrowani w zewnętrznej aplikacji np. serwisie społecznościowym, są w stanie pobrać listę prezentów oraz zarezerwować prezent, który chcą kupić gospodarzowi, aplikacja Organizator nie tylko udostępnia usługi związane z zarządzaniem listą prezentów w postaci Web Service’u, ale takŜe korzysta z usług zewnętrznych porównywarek cen, tak aby gość mógł wybrać gdzie kupi prezent najtaniej. Projektując i implementując system zgodnie z SOA uzyskano nie tylko centralizację procesu organizacji, ale równieŜ zwiększenie elastyczności rozwiązania, które
  • 5. pozwala na dynamiczne dodawanie i usuwanie usług z których korzysta i które oferuje system. Tak jak zostało wspomniane powyŜej kluczowym aspektem w wytwarzaniu systemu był projekt architektoniczny i uŜycie meta-architektury PCBMER-A. 3 SOA w kontekście meta-architektury PCBMER-A Rozpatrując SOA w kontekście meta-architektury PCBMER-A naleŜy wyjść od podstawowego stwierdzenia, iŜ obie koncepcje mają wspólny cel – zapewnić systemowi adaptacyjność. Z punktu widzenia biznesu w SOA cecha adaptacyjności tworzonych aplikacji jest najistotniejsza, ze względu na wciąŜ zmieniające się wymagania. Zmiany tych wymagań propagują nie tylko tworzenie nowych rozwiązań, ale przede wszystkim dopasowywanie istniejących do panujących warunków. Stąd budowanie aplikacji adaptacyjnych jest kluczowym wymogiem SOA. 3.1 Adaptacyjność Adaptacyjność rozumiana jako połączenie skalowalności (scalability), zrozumiałości (understandability) oraz pielęgnowalności (maintainability) stanowi istotę PCBMER- A. Zwiększenie pielęgnowalności systemu w SOA pozwala na dołączanie nowych funkcjonalności małym kosztem, oferowanie i korzystanie z nowych usług oraz ciągły rozwój aplikacji. Zrozumiałość systemu to nie tylko przejrzysta implementacja, łatwa w rozwoju i konserwacji, ale równieŜ tolerancja na pewne zewnętrzne zachowania, które mogą zostać przewidziane i poprawnie obsłuŜone. Skalowalność systemu pozwala na zapewnienie coraz wydajniejsze pracy w miarę zwiększania zasobów. W PCBMER-A adaptacyjność jest rozumiana jako wyznacznik zarządzania złoŜonością. Stąd w meta-architekturze główną ideą zwiększenia adaptacyjności jest minimalizacja zaleŜności pomiędzy bytami w niej występującymi. W celu kontrolowania złoŜoności, nie moŜna dopuścić do niekontrolowanych połączeń pomiędzy bytami - tworzenie się sieci bytów P2P (kaŜdy z kaŜdym) powoduje, Ŝe liczba zaleŜności rośnie wykładniczo. Rozwiązaniem jest stosowanie hierarchii, w których wzrost liczby zaleŜności spada do wielomianowego. Ponadto ułoŜenie bytów w hierarchie powoduje zrozumiałość kaŜdej z występujących relacji (zaleŜności). Kluczem do poprawnego zarządzania złoŜonością, a co za tym idzie zwiększenia adaptacyjności, jest zdawanie sobie sprawy z kaŜdej istniejące w systemie zaleŜności oraz rozumienie jej sensu. Tylko tak sprecyzowana zaleŜność moŜe zaistnieć w systemie, nie mając negatywnego wpływu na jego jakości. PCBMER-A uzyskuje cechę adaptacyjności poprzez budowę warstwową (layers) oraz ścisłą definicję występowania zaleŜności pomiędzy bytami, opisaną siedmioma zasadami: 1. zasada zaleŜności w dół (downward dependency principle) 2. zasada powiadamiania w góre (upward notification principle) 3. zasada komunikacji z sąsiadami (neighbor communication principle)
  • 6. 4. zasada jawnych asocjacji (explicit association principle) 5. zasada eliminacji cykli (cycle elimination principle) 6. zasada nazywania klas (class naming principle) 7. zasada pakietu znajomości (acquaintance package principle) PowyŜsze zasady określają w jaki sposób byty zawarte w warstwach mogą ze sobą współpracować, tak aby zaleŜności między nimi były zminimalizowane. Odstępstwem są zasady numer 6 i 7, które mówią odpowiednio: w jaki sposób odpowiednio nazywać klasy oraz interfejsu oraz manifestują istnienie oddzielnej warstwy, w której przechowywane są interfejsy słuŜące do bardziej złoŜonej komunikacji pomiędzy bytami, nie stosującej się do zasad 1-5. 3.2 Cechy architektoniczne SOA i PCBMER-A Zasady budowy meta-architektury PCBMER-A niemal całkowicie przekładają się na cechy architektury SOA. Modularność oraz separacja aspektów, osiągana jest przez zastosowanie oraz oddzielenie od siebie sześciu warstw: Prezentacji (Presentation), Ziaren (Bean), Kontrolera (Controller), Mediatora (Mediator), Encji (Entity) oraz Zasobów (Resource). Byty zlokalizowane w danej warstwie odpowiadają za realizację pewnego aspektu i nie mogą zostać przeniesione do innych warstw, razem stanowią nierozłączny moduł. Z separacji aspektów w PCBMER-A, wynika równieŜ luźne powiązanie, poniewaŜ byty które skupiają odpowiedzialność na jednym aspekcie cechują się wysoką kohezją, która z kolei implikuje luźne powiązanie. Meta- architektura PCBMER-A jest oparta na idei holarchii, byty w niej występujące (zarówno warstwy, klasy jak i interfejsy) są holonami, wykazującymi naturę zarówno części jak i całości. Interpretując holon jako część zakładamy, iŜ jest on analitycznie złoŜony i posiada wewnętrzne relacje, niewidoczne z zewnątrz, stąd kaŜdy holon cechuje się enkapsulacją. Holony są złoŜone i mają charakter rekursywny, architektura SOA zakłada kompozytową (composite) implementację, PCBMER-A wprowadza rozróŜnienie pomiędzy bytem złoŜonym (complex), a składanym (compound) w postaci aspektu relacji wewnętrznych. W przypadku pierwszego relacje wewnętrzne są istotne i świadczą o jego naturze, w przypadku drugiego są nieistotne. JeŜeli załoŜyć, Ŝe kompozyt jest zbliŜony znaczeniowo to bytu złoŜonego (kompozyt1 - materiał złoŜony z co najmniej dwóch składników, mający właściwości lepsze od nich lub nowe) to moŜna powiedzieć, Ŝe PCBMER-A w pełni implementuje koncepcję SOA. Ostatnią cechą jest ponowne uŜycie, jako Ŝe PCBMER-A jest meta- architekturą, oznacza to Ŝe kaŜda jej instancja (architektura) moŜe być dopasowana do odrębnego problemu, stąd uzyskuje się najwyŜszy poziom ponownego uŜycia. 1 Słownik Języka Polskiego PWN
  • 7. 4 Rozszerzenia PCBMER-A Meta-architektura PCBMER-A wywodzi się z lat doświadczeń w dziedzinie inŜynierii oprogramowania dlatego cięŜko, jest zaproponować rozszerzenie lub modyfikację, nie popartą odpowiednimi argumentami. 4.1 Programowanie aspektowe Jedną z rzeczy, która naturalnie wynikają z istoty meta-architektury PCBMER-A są aspekty. PCBMER-A minimalizując zaleŜności stara się oddzielić w jak największym stopniu byty ze sobą funkcjonalnie niezwiązane. W tym celu wykorzystuje się architekturę warstwową oraz paradygmat programowania obiektowego. Programowanie obiektowe z idei jednak, jest pionową kompozycją w procesie kompozycji oprogramowania. Kompozycję poziomą stanowi właśnie paradygmat programowania aspektowego. Programowanie aspektowe stara się maksymalnie oddzielić od siebie funkcjonalnie odrębne części oprogramowania co prowadzi do najlepszej modularności, zwiększenia kohezji, nie tylko klas ale całych modułów i w konsekwencji wzrostu adaptacyjności. W czasie projektowania wyróŜnia się odrębne aspekty dla oddzielnych jakości oprogramowania takich jak: bezpieczeństwo, niezawodność, wydajność itd. Następnie w tzw. procesie „tkania” (weaving) integruje się ze sobą poszczególne aspekty i wyznacza punkty w których ze sobą współpracują. Zalety tworzenia aspektów moŜna zauwaŜyć nawet w odniesieniu do SOA. JeŜeli potraktować kolaborację (dąŜenie elementów(ról), poprzez wykonywanie wyspecjalizowanych funkcji, do wspólnego osiągnięcia poŜądanej funkcjonalności) jako aspekt, moŜna sobie wyobrazić, Ŝe Web Service realizujący jedną funkcjonalność jest właśnie kolaboracją grupy bytów (klas, interfejsów). Idąc dalej jeŜeli grupa takich Web Service’ów w SOA jest odpowiedzialna za wspólną realizację procesu biznesowego, to moŜna powiedzieć, Ŝe programowanie aspektowe jak i idea aspektów wspiera zarówno rozumienie jak i implementację procesów biznesowych, a co się z tym wiąŜe całą SOA. Warto więc rozwaŜyć aplikację aspektów do PCBMER- A jako przynajmniej opcjonalną część architektury. 4.2 Projekt warstwy Resource Warstwa Zasobów jest odpowiedzialna za wszelką komunikację z zewnętrznymi persystantnymi źródłami danych oraz innymi systemami oferującymi/Ŝądającymi usługi. Jak w kaŜdym systemie warstwa odpowiedzialna za komunikację z bazą danych, moŜe stać się bardzo łatwo wąskim gardłem, drastycznie ograniczającym wydajność. Dlatego projekt tej warstwy jest kluczową sprawą w aspekcie wydajności, i nie tylko. Dobranie odpowiednich wzorców projektowych do serializacji danych i obsługi transakcji w kontekście persystancji jest bardzo istotną rzeczą, stąd zanim przejdzie się do implementacji tej warstwy zawsze naleŜy rozwaŜyć takie problemy jak częstotliwość i rodzaj zapytań, rodzaj medium persystancji (baza danych, pliki,
  • 8. hurtownia danych), architektura medium persystancji, typ problemu (baza danych genotypów człowieka, baza danych wypoŜyczalni samochodów). Drugim powodem, dla którego warstwa Zasobów powinna być dobrze zaprojektowana, jest koncepcja PCBMER-A, która mówi, Ŝe warstwy na niŜszym poziomie powinny być bardziej stabilne niŜ warstwy na wyŜszym poziomie. Warstwa Resource znajduje się na samym dole hierarchii, stąd powinna mieć największą stabilność (wszystkie wyŜsze warstwy są od niej pośrednio zaleŜne). W ogólności moŜna powiedzieć, Ŝe jeŜeli współczynnik stabilności (Instability) zdefiniujemy jako: . (1) gdzie Ca (afferent coupling) to liczba zaleŜności przychodzących a Ce (efferent coupling) liczba zaleŜności wychodzących, to IResource → 0 . (2) 4.3 Podział warstwy Resource Warstwa Zasobów stanowi podstawę PCBMER-A, jednak z punktu widzenia funkcjonalności, skupia za duŜo odpowiedzialności. Propozycja modyfikacji polega na podziale warstwy Resource na dwie (róŜne w zaleŜności od sytuacji): Warstwa pierwotna: Po podziale: Opis: External Resource Zew. źródła danych + komunikacja Resource Internal Resource Wewnętrzne źródła danych Communication Komunikacja Resource Persistance Wewnętrze i zewnętrzne źródła danych Pierwszy podział dzieli warstwę Resource na External Resource i Internal Resource. Warstwa Zasobów Zewnętrznych jest odpowiedzialna za wszelką komunikację (Web Service’y, RMI, Sockets itp.) oraz zewnętrzne persystantne źródła danych, tzn. takie z system korzysta ale nie moŜe nimi zarządzać. Warstwa Wewnętrznych Zasobów odpowiada za wewnętrzne persystantne źródła danych tzn. takie, którymi moŜe zarządzać i ma do nich pełne prawa. Drugi podział dzieli warstwę Resource na Communication i Persistance. Warstwa komunikacji odpowiada tylko i wyłącznie za wszelką komunikację (Web Service’y, RMI, Sockets, Remote APIs, Message Processing itp.), natomiast warstwa persystancji za persystantne źródła danych, zarówno wewnętrzne jak i zewnętrzne. PowyŜszy podział nie tylko zwiększa stabilność architektury, ale równieŜ zmniejsza ryzyko ze strony systemów zewnętrznych i wprowadza dekompozycję odpowiedzialności na mniejsze jednostki.
  • 9. 4.4 PCBMER-A i metodyki zwinne Ostatnią propozycją jest integracja meta-architektury PCBMER-A z rodziną metodyk zwinnych. Integracja, tak samo jak w przypadku SOA, odbywa się na wspólnej koncepcji zapewnienia systemowi adaptacyjności. Metodyki zwinne z natury są przygotowane na projekty o wysokim ryzyku i bardzo zmiennych wymaganiach, stąd uŜycie PCBMER-A jako wzorca niezwykle elastycznego idealnie pasuje do tego rozwiązania. Sprzeczność pojawia się w momencie projektowania architektonicznego. Metodyki zwinne nie przewidują takiego projektowania, jednak jak najbardziej korzystają z gotowych rozwiązań do ponownego uŜycia (wzorców projektowych) dlatego w tym kontekście PCBMER-A moŜna potraktować jako wzorzec projektowy gotowy do adaptacji i implementacji, szczególnie nadający się do zwinnych projektów webowych o wciąŜ modyfikowanych i dodawanych funkcjonalnościach (beta non-stop). Bibliografia 1. Booch, g. (2007): The Economics of Architecture-First, IEEE Software, Sept/Oct, pp.18- 20 2. Maciaszek, L.A. (2007): Modeling and Engineering Adaptive Complex Systems, Challenges in Conceptual Modelling. Tutorials, Posters, Panels and Industrial Contributions to the 26th International Conference on Conceptual Modeling - ER 2007, CRPIT No. 83, ed. J. Grundy, S. Hartmann, L. Laender, L. Maciaszek, J. Roddick, ACS, pp.31-38 3. Maciaszek, L.A. (2008): Analiza Struktur ZaleŜności w Zarządzaniu Intencją Architektoniczną Systemu (Dependency Structure Analysis for Managing Architectural Intent), InŜynieria Oprogramowania – Od Teorii do Praktyki, ed. Z. Huzar, Z. Mazur, Wydawnictwa Komunikacji i Łączności, Warszawa, pp.13-26. (invited paper) 4. Maciaszek, L.A. (2008): Architectural Design and Software Engineering of Adaptive Complex Systems, series of lectures at Wroclaw University of Technology, Wrocław 2008