Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 1 Projektowanie architektoniczne Przedstawienie koncepcji architektury oprogramowania i.

Podobne prezentacje


Prezentacja na temat: "©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 1 Projektowanie architektoniczne Przedstawienie koncepcji architektury oprogramowania i."— Zapis prezentacji:

1 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 1 Projektowanie architektoniczne Przedstawienie koncepcji architektury oprogramowania i projektowania architektonicznego.

2 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 2 Cele Wiedzieć, dlaczego projektowanie architektoniczne oprogramowania jest tak ważne. Wiedzieć, że do udokumentowania architektury systemu można użyć różnych modeli. Znać kilka typów architektury oprogramowania, obejmujących strukturę systemu oraz rozkład sterowania i rozkład na moduły.

3 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 3 Zawartość Strukturalizacja systemu Modele sterowania Rozkład na moduły Architektury charakterystyczne dla różnych dziedzin

4 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 4 Projektowanie architektoniczne Wielkie systemy są zwykle podzielone na podsystemy, które oferują pewien zbiór powiązanych ze sobą interfejsów. Wymagane jest projektowanie architektoniczne, którego wynikiem jest opis architektury oprogramowania.

5 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 5 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.

6 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 6 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.

7 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 7 Czynności procesu 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.

8 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 8 Podsystemy i moduły 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.

9 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 9 Dokumentacja projektu architektonicznego 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.

10 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 10 Opracowywanie 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.

11 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 11 Style architektoniczne Projektowanie architektoniczne można przeprowadzić zgodnie z konkretnym modelem lub stylem architektonicznym. Ważna jest znajomość modeli, ich zastosowań, wad oraz zalet. Architektury większości wielkich systemów nie odpowiadają jednak żadnemu wybranemu stylowi.

12 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 12 Własności architektury systemu zależą od wymagań niefunkcjonalnych systemu Efektywność Jeśli efektywność jest krytycznym wymaganiem, to prawdopodobnie należy tak zaprojektować architekturę, aby umieścić krytyczne operacje w niewielkiej liczbie podsystemów, które komunikują się między sobą w najmniejszym stopniu, jak to tylko jest możliwe. Zabezpieczenie Jeśli zabezpieczenie jest krytycznym wymaganiem, to prawdopodobnie należy zastosować w architekturze strukturę warstwową. Najbardziej krytyczne aktywa należy zabezpieczyć w najbardziej wewnętrznych warstwach, w których uwzględni się wysoki poziom weryfikacji zabezpieczeń. Bezpieczeństwo Jeśli bezpieczeństwo jest krytycznym wymaganiem, to prawdopodobnie należy tak zaprojektować architekturę, aby operacje dotyczące bezpieczeństwa znalazły się w jednym podsystemie lub w niewielkiej liczbie podsystemów. Zmniejszy to koszty i kłopoty związane z zatwierdzeniem bezpieczeństwa oraz umożliwi zaoferowanie powiązanych systemów ochronnych.

13 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 13 Dostępność Jeśli dostępność jest krytycznym wymaganiem, to prawdopodobnie należy uwzględnić w architekturze komponenty nadmiarowe, aby można było podmieniać i modyfikować komponenty bez zatrzymywania systemu. Zdatność do pielęgnacji Jeśli zdatność do pielęgnacji jest krytycznym wymaganiem, to prawdopodobnie architektura systemu powinna składać się z drobnoziarnistych, samodzielnych komponentów, które można łatwo zmienić. Producenci danych powinni być oddzieleni od konsumentów; należy unikać dzielonych struktur danych. Własności architektury systemu zależą od wymagań niefunkcjonalnych systemu c. d.

14 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 14 Strukturalizacja systemu Pierwsza faza projektowania architektonicznego polega zwykle na podziale systemu na zbiór oddziałujących ze sobą podsystemów. Na najbardziej abstrakcyjnym poziomie projekt architektoniczny można przedstawić w postaci diagramu blokowego, na którym każdy prostokąt odpowiada podsystemowi. Prostokąty wewnątrz prostokąta oznaczają, że taki podsystem dalej podzielono na podsystemy. Strzałki wskazują, że dane lub sterowanie są przekazywane między podsystemami zgodnie z kierunkiem grotu.

15 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 15 Diagram blokowy systemu sterującego robotem System wizyjny System identyfikacji przedmiotów Sterownik alarmu Sterownik chwytacza System pakujący System wyboru opakowania Sterownik taśmociągu

