background image

1

Inżynieria oprogramowania

wykład 12

Projektowanie architektury systemów

background image

2/31

Informacje podstawowe

projekt architektury → reprezentacja struktury programu i 
danych

projekt architektury umożliwia i pomaga:

analizować zgodność projektu z wymaganiami

rozważać różne podejścia do tworzenia programu

ograniczyć ryzyko związane z konstruowaniem oprogramowania

architektura * :

ułatwia wymianę informacji między poszczególnymi uczestnikami 
procesu wytwórczego

pozwala określić początkowe decyzje projektowe mające duży 
wpływ na prowadzone później prace wytwórcze i sukces działania 
systemu

stanowi model struktury systemu i współdziałania jego składników

style i wzorce architektury mogą być użyte w procesie 
projektowania innych systemów (są przenośne)

* L. Bass, P. Clements, R. Kazman: „Software architecure in practice” , Addison-Wesley, 1998

background image

3/31

Architektura oprogramowania

architektura oprogramowania* → struktura połączenia jego 
składników programowych, widoczne z zewnątrz cechy 
tych składników i związki, które między nimi zachodzą

składniki programowe → moduły programu, złożone 
obiekty (bazy danych), oprogramowanie pośredniczące np. 
w sieci typu klient-serwer

widoczne z zewnątrz cechy składników → pozwalają
zrozumieć współdziałanie składników programowych z 
innymi, bez uwzględniania cech wewnętrznych np. użytych 
algorytmów

związki między składnikami → wywołanie procedury z 
innego modułu, protokoły dostępu do bazy danych, itp.

* L. Bass, P. Clements, R. Kazman: „Software architecture in practice” , Addison-Wesley, 1998

background image

4/31

Projektowanie danych - opis

pierwszym krokiem jest opisanie danych oraz informacji 
przetwarzanych przez oprogramowanie na wysokim poziomie 
abstrakcji (z punktu widzenia użytkownika)

tak powstały opis w kolejnych krokach jest uszczegóławiany

architektura danych może mieć znaczący wpływ na architekturę
programu przetwarzającego te dane

na poziomie modułów i procedur poprawnie zaprojektowane struktury 
danych mogą wpływać na jakość oprogramowania

na poziomie aplikacji struktura danych ma wpływ na realizację założeń
dotyczących funkcjonalności systemu

na poziomie przedsiębiorstwa/firmy dane zgromadzone w bazach 
danych umożliwiają przeszukiwanie i gromadzenia danych/wiedzy, 
kluczowe ze względu na działalność firmy

background image

5/31

Projektowanie danych -realizacja

wynikiem modelowania analitycznego danych są
diagramy encja-związek i tzw. słowniki danych 
(kompletny opis obiektu: nazwa, miejsca i sposób 
użycia, zawartość, ograniczenia, wartości domyślne 
itp.)

projektowanie danych polega na tłumaczeniu zapisów z 
modelu analitycznego na konkretne struktury danych

realizacja odbywa się na poziomie pojedynczych 
modułów i procedur, czasem (bazy danych) na 
poziomie aplikacji

background image

6/31

Zasady specyfikowania danych*

do specyfikowania danych powinny być stosowane zasady analizy stosowane do 
opisu funkcji i zachowań systemu, z uwzględnieniem zawartości danych, 
przepływu danych, organizacji danych i ich wpływu na projektowany system

niezbędna jest identyfikacja wszystkich struktur danych i operacji na nich

zalecane jest wykorzystywanie gotowych słowników danych

decyzje „niskopoziomowe” powinny być podejmowane możliwie najpóźniej –
wstępnie określanie ogólne architektury i uściślanie przy projektowaniu 
konkretnych modułów

wewnętrzna struktura danych widoczna tylko wewnątrz modułów jej używających

w  miarę możliwości gotowe struktury i wzorce operacji można gromadzić w 
postaci szablonów w bibliotekach i wykorzystywać w innych projektach

zalecane jest posługiwanie się językami projektowania i programowania 
udostępniającymi mechanizmy specyfikowania i realizowania abstrakcyjnych 
typów danych

* A. Wasserman: „ Principles of systematic data design and implementation”, w: P. Freeman, A. Wasserman
„Software design techniques”,  IEEE Computer Society Press, 1980

background image

7/31

Style architektury

architektura skoncentrowana na danych

architektura oparta na przepływie danych 

architektura wywołań i powrotów

architektura obiektowa

architektura warstwowa

background image

8/31

