Projektowanie architektoniczne

Slides:



Advertisements
Podobne prezentacje
Modelowanie przypadków użycia
Advertisements

Projektowanie w cyklu życia oprogramowania
PROGRAMOWANIE STRUKTURALNE
Sieci komputerowe.
Inżynieria Oprogramowania 9. Testowanie oprogramowania
Inżynieria Oprogramowania 6. Projektowanie architektoniczne
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28Slide 1 Restrukturyzacja oprogramowania l Reorganizowanie i modyfikowanie istniejącego.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Prototypowanie oprogramowania l Błyskawiczne tworzenie oprogramowania służące.
Projektowanie architektoniczne
Projektowanie Aplikacji Komputerowych
Internet Communication Engine
Co UML może zrobić dla Twojego projektu?
Modele systemu Abstrakcyjny opis systemów pomocniczych w analizowaniu wymagań stawianych tym systemom.
Architektury systemów rozproszonych
Systemy operacyjne.
Systemy operacyjne Bibliografia:
Projektowanie architektoniczne
Diagram czynności (Activity Diagrams)
Wzorce projektowe w J2EE
Projektowanie i programowanie obiektowe II - Wykład IV
Praca Inżynierska „Analiza i projekt aplikacji informatycznej do wspomagania wybranych zadań ośrodków sportowych” Dyplomant: Marcin Iwanicki Promotor:
Opracował: mgr Mariusz Bruździński
Proces tworzenia oprogramowania
Architektury systemów rozproszonych
Inżynieria Oprogramowania
Wykład 4 Analiza i projektowanie obiektowe
Wykład 3 Analiza i projektowanie strukturalne
C.d. wstępu do tematyki RUP
Nowoczesny system zarządzania firmą
Protokół Komunikacyjny
Sieciowe Systemy Operacyjne
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Wybrane zagadnienia relacyjnych baz danych
Podsumowanie metodologii OMT
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
1 Każdy obiekt jest scharakteryzowany poprzez: tożsamość – daje się jednoznacznie wyróżnić; stan; zachowanie. W analizie obiektowej podstawową strukturą
Modelowanie obiektowe Diagramy UML – diagram przypadków użycia
Modelowanie obiektowe Diagramy klas
Proces tworzenia oprogramowania
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
Podstawy programowania
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Temat 3: Integralność danych. Integralność danych, określana również mianem spójności danych, jest to funkcja SZBD, która gwarantuje, że dane nie zostaną.
Model obiektowy bazy danych
PROCESY W SYSTEMACH SYSTEMY I PROCESY.
Diagram aktywności (czynności)
Diagram klas Kluczowymi elementami są: klasy (class)
Jednym z podstawowych celów tworzenia sieci komputerowych jest współdzielenie zasobów, takich jak pliki lub drukarki. Każdy z takich zasobów musi być udostępniony,
Zarządzanie zagrożeniami
System Zarządzania Bazą Danych
Proces tworzenia oprogramowania Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu.
Przykłady analiza i projektowanie
Modelowanie obiektowe - system zarządzania projektami.
Diagram czynności Diagram czynności (activity diagram) służy do modelowania dynamicznych aspektów systemu. Diagram czynności przedstawia sekwencyjne lub.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Diagramy przepływu danych
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 14Slide 1 Projektowanie z użyciem wielokrotnym l Jak w procesie projektowania systemu można ponownie.
Podstawy programowania
Struktura systemu operacyjnego
Podział sieci komputerowych
Model warstwowy ISO-OSI
Dokumentacja programu komputerowego i etapy tworzenia programów.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Analiza, projekt i częściowa implementacja systemu wspomagania pracy Referatu Reprografii Promotor: mgr inż. Dariusz OlczykWykonała: Katarzyna Ściwiarska.
Wyższa Szkoła Bankowa, Poznań, dr inż. mirosław Loręcki
Inżynieria systemów informacyjnych
JavaBeans by Paweł Wąsala
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Projektowanie architektoniczne Przedstawienie koncepcji architektury oprogramowania i projektowania architektonicznego.

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.

Zawartość Strukturalizacja systemu Modele sterowania Rozkład na moduły Architektury charakterystyczne dla różnych dziedzin

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.

Procesu 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.

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.

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.

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.

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.

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.

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.

Własności architektury systemu zależą od wymagań niefunkcjonalnych systemu 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.

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ą,m że dane lub sterowanie są przekazywane między podsystemami zgodnie z kierunkiem grotu.