16 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 16 Model repozytorium Aby efektywnie współpracować, podsystemy wchodzące w skład systemu mogą wymieniać między sobą informacje na dwa podstawowe sposoby: Wszystkie współdzielone dane znajdują się w centralnej bazie danych, z której mogą korzystać wszystkie podsystemy. Model systemu oparty na współdzielonej bazie danych jest czasem nazywany modelem repozytorium. Każdy podsystem prowadzi własną bazę danych. Dane są przekazywane innym podsystemom przez wysyłanie komunikatów. Większość systemów używających dużej ilości danych jest zbudowanych wokół centralnej bazy danych lub repozytorium. Ten model jest więc przystosowany do zastosowań, w których dane są generowane przez jeden podsystem, a używane przez inny.

17 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 17 Architektura zintegrowanego zestawu narzędzi CASE Translator projektów Edytor programów Generator raportów Analizator projektów Generator kodu Edytor projektów Repozytorium przedsięwzięcia

18 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 18 Zalety i wady współdzielonego repozytorium Jest to efektowny sposób współdzielenia dużych ilości danych. Nie ma potrzeby jawnej transmisji danych z jednego podsystemu do drugiego. Twórcy podsystemów muszą jednak uzgodnić model danych repozytorium. Prowadzi to nieuchronnie do kompromisów między specyficznymi potrzebami każdego narzędzia. Kompromis może spowodować zmniejszenie efektywności. Integracja nowych podsystemów może być trudna lub nawet niemożliwa, jeśli ich modele nie pasują do uzgodnionego modelu. Ewolucja może być jednak trudna, ponieważ duże ilości informacji powstają zgodnie z ustalonym modelem danych. Tłumaczenie ich na nowy model na pewno będzie kosztowne, może być trudne, a nawet niemożliwe. Czynności takie jak tworzenie kopii zapasowej, sterowanie zabezpieczeniami i dostępem oraz odtwarzanie po awarii są scentralizowane. Menedżer repozytorium jest za nie odpowiedzialny. Twórcy narzędzi mogą skoncentrować się na ich zasadniczej funkcji i nie muszą zajmować się tymi sprawami.

19 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 19 Zalety i wady współdzielonego repozytorium c. d. Różne podsystemy mogą mieć jednak odmienne wymagania stawiane zabezpieczeniom oraz strategii odtwarzania i kopiom zapasowym. Model repozytorium wymusza te same strategie we wszystkich podsystemach. Model współdziałania jest widoczny przez schemat repozytorium. Integracja nowych narzędzi jest bardzo łatwa, o ile są zgodne z przyjętym modelem danych. Może być jednak trudno rozproszyć repozytorium na kilku maszynach. Chociaż można rozproszyć logicznie scentralizowane repozytorium, mogą jednak powstać kłopoty z nadmiarowością i niespójnościami.

20 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 20 Model klient-serwer Architektoniczny model klient-serwer jest modelem rozproszonego systemu, w którym dane i przetwarzanie są rozdzielone między zbiór procesorów. Głównymi komponentami tego modelu są: 1.Zbiór samodzielnych serwerów oferujących usługi innym podsystemom. Przykładami są serwery wydruku realizujące usługi drukowania, serwery plików realizujące usługi zarządzania plikami. 2.Zbiór klientów, którzy korzystają z usług oferowanych przez serwery. Zwykle same w sobie są podsystemami. Może być kilka współbieżnie działających egzemplarzy programu klienta. 3.Sieć, która daje klientom dostęp do tych usług.

21 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 21 Architektura systemu biblioteki filmów i zdjęć Klient 4Klient 3Klient 2Klient 1 Serwer katalogu Katalog Serwer filmów Pliki z filmami Serwer zdjęć Zdjęcia w postaci cyfrowej Serwer hipertekstu Sieć hipertekstowa Sieć szerokopasmowa

22 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 22 Zalety i wady modelu klient-serwer Największa zaleta modelu klient-serwer polega na tym, że jest to architektura rozproszona. Umożliwia to efektywne użycie systemów sieciowych z dużą liczbą rozproszonych procesorów. Łatwo jest dodać nowy serwer i zintegrować go z resztą systemu albo aktualizować serwery bez wpływania na inne części systemu. Do odniesienia pełnych korzyści z integracji nowego serwera może być jednak konieczne wprowadzenie pewnych zmian w istniejących klientach i serwerach. Nie ma dzielonego modelu danych i podsystemy porządkują zwykle swoje dane na różne sposoby. Oznacza to potrzebę określenia specyficznego modelu danych dla każdego serwera, który umożliwi zoptymalizowanie jego efektywności. Brak współdzielonego modelu odniesienia może powodować trudności przy integracji danych z nowego serwera.