Architektura skoncentrowana 
na danych

głównym elementem jest magazyn danych, w formie pliku lub bazy 
danych

z magazynu danych mogą korzystać inne moduły systemu (klienci), 
wykonując operacje dodawania, usuwania i modyfikowania danych

magazyn pasywny → każdy klient może korzystać z zawartości 
magazynu niezależnie od działań i modyfikacji wykonywanych przez 
innych klientów

systemy o takiej architekturze  można łatwo integrować – dodawać i 
modyfikować składniki będące klientami – nie ma to wpływu na 
działanie innych klientów (działają niezależnie)

dane przekazywane są między klientami poprzez magazyn

klient samodzielnie uruchamia potrzebne mu inne moduły klienckie

background image

9/31

Architektura skoncentrowana 
na danych - schemat

magazyn

danych

klient

klient

klient

klient

klient

background image

10/31

Architektura oparta na 
przepływie danych

przydatna szczególnie w systemach przetwarzających 
dane wejściowe na wyjściowe w formie ciągu operacji 
wykonywanych przez różne moduły systemu (filtry)

moduły działają niezależnie od siebie

moduły obierają dane w pewnym formacie a przekazują
dane w innym

potoki → połączenia przekazujące dane między 
modułami

systemy z modułami powiązanymi w linii nazywane są
systemami sekwencyjnego przetwarzania wsadowego 

background image

11/31

Architektura oparta 
na przepływie danych - przykład

filtr

filtr

filtr

filtr

filtr

filtr

filtr

filtr

filtr

filtr

filtr

filtr

filtr

architektura oparta 

na przepływie

architektura 

przetwarzania 

sekwencyjnego

potoki

background image

12/31

Architektura wywołań i powrotów

charakteryzują się możliwością łatwych zmian i 
rozbudowy

rodzaje

architektura głównego programu → stosowana 
często w programach komputerowych, wykorzystuje 
hierarchię sterowania, program główny wywołuje 
pewną liczbę procedur, które mogą wywoływać inne 
procedury – projektowanie strukturalne

architektura zdalnego wywoływania procedur →
program główny i podprogramy rozmieszczone na 
wielu komputerach połączonych w sieć

background image

13/31

Architektura głównego 
programu - przykład

M

a

b

e

d

c

f

h

g

i

j

l

k

n

m

o

p

background image

14/31

Architektura obiektowa

system składa się z:

danych

operacji manipulowania danymi

komunikacja i koordynacja między składnikami 
→ prowadzona poprzez przesyłanie 
komunikatów

background image

15/31

Architektura warstwowa

system zbudowany jest z kilku warstw

warstwy odpowiedzialne są za różne zadania

składniki w warstwie wewnętrznej 
odpowiedzialne są za komunikację z systemem 
operacyjnym

składniki zewnętrzne odpowiedzialne są za 
interfejs użytkownika

składniki warstw pośrednich realizują zadania 
pomocnicze i funkcje programu

background image

16/31

Architektura warstwowa - schemat

warstwa

jądra

warstwa 

narzędzi

warstwa 

aplikacji

warstwa interfejsu 

użytkownika

składniki 

warstwy

warstwy 

architektury

background image

17/31

Analiza wyboru projektu 
architektury

analiza jakościowa metodą ATAM

analiza ilościowa

analiza złożoności architektury

background image

18/31

Analiza jakościowa projektu 
architektury metodą ATAM 

ATAM (architecture trade-off analysis method) → metoda analizy 
kompromisów w architekturze*

czynności analizy, wykonywane (powtarzane)  wielokrotnie:

zebranie scenariuszy użycia – z punktu widzenia użytkownika

ustalenie wymagań, ograniczeń i opisów otoczenia

opis stylów/wzorców architektury wybranych do realizacji ustalonych 
scenariuszy i spełnienia wymagań z perspektywy: modułów (ocena podziału 
zadań i ukrywania danych), procesów (ocena efektywności systemu) i 
przepływu danych (oceny czy architektura odpowiada wymaganiom 
funkcjonalnym)

ocena kryteriów jakości (niezawodność, efektywność, bezpieczeństwo, 
łatwość pielęgnacji, elastyczność, łatwość testowania)

ustalenie wrażliwości kryteriów jakości na cechy stylu architektury (np. 
poprzez wprowadzenie drobnych zmian, kryteria jakości ulegające wtedy 
zmianie to punkty wrażliwości)

porównanie różnych możliwych stylów architektury ze względu na 
wrażliwość na zmiany