Diagram blokowy systemu sterującego robotem wizyjny Sterownik alarmu Sterownik chwytacza System identyfikacji przedmiotów System wyboru opakowania System pakujący Sterownik taśmociągu

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.

Architektura zintegrowanego zestawu narzędzi CASE Edytor projektów Generator kodu Repozytorium przedsięwzięcia Edytor programów Translator projektów Analizator projektów Generator raportów

Zalety i wady współdzielonego repozytorium Jest to efektowny sposób współdziałania dużych ilości danych. Nie ma potrzeby jawnej transmisji danych z jednego podsystemu do drugiego. Twórcy podsystemów musza jednak uzgodnić model danych repozytorium. Podsystemy produkujące dane nie muszą zajmować się sposobem użycia tych danych przez inne podsystemy. Ewolucja może być jednak trudna. Czynności takie jak tworzenie kopii zapasowej, sterowanie zabezpieczeniami i dostępem oraz odtwarzanie po awarii są scentralizowane. Różne podsystemy mogą mieć jednak odmienne wymagania stawiane zabezpieczeniom oraz strategii odtwarzania i kopiom zapasowym. Model współdziałania jest widoczny przez schemat repozytorium. Integracja nowych narzędzi jest bardzo łatwa. Może być jednak trudno rozproszyć repozytorium na kilku maszynach.

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ą: 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. Zbiór klientów, którzy korzystają z usług oferowanych przez serwery. Zwykle same w sobie są podsystemami. Sieć, która daje klientom dostęp do tych usług.

Architektura systemu biblioteki filmów i zdjęć Klient 1 Klient 2 Klient 3 Klient 4 Sieć szerokopasmowa Serwer zdjęć Zdjęcia w postaci cyfrowej Serwer katalogu Katalog Serwer filmów Pliki z filmami Serwer hipertekstu Sieć hipertekstowa

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żą liczba 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.

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.

Model warstwowy systemu zarządzania wersjami Zarządzanie wersjami Zarządzanie obiektami System bazy danych System operacyjny

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.

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. 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.

Model sterowania wywołanie-powrót Program główny Procedura 1 Procedura 2 Procedura 3 Procedura 1.1 Procedura 1.2 Procedura 3.1 Procedura 3.2

Model menedżera - scentralizowany model sterowania dla systemu czasu rzeczywistego Procesory efektorów Procesory detektorów Sterownik systemu Procesory obliczeniowe Interfejs użytkownika Obsługa awarii

Systemy sterowane zdarzeniami Modele sterowania zdarzeniowego są sterowane zdarzeniami pochodzącymi z zewnątrz. 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.

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.

Model sterowania z rozgłaszaniem Podsystem 1 Podsystem 2 Podsystem 3 Podsystem 4 Procedura obsługi zdarzeń

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.

Model sterowania z przerwaniami Wektor przerwań Procedura obsługi 1 Procedura obsługi 2 Procedura obsługi 3 Procedura obsługi 4 Proces 1 Proces 2 Proces 3 Proces 4

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. Dwa modele służą 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.

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 systemu fakturowania Klient Pokwitowanie nr klienta nazwisko adres okres kredytowania nr faktury data kwota nr klienta Faktura nr faktury data kwota nr klienta wystaw() WyślijUpomnienie() przyjmijPłatność() wyślijPokwitowanie() Płatność nr faktury data kwota nr klienta

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.

Model przepływu danych systemu fakturowania Wystaw pokwitowania Pokwitowanie Odczytaj wystawione faktury Zidentyfikuj płatności Znajdź przeterminowane faktury Wystaw upomnienia Upomnienia Faktury Płatności

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.

Modele ogólne 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.

Model przepływu danych kompilatora Tabela symboli Analiza leksykalna Analiza składniowa Analiza znaczeniowa Generowanie kodu

Model repozytorium systemu przetwarzania języka Analizator składniowy Analizator leksykalny Analizator znaczeniowy Optymalizator Drzewo składni abstrakcyjnej Definicja gramatyki Generator prezentacji Tabela symboli Definicja wyniku Generator kodu Edytor Repozytorium

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.

Architektura modelu odniesienia OSI do komunikacji systemów otwartych 7 6 5 4 3 2 1 Program użytkowy Prezentacja Sesja Transport Sieć Łącze danych Fizyczna Program użytkowy Prezentacja Sesja Transport Sieć Łącze danych Fizyczna Sieć Łącze danych Fizyczna Medium komunikacyjne

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.

Główne tezy 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.