23 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 23 Model warstwowy Model warstwowym (zwany czasem modelem maszyny abstrakcyjnej) opisuje sprzęganie podsystemów. Układa system w ciągi warstw, z których każda oferuje pewne usługi. Każda warstwa jest maszyną abstrakcyjną, której język maszynowy (usługi oferowane przez tą warstwę) służy do implementacji następnego poziomu maszyny abstrakcyjnej. Częstym sposobem implementacji języka jest na przykład zdefiniowanie idealnej maszyny i kompilowanie tego języka do kodu na tę maszynę. Następnym krokiem translacji jest zmiana tego kodu maszyny abstrakcyjnej na prawdziwy kod maszynowy.

24 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 24 Model warstwowy systemu zarządzania wersjami Zarządzanie wersjami Zarządzanie obiektami System bazy danych System operacyjny

25 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 25 Model warstwowy – zalety i wady Ułatwia stosowanie przyrostowego tworzenia systemów. Po opracowaniu warstwy niektóre jej usługi można udostępnić użytkownikom. Łatwość zmiany i przenoszenia. Jeśli zachowa się interfejs warstwy, to można zamienić ją na inną. Gdy interfejs zmienia się, wówczas tylko sąsiednie warstwy są pod wpływem tej zmiany. Umożliwia ukrycie zależności od konkretnej maszyny w wewnętrznych warstwach, można je więc względnie tanio zaimplementować na innych maszynach. Tylko wewnętrzne, zależne od maszyny warstwy muszą być wówczas ponownie zaimplementowane. Warstowy sposób strukturalizacji systemu może być trudny. Podstawowe udogodnienia, na przykład zarządzanie plikami, które jest wymagane przez wszystkie maszyny abstrakcyjne, mogą być oferowane przez warstwy wewnętrzne. Usługi potrzebne użytkownikowi mogą zatem wymagać dostępu do maszyn abstrakcyjnych kilka poziomów poniżej najbardziej zewnętrznego. Rujnuje to model, ponieważ warstwa zewnętrzna nie zależy już jedynie od jej bezpośredniego poprzednika. Kłopoty z efektywnością – wielopoziomowa interpretacja poleceń

26 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 26 Modele sterowania Modele do strukturalizacji systemu opisują sposób podziału systemu na podsystemy. Aby podsystemy pracowały jako jeden system, należy nimi sterować tak, żeby ich usługi były dostarczone we właściwe miejsce i we właściwym czasie. Mamy dwa podejścia: Sterowanie scentralizowane Jeden podsystem jest całościowo odpowiedzialny za sterowanie; to on uruchamia i zatrzymuje inne podsystemy. Sterowanie zdarzeniowe Informacja o sterowaniu nie jest wbudowana w jeden podsystem. Każdy podsystem może reagować na zdarzenia zachodzące na zewnątrz. Te zdarzenia mogą występować w innych podsystemach lub w otoczeniu systemu. Modele sterowania uzupełniają modele struktury. Wszystkie powyższe modele strukturalne mogą być zrealizowane za pomocą sterowania scentralizowanego, jak i zdarzeniowego.

27 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 27 Sterowanie scentralizowane W modelu sterowania scentralizowanego jeden z podsystemów jest wybrany do roli sterownika systemu i odpowiada za zarządzanie działaniem innych podsystemów. Modele te dzieli się na dwie klasy: Model wywołanie-powrót Jest to dobrze znany model podprogramów, w którym sterowanie zaczyna się na wierzchołku hierarchii podprogramów i przez wywołania podprogramów przechodzi do niższych poziomów drzewa. Model menedżera Ten model można zastosować w wypadku systemów współbieżnych. Jeden z komponentów systemu jest wybierany do roli menedżera systemu i steruje rozpoczynaniem, zatrzymywaniem i koordynacją innych procesów systemu, gdzie proces jest podsystemem lub modułem, który może działać równolegle z innymi procesami.

28 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 28 Model sterowania wywołanie-powrót Procedura 3.2Procedura 3.1Procedura 1.2Procedura 1.1 Procedura 3Procedura 2Procedura 1 Program główny