* R. Kazman i inni: „The architectural tradeoff analysis method” , Software Engineering Institute, 1998

background image

19/31

Analiza ilościowa projektu 
architektury* - analiza spektrum 

polega na ulokowaniu analizowanego projektu między najlepszymi i 
najgorszymi rozwiązaniami na podstawie oceny poszczególnych 
kryteriów jakości

suma ocen kryteriów jakości implikuje ocenę całkowitą S

oblicza się również ocenę S

w

dla hipotetycznego najsłabszego 

możliwego projektu i ocenę S

b

dla optymalnego projektu

indeks spektrum I

S

=[(S-S

W

)/(S

b

-Sw)]∙100 

wartość I

– określa stopień zbliżenia projektu na optymalnego

indeks usprawnienia I

mp

=I

S1

-I

S2 

w przypadku wprowadzania zmian w 

projekcie, I

mp

>0 oznacza że system S1 jest lepszy niż S2.

* T. Asada i inni: „The quantified design space” , w M.Shaw, D. Garlan :„Software architecture”, Prentice-Hall, 
1996

background image

20/31

Analiza ilościowa projektu architektury* -
indeks wyboru projektu 

d=(N

s

/N

a

)∙100

N

s

– liczba kryteriów spełnionych przez analizowane 

rozwiązanie

N

a

– liczba wszystkich rozważanych kryteriów

im większa wartość d tym analizowany projekt bardziej 
zbliżony jest do ideału

* T. Asada i inni: „The quantified design space” , w M.Shaw, D. Garlan :„Software architecture”, Prentice-Hall, 
1996

background image

21/31

Analiza ilościowa projektu architektury* -
analiza wkładu 

pomaga określić przyczyny pogorszenia wyników będące 
następstwem określonych decyzji projektowych

wykonuje się analizę podobną do QFD (jakość rozwijania 
funkcji, wymagania normalne, oczekiwane i ekscytujące)

identyfikowane są wymagania klienta i mechanizmy ich 
realizacji w postaci cech architektury

dla każdej analizowanej architektury ocenia się (1-10) 
wagę związków między mechanizmami realizacji a 
wymaganiami

* T. Asada i inni: „The quantified design space” , w M.Shaw, D. Garlan :„Software architecture”, Prentice-Hall, 
1996

background image

22/31

Analiza ilościowa projektu architektury* -
złożoność architektury 

ocena ogólnej złożoności architektury na podstawie 
zależności między składnikami architektury

związki ustalane na podstawie przepływu informacji i 
sterowania w programie

zależności*:

dzielenia danych → przypadek korzystania przez dwa składniki z 
tych samych zasobów lub dostarczania danych do tego samego 
składnika

przepływu danych → przypadek gdy moduł x musi zakończyć
działanie przed przekazaniem sterowania do modułu y lub gdy 
moduł x wywołuje moduł y z odpowiednimi parametrami

ograniczająca → ograniczenia na przepływ sterowania (np. 
wykluczenie jednoczesnego wykonywania)

* J. Zhao: „On assessing the complxity of software architectures”, ACM, 1998

background image

23/31

Miary złożoności projektów 
architektury* (1)

złożoność strukturalna modułu 
S(i)=f

2

out

(i)

f

out

(i) – rozgałęzienie wyjściowe modułu i

złożoność danych – stopień skomplikowania interfejsu 
modułu i
D(i)=v(i)/[f

in

(i) +1]

v(i) – liczba zmiennych wejściowych oraz wyjściowych 
modułu i
f

in

(i) – rozgałęzienie wejściowe modułu i

złożoność systemowa
C(i)=S(i)+D(i)

--
rosnące wartości miar → rosnąca złożoność architektury

* D. N. Card, R. L.Glass: „Measuring software design quality”, Prentice-Hall, 1990

background image

24/31

Miary złożoności projektów 
architektury* (2)

miara oparta na liczeniu rozgałęzień wejściowych i 
wyjściowych dla architektury wywołań i powrotów *
HKM = l(i)∙[f

in

(i) + f

out

(i)]

2

l(i) – liczba instrukcji w module i
f

in

(i), f

out

(i) – rozgał. wejściowych/wyjściowych modułu i

miary morfologii (kształtu) architektury **

wielkość = liczba wierzchołków + liczba krawędzi

głębokość – najdłuższa ścieżka między modułami na najwyższymi 
najniższym poziomie

szerokość – największa liczba wierzchołków na jednym poziomie

