• Nie Znaleziono Wyników

Tworzenie architektury

N/A
N/A
Protected

Academic year: 2021

Share "Tworzenie architektury"

Copied!
52
0
0

Pełen tekst

(1)

Tworzenie architektury

Halina Tańska

(2)

Architektura

Architektura [gr.] sztuka projektowania i wznoszenia budowli mających oprócz wartości użytkowych także artystyczne. (…) Dzieło architektury winno odpowiadać zamierzonej funkcji, technice, wymaganiom ekonomicznym i estetycznym. (…) ( http://encyklopedia.pwn.pl/)

Architekt musi stworzyć pewien projekt, który ma określone wartości użytkowe i artystyczne. Projekt powinien zapewnić spełnienie wymagań funkcjonalnych,

nałożonych przez zamawiających. Projekt architektoniczny powinien być zgodny ze sztuką budowlaną (techniką) oraz zapewniał realizowalność w sensie

ekonomicznym. Istotnym elementem architektury są walory estetyczne (jakościowe) obiektu, który na jej podstawie powstanie.

Architekt musi zaprojektować budynek, który zadowoli zamawiającego i jednocześnie będzie możliwy do zrealizowania przez wykonawców. Projekt architektoniczny powinien zapewnić wykonawcom (majstrom, murarzom,

kierownikowi budowy) wystarczające informacje, aby byli w stanie na jej podstawie zbudować budynek. Projekt architektoniczny jest na tyle ważnym elementem procesu budowlanego, że nikt nie wyobraża sobie zbudowania choćby najmniejszego domu bez niego. Posiadanie projektu architektonicznego jest wymogiem niezbędnym do uzyskania pozwolenia na budowę (budynek stworzony bez planów może stanowić poważne zagrożenie dla jego użytkowników).

Efektem prac architekta jest zestaw rysunków pokazujących strukturę budynku na różnym poziomie szczegółowości.

Architektura pozwala przekazać wykonawcom wytyczne dotyczące sposobu wykonania ich dzieła. Żaden wykonawca nie może sobie pozwolić na

rozpoczęcie prac nad swoim dziełem bez planów architektonicznych.

(3)

Po co modelować architekturę?

• Modelowanie architektury systemów i oprogramowania pomaga:

– Zrozumieć zasady konstrukcji i tworzenia systemu

– Poznanie zasad funkcjonowania architektury i zależności między elementami systemu

znacząco ułatwia życie wszystkim uczestnikom

procesu produkcji oprogramowania, a przy tym

pozwala tworzyć lepsze systemy.

(4)

Graficzne modelowanie architektury

• Graficzne modelowanie architektury zapewnia projektantom bezpośredni wgląd w działanie systemu, jeszcze przed rozpoczęciem jego właściwej budowy.

• Pozwala nie tylko zrozumieć plan, ale również wspólnie omawiać projekty różnych jego części.

• Istotą jest także analiza oddziaływania

wzajemnie na siebie różnych elementów

tworzonego systemu.

(5)

Architektura

• Architektura komputerowa to struktura komputera wyrażająca się doborem oraz sposobem łączenia jego układów i urządzeń składowych.

• Architektura ramowa to wyrażony graficznie model, który strukturyzuje uznane za istotne elementy

danego systemu oryginalnego wraz z ich

powiązaniami, przy czym dokonuje się to na wysokim poziomie abstrakcji według obranych kryteriów i przy użyciu wybranego języka

oprogramowania.

(6)

Architektura - istota

• Architektura to kolekcja zachowań oraz zbiór opisów, jak jedne oddziałują na inne. Diagramy blokowe opisują tylko strukturę.

Kompletnie ignorują zachowanie.

• Pełny opis architektury musi zawierać wszystkie założenia, które każdy podsystem lub komponent może poczynić wobec swoich sąsiadów. Chodzi tu m.in. o zakres odpowiedzialności, zdolności do obsługi błędów, użycie zasobów współdzielonych czy charakterystyki wydajnościowe.

• Ponieważ w każdej aplikacji istnieje wiele obiektów,

potrzebujemy wielu różnych punktów widzenia na jej części, które skrywają większość szczegółów. Wewnętrzna

implementacja powierzonych grupie obiektów zakresów

odpowiedzialności nie powinna pojawiać się w polu widzenia, kiedy rozważamy jej architekturę. Na tym poziomie wszystkich informacji musi dostarczyć interfejs.

(7)

Architektura - istota

• Każdy osobny opis architektury dostarcza jedynie części wiedzy na temat tego oprogramowania.

Przykładowo organizacja funkcji systemu nie mówi nic na temat, jak zostały rozdzielone poszczególne

moduły pomiędzy programistów, którzy mają je

zaimplementować. Charakterystyki synchronizacji procesów wyraźnie pomijają opis rozmieszczenia komponentów na różnych maszynach w sieci.

• Ponieważ aplikacja musi spełniać bardzo wiele różnych wymagań, należy przyjrzeć się naszej

architekturze z bardzo wielu stron, by upewnić się, że

rzeczywiście jest z nimi zgodna.

(8)

Architektura - istota

• Od aplikacji zależy, który punkt widzenia na jej projekt dostarczy nam najwięcej potrzebnych informacji. Ale wiele z nich jest bardzo cenne m.in. diagramy

konceptualne, przepływy sterowania, diagramy komponentów, podsystemów, obiektów i

interakcji. Ważne jest by zdefiniować i udokumentować wzorce współpracy.

• Nie wystarczy tylko opisanie interfejsów obiektów czy komponentów, ponieważ nie dowiemy się jak one

współpracują. Przykładowo opisanie interakcji dwóch obiektów jako kontraktu klient-serwer jasno określa role obu stron oraz ułatwia lepsze zrozumienie

projektu.

(9)

Architektura oprogramowania

• Według Shawa i Garlana (1996) architektura oprogramowania obejmuje:

– opis elementów, z których są zbudowane systemy,

interakcje między tymi elementami, wzorce, które kierują ich kompozycją, oraz ograniczenia tych wzorców

• Według Kruchtena (1999), architektury używamy po to, aby:

– zrozumieć, co system robi,

– zrozumieć, jak system pracuje,

– móc myśleć i pracować na podstawie części systemu, – rozszerzać system,

– ponownie użyć części systemu, aby budować inny system

(10)

Architektura oprogramowania

• Architektura staje się narzędziem, dzięki któremu są podejmowane decyzje dotyczące tego, jaki system będzie budowany i w jaki sposób.

• Istnieje niewielki zbiór najczęściej występujących potrzeb przeglądania systemu.

• Perspektywy, które najlepiej ilustrują te potrzeby omówił Philippe Kruchten (1995) i nazwał je

perspektywy 4 + 1

(11)

Pięć (4+1) perspektyw architektury systemu

Perspektywy –

punkty widzenia różnych grup użytkowników

Perspektywa przypadków

użycia

Perspektywa wdrożeniowa Perspektywa implementacyjna

Perspektywa procesowa Perspektywa

logiczna

Programista

Zarządzenie konfiguracją Użytkownik końcowy

Funkcjonalność

Integratorzy systemu

Efektywność Skalowalność, Przepustowość

Inżynierowie systemu Opracowanie układu systemu Dostarczenie

Rozmieszczenie

Instalacja Projektanci/Osoby

wykonujące testy Zachowanie

(12)

Pięć (4+1) perspektyw architektury systemu

• W perspektywie logicznej jest uwzględniona funkcjonalność systemu. Taki model projektu reprezentuje logiczną strukturę systemu w

kategoriach podsystemów i klas, które z kolei są elementami, dostarczającymi użytkownikowi

funkcjonalności.

• W perspektywie implementacyjnej są opisane

składniki i części związane z implementacją systemu:

kod źródłowy, biblioteki, klasy obiektów itd. Ta

perspektywa pokazuje statystyczność tych części, a

nie ich wzajemne oddziaływanie.

(13)

• Perspektywa procesowa, bardzo użyteczna do opisu operacji systemu, jest także ważna dla

systemu, w którym są wykonywane zadania

równoległe. Należy używać jej do badania zagadnień przepustowości oraz innych zagadnień

efektywnościowych, które użytkownik określa w wymaganiach niefunkcjonalnych.

• W perspektywie wdrożeniowej elementy

implementacji są przydzielane wspomagającej

infrastrukturze, takiej jak systemy operacyjne oraz platformy obliczeniowe.

Pięć (4+1) perspektyw architektury systemu

(14)

Perspektywa przypadków użycia

Perspektywa wdrożeniowa

Perspektywa implementacyjna

Perspektywa procesowa

Perspektywa logiczna

Pięć (4+1) perspektyw architektury systemu

Wewnątrz architektury perspektywa przypadków użycia, jako określająca wymagania, odgrywa szczególną rolę w

modelu architektonicznym. W tej perspektywie są prezentowane kluczowe przypadki użycia z modelu przypadków użycia i przez to ma ona wpływ na projekt systemu.

Pozwala powiązać różne perspektywy architektury.

(15)

Architektura oprogramowania

• Jest modelem pokazującym strukturę i dynamikę działania całego systemu oprogramowania.

• Podstawą działalności architekta jest podejmowanie decyzji technicznych i przekazywanie ich

wykonawcom systemu w formie modelu. Model powinien być czytelny dla wykonawców.

• Podstawowym zadaniem architekta jest przekształcenie modelu wymagań zamawiającego w model

architektoniczny systemu. Bardzo istotne jest zapisanie tego modelu w notacji znanej wszystkim wykonawcom

systemu. Oni odpowiadają za realizację pomysłów architekta. Ta notacja powinna być spójna z notacją

używaną później do zaimplementowania systemu, a także jednoznacznie wynikać z notacji używanej do zapisania wymagań.

(16)

Ścieżka od wymagań do kodu

• Wszystkie artefakty (produkty) procesu inżynierii oprogramowania powinny tworzyć jednoznaczną ścieżkę.

• Efekt: jednoznaczne powiązanie wymagań użytkownika z kodem, który je realizuje.

Wymagania funkcjonalne

Model dynamiczny

systemu

Model statyczny

Model dynamiczny podsystemów

Model statyczny podsystemów

Kod

Analityk Użytkownik

Programista Architekt Projektant

(17)

Architektura oprogramowania

• Poprzez architekturę rozumie się sposób (styl) konstruowania statycznej struktury systemu informatycznego i samą jego strukturę.

• Architektura systemu informatycznego, czyli to, jak jest on zbudowany, może być rozpatrywana na różnych

poziomach szczegółowości i przy uwzględnieniu różnych jej aspektów.

• Architektura sprzętowa pokazuje na jakim sprzęcie i w jakiej konfiguracji jest (lub będzie) zaimplementowany system.

• Architektura konceptualna opisuje system w postaci warstw reprezentujących różne poziomy abstrakcji w postrzeganiu go przez zewnętrznych obserwatorów.

• Architektura logiczna przedstawia podział systemu na logicznie wydzielone części, realizujące odpowiednie funkcje.

(18)

Zalecenia dotyczące budowy architektury

• Architektura powinna być tworem pojedynczego architekta lub niewielkiego zespołu architektów z ustalonym przywódcą.

• Architekt powinien dysponować wymaganiami funkcjonalnymi wobec systemu, a także wyraźnie określonym wykazem

oczekiwanych od systemu atrybutów jakościowych (tj.

bezpieczeństwo lub modyfikowalność) z przypisanymi priorytetami.

• Architektura powinna być dobrze udokumentowana z

uwzględnieniem co najmniej jednej perspektywy statycznej i jednej, którą wszyscy udziałowcy zrozumieją przy minimum wysiłku.

• Architektura powinna być przeanalizowana pod kątem stosowanych miar jakościowych (tj. maksymalna

przepustowość) oraz formalnie oceniona pod kątem atrybutów jakościowych.

(19)

Architektura trójwarstwowa

• Twórcy SI starają się tak zaprojektować architekturę, aby odseparować silnie zależne od technologii i

narzędzi programistycznych interfejs użytkownika i bazę danych od logicznych i pojęciowych,

odnoszących się bezpośrednio do rozwiązywanego problemu, zagadnień.

• Architektura trójwarstwowa, której standard został wprowadzony w 1978 przez komitet ANSI/SPARC, proponuje podział systemu na trzy poziomy:

– jego fizyczną implementację (tzw. „schemat wewnętrzny”), – abstrakcyjny model wycinka rzeczywistości (biznesu, firmy)

odzwierciedlanej przez system (tzw. „schemat pojęciowy”

– oraz poziom zewnętrzny, reprezentujący sposoby, w jakie system jest postrzegany z zewnątrz (tzw. „schematy

zewnętrzne”).

(20)

Trójwarstwowa architektura systemu informatycznego

Aplikacja 1 Aplikacja 2 Aplikacja N

Schemat zewnętrzny 1

Schemat zewnętrzny 2

Schemat zewnętrzny N

Schemat pojęciowy

Schemat wewnętrzny 1

Schemat wewnętrzny M

(21)

Architektura systemów informatycznych w przedsiębiorstwach

Aplikacja użytkownika

Warstwa biznesowa

Baza danych

Uwaga: W przypadku architektury SI stosowanych w przedsiębiorstwach te trzy warstwy – schemat wewnętrzny, konceptualny i zewnętrzny – interpretowane są jako: odpowiednio – warstwa bazy danych, warstwa reguł i strategii biznesowych (warstwa biznesowa systemu) oraz warstwa aplikacji ( a właściwie jej interfejsu)

(22)

Architektura oprogramowania

• Projekt architektoniczny systemu oprogramowania jest

wyartykułowanym zbiorem decyzji podjętych przez architekta.

• Decyzje podejmowane są na podstawie wymagań

sformułowanych przez zamawiającego oraz na podstawie wiedzy o stanie sztuki (znajomości technologii wytwarzania oprogramowania).

• W projekcie architektonicznym pokazana jest struktura i dynamika systemu, który ma być zrealizowany.

• Projekt architektoniczny uwzględnia uwarunkowania ekonomiczne i technologiczne, dając podstawy do ewentualnej zmiany lub rozszerzenia wymagań

zamawiającego.

• Projekt architektoniczny jest zapisany w języku graficznym zrozumiałym dla wykonawców (programistów i projektantów systemu oprogramowania).

(23)

Notacja UML

• Język UML dostarcza kilku notacji, które są przydatne podczas tworzenia modeli architektonicznych.

• Najpowszechniej używane są diagramy komponentów i diagramy wdrożenia. Służą do wyrażenia struktury logicznej i fizycznej systemu.

• Na diagramach komponentów można przedstawić jednostki logiczne (komponenty) oraz punkty, poprzez które komponenty się ze sobą porozumiewają (interfejsy i porty).

• Diagramy wdrożenia służą do przedstawienia jednostek fizycznych systemu. Struktura fizyczna podzielona jest na węzły reprezentujące np. rzeczywiste maszyny (komputery) w realizowanym systemie. Na tych maszynach instalowane są odpowiednie pliki będące fizycznymi

elementami oprogramowania. Węzły na diagramach komponentów są

połączone odpowiednimi połączeniami wskazującymi na strukturę fizycznej sieci lokalnej lub rozległej.

• Do wyrażenia struktury systemu i jego składników często przydają się diagramy składowych i diagramy klas. Na diagramach możemy pokazać dekompozycję większych elementów (np. komponentów) na elementy

składowe.

• Dynamikę systemu architekt może zaprezentować za pomocą diagramów sekwencji. Na takich diagramach pokazujemy działanie systemu jako ciąg komunikatów wymienianych między jego elementami

(komponentami, interfejsami itp.). W wielu przypadkach mogą być również pomocne diagramy opisu interakcji.

(24)

Diagramy - uwarunkowania

• Diagramy tworzone przez architekta są bardziej

techniczne – przeznaczone do czytania i stosowania przez wykwalifikowanych projektantów i programistów.

• Elementy opisu używane na diagramach

architektonicznych wynikają bezpośrednio z zastosowanej technologii oprogramowania. Zawierają niektóre

rozwiązania czytelne jedynie dla osób znających te technologie.

• Wszystkie elementy modelu architektonicznego

powinny być ściśle powiązane z elementami modelu wymagań. Jest to warunek niezbędny do zapewnienia zgodności budowanego systemu z wymaganiami

zamawiającego.

(25)

Komponenty

• Podział na komponenty jest bardzo ważną decyzją architektoniczną.

Powinna być ona podjęta na podstawie dobrze określonych przesłanek.

• Pierwszą przesłanką jest konieczność zapewnienia, aby komponent realizował dobrze zasadę abstrakcji. Oznacza to, że komponent

powinien grupować w sobie elementy realizujące pewien zwarty podsystem. Zwartość (cohesion) komponentów jest bardzo istotną cechą określającą jakość architektury. Dobry komponent powinien odpowiadać jakiemuś zbiorowi ściśle związanych ze sobą pojęć (klas) ze środowiska lub elementów wykonawczych (klas),

realizujących pewne ściśle związane ze sobą przypadki użycia.

• Ze zwartością komponentów wiąże się druga przesłanka podziału na komponenty – realizacja zasady zamykania informacji. Oznacza ona, że podsystem realizowany przez komponent powinien być ukryty dla

„świata zewnętrznego”. Jednocześnie komunikacja z pozostałymi

komponentami powinna się odbywać przez jak najwęższy styk. W ten sposób więzy (coupling) między komponentami są stosunkowo słabe. Większość komunikacji odbywa się wewnątrz komponentów.

Komunikacja między komponentami odbywa się tylko wtedy, kiedy jest to niezbędne.

(26)

Komponenty cd

• Dobra architektura definiuje podział systemu na komponenty o wysokiej zwartości mającej jednocześnie słabe więzy z innymi komponentami. Komponenty wymieniają między sobą dane tylko w kluczowych momentach działania poszczególnych przypadków

użycia systemu. Cała „brudna robota” jest wykonywana wewnątrz poszczególnych komponentów. Jest ona jednak ukryta dla

komponentów pozostałych.

• Komponenty nawzajem oczekują od siebie jedynie efektów swojej pracy. Każdy komponent ma zwartą strukturę wewnętrznych

elementów (np. „mniejszych komponentów lub klas). Wykonując jakieś czynności, składniki komponentu mogą poprosić o „pomoc”

inne komponenty. Mogą to zrobić jedynie „drogą oficjalną”, zwracając się do drugiego komponentu. Nie mogą natomiast „pójść na skróty” i poprosić o pomoc jakiś składnik drugiego komponentu.

• Komponent po otrzymaniu „oficjalnej prośby” od innego komponentu, zleca wykonanie zadania swoim elementom składowym. Elementy te następnie wykonują jakąś, często bardzo skomplikowaną, czynność związaną z przetwarzaniem danych.

• Na koniec komponent zwraca komponentowi, który go o to prosił, rezultat przetwarzania.

(27)

Zalety podziału systemu na komponenty

Poprawia zrozumienie konstrukcji systemu. Realizacja zasad abstrakcji i zamykania informacji umożliwia koncentrację na istotnych aspektach

systemu.

Ułatwia pracę grupową, gdyż umożliwia podział pracy. Grupy realizujące swoje komponenty muszą dokładnie znać ich strukturę, ale poza tym

wystarcza im znajomość specyfikacji powiązań z innymi komponentami.

Zasada elastyczności systemu. Architektura podzielona na dobrze

wydzielone komponenty może być łatwo rozszerzana o nowe składniki, a także łatwiej poddaje się zmianom. Tego typu architektury wykazują dużą odporność na zmiany konfiguracji sprzętowej systemu – łatwo jest

przydzielać komponenty do różnych maszyn fizycznych.

Zapobiega „makaronizmom” w kodzie. Do innych komponentów trzeba się zwracać jedynie drogą oficjalną – poprzez powiązania między

komponentami. Jeśli potrzebne są dodatkowe powiązania – architekt dokonuje analizy zmian i zmienia odpowiednio architekturę.

Ułatwia testowanie ze względu na wyraźnie określone źródła błędów (komponenty). Należy zwrócić uwagę, że liczba źródeł błędów jest znacznie ograniczona. W szczególności eliminowane są bardzo trudne do wykrycia błędy wynikające z ukrytych zależności między odległymi fragmentami kodu systemu.

Ułatwia ponowne wykorzystanie (reuse) kodu. Dobrze zaprojektowane (spójne i zamykające informację) i dobrze napisane komponenty są

doskonałymi jednostkami możliwymi do ponownego użycia.

(28)

Struktura – komponenty, interfejsy, klasy, węzły

• Fundamentalną decyzją architekta jest podział systemu na logiczne jednostki funkcjonalne. Stanowią one podstawę dalszych prac nad architekturą.

• Logiczne jednostki funkcjonalne, na jakie podzielimy system nazywamy komponentami. Komponent reprezentuje pewną

„skrzynkę” zawierającą w sobie elementy realizujące pewną funkcjonalność. Ma cechy pakietu, gdyż zamyka w sobie inne elementy.

• Dla komponentu określamy pewien sposób zachowania.

Komponent potrafi się komunikować z innymi komponentami i dostarczać im usług. Komponent jest tak naprawdę

rodzajem klasy, tylko na wyższym poziomie abstrakcji.

(29)

Komponenty cd

• W języku UML komponenty traktowane są podobnie jak klasy – są one pewnym specjalnym rodzajem klas.

• Podobnie jak klasa, komponent może mieć atrybuty i operacje.

• Podstawową cechą komponentów jest udostępnianie oraz

korzystanie z usług innych komponentów. Funkcjonalność systemu podzielonego na komponenty jest realizowana poprzez współpracę wielu komponentów. Oznacza to, że komponenty są od siebie

nawzajem zależne. Architekt, tworząc model architektury na poziomie komponentów, powinien pokazać nie tylko komponenty, ale również odpowiednie relacje (zależności).

• Dobrą praktyką jest stosowanie rozwiązań sprawdzonych już we wcześniejszych projektach.

• Szkielet architektoniczny (wzorzec architektoniczny) jest pewnego rodzaju szablonem, który opisuje strukturę systemu opartego na wybranej technologii czy też wybranej konfiguracji sprzętowej systemu. Może się składać z jednego lub kilku diagramów komponentów.

(30)

Proces projektowania architektonicznego

• Proces projektowania architektonicznego polega na ustaleniu podstawowego zrębu systemu.

• Podział architektoniczny jest niezbędny do strukturalizacji i porządkowania specyfikacji.

• Model architektoniczny jest zwykle punktem początkowym do specyfikowania rozmaitych części systemu.

• Obejmuje identyfikację najważniejszych

komponentów systemu i komunikacji między nimi.

(31)

Ścieżka od wymagań do kodu

• Wszystkie artefakty (produkty) procesu inżynierii oprogramowania powinny tworzyć jednoznaczną ścieżkę.

• Efekt: jednoznaczne powiązanie wymagań użytkownika z kodem, który je realizuje.

Wymagania funkcjonalne

Model dynamiczny

systemu

Model statyczny

Model dynamiczny podsystemów

Model statyczny podsystemów

Kod

Analityk Użytkownik

Programista Architekt Projektant

(32)

Trzy zalety jawnego projektowania

• Komunikacja z uczestnikami

– Architektura jest prezentacją systemu na wysokim poziomie, która może służyć za podstawę dyskusji w gronie różnych uczestników.

• Analiza systemu

– Ujawnienie architektury systemu we wczesnej fazie budowania systemu daje możliwość przeprowadzenia pewnej analizy.

Decyzje projektowania architektonicznego mają znaczący wpływ na to, czy system może spełnić krytyczne wymagania dotyczące efektywności, niezawodności i zdatności do pielęgnacji, czy nie.

• Użycie wielokrotne w wielkiej skali

– Architektura systemu jest zwartym i łatwym do opanowania opisem organizacji systemu i współpracy jego komponentów.

Architekturę można przekazywać innym systemom, które mają podobne wymagania.

(33)

Czynności procesy projektowania architektonicznego

• Strukturalizacja systemu

– System jest dzielony na kilka podstawowych

podsystemów, przy czym podsystem jest niezależną jednostką oprogramowania. Identyfikuje się tu

komunikację między podsystemami.

• Modelowanie sterowania

– Określa się ogólny model związków sterowania między częściami systemu.

• Podział na moduły

– Każdy zidentyfikowany podsystem jest dzielony na moduły. Architekt musi wskazać typy modułów i ich połączenia.

(34)

Podsystem a moduł

• Podsystem jest systemem na swoich własnych prawach; jego usługi nie zależą od usług oferowanych przez inne podsystemy. Podsystemy składają się z modułów i mają interfejsy używane do komunikacji z innymi podsystemami.

• Moduł jest zwykle komponentem systemu, który oferuje co najmniej jedną usługę innym modułom.

Korzysta z usług innych modułów. Zwykle nie jest

traktowany jako niezależny system. Moduły są zwykle

zbudowane z kilku innych, prostszych komponentów

systemu.

(35)

Dokumentacja

• Wynikiem procesu projektowania architektonicznego jest dokumentacja, która składa się z kilku graficznych przedstawień modeli systemu oraz tekstu opisowego.

• Ta dokumentacja powinna zawierać opis systemu jako struktury złożonej z podsystemów i każdego podsystemu jako struktury złożonej z modułów .

• Różne graficzne modele systemu przedstawiają

rozmaite perspektywy architektury.

(36)

Opracowanie modeli architektonicznych obejmuje

• Statyczny model strukturalny obejmuje komponenty lub podsystemy, które można zbudować jako niezależne jednostki.

• Model dynamiczny procesu, w którym przedstawia się podział systemu na procesy czasu wykonania.

• Model interfejsów, w którym definiuje się usługi oferowane przez każdy podsystem za pośrednictwem jego interfejsu publicznego.

• Model związków, który obejmuje związki, takie jak

przepływ danych między podsystemami.

(37)

Własności architektury

• Efektywność

– Krytyczne operacje w niewielkiej liczbie podsystemów.

• Zabezpieczenie

– Należy zastosować w architekturze strukturę warstwową.

• Bezpieczeństwo

– Operacje dotyczące bezpieczeństwa powinny znaleźć się w jednym podsystemie lub w niewielkiej liczbie podsystemów.

• Dostępność

– Należy uwzględnić w architekturze komponenty nadmiarowe.

• Zdatność do pielęgnacji

– Architektura systemu powinna składać się z

drobnoziarnistych, samodzielnych komponentów.

(38)

Model warstwowy

• Znaczna część współczesnych wzorców architektury oparta jest na modelu warstwowym. W modelu tym system dzielony jest na klika warstw

(najczęściej trzy lub cztery). Warstwy oznaczają fragmenty systemu o jednakowej „odległości” od użytkownika.

• Warstwa najwyższa jest warstwą styku z użytkownikiem. Umieszczone są w niej komponenty odpowiedzialne za bezpośrednie porozumiewanie się z użytkownikiem. Znajduje się tu zatem menu, okna dialogowe, okna komunikatów itp.

• W następnej warstwie (warstwa aplikacji) znajdują się komponenty

odpowiedzialne za logikę działania aplikacji. To one powinny wiedzieć w jaki sposób ma się zachować system we współpracy z użytkownikiem.

Realizują wszystkie scenariusze przypadków użycia systemu.

• Trzecia warstwa szkieletu zawiera logikę środowiska. W tej warstwie umieszczane są komponent odpowiadające pojęciom środowiska. Tutaj wykonywane są przez system czynności związane z realizacją procesów biznesowych czy też operacje definiowane przez analityków w modelu klas na poziomie wymagań.

• Najniższa warstwa jest warstwą przechowywania danych. W tej warstwie wszystkie dane, które są przetwarzane w warstwach wyższych,

umieszczane są w sposób trwały. Najczęściej na tym poziomie znajdują się komponenty bazy danych.

(39)

Architektura czterowarstwowa

Warstwa styku z użytkownikiem

Warstwa logiki aplikacji

Warstwa logiki środowiska

Warstwa przechowywania danych

użytkownik

Warstwy na diagramie są od siebie zależne – komunikują się ze sobą. Zasadą jest, że komunikacja następuje tylko między warstwami sąsiadującymi. Przykładowo warstwa styku z użytkownikiem nigdy nie komunikuje się bezpośrednio z warstwą przechowywania danych. Bardzo ważny w szkielecie jest również kierunek komunikacji. Warstwa logiki środowiska nie jest np. zależna i nie uruchamia komunikacji z warstwą logiki aplikacji, natomiast istnieje zależność odwrotna. Wynika to z tego, że czynności na poziomie logiki środowiska nie wymagają uruchamiania jakiejś

funkcjonalności na poziomie aplikacji. Warstwa logiki aplikacji musi się natomiast komunikować zarówno z logiką środowiska, jak i ze stykiem z użytkownikiem.

(40)

Metodyka The SELECT – architektura czterowarstwowa

Interfejs użytkownika

Obiekty lokalne

Obiekty korporacyjne

Bazy danych

Bazy danych

Warstwa interfejs użytkownika składa się z obiektów interfejsu – okien, menu, przycisków, czytników kart itp. Wydzielony on został w osobną warstwę ze względu na dużą zależność od używanej technologii, bibliotek i środowiska. Z tych samych powodów

wydzielona została też warstwa bazy danych.

Pozostałe warstwy, tworzące logiczną strukturę systemu, to obiekty lokalne i obiekty korporacyjne.

Lokalne obiekty biznesowe – abstrakcyjne rzeczy, ludzi i pojęć z dziedziny problemu (biznesu),

występujących lokalnie w danym systemie.

Korporacyjne obiekty biznesowe – obiekty wspólne dla kilku projektów, występujące w wielu systemach.

Istnieją one niezależnie od pojedynczego systemu.

Lokalne obiekty biznesowe są odzwierciedleniem wymagań oraz reguł biznesowych dotyczących konkretnego systemu, wobec czego muszą być izolowane od zależnego od technologii interfejsu.

Obiekty takie są specyficzne dla danego wycinka działalności organizacji. Obiekty lokalne występują tylko w granicach jednego systemu. Mogą być one zarówno obiektami aplikacji, jak i obiektami

sterującymi. Obiekty tej warstwy często określa się mianem obiektów pojęciowych, ponieważ reprezentują pojęcia dotyczące kształtu (architektury) pojedynczych procesów biznesowych.

(41)

Lokalne obiekty biznesowe

Lokalne obiekty biznesowe są odzwierciedleniem wymagań oraz reguł biznesowych dotyczących konkretnego

systemu, wobec czego muszą być izolowane od zależnego od technologii interfejsu. Obiekty takie są specyficzne dla danego wycinka działalności organizacji, np. gdy jeden SI służy do

obsługi kont, a drugi obsługuje hipoteki, to dla pierwszego lokalnym obiektem biznesowym będzie rachunek, a dla

drugiego księga wieczysta. Obiekty lokalne występują tylko w granicach jednego systemu. Mogą być one zarówno obiektami aplikacji, jak i obiektami sterującymi. Obiekty tej warstwy

często określa się mianem obiektów pojęciowych, ponieważ reprezentują pojęcia dotyczące kształtu (architektury)

pojedynczych procesów biznesowych. Bardzo często obiekty te wymagają przechowywania pewnych informacji w fizycznej bazie danych. Lokalna baza danych będzie wobec tego

częścią tej warstwy.

(42)

Korporacyjne obiekty biznesowe

Korporacyjne obiekty biznesowe zawierają funkcjonalność i dane kluczowe dla wielu systemów oraz projektów w

ramach firmy (organizacji) (są one wykorzystywane przez kilka niezależnych systemów, działających w środowisku

firmy). Przykładem obiektu korporacyjnego może być klient, występujący zarówno w systemie obsługi rachunków, jak i w systemie hipotetycznym.

Z punktu widzenia procesów biznesowych, obiekty korporacyjne występują w ramach kilku procesów,

podczas gdy lokalne obiekty biznesowe są używane tylko w granicach pojedynczych procesów. Obiekty tej warstwy również określa się mianem obiektów pojęciowych, gdyż

reprezentują pojęcia dotyczące kształtu (architektury) wspólnych części procesów biznesowych. Korporacyjne

obiekty biznesowe mogą być zarówno obiektami aplikacji, jak i obiektami sterującymi.

(43)

Baza danych

Czwarta warstwa systemu to baza danych,

przechowująca niezbędne dla systemu dane.

Ponieważ najczęściej przechowywania będą

wymagały same obiekty, najlepszym rozwiązaniem jest posiadanie obiektowej bazy danych,

umożliwiającej bezpośrednie i automatyczne

odwzorowanie obiektów systemu (zarówno

korporacyjnych, jak i lokalnych) w tę bazę. W

przypadku baz relacyjnych wymagane jest

natomiast przeprowadzenie odpowiedniego

przekształcenia zbioru obiektów w tabele

relacyjne.

(44)

Zalety architektury czterowarstwowej

Podział architektury na cztery warstwy powoduje, że chroni się

biznesową strukturę systemu, reprezentowaną przez obiekty lokalne i korporacyjne, przed częstymi zmianami jakie zachodzą w interfejsie z użytkownikiem oraz w ściśle związanej z technologią warstwie bazy danych. Podział obiektów na korporacyjne i lokalne umożliwia lepsze

wykorzystanie obiektów w różnych systemach. Posiadanie

dopracowanego zbioru obiektów korporacyjnych znacznie przyspiesza budowanie nowych systemów, gdyż mogą być one „składane” z

istniejących już obiektów.

W trakcie projektowania i implementacji, stopień uniezależnienia się od zmian interfejsu zostanie zwiększony poprzez podział warstwy obiektów lokalnych oraz korporacyjnych na obiekty aplikacji, reprezentujące bierne elementy architektury, mające najczęściej odzwierciedlenie w bazie

danych, i obiekty sterujące, zarządzające zadaniami systemu i

pośredniczące w komunikacji między obiektami interfejsu a obiektami aplikacji. Spowoduje to, że wiedza o logicznej strukturze systemu będzie skupiona w obiektach sterujących, natomiast obiekty interfejsu będą

klientami tychże, nie wiedząc nic o strukturze logicznej systemu poniżej nich.

(45)

class Domain Model

Object1 Object2 Object3

Object4

Object5

Object6 Object7 Object8 Object9

Rozdzielenie obiektów interfejsu od obiektów aplikacji (przechowujących

Obiekty interfejsu

Obiekty sterujące

Obiekty aplikacji

(46)

Technologia klient/serwer

Architektura czterowarstwowa jest szczególnie przydatna, gdy chce się zastosować

technologię klient/serwer. Podział aplikacji (systemu) automatycznie dokonuje się na dowolnej granicy między warstwami, w zależności od tego, czy chce się otrzymać w wyniku system o budowie typu gruby klient (fat client) z rozbudowaną aplikacją klienta, czy też decyduje się na gruby serwer (fat server), gdzie większość operacji wykonywanych jest przez serwer.

W pierwszym przypadku linia podziału może przebiegać między obiektami korporacyjnymi a korporacyjną bazą danych (klient: interfejs, obiekty lokalne, baza lokalna, obiekty korporacyjne;

serwer: korporacyjna baza danych).

W drugim przypadku po stronie klienta można umieścić jedynie interfejs, pozostałe warstwy implementując na serwerze.

Inne możliwe podziały to np. między obiektami lokalnymi a obiektami korporacyjnymi – po stronie klienta umieszcza się interfejs użytkownika oraz warstwę lokalnych obiektów

biznesowych, natomiast po stronie serwera warstwę obiektów korporacyjnych i warstwę bazy danych.

Inna bardziej subtelna konfiguracja to: interfejs i obiekty sterujące umieszcza się w aplikacji klienta, lokalne obiekty aplikacji, obiekty korporacyjne i bazę danych umieszczając w serwerze.

Wprowadzenie serwerów lokalnych, działających w ramach jednego systemu i serwerów

korporacyjnych, przechowujących dane wspólne dla całego przedsiębiorstwa, daje dodatkowe możliwości podziału.

Również takie techniki jak DCOM i CORBA, znajdują zastosowanie w systemie o architekturze czterowarstwowej. Jeśli aplikacja o tej architekturze ma być serwerem OLE, to można łatwo to uzyskać poprzez udostępnienie metod obiektów lokalnych innym aplikacjom – wówczas mogą one, omijając interfejs, korzystać z praktycznie całej funkcjonalności systemu. Można również zaimplementować wnętrze systemu w ten sposób, aby poszczególne warstwy – jako oddzielne aplikacje – komunikowały się między sobą za pomocą tych mechanizmów.

(47)

deployment Domain Model

«execution environment»

Serew r korporacyj ny

«device»

Klient

«device»

Klient

«device»

Klient

Przykładowy podział aplikacji w technologii klient/serwer

Obiekty interfejsu, Obiekty lokalne,

Lokalne bazy danych

Obiekty korporacyjne, korporacyjna baza danych

(48)

Przykładowy podział aplikacji w technologii klient/serwer

Obiekty interfejsu

deployment Domain Model

«device»

Klient

«device»

Klient

«execution environ...

Serw er lokalny

«execution environ...

Serw er korporacyj ny

«device»

Klient

«device»

Klient

«execution environ...

Serw er lokalny

Obiekty lokalne,

Lokalne bazy danych

Obiekty korporacyjne, korporacyjna baza danych

(49)

Style architektoniczne

• Rozważając styl architektoniczny trzeba wziąć pod uwagę wiele aspektów. Dwa najczęstsze punkty widzenia to style interakcji między komponentami oraz style sterowania. Oba powinny być dobrze przemyślane. Interakcje między komponentami

obejmują problemy, które najczęściej ilustruje się diagramami blokowymi. Zwykle pokazują one komponenty albo warstwy systemu oraz opisują ogólnie, jakie są dozwolone sposoby interakcji między przedstawionymi elementami. Typowe

przykłady takich stylów to warstwowy (ang.layered), potokowo- filtrowy (ang.piples-and-filtres) i tablicowy.

• Styl sterowania podpowiada podejście do rozdzielenia

odpowiedzialności za podejmowanie decyzji i koordynację wewnątrz warstwy lub komponentu albo pomiędzy nimi.

Możemy stosować dowolne rozwiązanie, od całkowitej centralizacji po zupełne rozproszenie.

(50)

Warstwa aplikacji Warstwa

prezentacji

Architektura warstwowa rozdziela obiekty zgodnie z ich rolami w aplikacji

Usługi

dziedzinowe

Usługi techniczne

(51)

Style architektoniczne

• Każda kombinacja stylów architektonicznych wpływa na przynajmniej jedną z poniższych charakterystyk, których istotność zależy od konkretnej aplikacji:

– Przydatność – Dostępność

– Bezpieczeństwo

– Łatwość konserwacji – Elastyczność

– Przenośność

• Wybór stylów architektonicznych opiera się głównie na oszacowaniu pożądanych atrybutów, które powinna mieć przyszła aplikacja. W większości przypadków będzie to

mieszanka wymienionych charakterystyk z różnymi wagami oraz dobrana do niej kombinacja stylów. Wybór odpowiedniej architektury może mieć wielki wpływ na końcowy rezultat.

(52)

Ścieżka od wymagań do kodu

• Wszystkie artefakty (produkty) procesu inżynierii oprogramowania powinny tworzyć jednoznaczną ścieżkę.

• Efekt: jednoznaczne powiązanie wymagań użytkownika z kodem, który je realizuje.

Wymagania funkcjonalne

Model dynamiczny

systemu

Model statyczny

Model dynamiczny podsystemów

Model statyczny podsystemów

Kod

Analityk Użytkownik

Programista Architekt Projektant

Cytaty

Powiązane dokumenty

Definicja metody w klasie ApplicationBean1 związanej z odczytem (przygotujksiazki) danych typu kolekcja obiektów TEgzemplarz i TEgzemplarz_termin w warstwie biznesowej –

• Należy wybrać katalog na pustą bazę danych w systemie bazy danych Derby – domyślnym katalogiem jest katalog użytkowników systemu Windows.. \.netbeans-derby

Teo­ ria ta nie ułatwia zrozumienia wielu kwestii dotyczących funkcjonowania ustroju, przede wszystkim stałego zmniejszania się w epoce klasycznej liczby

Jakkolwiek koegzystencja grona zawodowców z gronem nauczycieli akademickich wcale nie musi prowadzić do sytuacji sporu intelektualnego, związanego z

tacie wiara w treści Objawienia sama opiera się na wierze, a nie na faktach historycznych. C) To, co Bóg rzekomo objawił, bywa sprzeczne z humanistyczną

W trakcie projektowania i implementacji, stopień uniezależnienia się od zmian interfejsu zostanie zwiększony poprzez podział warstwy obiektów lokalnych oraz korporacyjnych na

Uwaga: W przypadku architektury SI stosowanych w przedsiębiorstwach te trzy warstwy – schemat wewnętrzny, konceptualny i zewnętrzny – interpretowane są jako: odpowiednio –

Zachwatowicz, Olgierd Puciata Pomiary zabytków architektury murowanej w zbiorach Zakładu Architektury Polskiej Politechniki Warszawskiej.. Ochrona Zabytków 5/Zeszyt