29 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 29 Model menedżera - scentralizowany model sterowania dla systemu czasu rzeczywistego Obsługa awarii Interfejs użytkownika Sterownik systemu Procesory efektorów Procesory detektorów Procesory obliczeniowe

30 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 30 Systemy sterowane zdarzeniami Modele sterowania zdarzeniowego są sterowane zdarzeniami pochodzącymi z zewnątrz. Różnica między zdarzeniem i zwykłymi danymi wejściowymi polega na tym, że proces obsługujący zdarzenie nie decyduje o czasie jego zajścia. Dwa modele sterowania zdarzeniowego: Modele rozgłaszania. W takich modelach zdarzenie jest w zasadzie ogłoszeniem dla wszystkich podsystemów. Każdy podsystem, który może obsłużyć to zdarzenie, reaguje na nie. Modele z przerwaniami. Są używane wyłącznie w systemach czasu rzeczywistego, gdzie zewnętrzne przerwania są wykrywane przez obsługę przerwań. Następnie są one przekazywane do innego komponentu, który je przetworzy.

31 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 31 Modele rozgłaszania Podsystemy rejestrują swoje zainteresowanie specyficznymi zdarzeniami. Gdy takie zdarzenia zajdą, sterowanie jest przekazywane do podsystemu, który może je obsłużyć. Różnica między tym modelem a modelem scentralizowanym polega na tym, że strategia sterowania nie jest wbudowana w procedury obsługi zdarzeń i komunikatów. Podsystemy decydują, które zdarzenia są dla nich interesujące, a procedura obsługi zdarzeń i komunikatów sprawia, że te zdarzenia na pewno dotrą do podsystemów.

32 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 32 Model sterowania z rozgłaszaniem Podsystem 1 Podsystem 2 Podsystem 3 Podsystem 4 Procedura obsługi zdarzeń

33 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 33 Model sterowania z przerwaniami Każdy rodzaj przerwania jest skojarzony z miejscem w pamięci, gdzie przechowuje się adres procedury obsługi. Po otrzymaniu przerwania określonego typu przełącznik sprzętowy powoduje natychmiastowe przekazanie sterowania do procedury obsługi tego przerwania. W odpowiedzi na zdarzenie sygnalizowane przez przerwanie procedura obsługi może uruchomić lub zatrzymać pewne procesy. Systemy czasu rzeczywistego, które wymagają, aby zdarzenia z otoczenia były obsługiwane bardzo szybko, muszą być sterowane zdarzeniami. Jeśli system czasu rzeczywistego służy na przykład do sterowania systemami bezpieczeństwa samochodu, to musi wykrywać zderzenia i napełnić poduszkę powietrzną, zanim głowa kierowcy uderzy w kierownicę. Aby zapewnić błyskawiczną reakcję, należy użyć modelu z przerwaniami.

34 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 34 Model sterowania z przerwaniami Proces 4 Proces 3 Proces 2 Proces 1 Procedura obsługi 1 Procedura obsługi 4 Procedura obsługi 3 Procedura obsługi 2 Przerwania Wektor przerwań

35 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 35 Wady i zalety modelu sterowanego przerwaniami Ten model powinien być używany jedynie w wymagających systemach czasu rzeczywistego, w których natychmiastowa reakcja jest konieczna. Można go zastosować łącznie z modelem scentralizowanego zarządzania. Zaletą tego podejścia do sterowania jest to, że umożliwia implementację szybkich odpowiedzi na zdarzenia. Wadą są złożoność programowania i trudności z zatwierdzaniem. Symulacja wzorców zachowania przerwań w czasie może być niemożliwa w trakcie testowania. System zbudowany zgodnie z tym modelem może być trudny do modyfikacji, jeśli liczba przerwań jest ograniczona przez sprzęt. Po osiągnięciu tego limitu nie da się obsługiwać nowych zdarzeń. To ograniczenie można czasem obejść przez przypisanie kilku rodzajów zdarzeń do jednego przerwania i opracowanie procedury obsługi, która rozpoznaje rodzaj zdarzenia.

36 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 36 Rozkład na moduły Po zaprojektowaniu architektury strukturalnej następnym krokiem procesu projektowania architektonicznego jest podział podsystemów na moduły. Nie ma precyzyjnego sposobu podziału systemu na moduły. Dalej zaprezentuję dwa modele służące do podziału podsystemu na moduły: Model obiektowy. System jest dzielony na zbiór porozumiewających się obiektów. Model przepływu danych. System jest dzielony na moduły funkcjonalne, które pobierają dane wejściowe i w jakiś sposób przetwarzają je na dane wyjściowe.