liczba krawędzi/liczba wierzchołków – gęstość struktury wywołań, 
oszacowanie liczby sprzężeń między modułami

* S. Henry, D. Kafura: „Software structure metrics based on information flow”, IEEE Trans. Software 
Engineering , 1981

** N. Fenton: „Software metrics”, Chapman and Hall, 1991

background image

25/31

Odwzorowanie wymagań dla 
systemu na jego architekturę

wykorzystuje się tu diagramy przepływu danych 
(DFD)

etapy:

określenie rodzaju przepływu informacji (transformacja, 
przepływ transakcji)

określenie granic przepływu informacji

odwzorowanie diagramów DFD na strukturę systemu

zdefiniowanie hierarchii sterowania

ulepszanie struktury na bazie miar jakości

rozwinięcie i uściślenie architektury

background image

26/31

Transformacja

dane zewnętrzne wpływają do systemu i są
przekształcane na format wewnętrzny 
(przepływy wejściowe)

przekształcone wstępnie dane wpływają do 
jądra systemu (centrum transformacji) i zostają
przetwarzane

przetworzone dane przepływają do 
zewnętrznych odbiorców (przepływ wyjściowy)

przepływ zachodzi wzdłuż jednej lub maks. 
kilku prostych ścieżek

background image

27/31

Przepływ transakcji

przepływ danych opisany względem pojedynczego 
elementu danych (transakcja)

przepływ danych realizowany jedną z wielu możliwych 
ścieżek

istnieje jedna wejściowa ścieżka przepływu danych, 
gdzie dane zewnętrzne zamieniane są na transakcję

transakcja podlega analizie, otrzymana wartość
powoduje skierowanie transakcji na jedną z wielu 
możliwych ścieżek akcji

węzeł z którego wychodzą możliwe ścieżki akcji →
centrum przetwarzania transakcji 

diagramy dużych systemów mogą zawierać zarówno 
elementy przepływu transakcji jak i transformacji

background image

28/31

Odwzorowanie transformacji –
czynności projektowe

przegląd podstawowego modelu systemu (DFD zerowego poziomu, 
analiza specyfikacji systemu i specyfikacji wymagań)

przegląd i uściślenie DFD – uzupełnienie szczegółami

określenie czy DFD ma cechy transformacji czy przepływu transakcji 
(mogą występować oba)

określenie granic centrum transformacji przez zaznaczenie granic 
przepływów wejściowych i wyjściowych

faktoryzacja 1. poziomu – zdefiniowanie hierarchii architektury w której 
moduły na górze hierarchii mają cechy sterujące, moduły na dole 
hierarchii przetwarzają dane a moduły pośrednie częściowo sterują a 
częściowo przetwarzają dane

faktoryzacja 2. poziomu – odwzorowanie wszystkich procedur  z DFD 
na moduły w strukturze systemu

uściślenie wstępnej wersji architektury w oparciu o zasady poprawy 
jakości oprogramowania

background image

29/31

Odwzorowanie przepływu 
transakcji – czynności projektowe

przegląd podstawowego modelu systemu 

przegląd i uściślenie DFD 

określenie czy DFD ma cechy transformacji czy przepływu 
transakcji (mogą występować oba)

określenie granic przetwarzania transakcji i rodzaju 
przepływu na ścieżkach akcji

odwzorowanie DFD na strukturę systemu odpowiednią do 
przetwarzania transakcji (faktoryzacja 1. poziomu) –
zdefiniowanie gałęzi wejściowej i rozdzielającej 

faktoryzacja i uściślanie struktury przetwarzania transakcji i 
struktury ścieżek akcji

udoskonalanie wstępnej wersji architektury w oparciu o 
zasady poprawy jakości oprogramowania

background image

30/31

Uściślanie projektu architektury

wykonywane po przygotowaniu i udoskonaleniu 
struktury programu

obejmuje czynności

opis działania modułów (sposób przetwarzania danych)

opis interfejsów modułów (zewnętrznych i wewnętrznych)

definicja lokalnych i globalnych struktur danych

określenie ograniczeń i limitów projektu (typy danych, rozmiar, 
wartości skrajne, sytuacje nie przewidziane w projekcie)

przegląd elementów projektu (zwrócenie uwagi na wymaganie 
stawiane systemowi, łatwość testowania, pielęgnacji, itp.)

analiza zasadności udoskonalenia projektu

background image

31

Dziękuję za uwagę

źródło: „Praktyczne podejście do inżynierii oprogramowania”, R.S. Pressman