37 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 37 Modele obiektowe Model obiektowy architektury systemu dzieli system na zbiór luźno uzależnionych od siebie obiektów z dobrze zdefiniowanymi interfejsami. Obiekty korzystają z usług oferowanych przez inne obiekty. Podział obiektowy uwzględnia klasy obiektów, ich atrybuty i operacje. Model obiektowy będzie dokładnie omawiany na jednym z przyszłych wykładów.

38 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 38 Model obiektowy systemu fakturowania Klient nr klienta nazwisko adres okres kredytowania Pokwitowanie nr faktury data kwota nr klienta Płatność nr faktury data kwota nr klienta Faktura nr faktury data kwota nr klienta wystaw() WyślijUpomnienie() przyjmijPłatność() wyślijPokwitowanie()

39 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 39 Zalety modelu obiektowego Obiekty są od siebie luźno uzależnione, ich implementację można więc zmieniać, nie wpływając na inne obiekty. Obiekty często są reprezentacjami bytów świata rzeczywistego, zatem struktura systemu jest łatwa do zrozumienia. Te byty świata rzeczywistego są używane w wielu systemach, obiekty można więc wielokrotnie wykorzystywać. Opracowano obiektowe języki programowania, które umożliwiają bezpośrednią implementację komponentów architektonicznych.

40 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 40 Wady modelu obiektowego Aby korzystać z usług, obiekty muszą jawnie odwoływać się do nazw i interfejsów innych obiektów. Jeśli do wykonania zaproponowanych zmian systemu konieczna jest zmiana interfejsu, to należy ocenić wpływ tej zmiany na wszystkich użytkowników. Podczas gdy obiekty bezpośrednio odpowiadają pewnym niewielkim bytom świata rzeczywistego, trudno jest reprezentować w postaci obiektów bardziej złożone byty.

41 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 41 Modele przepływu danych W modelu przepływu danych przekształcenia funkcyjne przetwarzają swoje dane wejściowe na dane wyjściowe. Dane przepływają od jednego do drugiego procesu i są przekształcane w miarę swojej wędrówki przez cały ciąg. Każdy krok przetwarzania jest implementowany jako przekształcenie. Dane wejściowe przepływają przez te przekształcenia do chwili wytworzenia z nich danych wyjściowych. Przekształcenia mogą działać sekwencyjnie lub równolegle. Przekształcenie może przetwarzać dane jedna po drugiej lub w postaci jednego wsadu. Gdy przekształcenia te realizowane są przez oddzielne procesy, model ten jest wówczas nazwany modelem potoków i filtrów. UNIX, DOS.

42 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 42 Model przepływu danych systemu fakturowania Wystaw upomnienia Wystaw pokwitowania Zidentyfikuj płatności Odczytaj wystawione faktury PłatnościFaktury Upomnienia Pokwitowanie Znajdź przeterminowane faktury

43 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 43 Zalety modelu przepływu danych Umożliwia użycie wielokrotne przekształceń. Jest intuicyjna dla wielu ludzi, którzy myślą o swej pracy w kategoriach przetwarzania wejścia i wyjścia. Ewolucja systemu polegająca na dodawaniu nowych przekształceń jest bardzo łatwa. Ta architektura jest łatwa do zaimplementowania zarówno jako system sekwencyjny, jak i współbieżny.

44 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 44 Wady modelu przepływu danych Potrzeby wspólnego formatu do przekazywania danych, który jest zrozumiały dla wszystkich przekształceń. Każde przekształcenie musi mieć uzgodniony format przetwarzanych danych ze wszystkimi przekształceniami, z którymi się komunikuje. Innym rozwiązaniem jest przyjęcie standardowego formatu wszystkich przekazywanych danych. Ten drugi sposób jest jedynym sensownym w sytuacji, gdy przekształcenia są samodzielne i zdatne do użycia wielokrotnego. Każde przekształcenie musi zanalizować składniowo swoje dane wejściowe i zamienić swoje dane wyjściowe na uzgodnioną postać. Zwiększa to narzuty systemowe i sprawia, że nie można zintegrować przekształceń, które używają niezgodnych formatów danych.

45 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 45 Wady modelu przepływu danych c. d. Za pomocą modelu przepływu danych trudno jest pisać systemy interakcyjne, ponieważ należy w nich uwzględnić strumień danych do przetwarzania. Proste tekstowe dane wejściowe i wyjściowe można w ten sposób wymodelować, natomiast graficzne interfejsy użytkownika posługują się bardziej skomplikowanymi formatami wejścia-wyjścia związanymi ze zdarzeniami, np. wciśnięcie przycisków myszy i wybory z menu. Trudno jest przetłumaczyć je na postać zgodną z modelem przepływu danych.

46 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 46 Architektury charakterystyczne dla różnych dziedzin Istnieją modele architektoniczne specyficzne dla konkretnych dziedzin zastosowań. Egzemplarze takich systemów różnią się w szczegółach, można jednak wielokrotnie używać wspólnej struktury architektonicznej do budowania nowych systemów. Takie modele architektoniczne noszą nazwę architektur charakterystycznych dla dziedziny. Dwa rodzaje modeli architektonicznych: modele ogólne modele odniesienia.

47 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 47 Modele ogólne Są abstrakcjami kilku rzeczywistych systemów. Obejmują zasadnicze charakterystyki tych systemów. Wśród systemów czasu rzeczywistego można na przykład wyróżnić ogólne modele architektoniczne, takie jak systemy gromadzenia danych, systemy monitorowania itd. Najbardziej znanym przykładem architektonicznego modelu ogólnego jest model kompilatora. Istnieją tysiące kompilatorów. Każdy kompilator powinien zawierać następujące moduły: analizator leksykalny tabela symboli analizator składniowy drzewo składni analizator znaczeniowy generator kodu.

48 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 48 Model przepływu danych kompilatora Tabela symboli Analiza składniowa Analiza leksykalna Analiza znaczeniowa Generowanie kodu

49 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 49 Model repozytorium systemu przetwarzania języka Generator kodu Optymalizator Edytor Generator prezentacji Analizator znaczeniowy Analizator składniowy Analizator leksykalny Drzewo składni abstrakcyjnej Tabela symboli Definicja gramatyki Definicja wyniku Repozytorium

50 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 50 Modele odniesienia Ogólne modele architektoniczne odzwierciedlają architekturę istniejących systemów. Modele odniesienia są natomiast wynikami badań dziedziny zastosowania. Reprezentują wyidealizowane architektury obejmujące wszystkie udogodnienia, jakie system mógłby oferować. Architektury odniesienia mogą służyć jako podstawa implementacji systemu.

51 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 51 Architektura modelu odniesienia OSI do komunikacji systemów otwartych Medium komunikacyjne Program użytkowy Prezentacja Sesja Transport Sieć Łącze danych Fizyczna Sieć Łącze danych Fizyczna Program użytkowy Prezentacja Sesja Transport Sieć Łącze danych Fizyczna

52 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 52 Główne tezy Architektura oprogramowania jest zasadniczym zrębem do strukturalizacji systemu. W trakcie projektowania architektonicznego można opracować różne modele architektoniczne, na przykład model strukturalny, model sterowania i model podziału. Wielkie systemy rzadko odpowiadają jednemu modelowi architektonicznemu. Są różnorodne i obejmują różne modele na rozmaitych poziomach abstrakcji. Modelami podziału systemu są m.in. model repozytorium, model klient-serwer i model maszyny abstrakcyjnej. Repozytorium jest modelem współdzielenia danych we wspólnej składnicy. W modelach klient-serwer dane są zwykle rozproszone. W modelach warstwowych każda warstwa jest zaimplementowana za pomocą udogodnień swojej warstwy podstawowej.

53 ©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 53 Główne tezy c. d. Modelami sterowania są model scentralizowany i model zdarzeniowy. W modelach scentralizowanych decyzje dotyczące sterowania są podejmowane na podstawie stanu systemu. W modelach zdarzeniowych systemami sterują zdarzenia zewnętrzne. Modelami podziału na moduły są model przepływu danych i model obiektowy. Modele przepływu danych są funkcjonalne; modele obiektowe są oparte na luźno zależnych od siebie bytach, które zarządzają swoim stanem i operacjami. Architektoniczne modele charakterystyczne dla dziedziny są abstrakcjami w ramach dziedziny zastosowań. Mogą być modelami ogólnymi, które są budowane z istniejących systemów lub modelami odniesienia, które są wyidealizowanymi abstrakcyjnymi modelami dziedziny.


Pobierz ppt "©Ian Sommerville 2000 Inżynieria oprogramowania, Wykład 5 Slide 1 Projektowanie architektoniczne Przedstawienie koncepcji architektury oprogramowania i."

Podobne prezentacje


Reklamy Google