16.07.2014 Views

Architektura oprogramowania w praktyce ... - Czytelnia - Helion

Architektura oprogramowania w praktyce ... - Czytelnia - Helion

Architektura oprogramowania w praktyce ... - Czytelnia - Helion

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Idź do<br />

• Spis treści<br />

• Przykładowy rozdział<br />

• Skorowidz<br />

Katalog książek<br />

• Katalog online<br />

• Zamów drukowany<br />

katalog<br />

Twój koszyk<br />

• Dodaj do koszyka<br />

Cennik i informacje<br />

• Zamów informacje<br />

o nowościach<br />

• Zamów cennik<br />

<strong>Czytelnia</strong><br />

• Fragmenty książek<br />

online<br />

Kontakt<br />

<strong>Helion</strong> SA<br />

ul. Kościuszki 1c<br />

44-100 Gliwice<br />

tel. 32 230 98 63<br />

e-mail: helion@helion.pl<br />

© <strong>Helion</strong> 1991–2011<br />

<strong>Architektura</strong><br />

<strong>oprogramowania</strong><br />

w <strong>praktyce</strong>. Wydanie II<br />

Autorzy: Len Bass, Paul Clements, Rick Kazman<br />

Tłumaczenie: Paweł Koronkiewicz, Tomasz Walczak<br />

ISBN: 978-83-246-3302-9<br />

Tytuł oryginału: Software Architecture in Practice, Second Edition<br />

Format: 172×245, stron: 464<br />

Twórz doskonałe projekty architektoniczne <strong>oprogramowania</strong>!<br />

•Czym charakteryzuje się dobra architektura <strong>oprogramowania</strong>?<br />

•Jak przebiega proces jej projektowania?<br />

•Jak ją dokumentować?<br />

Współczesne systemy informatyczne to zaawansowane, skomplikowane mechanizmy, składające<br />

się z wielu współdziałających ze sobą komponentów. Ich wyodrębnienie, a także określenie<br />

sposobu komunikacji i interakcji między poszczególnymi elementami, jest nie lada wyzwaniem<br />

dla architektów. Od ich decyzji zależy, czy system uda się zrealizować, czy będzie on efektywny,<br />

stabilny i łatwy w utrzymaniu.<br />

Na szczęście istnieją metodologie, narzędzia oraz sposoby analizy efektów ułatwiające<br />

i porządkujące cały ten proces. W tej książce znajdziesz wszystko, o czym trzeba pamiętać przy<br />

projektowaniu <strong>oprogramowania</strong>. Poznasz sposoby projektowania z wykorzystaniem Metody<br />

Analizy Kompromisów w Architekturze (ATAM) oraz oceniania aspektów finansowych przy użyciu<br />

Metody Analizy Kosztów i Korzyści (CBAM). Autorzy przedstawią wiele studiów przypadków, które<br />

pozwolą Ci na zapoznanie się z rzeczywistymi problemami i ich rozwiązaniami. Ponadto nauczysz<br />

się stosować język UML do wizualnej reprezentacji architektury systemu oraz zobaczysz, jak<br />

przygotować dobrą dokumentację projektu. Książka ta sprawdzi się idealnie w rękach każdego<br />

architekta <strong>oprogramowania</strong>.<br />

•Proces wytwarzania <strong>oprogramowania</strong> a cykl biznesowy architektury<br />

•Wzorce architektury<br />

•Struktury i perspektywy architektury<br />

•Określenie i uzyskanie atrybutów jakościowych<br />

•Projektowanie architektury pod kątem wysokiej dostępności<br />

•Proces projektowania architektury<br />

•Dokumentowanie architektury <strong>oprogramowania</strong><br />

•Język UML<br />

•Metody rekonstrukcji architektury i inżynierii odwrotnej<br />

•Metoda Analizy Kompromisów w Architekturze (ATAM)<br />

•Metoda Analizy Kosztów i Korzyści (CBAM)<br />

•Ponowne wykorzystanie elementów architektury<br />

•Dokumentowanie architektury<br />

Poznaj najlepsze metodologie projektowania architektury!


Spis treci<br />

Przedmowa ................................................................................................................9<br />

Podzikowania ........................................................................................................13<br />

Wstp .......................................................................................................................15<br />

I. Wizja architektury .............................................................................. 21<br />

1. Cykl biznesowy architektury ................................................................................23<br />

1.1. Skd si bior architektury? .................................................................................................................26<br />

1.2. Proces wytwarzania <strong>oprogramowania</strong> a cykl biznesowy architektury .............................................31<br />

1.3. Czym si charakteryzuje dobra architektura? ....................................................................................33<br />

1.4. Podsumowanie .......................................................................................................................................35<br />

1.5. Pytania do dyskusji ...............................................................................................................................35<br />

2. Czym jest architektura <strong>oprogramowania</strong>? ..........................................................37<br />

2.1. Czym jest, a czym nie jest architektura <strong>oprogramowania</strong>? ...............................................................37<br />

2.2. Inne perspektywy ..................................................................................................................................40<br />

2.3. Wzorce architektury, modele referencyjne i architektury referencyjne ..........................................41<br />

2.4. Dlaczego architektura jest tak wana? ................................................................................................43<br />

2.5. Struktury i perspektywy architektury .................................................................................................50<br />

2.6. Podsumowanie .......................................................................................................................................56<br />

2.7. Literatura ...............................................................................................................................................57<br />

2.8. Pytania do dyskusji ...............................................................................................................................59<br />

3. System awioniki A-7E — studium wykorzystania struktur architektury .......61<br />

3.1. Pooenie w cyklu biznesowym architektury .....................................................................................62<br />

3.2. Wymagania i atrybuty jakociowe .......................................................................................................62<br />

3.3. <strong>Architektura</strong> systemu awioniki A-7E ..................................................................................................67<br />

3.4. Podsumowanie .......................................................................................................................................78<br />

3.5. Literatura ...............................................................................................................................................79<br />

3.6. Pytania do dyskusji ...............................................................................................................................79


4 SPIS TRECI<br />

II. Tworzenie architektury ................................................................... 81<br />

4. Atrybuty jakociowe ..............................................................................................83<br />

4.1. <strong>Architektura</strong> a funkcje systemu ...........................................................................................................84<br />

4.2. <strong>Architektura</strong> a atrybuty jakociowe .....................................................................................................84<br />

4.3. Atrybuty jakociowe systemu ..............................................................................................................85<br />

4.4. Scenariusze atrybutów jakociowych w <strong>praktyce</strong> ..............................................................................89<br />

4.5. Inne atrybuty jakociowe systemu .....................................................................................................103<br />

4.6. Biznesowe atrybuty jakociowe .........................................................................................................103<br />

4.7. Atrybuty jakociowe architektury .....................................................................................................104<br />

4.8. Podsumowanie .....................................................................................................................................105<br />

4.9. Literatura .............................................................................................................................................105<br />

4.10. Pytania do dyskusji ...........................................................................................................................106<br />

5. Uzyskiwanie atrybutów jakociowych ..............................................................107<br />

5.1. Taktyki atrybutów jakociowych .......................................................................................................107<br />

5.2. Taktyki dostpnoci ............................................................................................................................109<br />

5.3. Taktyki modyfikowalnoci ................................................................................................................112<br />

5.4. Taktyki wydajnoci .............................................................................................................................118<br />

5.5. Taktyki bezpieczestwa ......................................................................................................................122<br />

5.6. Taktyki testowalnoci .........................................................................................................................124<br />

5.7. Taktyki funkcjonalnoci ....................................................................................................................126<br />

5.8. Taktyki atrybutów jakociowych a wzorce architektury .................................................................128<br />

5.9. Wzorce i style architektury ................................................................................................................129<br />

5.10. Podsumowanie ...................................................................................................................................130<br />

5.11. Pytania do dyskusji ...........................................................................................................................131<br />

5.12. Literatura ...........................................................................................................................................131<br />

6. Kontrola ruchu lotniczego<br />

— projektowanie pod ktem wysokiej dostpnoci ........................................133<br />

6.1. Powizania w cyklu biznesowym architektury ................................................................................135<br />

6.2. Wymagania i atrybuty jakociowe .....................................................................................................135<br />

6.3. <strong>Architektura</strong> systemu .........................................................................................................................138<br />

6.4. Podsumowanie .....................................................................................................................................152<br />

6.5. Literatura .............................................................................................................................................152<br />

6.6. Pytania do dyskusji .............................................................................................................................153<br />

7. Projektowanie architektury ................................................................................155<br />

7.1. <strong>Architektura</strong> w cyklu ycia <strong>oprogramowania</strong> ...................................................................................155<br />

7.2. Projektowanie architektury ................................................................................................................157<br />

7.3. Ksztatowanie struktury zespoów ....................................................................................................167<br />

7.4. Tworzenie systemu szkieletowego .....................................................................................................170<br />

7.5. Podsumowanie .....................................................................................................................................171<br />

7.6. Literatura .............................................................................................................................................172<br />

7.7. Pytania do dyskusji .............................................................................................................................173<br />

8. Symulator lotniczy — architektura<br />

ukierunkowana na atwo integracji ................................................................175<br />

8.1. Powizania w cyklu biznesowym architektury ................................................................................176<br />

8.2. Wymagania funkcjonalne i jakociowe .............................................................................................177<br />

8.3. <strong>Architektura</strong> ........................................................................................................................................180


SPIS TRECI 5<br />

8.4. Podsumowanie .....................................................................................................................................193<br />

8.5. Literatura .............................................................................................................................................195<br />

8.6. Pytania do dyskusji .............................................................................................................................195<br />

9. Dokumentacja architektury <strong>oprogramowania</strong> .................................................197<br />

9.1. Funkcje dokumentacji ........................................................................................................................198<br />

9.2. Perspektywy architektury ..................................................................................................................200<br />

9.3. Wybieranie perspektyw architektury ................................................................................................201<br />

9.4. Opisywanie perspektywy architektury ..............................................................................................202<br />

9.5. Ogólna cz dokumentacji ................................................................................................................208<br />

9.6. Zunifikowany jzyk modelowania — UML .....................................................................................211<br />

9.7. Podsumowanie .....................................................................................................................................220<br />

9.8. Literatura .............................................................................................................................................221<br />

9.9. Pytania do dyskusji .............................................................................................................................221<br />

10. Rekonstrukcja architektury <strong>oprogramowania</strong> .................................................223<br />

10.1. Wprowadzenie ...................................................................................................................................223<br />

10.2. Ekstrakcja informacji ........................................................................................................................226<br />

10.3. Budowanie bazy danych ...................................................................................................................228<br />

10.4. Scalanie informacji ............................................................................................................................230<br />

10.5. Rekonstrukcja ....................................................................................................................................232<br />

10.6. Przykad .............................................................................................................................................237<br />

10.7. Podsumowanie ...................................................................................................................................245<br />

10.8. Literatura ...........................................................................................................................................245<br />

10.9. Pytania do dyskusji ...........................................................................................................................246<br />

III. Analiza i weryfikacja architektury .............................................. 247<br />

11. ATAM — kompleksowa metoda analizy architektury ...................................253<br />

11.1. Uczestnicy procesu ATAM ..............................................................................................................253<br />

11.2. Materiay wyjciowe procesu ATAM ..............................................................................................255<br />

11.3. Fazy procesu ATAM .........................................................................................................................256<br />

11.4. Studium przypadku — weryfikacja metod ATAM systemu Nightingale .................................267<br />

11.5. Podsumowanie ...................................................................................................................................281<br />

11.6. Literatura ...........................................................................................................................................282<br />

11.7. Pytania do dyskusji ...........................................................................................................................282<br />

12. CBAM — ilociowe podejcie do decyzji konstrukcyjnych ...........................283<br />

12.1. Kontekst podejmowania decyzji ......................................................................................................284<br />

12.2. Podstawy metody CBAM .................................................................................................................285<br />

12.3. Stosowanie metody CBAM ..............................................................................................................289<br />

12.4. Studium przypadku — projekt ECS w agencji NASA ..................................................................291<br />

12.5. Rezultaty analizy CBAM ..................................................................................................................298<br />

12.6. Podsumowanie ...................................................................................................................................299<br />

12.7. Literatura ...........................................................................................................................................299<br />

12.8. Pytania do dyskusji ...........................................................................................................................299<br />

13. Wspódziaanie w World Wide Web — studium przypadku ..........................301<br />

13.1. Powizania z cyklem biznesowym architektury ............................................................................301<br />

13.2. Wymagania funkcjonalne i atrybuty jakociowe ...........................................................................303<br />

13.3. <strong>Architektura</strong> ......................................................................................................................................307<br />

13.4. Nowy cykl ABC — ewolucja architektur handlu elektronicznego w WWW .............................313


6 SPIS TRECI<br />

13.5. Wymagania jakociowe .....................................................................................................................317<br />

13.6. Wspóczesny cykl biznesowy architektury .....................................................................................318<br />

13.7. Podsumowanie ...................................................................................................................................319<br />

13.8. Literatura ...........................................................................................................................................320<br />

13.9. Pytania do dyskusji ...........................................................................................................................321<br />

IV. Od jednego systemu do wielu ...................................................... 323<br />

14. Rodziny produktów — ponowne uycie elementów architektury .................325<br />

14.1. Wprowadzenie ...................................................................................................................................325<br />

14.2. Co sprawia, e linia <strong>oprogramowania</strong> jest udana? .........................................................................326<br />

14.3. Okrelanie zakresu ............................................................................................................................328<br />

14.4. Architektury linii produktów ..........................................................................................................331<br />

14.5. Co sprawia, e rozwijanie linii <strong>oprogramowania</strong> jest trudne? ......................................................334<br />

14.6. Podsumowanie ...................................................................................................................................337<br />

14.7. Literatura ...........................................................................................................................................337<br />

14.8. Pytania do dyskusji ...........................................................................................................................337<br />

15. CelsiusTech — studium przypadku rodziny produktów ................................339<br />

15.1. Zwizki z cyklem ABC .....................................................................................................................339<br />

15.2. Wymagania i atrybuty jakociowe ...................................................................................................355<br />

15.3. Rozwizanie architektoniczne .........................................................................................................357<br />

15.4. Podsumowanie ...................................................................................................................................364<br />

15.5. Literatura ...........................................................................................................................................365<br />

15.6. Pytania do dyskusji ...........................................................................................................................365<br />

16. J2EE/EJB. Studium przypadku<br />

— standardowa dla brany infrastruktura obliczeniowa ................................367<br />

16.1. Zwizki z cyklem biznesowym architektury ..................................................................................368<br />

16.2. Wymagania i atrybuty jakociowe ...................................................................................................368<br />

16.3. Rozwizanie architektoniczne .........................................................................................................371<br />

16.4. Decyzje zwizane z wdraaniem systemu .......................................................................................383<br />

16.5. Podsumowanie ...................................................................................................................................388<br />

16.6. Literatura ...........................................................................................................................................388<br />

16.7. Pytania do dyskusji ...........................................................................................................................388<br />

17. <strong>Architektura</strong> Luther. Studium przypadku<br />

— aplikacje przenone oparte na J2EE .............................................................389<br />

17.1. Zwizki z cyklem ABC .....................................................................................................................390<br />

17.2. Wymagania i atrybuty jakociowe ...................................................................................................393<br />

17.3. Rozwizanie architektoniczne .........................................................................................................396<br />

17.4. Jak w architekturze Luther zrealizowano cele z obszaru jakoci? ...............................................410<br />

17.5. Podsumowanie ...................................................................................................................................410<br />

17.6. Literatura ...........................................................................................................................................411<br />

17.7. Pytania do dyskusji ...........................................................................................................................411<br />

18. Budowanie systemów z gotowych komponentów ............................................413<br />

18.1. Wpyw komponentów na architektur ...........................................................................................415<br />

18.2. Niedopasowanie architektury ..........................................................................................................416<br />

18.3. Budowa z gotowych komponentów jako proces poszukiwa .......................................................421


SPIS TRECI 7<br />

18.4. Przykad — system ASEILM ..........................................................................................................424<br />

18.5. Podsumowanie ...................................................................................................................................433<br />

18.6. Literatura ...........................................................................................................................................433<br />

19. Przyszo architektury <strong>oprogramowania</strong> .........................................................435<br />

19.1. Cykl biznesowy architektury ...........................................................................................................436<br />

19.2. Budowa architektury ........................................................................................................................437<br />

19.3. <strong>Architektura</strong> w cyklu ycia <strong>oprogramowania</strong> .................................................................................438<br />

19.4. Wpyw komponentów komercyjnych .............................................................................................439<br />

19.5. Podsumowanie ...................................................................................................................................441<br />

Skróty .....................................................................................................................443<br />

Bibliografia ............................................................................................................449<br />

Skorowidz ..............................................................................................................455


5<br />

Uzyskiwanie<br />

atrybutów jakociowych<br />

Felix Bachmann, Mark Klein i Bill Wood 1<br />

W pewnym steniu kada dobra jako staje si szkodliwa.<br />

— Ralph Waldo Emerson<br />

W rozdziale 4. omówilimy róne atrybuty jakociowe systemu. Naszym podstawowym narzdziem<br />

byy scenariusze. Dokadne zrozumienie znaczenia kadego z atrybutów pozwala formuowa<br />

praktyczne wymagania jakociowe. Wci nie jest to jednak rozwizaniem problemu<br />

tego, jak zapewni, by system faktycznie posiada t czy inn cech. Temu wanie powicony<br />

jest niniejszy rozdzia. Dla kadego z szeciu atrybutów jakociowych opisywanych w rozdziale<br />

4. przedstawimy praktyczne wskazówki, które mog by istotn pomoc w odpowiednim konstruowaniu<br />

architektury. Nie próbujemy przy tym odnie si do wszystkich moliwych cech<br />

systemu. Warto zwróci uwag, e analogiczne porady dotyczce zapewniania atwoci integracji<br />

zostan przedstawione w rozdziale 8.<br />

W tym rozdziale interesuje nas to, w jaki sposób architekt zapewnia uzyskanie rónych<br />

cech jakociowych. Wymagania jakociowe opisuj reakcje <strong>oprogramowania</strong> niezbdne do realizacji<br />

celów biznesowych. W centrum naszego zainteresowania s techniki, z których moe<br />

skorzysta architekt, by utworzy odpowiedni projekt, stosujc pewne wzorce konstrukcyjne,<br />

wzorce architektury i strategie architektury — bdziemy nazywa je taktykami atrybutów jakociowych.<br />

Przykadowo celem biznesowym moe by przygotowanie linii produktów. rodkiem<br />

do osignicia tego celu jest zapewnienie wymiennoci pewnych klas funkcji.<br />

Przed podjciem decyzji o zastosowaniu pewnego systemu wzorców architekt powinien<br />

rozway podane taktyki modyfikowalnoci. Staj si one podstaw podejmowanych wyborów.<br />

Wzorzec lub strategia architektury to zbiór pewnych taktyk. Temat tego rozdziau to powizania<br />

midzy wymaganiami jakociowymi (opisanymi w rozdziale 4.) a decyzjami dotyczcymi<br />

architektury.<br />

5.1. Taktyki atrybutów jakociowych<br />

Co daje projektowi przenono, du wydajno czy atwo integracji? Kada z tych cech ma<br />

swoje ródo w kluczowych decyzjach konstrukcyjnych. W tym rozdziale przyjrzymy si dokadniej<br />

tym decyzjom. Bdziemy operowa pojciem taktyk atrybutów jakociowych (ang.<br />

1 Pracownicy Instytutu Inynierii Oprogramowania Carnegie Mellon University.


108 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

quality attribute tactics). Taktyka pewnej cechy to pewien wybór o znaczcym wpywie na kontrol<br />

uzyskiwan nad danym atrybutem. Zbiór taktyk nazywamy strategi architektury (ang. architectural<br />

strategy). Zajmiemy si nimi w rozdziale 12. Z kolei wzorzec architektury (ang. architectural<br />

pattern) to poczenie taktyk w sposób, który opiszemy dokadniej w podrozdziale 5.8.<br />

Projekt systemu to zbiór decyzji konstrukcyjnych. Niektóre z nich pozwalaj uzyska<br />

wpyw na poziom, w jakim system uzyskuje pewne atrybuty jakociowe. Inne prowadz do<br />

uzyskania funkcji systemu. W tym rozdziale sprowadzamy decyzje dotyczce atrybutów jako-<br />

ciowych do pojcia taktyk. Ich rol ilustruje rysunek 5.1. Taktyki te nie s bynajmniej nowo-<br />

ci. Architekci stosuj je od lat, a my podejmujemy jedynie prób ich identyfikacji i opisu.<br />

Nie jest naszym celem prezentowanie nowych metod pracy, a jedynie systematyzacja dziaa<br />

znanych z praktyki.<br />

Rysunek 5.1. Taktyki wyznaczaj kontrol nad reakcj na bodziec<br />

Kada taktyka jest dla architekta pewn moliwoci. Przykadowo jedna z taktyk wie si<br />

z wprowadzeniem redundancji w celu zwikszenia dostpnoci systemu. Jest to jedna z moliwoci<br />

zwikszenia dostpnoci, ale w adnym wypadku jedyna. Zwikszanie dostpnoci drog<br />

redundancji wie si zazwyczaj z koniecznoci wprowadzenia mechanizmów synchronizacji<br />

(by kopia nadawaa si do uytku w przypadku zakócenia dostpnoci oryginau). W tym prostym<br />

przykadzie wida dwie podstawowe zalenoci:<br />

1. Taktyka ogólniejsza podlega specjalizacji. Zidentyfikowalimy ogóln taktyk redundancji.<br />

Mona jednak mówi o nadmiarowoci danych (w bazie) lub nadmiarowoci oblicze<br />

(w osadzonym systemie sterowania). Kade z tych podej jest pewn taktyk. Kade z nich<br />

mona ucila dalej, definiujc precyzyjniej okrelone taktyki. Dla kadego atrybutu jako-<br />

ciowego mona wskaza pewn hierarchi taktyk.<br />

2. Wzorce to praktyczne zbiory taktyk. Signicie po wzorzec zapewniajcy dostpno bdzie<br />

prawdopodobnie równoznaczne z poczeniem zastosowania taktyki redundancji i taktyki synchronizacji.<br />

Co wicej, we wzorcu pojawi si zapewne jeszcze precyzyjniej okrelone wersje tych<br />

taktyk. Na kocu tego rozdziau przedstawimy przykadowy opis wzorca projektowego w kategoriach<br />

taktyk.<br />

Opis taktyk porzdkujemy jako hierarchie powizane z kolejnymi atrybutami jakociowymi.<br />

Naley pamita, e adna z tych hierarchii nie jest kompletna. Moliwo stworzenia nowych<br />

taktyk istnieje zawsze, mona wic jedynie mówi o pewnych przykadach. Dla kadego z szeciu<br />

atrybutów opisanych w rozdziale 4. (dostpno, modyfikowalno, wydajno, bezpieczestwo, testowalno<br />

i funkcjonalno) przedstawiamy zbiór typowych rozwiza. Dla kadego proponujemy<br />

pewn hierarchi taktyk, która — w poczeniu z krótkim omówieniem zagadnienia —<br />

powinna by dla architekta znaczc pomoc w poszukiwaniu wasnej cieki.


5.2. TAKTYKI DOSTPNOCI 109<br />

5.2. Taktyki dostpnoci<br />

Przypomnijmy sownictwo zwizane z dostpnoci, którym operowalimy w rozdziale 4. Awaria<br />

nastpuje wtedy, gdy system przestaje zapewnia usug wynikajc z jego specyfikacji; jest<br />

to widoczne dla uytkowników. Awari moe spowodowa uszkodzenie (lub pewne poczenie<br />

uszkodze). Wanym aspektem dostpnoci jest przywrócenie funkcjonowania systemu, czyli<br />

jego naprawa. Taktyki opisywane w tym podrozdziale maj zabezpieczy przed awari systemu<br />

w przypadku uszkodzenia, a przynajmniej ograniczy jego skutki i umoliwi napraw. Ilustruje<br />

to rysunek 5.2.<br />

Rysunek 5.2. Cel taktyk dostpnoci<br />

Wiele omawianych taktyk zapewnianych jest przez standardowe rodowiska wykonawcze, takie<br />

jak system operacyjny, serwer aplikacji lub system zarzdzania bazami danych. Nie umniejsza<br />

to znaczenia dobrego zrozumienia stosowanej taktyki, poniewa efekty kadej z nich maj istotne<br />

znaczenie przy projektowaniu i ocenie projektu. Kada technika zwizana z dostpnoci wie<br />

si z pewnym rodzajem redundancji, monitorowaniem stanu w celu wykrycia awarii i schematem<br />

przywracania stanu systemu. Monitorowanie i przywracanie mog by zautomatyzowane lub nie.<br />

Rozpoczniemy od omówienia zagadnie zwizanych z trzema podstawowymi skadnikami dostpnoci:<br />

wykrywaniem uszkodze, przywracaniem stanu i zapobieganiem uszkodzeniom.<br />

Wykrywanie uszkodze<br />

Trzy szeroko stosowane taktyki wykrywania uszkodze to: ping/echo, puls i wyjtki.<br />

Ping/echo. Pewien komponent wysya specjalny komunikat i oczekuje, e komponent monitorowany<br />

odele w predefiniowanym czasie „echo” jego sygnau. Mechanizm taki mona<br />

zastosowa w grupie komponentów wspólnie odpowiadajcych za pewne zadanie w systemie.<br />

Jest te czsto wykorzystywany przez klienty do monitorowania parametrów wydajno-<br />

ciowych serwera i cieki komunikacyjnej. Mechanizmy wykrywania uszkodze mona<br />

czy w hierarchie, w których mechanizm najniszego poziomu monitoruje procesy pracujce<br />

na tym samym procesorze, a mechanizm na wyszym poziomie monitoruje stan<br />

kontrolerów na niszym poziomie. Pozwala to unikn obciania kanau komunikacyjnego<br />

komunikacj zdalnego monitora z wszystkimi procesami.<br />

Puls. Komponent monitorowany wysya regularnie komunikat pulsu do komponentu monitorujcego.<br />

Gdy komunikat pulsu nie zostaje odebrany, nastpuje powiadomienie komponentu<br />

odpowiedzialnego za usunicie uszkodzenia. Komunikaty pulsu mog zawiera dane. Rol<br />

pulsu moe peni na przykad przesyany okresowo dziennik pracy bankomatu. Komunikat<br />

taki jest jednoczenie komunikatem zawierajcym przekazywane do przetwarzania dane.<br />

Wyjtki. Jedn z metod monitorowania uszkodze jest przechwytywanie wyjtków, jak te<br />

zgaszane przy wystpieniu bdów nalecych do klas wymienionych w przykadzie<br />

w rozdziale 4. Procedura obsugi wyjtku jest zazwyczaj wykonywana w tym samym procesie,<br />

w którym zosta on wygenerowany.


110 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

Taktyki ping/echo i pulsu bazuj na odrbnych procesach, mechanizm wyjtków dziaa w obrbie<br />

jednego procesu. Procedura obsugi wyjtku przeprowadza zazwyczaj transformacj semantyczn<br />

uszkodzenia do postaci umoliwiajcej jego przetwarzanie.<br />

Przywracanie stanu systemu<br />

Na przywracanie stanu systemu skada si przygotowanie do przywracania i waciwa naprawa.<br />

Poniej przedstawiamy wybór taktyk przygotowania do przywracania i naprawy systemu.<br />

Gosowanie. Procesy pracujce na nadmiarowych procesorach przyjmuj takie same dane<br />

wejciowe i obliczaj prost warto wyjciow, która jest przekazywana do mechanizmu<br />

gosowania. Jeeli mechanizm ten wykryje, e zachowanie jednego procesora odbiega od<br />

wikszoci, proces ten zostaje uznany za uszkodzony. Przy gosowaniu moe by stosowany<br />

algorytm „rzdów wikszoci”, „komponentu preferowanego” lub inny. Jest to metoda<br />

stosowana do wykrywania niepoprawnego dziaania algorytmów i uszkodze procesorów,<br />

czsto spotykana w systemach sterowania. Jeeli wszystkie procesory pracuj wedug tych<br />

samych algorytmów, redundancja pozwala wykry jedynie uszkodzenie procesora, ale nie<br />

chroni przed bdami algorytmów. Jeeli konsekwencje awarii s dotkliwe (na przykad<br />

utrata ycia), zrónicowanie nadmiarowych komponentów moe by bardzo due.<br />

Skrajnym przykadem zrónicowania jest przekazanie pracy nad kadym z nadmiarowych<br />

komponentów innemu zespoowi ze wskazaniem innej platformy. Nieco mniej wyszukanym<br />

podejciem jest opracowywanie wersji tego samego skadnika pracujcych na<br />

rónych platformach. Wprowadzanie zrónicowa tego rodzaju jest zawsze kosztowne —<br />

zarówno na pocztku, jak i przy póniejszej konserwacji systemu, wic stosuje si je tylko<br />

w wyjtkowych przypadkach, na przykad w mechanizmach awioniki. Mechanizm gosowania<br />

jest zazwyczaj stosowany w systemach sterowania, w których porównywane wyjcia<br />

s proste i atwe w klasyfikacji jako zgodne lub nie, obliczenia maj charakter cykliczny,<br />

a wszystkie nadmiarowe komponenty mog otrzymywa równowane dane wejciowe z czujników.<br />

Taktyka ta nie wie si z przerw w pracy, poniewa system gosowania moe<br />

dziaa take po wykryciu awarii. Znan odmian tego podejcia jest metoda Simplex, polegajca<br />

na korzystaniu z wyników komponentu „preferowanego”, dopóki nie odbiegaj one<br />

od przesyanych przez komponent „zaufany”. W przypadku awarii nastpuje przeczenie<br />

na dane z komponentu zaufanego. Synchronizacja nadmiarowych komponentów nastpuje<br />

automatycznie, poniewa zakada si, e wszystkie pracuj jednoczenie z tym samym<br />

zespoem wej.<br />

Redundancja aktywna (gorcy restart). Wszystkie nadmiarowe komponenty reaguj na<br />

zdarzenia jednoczenie. S wic w tym samym stanie. Wykorzystywana jest odpowied<br />

jednego komponentu (zazwyczaj pierwszego, który odpowie), a pozostae s odrzucane.<br />

W przypadku wystpienia uszkodze przerwa w pracy systemów stosujcych t taktyk trwa<br />

zazwyczaj milisekundy, poniewa komponent zapasowy jest aktywny, a jedyny potrzebny<br />

czas to czas przeczania. Redundancja aktywna to metoda czsto stosowana w konfiguracjach<br />

klient-serwer, takich jak systemy zarzdzania bazami danych, gdzie szybkie reakcje<br />

na wystpienie uszkodzenia s niezbdne. W systemie rozproszonym o wysokiej dostpnoci<br />

nadmiarowo moe dotyczy cieek komunikacyjnych. Przykadowo podane moe by zastosowanie<br />

sieci LAN o wielu równolegych ciekach i umieszczenie kadego nadmiarowego<br />

komponentu na odrbnej ciece. Wówczas pojedyncza awaria mostu lub cieki nie<br />

powoduje, e wszystkie skadniki systemu staj si niedostpne.<br />

Synchronizacja polega na zapewnieniu, e wszystkie komunikaty przesyane do komponentu<br />

z redundancj s przesyane do wszystkich jego nadmiarowych wersji. Jeeli komunikacja<br />

moe ulec zakóceniu (ze wzgldu na przecione lub zawodne cza), przywraca-


5.2. TAKTYKI DOSTPNOCI 111<br />

nie stanu moe umoliwia niezawodny protokó transmisji. Protokó taki wprowadza<br />

wymóg przesania potwierdzenia przez wszystkich odbiorców. Towarzyszy temu pewna<br />

forma kontroli integralnoci komunikacji, na przykad suma kontrolna. Jeeli nadawca nie<br />

moe stwierdzi, e wszyscy odbiorcy otrzymali komunikat, to ponawia on prób przesania<br />

do komponentów, które nie potwierdzaj odbioru. Ponowne wysyanie nieodebranych<br />

komunikatów (czasem z uyciem rónych cieek komunikacji) jest kontynuowane do<br />

chwili, gdy algorytm nadawcy pozwoli uzna odbiorc za wyczonego.<br />

Redundancja pasywna (ciepy restart, podwójna redundancja, potrójna redundancja).<br />

Jeden komponent (komponent gówny) reaguje na zdarzenia i informuje pozostae komponenty<br />

(komponenty awaryjne) o wymaganych aktualizacjach stanu. Gdy nastpuje awaria,<br />

system musi przede wszystkim zweryfikowa, czy kopia zapasowa jest wystarczajco aktualna,<br />

by mona byo wznowi udostpnianie usug. To podejcie take stosuje si w systemach<br />

sterowania, przede wszystkim wtedy, gdy dane wejciowe s pobierane z kanaów komunikacyjnych<br />

lub czujników, które musz zosta przeczone w przypadku awarii na korzystanie<br />

z komponentów awaryjnych. W rozdziale 6., w którym jest omawiany przykad systemu<br />

kontroli ruchu lotniczego, spotkamy si z t taktyk w <strong>praktyce</strong>. W tym przypadku komponent<br />

pomocniczy decyduje o tym, kiedy przej zadania komponentu gównego, ale czsto<br />

mona spotka si z tym, e za t decyzj odpowiadaj inne skadniki. O tym, czy taktyka<br />

spenia swoje zadanie, w duej mierze decyduje zdolno komponentów awaryjnych do poprawnego<br />

przejcia pracy. Okresowe wymuszanie przeczania — na przykad raz na dob<br />

lub raz na tydzie — zwiksza dostpno systemu. Niektóre systemy baz danych wymuszaj<br />

przeczenie pamici masowej dla kadego nowego elementu danych. Nowy element<br />

jest zapisywany w stronie shadow, a jej wczeniejsza wersja staj si kopi zapasow. W takich<br />

rozwizaniach przerwa w pracy moe zosta skrócona do kilku sekund.<br />

Za synchronizacj odpowiada komponent gówny, który moe zagwarantowa j poprzez<br />

atomowe emisje do komponentów awaryjnych.<br />

Zapas. Przygotowanie zapasowej platformy obliczeniowej przeznaczonej do caociowego<br />

zastpowania grupy zrónicowanych komponentów. Po awarii musi ona zosta uruchomiona,<br />

a jej stan zainicjalizowany. Uzyskanie waciwego stanu zapasu umoliwia regularne zapisywanie<br />

punktów kontrolnych systemu i zmian stanu z uyciem urzdzenia zapewniajcego<br />

trwae skadowanie danych. Praktyczn form zastosowania tej taktyki jest zapewnianie zapasowej<br />

stacji roboczej, z której moe korzysta uytkownik w przypadku awarii jego gównego<br />

stanowiska pracy. Przerw w pracy mierzy si zazwyczaj w minutach.<br />

Niektóre taktyki uwzgldniaj wznawianie pracy komponentu — naprawiony po awarii<br />

komponent moe zosta ponownie wprowadzony do systemu. Przykady takich taktyk<br />

to: powielanie, resynchronizacja stanu i odwoywanie.<br />

Powielanie (ang. shadow operation). Komponent, który wczeniej uleg awarii, moe przez<br />

pewien czas pracowa w „trybie powielania” w celu weryfikacji, e jego dziaanie jest<br />

zgodne z dziaaniem komponentów, których praca nie ulega zakóceniu.<br />

Resynchronizacja stanu. Taktyki redundancji aktywnej i pasywnej wymagaj, by przywracany<br />

komponent zosta przed wczeniem do usugi odpowiednio zaktualizowany. Podejcie<br />

do aktualizacji zaley od dopuszczalnego czasu przerwy w pracy, rozmiaru aktualizacji i liczby<br />

niezbdnych do jej przeprowadzenia komunikatów. O ile to moliwe, najlepszym rozwizaniem<br />

jest pojedynczy komunikat opisujcy stan. Przyrostowe aktualizowanie stanu czone<br />

z okresami aktywnoci komponentu prowadzi do znacznego wzrostu zoonoci.<br />

Punkty kontrolne i odwoywanie (ang. rollback). Punkt kontrolny to zapis spójnego stanu,<br />

który tworzy si okresowo lub w reakcji na pewne zdarzenia. Zdarza si, e system<br />

ulega nietypowej awarii i w zauwaalny sposób traci integralno. W takiej sytuacji funkcjonowanie<br />

systemu mona przywróci, uywajc wczeniejszego punktu kontrolnego<br />

oraz dziennika transakcji wykonanych od czasu jego zapisania.


112 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

Zapobieganie uszkodzeniom<br />

Oto taktyki zapobiegania uszkodzeniom:<br />

Wyczanie z systemu. Taktyka polegajca na usuwaniu z systemu wybranych komponentów<br />

w celu poddania ich pewnym dziaaniom majcym zapobiec typowym awariom.<br />

Przykadem moe by reinicjalizowanie komponentu w celu zabezpieczenia systemu<br />

przed katastrofalnymi skutkami potencjalnych „wycieków” pamici. Jeeli wyczanie<br />

z pracy nastpuje automatycznie, mona zaprojektowa odpowiedni strategi architektury.<br />

Jeeli wyczanie ma by rczne, równie naley zadba o to w konstrukcji systemu.<br />

Transakcje. Transakcja to poczenie sekwencji kroków, które zapewnia, e sekwencja ta<br />

bdzie moga zosta wycofana jako cao. Transakcje wykorzystuje si w celu zabezpieczenia<br />

przed wpywem na jakiekolwiek dane, w sytuacji gdy jeden z kroków procesu nie<br />

zostaje poprawnie wykonany, a take by zapobiega kolizjom wtków korzystajcych z tych<br />

samych danych.<br />

Monitor procesów. Po wykryciu uszkodzenia w jednym z procesów proces monitorujcy<br />

moe go usun i utworzy nowy o odpowiednio zainicjalizowanym stanie.<br />

Rysunek 5.3 podsumowuje omówione taktyki.<br />

Rysunek 5.3. Taktyki dostpnoci<br />

5.3. Taktyki modyfikowalnoci<br />

Przypomnijmy z rozdziau 4. — taktyki modyfikowalnoci maj na celu uzyskanie wpywu na<br />

czas i koszty implementacji, testowania i wdraania. Relacj t ilustruje rysunek 5.4.<br />

Taktyki modyfikowalnoci czymy w grupy wedug ich celów. Pierwszy zbiór czy cel<br />

zmniejszenia liczby moduów, na które zmiana bezporednio wpywa. Jest to nazywane lokalizowaniem<br />

modyfikacji. Drugi zbiór taktyk ma na celu ograniczenie zakresu zmian w modu-<br />

ach, które nie mog pozosta nienaruszone. S to taktyki, które zapobiegaj efektowi domina<br />

— powstawaniu acucha zalenoci, w którym zmiany w jednym miejscu prowadz do zmian<br />

w innym. Operujemy przy tym istotnym rozrónieniem na moduy, na które zmiana wpywa


5.3. TAKTYKI MODYFIKOWALNOCI 113<br />

Rysunek 5.4. Cel taktyk modyfikowalnoci<br />

bezporednio (pewnej modyfikacji ulega ich zakres odpowiedzialnoci), i takie, na które zmiana<br />

wpywa porednio (zakres odpowiedzialnoci pozostaje, ale modyfikacja jest konieczna ze<br />

wzgldu na moduy pod bezporednim wpywem zmiany). Trzecia grupa taktyk ukierunkowana<br />

jest na czas i koszty wdraania. W tym przypadku chodzi przede wszystkim o opónienie<br />

czasu wizania.<br />

Lokalizowanie modyfikacji<br />

Cho nie mona ogólnie mówi o cisej relacji midzy liczb moduów, na które wpywa pewien<br />

zespó zmian, a kosztami wprowadzenia tych zmian, nie ulega wtpliwoci, e ograniczanie<br />

zakresu koniecznych modyfikacji do jak najmniejszej liczby moduów jest skuteczn metod<br />

zmniejszania kosztów. Celem taktyk z opisywanej tu grupy jest uzyskanie takich przypisa<br />

zakresów odpowiedzialnoci moduów, by zakres przewidywanych zmian by jak najmniejszy.<br />

Prezentujemy pi takich taktyk.<br />

Utrzymywanie spójnoci semantycznej. Spójno semantyczna odnosi si do relacji<br />

midzy zakresami odpowiedzialnoci w module. Celem jest zapewnienie, e wszystkie te<br />

zakresy wspódziaaj bez nadmiernego uzalenienia od innych moduów. rodkiem do<br />

osignicia tego celu jest przestrzeganie w formuowaniu tych zakresów zasad spójnoci<br />

semantycznej. S w tym pewn pomoc róne miary siy powiza i poziomu spójnoci.<br />

Brakuje im jednak odniesienia do kontekstu zmian. Spójno semantyczn naley ocenia<br />

w perspektywie pewnego zbioru zmian przewidywanych w przyszoci. Szczególnie wan<br />

taktyk w tej grupie jest tworzenie abstrakcji wspólnych usug. Zapewnianie wspólnych<br />

usug poprzez wprowadzenie wyspecjalizowanych moduów jest zazwyczaj postrzegane<br />

jako skuteczny rodek uatwiajcy ponowne wykorzystywanie elementów. Nie jest to jedyna<br />

korzy — uogólnienie wspólnych usug sprzyja te modyfikowalnoci. Po wyczeniu<br />

usug wprowadzane w nich modyfikacje nie musz by powielane w kadym wykorzystujcym<br />

je module. Co wicej, modyfikacje w moduach korzystajcych z tych usug<br />

nie maj wpywu na inne moduy, których praca opiera si na tych samych usugach. Jest<br />

to wic taktyka nie tylko sprzyjajca lokalizowaniu modyfikacji, ale te zabezpieczajca<br />

przed efektem domina. Przykady wyczenia wspólnych usug to midzy innymi stosowanie<br />

platform aplikacji (ang. application frameworks) i korzystanie z innego rodzaju <strong>oprogramowania</strong><br />

middleware.<br />

Przewidywanie prawdopodobnych zmian. Przewidywanie zbioru oczekiwanych zmian pozwala<br />

oceni zastosowany podzia zakresów odpowiedzialnoci. Podstawowe pytanie brzmi:<br />

„Czy dla kadej ze zmian proponowana dekompozycja ogranicza zespó moduów, które<br />

musz zosta zmodyfikowane w celu jej wprowadzenia?”. Towarzyszy mu równie druga<br />

kwestia do rozwaenia: „Czy zasadniczo rónice si zmiany wpywaj na te same moduy?”.<br />

Czym róni si to od spójnoci semantycznej? Przypisywanie zakresów odpowiedzialnoci


114 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

na bazie spójnoci semantycznej wie si z zaoeniem, e równie oczekiwane zmiany<br />

bd spójne semantycznie. Taktyka przewidywania zmian nie koncentruje si na spójno-<br />

ci zada moduu, ale na ograniczaniu skutków zmian. W <strong>praktyce</strong> jest ona trudna do zastosowania<br />

niezalenie od innych, poniewa nie jest moliwe przewidzenie kadej zmiany.<br />

To powoduje, e zazwyczaj stosuje si j w poczeniu z taktyk spójnoci semantycznej.<br />

Uogólnienie moduu. Zapewnienie moduowi wikszej ogólnoci prowadzi do uzyskania<br />

obsugi wikszej liczby funkcji. Dane wejciowe mona traktowa jak jzyk definiujcy<br />

modu. Moe to sprowadza si do zastpienia staych parametrami. Moe te prowadzi<br />

do rozwiza bardziej zoonych, na przykad implementowania moduu w formie interpretera,<br />

kiedy to parametry wejciowe staj si jego jzykiem. Im bardziej ogólny modu,<br />

tym bardziej prawdopodobne jest to, e wymagane zmiany bdzie mona wprowadzi<br />

drog dostosowania jzyka na wejciu, bez modyfikowania kodu.<br />

Ograniczanie dostpnych moliwoci. Zmiany, zwaszcza w przypadku linii produktów<br />

(patrz rozdzia 14.), mog mie bardzo szeroko zakrojone skutki i wpywa na wiele moduów.<br />

Ograniczanie zakresu dostpnych moliwoci pozwala na redukcj wpywu modyfikacji.<br />

Przykadowo punkt zrónicowania w projektowanej linii produktów moe pozwala<br />

na zmian procesora — ograniczenie moliwoci wymiany procesora do podzespoów nalecych<br />

do tej samej rodziny zmniejsza zakres dostpnych moliwoci.<br />

Zapobieganie efektowi domina<br />

O efekcie domina mówimy wtedy, gdy zmiana wymusza modyfikacje w moduach, na które nie<br />

ma bezporedniego wpywu. Przykadowo modu A zostaje zmodyfikowany w celu wprowadzenia<br />

pewnej zmiany, co prowadzi do koniecznoci modyfikacji moduu B, która wynika wy-<br />

cznie z tego, e zmieni si modu A. Modu B wymaga zmiany, poniewa jest w taki czy inny<br />

sposób powizany z moduem A.<br />

Omówienie efektu domina zaczniemy od rozwaenia rónych rodzajów zalenoci midzy<br />

moduami. Mona wyróni osiem typów takiego powizania:<br />

(1) Skadnia:<br />

danych — aby modu B by poprawnie kompilowany (lub wykonywany), typ (lub<br />

format) danych generowanych przez modu A i pobieranych przez modu B musi by<br />

zgodny z typem (lub formatem) danych, których oczekuje modu B;<br />

usug — aby modu B by poprawnie kompilowany i wykonywany, sygnatura usug<br />

zapewnianych przez modu A i wywoywanych przez modu B musi by zgodna<br />

z zaoeniami moduu B.<br />

(2) Semantyka:<br />

danych — aby modu B by poprawnie wykonywany, semantyka danych generowanych<br />

przez modu A i pobieranych przez modu B musi by zgodna z zaoeniami<br />

moduu B;<br />

usug — aby modu B by poprawnie wykonywany, semantyka usug zapewnianych<br />

przez modu A i uywanych przez modu B musi by zgodna z zaoeniami moduu B.<br />

(3) Kolejno:<br />

danych — aby modu B by poprawnie wykonywany, musi on otrzymywa dane generowane<br />

przez modu A w ustalonej kolejnoci; na przykad nagówek pakietu danych<br />

musi w trakcie odbierania poprzedza waciw tre (w przeciwiestwie do<br />

protokoów, które doczaj do danych numery sekwencyjne);


5.3. TAKTYKI MODYFIKOWALNOCI 115<br />

sterowania — aby modu B by poprawnie wykonywany, wczeniej, w okrelonych<br />

ramach czasowych, musz zosta wykonane procedury moduu A. Przykadowo procedury<br />

moduu A musz zosta wykonane nie duej ni 5 milisekund przed rozpoczciem<br />

wykonywania moduu B.<br />

(4) Tosamo interfejsu moduu A — modu A moe mie wiele interfejsów. Aby modu B<br />

by poprawnie kompilowany i wykonywany, tosamo (nazwa lub uchwyt) interfejsu<br />

musi by zgodna z oczekiwaniami moduu B.<br />

(5) Lokalizacja moduu A w czasie wykonywania — aby modu B by poprawnie wykonywany,<br />

lokalizacja moduu A w czasie wykonywania musi by zgodna z oczekiwaniami<br />

moduu B. Przykadowo modu B moe zakada, e modu A pracuje w innym procesie<br />

na tym samym procesorze.<br />

(6) Jako usug/danych zapewnianych przez modu A — aby modu B by poprawnie wykonywany,<br />

pewne wasnoci dotyczce danych lub usug zapewnianych przez modu A musz<br />

by zgodne z zaoeniami moduu B. Przykadowo dane dostarczane przez czujnik musz<br />

mie pewn dokadno, aby algorytmy w module B dziaay poprawnie.<br />

(7) Istnienie moduu A — aby modu B by poprawnie wykonywany, modu A musi istnie.<br />

Jeeli na przykad obiekt B da usugi obiektu A, a obiekt ten nie istnieje lub nie moe<br />

zosta dynamicznie utworzony, dziaanie obiektu B nie bdzie poprawne.<br />

(8) Sposób korzystania z zasobów — aby modu B by poprawnie wykonywany, sposób korzystania<br />

z zasobów przez modu A musi by zgodny z zaoeniami moduu B. Moe to<br />

dotyczy uytkowania zasobów (A uywa tej samej pamici co B) lub wasnoci zasobów<br />

(B rezerwuje zasób, który A uwaa za wasny).<br />

Dysponujc tak sprecyzowanymi kategoriami zalenoci, moemy przej do omówienia dostpnych<br />

architektowi taktyk pozwalajcych zapobiega efektowi domina dla wybranych z nich.<br />

Warto zwróci uwag, e adna z prezentowanych taktyk nie zapewnia zabezpieczenia przed<br />

efektem domina dla zmian semantycznych. Rozpoczniemy omówienie od taktyk, które odnosz<br />

si do interfejsów moduu — ukrywania informacji i utrzymywania istniejcych ju interfejsów,<br />

aby nastpnie przej do taktyk przerywania acucha zalenoci — uycia porednika.<br />

Ukrywanie informacji. Ukrywanie informacji to dekompozycja zakresu odpowiedzialno-<br />

ci pewnej jednostki (systemu lub czci systemu) na mniejsze elementy i okrelanie, które<br />

z nich maj mie charakter prywatny, a które publiczny. Publiczny zakres odpowiedzialnoci<br />

to zakres dostpny za porednictwem interfejsów. Celem jest doprowadzenie do izolacji<br />

zmian wewntrz moduu i zapobieenie ich propagacji na inne moduy. Jest to najstarsza<br />

technika ograniczania skutków zmian. Jest ona mocno powizana z przewidywaniem<br />

oczekiwanych modyfikacji, poniewa modyfikacje te staj si podstaw dekompozycji.<br />

Zachowywanie istniejcych interfejsów. Jeeli modu B jest zaleny od nazwy i sygnatury<br />

interfejsu moduu A, utrzymanie tego interfejsu i jego skadni pozwala unikn<br />

zmian w module B. Oczywicie, nie jest to taktyka bezwzgldnie skuteczna, gdy modu B<br />

jest zaleny od moduu A semantycznie, poniewa warstwa znaczeniowa danych i usug jest<br />

trudniejsza do zamaskowania. To samo mona powiedzie o maskowaniu zalenoci bazujcych<br />

na jakoci danych lub usug, poziomie wykorzystania zasobów lub wasnoci zasobów.<br />

Stabilno interfejsu mona te osign oddzielajc interfejs od implementacji. Pozwala<br />

to tworzy abstrakcyjne interfejsy maskujce zrónicowanie. Odmiany mona realizowa<br />

w ramach istniejcego zakresu odpowiedzialnoci lub przez zastpowanie implementacji.<br />

Wzorce bazujce na tej taktyce to przede wszystkim:<br />

dodawanie interfejsów — wikszo jzyków programowania pozwala na stosowanie<br />

wielu interfejsów; nowe usugi lub dane mog by udostpniane poprzez nowe interfejsy,<br />

dziki czemu starsze pozostaj niezmienione i zachowuj sygnatury;


116 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

dodawanie adaptera — polega na dodaniu do moduu A adaptera, który go osania<br />

i zapewnia pierwotn sygnatur;<br />

korzystanie z wersji zastpczej — jeeli modyfikacja prowadzi do usunicia moduu<br />

A, to zapewnienie jego wersji zastpczej pozwoli zachowa modu B w niezmienionej<br />

postaci (jeeli modu B jest zaleny tylko od sygnatury moduu A).<br />

Ograniczanie cieek komunikacji. Taktyka polegajca na ograniczaniu liczby moduów,<br />

z którymi dany modu wymienia lub wspóuytkuje dane — projektant dy do uzyskania<br />

jak najmniejszej liczby moduów, które pobieraj dane z moduu rozwaanego lub przekazuj<br />

je do niego. Efekt domina zostaje zredukowany, poniewa generowanie i pobieranie<br />

danych odpowiada za wprowadzenie powodujcych go zalenoci. Wzorzec korzystajcy<br />

z tej taktyki zostanie zaprezentowany w rozdziale 8. (symulator lotu).<br />

Uycie porednika. Jeeli modu A czy z moduem B pewien rodzaj zalenoci inny ni<br />

semantyczna, to jest moliwe umieszczenie porednika midzy B i A, którego zadaniem<br />

jest zarzdzanie czynnociami zwizanymi z t zalenoci. Nazw takich poredników jest<br />

wiele. Tutaj omówimy poszczególne z nich w kategoriach wyliczonych wczeniej typów<br />

zalenoci. Podobnie jak wczeniej czarnym scenariuszem jest brak moliwoci kompensacji<br />

zmian semantycznych.<br />

Dane (skadnia). Rol porednika midzy producentem i konsumentem danych<br />

przyjmuj magazyny danych (pasywne lub typu podrcznej tablicy). Niektóre wzorce<br />

publikowania-subskrypcji (w których dane przepywaj przez pewien komponent<br />

centralny) mog te zapewnia konwersj skadni generowanej przez modu A do tej,<br />

której oczekuje modu B. Wzorce MVC i PAC zapewniaj konwersj danych z jednej<br />

postaci (zwizanej z urzdzeniem wejciowym lub wyjciowym) na inn (uywan<br />

w modelu w MVC lub w abstrakcji w PAC).<br />

Usugi (skadnia). Fasada, most, mediator, strategia, proxy i fabryka to wzorce<br />

wprowadzajce porednika konwertujcego skadni usugi. Kady z nich prowadzi<br />

do zabezpieczenia przed propagacj zmian.<br />

Tosamo interfejsu moduu A. Wzorzec brokera pozwala zamaskowa zmiany<br />

w tosamoci interfejsu. Jeeli modu B jest zaleny od tosamoci interfejsu moduu A<br />

i tosamo ta ulega zmianie, dodanie tosamoci do brokera i pozostawienie brokerowi<br />

tworzenia poczenia z now tosamoci A pozwala pozostawi modu B bez zmian.<br />

Lokalizacja moduu A w czasie wykonywania. Serwer nazw pozwala zmienia lokalizacj<br />

A bez wpywu na B. A odpowiada za rejestrowanie swojej biecej lokalizacji<br />

na serwerze nazw, a B pobiera z niego aktualne informacje.<br />

Sposób korzystania z zasobów lub kontrola zasobu przez modu A. Meneder zasobów<br />

to porednik odpowiedzialny za ich alokowanie. Istniej menedery gwarantujce<br />

zaspokojenie wszystkich da mieszczcych si w okrelonych ograniczeniach (na<br />

przykad menedery z przypisywaniem monotonicznym wedug czstotliwoci, stosowane<br />

w systemach czasu rzeczywistego). Oczywicie, zastosowanie menedera wi-<br />

e si z przejciem przez niego kontroli nad zasobem.<br />

Istnienie moduu A. Wzorzec fabryki daje moliwo tworzenia obiektów odpowiednio<br />

do potrzeb, dziki czemu problem zalenoci obiektu B od istnienia obiektu A rozwizuje<br />

specjalny modu fabryki.


5.3. TAKTYKI MODYFIKOWALNOCI 117<br />

Opónianie czasu wizania<br />

Omówione kategorie taktyk prowadz do zmniejszenia liczby moduów wymagajcych modyfikacji<br />

w celu wprowadzenia zmiany. W naszych scenariuszach modyfikowalnoci pojawiy si jednak<br />

dwa elementy, których nie mona sprowadzi do redukcji liczby modyfikowanych czci programu<br />

— czas wdroenia i umoliwienie wprowadzania zmian osobom innym ni programici.<br />

Realizacj tych scenariuszy umoliwia opónianie czasu wizania. Z taktykami tego rodzaju<br />

niezmiennie wie si istotny koszt dodatkowej infrastruktury, która umoliwi póne wizanie.<br />

Wizanie pewnego wyboru z dziaaniem systemu moe nastpi w rónych momentach. Tutaj<br />

zajmiemy si jedynie aspektami, które maj wpyw na czas wdraania. Wdraanie systemu jest<br />

pewnym procesem — po wprowadzeniu przez programist zmiany nastpuj zazwyczaj procedury<br />

testowania i dystrybucji. Wystpuje wic istotne opónienie midzy modyfikacj a dostpnoci<br />

nowej wersji czy konfiguracji programu. Wprowadzenie wizania w czasie wykonywania<br />

oznacza, e system zosta odpowiednio przygotowany i ukoczono wszystkie kroki<br />

zwizane z testowaniem i dystrybucj. Taktyka opóniania czasu wizania prowadzi do powstawania<br />

mechanizmów umoliwiajcych uytkownikowi lub administratorowi operowanie<br />

parametrami, które zmieniaj zachowanie systemu.<br />

Wszystkie wymienione poniej taktyki maj wpyw na system w czasie adowania lub w czasie<br />

wykonywania.<br />

Rejestracja w czasie wykonywania umoliwia uzyskanie mechanizmu typu plug-and-play<br />

kosztem dodatkowego obcienia operacjami zwizanymi z rejestrowaniem. Przykadem<br />

moe by rejestracja typu publikacja-subskrypcja, któr mona implementowa w czasie<br />

wykonywania lub w czasie adowania.<br />

Pliki konfiguracyjne okrelaj parametry uruchomieniowe.<br />

Polimorfizm umoliwia póne wizanie wywoa metod.<br />

Wymienno komponentów pozwala na wizanie w czasie adowania.<br />

Przestrzeganie protokoów pozwala wiza w czasie wykonywania niezalene procesy.<br />

Taktyki modyfikowalnoci podsumowuje rysunek 5.5.<br />

Rysunek 5.5. Taktyki modyfikowalnoci


118 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

5.4. Taktyki wydajnoci<br />

Przypomnijmy z rozdziau 4., e celem taktyk wydajnoci jest uzyskanie reakcji na odbierane<br />

przez system zdarzenie w ramach pewnych ogranicze czasowych. Zdarzenie lub cig zdarze<br />

inicjuje pewne obliczenia lub funkcje. Sygnaem moe by nadejcie komunikatu, upynicie<br />

pewnego czasu, wykrycie znaczcej zmiany stanu w rodowisku systemu itp. System przetwarza<br />

zdarzenia i generuje reakcj. Taktyki wydajnoci pozwalaj uzyska kontrol nad iloci<br />

czasu, który musi upyn midzy zdarzeniem a reakcj. Ilustruje to rysunek 5.6. Czas midzy<br />

odebraniem zdarzenia a wygenerowaniem odpowiedzi okrela si terminem latencja.<br />

Rysunek 5.6. Cel taktyk wydajnoci<br />

Po odebraniu zdarzenia nastpuje jego przetwarzanie. Moe ono zosta z pewnych przyczyn<br />

zablokowane. Dwa podstawowe czynniki o duym wpywie na czas odpowiedzi to: poziom<br />

wykorzystania zasobów i czas blokad.<br />

1. Poziom wykorzystania zasobów. Zasoby to przede wszystkim procesor, magazyny danych,<br />

pasmo komunikacyjne sieci i pami, ale pojcie to obejmuje te obiekty definiowane<br />

w ramach konstrukcji systemu. Przykadami mog by wymagajce zarzdzania bufory lub konieczno<br />

zapewnienia sekwencyjnego dostpu do sekcji krytycznych. Zdarzenia mog mie<br />

róny charakter i dla kadego typu zdarzenia wymagana jest pewna sekwencja przetwarzania.<br />

Przykadowo jeden komponent generuje komunikat, przekazuje go do sieci i komunikat ten<br />

zostaje odebrany przez inny komponent. Zostaje wówczas umieszczony w buforze; w pewien<br />

sposób przeksztacony (tak zwany marshalling w terminologii OMG); przetworzony zgodnie<br />

z pewnym algorytmem; przesany do wyjcia; umieszczony w buforze wyjciowym i przekazany<br />

dalej, do innego komponentu lub systemu albo do uytkownika. Kada z tych faz ma swój<br />

udzia w ogólnej latencji przetwarzania zdarzenia.<br />

2. Czas blokad. Procedury przetwarzania mog nie uzyska dostpu do zasobu — ze<br />

wzgldu na jego nadmierne obcienie, cakowit niedostpno lub poniewa niezbdny jest<br />

wynik innych procedur, który nie jest jeszcze dostpny.<br />

Spory o zasoby. Rysunek 5.6 przedstawia odbierane przez system zdarzenia. Odbiór<br />

moe nastpowa w pojedynczym strumieniu lub wielu strumieniach. Róne strumienie<br />

potrzebujce tego samego zasobu lub róne zdarzenia w tym samym strumieniu,<br />

które potrzebuj tego samego zasobu, wprowadzaj czsto istotne opónienia.<br />

Ogólnie — im wicej sporów o zasoby, tym wiksze prawdopodobiestwo wystpienia<br />

dodatkowej latencji. Zaley to jednak od metod arbitrau sporów i sposobu traktowania<br />

poszczególnych da.<br />

Dostpno zasobów. Nawet gdy nie wystpuj spory o zasoby, obliczenia mog zosta<br />

zablokowane przez ich niedostpno. Przyczyn moe by na przykad wyczenie<br />

lub awaria. Architekt powinien zawsze zidentyfikowa miejsca, w których<br />

niedostpno zasobów moe mie znaczcy wpyw na ogóln latencj reakcji.


5.4. TAKTYKI WYDAJNOCI 119<br />

Zaleno od innych oblicze. Obliczenia mog zosta wstrzymane przez konieczno<br />

synchronizacji z wynikami innych oblicze lub oczekiwanie na wynik operacji<br />

skadowych. Przykadowo w trakcie odczytu z dwóch rónych róde, gdy ich odczytywanie<br />

jest sekwencyjne, latencja jest wiksza ni przy równolegym odczycie z obu.<br />

Na tym koczymy wprowadzenie i przechodzimy do omówienia trzech kategorii taktyk. Operuj<br />

one w trzech obszarach: zapotrzebowania na zasoby, zarzdzania zasobami i arbitrau dostpu<br />

do zasobów.<br />

Zapotrzebowanie na zasoby<br />

Strumienie zdarze stanowi ródo zapotrzebowania na zasoby. Dwa parametry opisujce to<br />

zapotrzebowanie to odstp czasu midzy zdarzeniami (jak czsto w strumieniu pojawia si nowe<br />

danie) oraz stopie wykorzystania zasobu przez poszczególne dania.<br />

Jedn z taktyk zmniejszania latencji jest redukowanie wymaganych do przetwarzania zdarze<br />

zasobów. Metody ograniczania zapotrzebowania na zasoby to midzy innymi:<br />

Zwikszenie efektywnoci przetwarzania. Jednym z kroków przetwarzania zdarzenia<br />

lub komunikatu jest uycie pewnego algorytmu. Usprawnianie algorytmów wykorzystywanych<br />

w krytycznych miejscach moe doprowadzi do zmniejszenia latencji. Czasem<br />

mona zmniejszy poziom wykorzystania jednego zasobu kosztem innego. Przykadowo<br />

wartoci porednie mona przechowywa w repozytorium lub generowa — zaley to od<br />

dostpnego miejsca i czasu. Jest to taktyka zwizana przede wszystkim z procesorem, ale<br />

mona korzysta z niej take w odniesieniu do innych zasobów, na przykad dysku.<br />

Zmniejszenie obcienia. Jeeli nie nadchodz dania zwizane z pewnym zasobem, zapotrzebowanie<br />

maleje. W rozdziale 17. zobaczymy przykad wykorzystania klas jzyka Java<br />

w miejsce zdalnych wywoa metod (ang. Remote Method Invocation — RMI) — pozwala<br />

to zredukowa wymagania dotyczce komunikacji. Korzystanie z poredników (tak wane<br />

dla modyfikowalnoci) zwiksza poziom wykorzystania zasobów w trakcie przetwarzania<br />

strumienia zdarze. Usunicie porednika moe wic by skuteczn metod zmniejszenia<br />

latencji. Jest to typowy przykad kompromisu midzy modyfikowalnoci a wydajnoci.<br />

Kolejna grupa taktyk redukowania latencji opiera si na zmniejszaniu liczby wymagajcych<br />

przetwarzania zdarze. Mona to osign dwiema drogami:<br />

Zarzdzanie czstoci zdarze. Jeeli jest moliwe zredukowanie czstotliwoci próbkowania<br />

danych przechowywanych w opisujcych rodowisko zmiennych, jest to prosta<br />

droga do zmniejszenia zapotrzebowania na zasoby. Czasem moliwo zmniejszenia czstoci<br />

zdarze jest skutkiem nadmiernej, niepotrzebnej zoonoci. Niekiedy zawyon<br />

czstotliwo próbkowania uzasadnia potrzeba uzyskania zharmonizowanych odstpów<br />

dla rónych strumieni zdarze — niektóre z nich s odczytywane czciej jedynie dla zachowania<br />

synchronizacji z innymi.<br />

Sterowanie czstotliwoci próbkowania. Jeeli nie mona uzyska kontroli nad odbieraniem<br />

generowanych zewntrznie zdarze, mona próbkowa z mniejsz czstotliwoci dania<br />

przechowywane w kolejce — z uwzgldnieniem ewentualnej utraty danych lub nie.


120 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

Jeszcze inn drog do opanowania zapotrzebowania na zasoby jest sterowanie korzystaniem<br />

z tych zasobów.<br />

Ograniczanie czasu wykonania. Mona okreli limit czasu reakcji na zdarzenie. W przypadku<br />

algorytmów iteracyjnych, bazujcych na danych tak metod jest wyznaczenie limitu<br />

liczby powtórze.<br />

Ograniczenie rozmiaru kolejki. Jest to okrelenie maksymalnego rozmiaru kolejki odbioru,<br />

a wic bezporednie ograniczenie zasobów wykorzystywanych do przetwarzania<br />

zawartoci tej kolejki.<br />

Zarzdzanie zasobami<br />

Nawet jeeli zapotrzebowanie na zasoby nie moe zosta poddane wystarczajcej kontroli,<br />

skrócenie czasu reakcji mona uzyska przez odpowiednie zarzdzanie tymi zasobami. Do takich<br />

taktyk nale:<br />

Wprowadzenie wspóbienoci. Jeeli dania mog by przetwarzane równolegle, czas<br />

blokad moe ulec skróceniu. Wspóbieno mona wprowadzi dwoma metodami: poprzez<br />

przetwarzanie rónych strumieni zdarze w odrbnych wtkach lub tworzenie wtków<br />

wykonujcych pewne zbiory operacji. Po wprowadzeniu wspóbienoci wane jest<br />

waciwe przypisywanie wtków do zasobów (równowaenie obcienia).<br />

Przechowywanie wielu kopii danych lub funkcji obliczeniowych. W schemacie klientserwer<br />

klienty s replikami funkcji obliczeniowych. Zapewniaj one zmniejszenie rywalizacji<br />

o zasoby, która byaby znaczcym problemem w przypadku wykonywania caoci<br />

przetwarzania na serwerze. Metod replikacji danych jest buforowanie (pami podrczna)<br />

— niezalenie od tego, czy szybko pracy magazynów danych jest jednolita, czy róna,<br />

zmniejsza ono spory o dostp do zasobów. Poniewa buforowane dane to zazwyczaj<br />

kopia przechowywanych we waciwym magazynie danych, system obcia dodatkowa<br />

odpowiedzialno za utrzymanie spójnoci i synchronizacji pamici podrcznej.<br />

Zwikszenie dostpnych zasobów. Szybsze procesory, dodatkowe procesory, dodatkowa<br />

pami, szybsza sie — to proste rozwizania o istotnym potencjale zmniejszania latencji.<br />

Wie si z nimi zazwyczaj problem kosztów. Do tego rodzaju kompromisu midzy kosztem<br />

a wydajnoci powrócimy jeszcze w rozdziale 12.<br />

Arbitra dostpu do zasobów<br />

Zawsze, gdy pojawia si spór o pewien zasób, pojawia si te szeregowanie. Szereguje si dostp<br />

do procesorów, buforów i sieci. Zadaniem architekta jest poznanie specyfiki wykorzystania<br />

kadego zasobu i wybranie dopasowanej do niego strategii szeregowania.<br />

Schemat szeregowania skada si z dwóch elementów: przypisywania priorytetów i przydzielania<br />

zasobu. O okrelaniu priorytetów mona mówi w kadym schemacie. Najprostsza<br />

regua to FIFO (ang. first-in/first-out — pierwszy wchodzi, pierwszy wychodzi). O priorytecie<br />

moe decydowa limit czasu dania lub wynikajcy z semantyki poziom wanoci. Lista potencjalnych<br />

kryteriów — które z reguy konkuruj ze sob — obejmuje midzy innymi wano<br />

dania, denie do optymalnego wykorzystania zasobów, minimalizowanie liczby uywanych<br />

zasobów, minimalizowanie latencji, maksymalizowanie przepustowoci i denie do<br />

uniknicia „zagodzenia” (równo traktowania klientów). Architekt musi zdawa sobie spraw<br />

z tego, które z nich s istotne i jaki wpyw ma na nie wybierana taktyka.


5.4. TAKTYKI WYDAJNOCI 121<br />

Strumie zdarze o wysokim priorytecie moe zosta przydzielony tylko wtedy, gdy jest<br />

dostpny odpowiedni zasób. Czasem wymaga to wywaszczenia biecego uytkownika zasobu.<br />

Mona wybra jeden z trzech schematów wywaszczania: w dowolnym momencie, w cile<br />

okrelonych punktach lub bez wywaszczania pracujcych procesów. Jako popularne schematy<br />

szeregowania warto wymieni:<br />

1. FIFO (pierwszy wchodzi, pierwszy wychodzi). Kolejka FIFO traktuje wszystkie dania<br />

jednakowo i zaspokaja je kolejno. Podstawowym problemem jest w tym przypadku potencjalne<br />

opónienie przetwarzania dania, które nastpuje po takim, które okazuje si wyjtkowo<br />

czasochonne. Jeeli komunikaty s faktycznie równorzdne, nie jest to zazwyczaj<br />

kopotliwe. Jeeli jednak w strumieniu s dania waniejsze od innych, metoda FIFO bywa<br />

niewystarczajca.<br />

2. Szeregowanie ze staym priorytetem. W tym schemacie kademu ródu da dostpu<br />

do zasobów przypisywany jest pewien priorytet, który decyduje nastpnie o kolejnoci przypisa.<br />

Zapewnia to lepsz obsug da o wysokim priorytecie, ale dopuszcza moliwo, e danie<br />

o niskim priorytecie, ale wci istotne bdzie oczekiwa na obsug bardzo dugo — jeeli poprzedzi<br />

je seria da ze róda uprzywilejowanego. Trzy popularne klucze przypisywania<br />

priorytetów to:<br />

Waga semantyczna. Strumienie otrzymuj statyczne priorytety oparte na cechach<br />

zada, z którymi s powizane (cechach z dziedziny problemu). Takie podejcie do<br />

szeregowania stosuje si w systemach mainframe, gdzie cech z dziedziny problemu<br />

jest czas zainicjowania zadania.<br />

Przypisywanie monotoniczne wedug limitu czasu. Statyczna metoda przypisywania<br />

priorytetów, w której preferowane s strumienie o krótszych limitach czasu przetwarzania.<br />

Stosowana najczciej przy szeregowaniu strumieni o rónych priorytetach<br />

powizanych z limitami przetwarzania w czasie rzeczywistym.<br />

Przypisywanie monotoniczne wedug czstotliwoci. Statyczna metoda przypisywania<br />

priorytetów strumieniom o charakterze okresowym, w której preferowane s<br />

strumienie o krótszym okresie. Jest to szczególny przypadek przypisywania wedug<br />

limitu czasu, a zarazem metoda bardziej znana i czciej dostpna w rónych systemach<br />

operacyjnych.<br />

3. Szeregowanie z dynamicznie okrelanym priorytetem.<br />

Karuzelowe. Strategia polegajca na uporzdkowaniu da, które nastpnie kolejno<br />

otrzymuj zasoby — za kadym razem, gdy pojawia si moliwo przypisania dania.<br />

Szczególn form szeregowania karuzelowego jest zasada inicjowania nowych przypisa<br />

w staych odstpach czasu.<br />

Wedug terminów wykonania. Najwyszy priorytet otrzymuj dania z najbliszym<br />

terminem wykonania.<br />

4. Szeregowanie statyczne. Cykliczny mechanizm oparty na strategii, dla której punkty<br />

wywaszczania i sekwencja przypisa zostay okrelone przed uruchomieniem systemu.<br />

Lista polecanej literatury na kocu rozdziau zawiera tytuy ksiek powiconych szeregowaniu.<br />

Rysunek 5.7 przedstawia podsumowanie taktyk wydajnoci.


122 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

Rysunek 5.7. Podsumowanie taktyk wydajnoci<br />

5.5. Taktyki bezpieczestwa<br />

Taktyki ukierunkowane na zapewnienie bezpieczestwa operuj w trzech obszarach: odpierania<br />

ataków, wykrywania ataków i przywracania stanu po ataku. Kady z nich jest istotny. Mona<br />

przytoczy czyteln analogi — zamek w drzwiach to metoda obrony przed atakami, czujnik<br />

ruchu wewntrz domu to system wykrywania ataków, a posiadanie ubezpieczenia to rozwizanie<br />

umoliwiajce przywrócenie stanu. Rysunek 5.8 ilustruje cele taktyk bezpieczestwa.<br />

Rysunek 5.8. Cel taktyk bezpieczestwa<br />

Obrona przed atakami<br />

Przedstawiona w rozdziale 4. lista celów opisujcych bezpieczestwo obejmuje niezaprzeczalno,<br />

poufno, integralno (spójno) i pewno tosamoci. W deniu do ich osignicia<br />

pomocne jest czenie poniszych taktyk:<br />

Uwierzytelnianie uytkowników. Uwierzytelnianie to sprawdzanie, czy uytkownik lub<br />

komputer jest tym, za kogo si podaje. Mona stosowa hasa, hasa jednorazowe, certyfikaty<br />

lub identyfikacj biometryczn.


5.5. TAKTYKI BEZPIECZESTWA 123<br />

Autoryzowanie uytkowników. Autoryzowanie to sprawdzanie, czy uwierzytelniony<br />

uytkownik ma prawa dostpu i modyfikacji danych lub usug. Jest to zazwyczaj zapewniane<br />

przez wprowadzenie w systemie pewnych schematów kontroli dostpu. Prawa dostpu<br />

przyznaje si uytkownikom lub klasom uytkowników. Definiowanie klas uytkowników<br />

moe opiera si na pojciu grupy bd roli lub listach uytkowników.<br />

Poufno danych. Dane powinny by zabezpieczone przed nieautoryzowanym dostpem.<br />

Poufno uzyskuje si zazwyczaj przez wprowadzenie szyfrowania danych i pocze komunikacyjnych.<br />

Szyfrowanie jest dodatkowym zabezpieczeniem danych trwaych, które<br />

w znaczcy sposób uzupenia mechanizmy autoryzowania dostpu. Co wicej, cza komunikacyjne<br />

nie zapewniaj zwykle autoryzacji. Szyfrowanie jest jedyn oson przy przekazywaniu<br />

danych przez cza dostpne publicznie. Poczenie szyfrowane mona implementowa<br />

jako prywatn sie wirtualn (ang. virtual private network — VPN) lub, w przypadku<br />

komunikacji WWW, jako warstw gniazd z zabezpieczeniami, czyli SSL (ang. Secure<br />

Sockets Layer). Szyfrowanie moe by symetryczne (obie strony uywaj tego samego klucza)<br />

lub niesymetryczne (klucze publiczny i prywatny).<br />

Utrzymywanie integralnoci. Dane powinny zosta dostarczone w postaci zgodnej z oczekiwaniami.<br />

Ich poprawno mona weryfikowa w oparciu o doczane informacje nadmiarowe<br />

— takie jak sumy kontrolne i skróty — szyfrowane niezalenie od waciwych danych<br />

lub w poczeniu z nimi.<br />

Redukcja naraenia na atak. Podstaw ataku jest zazwyczaj moliwo wykorzystania jednego<br />

sabo chronionego punktu, który pozwala uzyska dostp do wszystkich danych i usug<br />

stacji. Architekt moe tak zaprojektowa przypisania komponentów do stacji, by kada z nich<br />

oferowaa jak najwszy zespó usug.<br />

Ograniczanie dostpu. Zapory sieciowe ograniczaj dostp w oparciu o ródo komunikatu<br />

lub port docelowy. Komunikaty z nieznanych róde mog by form ataku. Nie zawsze<br />

jednak mona ograniczy dostp wycznie do znanych róde. Publiczna witryna WWW mo-<br />

e oczekiwa da z dowolnych stacji sieciowych. Jedn z uywanych w takich przypadkach<br />

konfiguracji jest tak zwana strefa zdemilitaryzowana (ang. demilitarized zone —<br />

DMZ). Konfiguracja DMZ daje dostp do usug internetowych, ale nie do sieci lokalnej.<br />

Strefa zdemilitaryzowana to obszar funkcjonujcy pomidzy internetem a zapor chronic<br />

sie wewntrzn. Umieszcza si w nim urzdzenia, które powinny odbiera komunikaty<br />

z dowolnych róde. Pracuj na nich gównie usugi WWW, pocztowe i DNS.<br />

Wykrywanie ataków<br />

Wykrywanie ataku zapewnia zazwyczaj specjalny system wykrywania wama (ang. intrusion<br />

detection system). Jego dziaanie opiera si na porównywaniu schematów ruch sieciowego z wzorcami<br />

w bazie danych. Wykrywanie naduy oznacza porównywanie z wzorcami znanych ataków.<br />

Wykrywanie anomalii z kolei polega na porównywaniu biecego ruchu w sieci z zarejestrowanymi<br />

wczeniej schematami tego ruchu. Aby porównanie byo moliwe, czsto konieczne jest<br />

filtrowanie pakietów. Filtrowanie moe opiera si na protokole, znacznikach TCP, rozmiarach<br />

adunku, adresie ródowym, adresie docelowym lub numerze portu.<br />

System wykrywania wama musi dysponowa pewnego rodzaju czujnikiem wykrywajcym<br />

ataki, oprogramowaniem zarzdzajcym, które analizuje informacje i podejmuje odpowiednie<br />

czynnoci, baz danych do przechowywania rejestru zdarze w celu póniejszej analizy,<br />

narzdziami do budowania analiz i raportów oraz konsol sterujc, która umoliwia<br />

analitykowi modyfikowanie podejmowanych w przypadku wamania dziaa.


124 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

Przywracanie do pracy po ataku<br />

Taktyki wspomagajce przywracanie stanu systemu po ataku mona podzieli na bezporednio<br />

zwizane z przywróceniem normalnego funkcjonowania oraz ukierunkowane na identyfikacj<br />

atakujcego (jeeli nie w celu ukarania, to po to, by zabezpieczy si przed ponownymi atakami).<br />

Taktyki przywracania systemu lub danych do waciwego stanu pokrywaj si z taktykami<br />

zapewniajcymi dostpno — w obu przypadkach chodzi o przywrócenie spójnoci. Gówn<br />

rónic jest konieczno szczególnego traktowania nadmiarowych kopii danych o charakterze<br />

administracyjnym, takich jak hasa, listy kontroli dostpu, konfiguracje usug nazw i dane<br />

profili uytkowników.<br />

Podstawowa taktyka wspomagajca identyfikowanie atakujcych to utrzymywanie zapisu<br />

przebiegu zdarze (ang. audit trail). Jest to kopia kadej transakcji na danych w systemie wraz<br />

z informacjami umoliwiajcymi identyfikacj. Informacje te mona wykorzystywa do ledzenia<br />

dziaa atakujcego, w realizacji zasady niezaprzeczalnoci (jest to dowód odebrania okre-<br />

lonego dania) lub przy operacjach przywracania stanu systemu. Dzienniki zdarze s czsto<br />

jednym z celów ataku, wic powinny by odpowiednio przechowywane.<br />

Rysunek 5.9 przedstawia podsumowanie taktyk bezpieczestwa.<br />

Rysunek 5.9. Taktyki bezpieczestwa<br />

5.6. Taktyki testowalnoci<br />

Celem taktyk testowalnoci jest umoliwienie atwiejszego testowania, gdy koczona jest praca<br />

nad kolejn czci <strong>oprogramowania</strong>. Rysunek 5.10 ilustruje zasad ich stosowania. Budowie<br />

architektury pod ktem wysokiej testowalnoci <strong>oprogramowania</strong> nie powica si tyle uwagi co<br />

lepiej zbadanym aspektom jakoci — modyfikowalnoci, wydajnoci czy dostpnoci, ale — jak<br />

pisalimy w rozdziale 4. — poniewa testowanie odpowiada za du cz kosztów systemu, to<br />

wszystko, co mona zrobi w kierunku jego usprawnienia, przyniesie znaczce korzyci.


5.6. TAKTYKI TESTOWALNOCI 125<br />

Rysunek 5.10. Cel taktyk testowalnoci<br />

Cho w rozdziale 4. wspomnielimy o przegldach projektu jako metodzie testowania, tutaj<br />

zajmiemy si jedynie testowaniem uruchomionego systemu. Celem procedur testowania jest<br />

wykrycie usterek. Wie si to z koniecznoci zapewnienia dla testowanego <strong>oprogramowania</strong><br />

danych wejciowych oraz mechanizmu przechwytywania danych wyjciowych.<br />

Do uruchamiania testów jest potrzebne dodatkowe oprogramowanie przekazujce dane<br />

wejciowe i odbierajce dane wyjciowe — jest to tak zwane jarzmo testów (ang. test harness).<br />

Nie bdziemy tu szczegóowo rozpatrywa problemów zwizanych z jego konstrukcj i generowaniem.<br />

Czasem praca nad jarzmem testów jest znaczc czci pracy nad caym systemem.<br />

Omówimy dwie kategorie taktyk wspomagajcych testowanie: zwizane z przekazywaniem<br />

i odbieraniem danych oraz zwizane z wewntrznym monitorowaniem systemu.<br />

Wejcie-wyjcie<br />

Mona wyróni trzy taktyki zarzdzania wejciami i wyjciami:<br />

Rejestrowanie-odtwarzanie. Metoda, w której informacje przechodzce przez interfejs s<br />

przechwytywane i wykorzystywane jako dane dla jarzma testów. Informacje przechodzce<br />

przez interfejs w trakcie normalnej pracy zostaj zapisane w pewnym magazynie — reprezentuj<br />

one dane wyjciowe jednego komponentu, a zarazem dane wejciowe innego. Ich rejestrowanie<br />

rozwizuje problem generowania danych wejciowych dla drugiego z tych komponentów<br />

oraz problem dostpnoci do porówna danych opisujcych prac pierwszego.<br />

Oddzielanie interfejsu od implementacji. Oddzielenie interfejsu od implementacji pozwala<br />

wymienia implementacje na czas rónego rodzaju testów. Elementy zastpcze<br />

umoliwiaj testowanie pozostaej czci systemu, mimo e waciwe wersje tych elementów<br />

nie s jeszcze gotowe. Po wprowadzeniu ukoczonych elementów wycofywany kod<br />

moe zosta doczony do jarzma testów.<br />

Specjalne kanay dostpu/interfejsy. Przygotowanie specjalnego interfejsu wspomagajcego<br />

testowanie pozwala przechwytywa lub okrela wartoci zmiennych komponentu niezalenie<br />

od jego normalnej pracy. Przykadem moe by udostpnienie specjalnego interfejsu<br />

dostpu do metadanych, wykorzystywanego w pracy jarzma testów. Interfejsy i kanay<br />

dostpu przeznaczone do tego rodzaju zastosowa powinny by wyranie oddzielone od<br />

tych, które wykorzystuje si w realizacji wyspecyfikowanych funkcji systemu. Wprowadzenie<br />

w architekturze hierarchii interfejsów sucych do testowania prowadzi do sytuacji,<br />

kiedy testy mog by uruchamiane na rónych poziomach <strong>oprogramowania</strong>, które<br />

dysponuj ogólnymi mechanizmami umoliwiajcymi badanie reakcji.


126 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

Wewntrzne monitorowanie pracy<br />

Testowanie mog wspomaga taktyki dotyczce wewntrznych informacji o stanie:<br />

Wbudowany mechanizm monitorowania. Interfejs moe udostpnia informacje o stanie,<br />

obcieniu, dopuszczalnym obcieniu, zabezpieczeniach i inne. Moe to by trway<br />

interfejs komponentu lub interfejs wprowadzany tymczasowo — przy uyciu takich metod,<br />

jak makra preprocesora lub programowanie aspektowe. Wczenie monitorowania<br />

oznacza zazwyczaj rozpoczcie rejestrowania zdarze. Warto zwróci uwag, e korzystanie<br />

z takiego rozwizania moe doprowadzi do wyduenia testów, poniewa musz one<br />

by powtarzane take po wyczeniu ledzenia. Jednak korzyci z uwidocznienia przebiegu<br />

pracy komponentu bardzo czsto przewyszaj koszty dodatkowego testowania.<br />

Rysunek 5.11 przedstawia podsumowanie taktyk testowalnoci.<br />

Rysunek 5.11. Taktyki testowalnoci<br />

5.7. Taktyki funkcjonalnoci<br />

Przypomnijmy z rozdziau 4., e pojcie funkcjonalnoci odnosi si do tego, jak atwo uytkownik<br />

moe wykonywa swoje zadania oraz na jak pomoc ze strony systemu moe liczy. Do<br />

zwikszenia funkcjonalnoci prowadz dwie kategorie taktyk. Kada z nich dotyczy innej klasy<br />

„uytkowników”. Pierwsza kategoria, taktyki czasu wykonywania, polega na wspomaganiu dzia-<br />

a uytkownika w trakcie pracy systemu. Druga wie si z iteracyjnym charakterem procedur<br />

projektowania interfejsu uytkownika. Jest to pomoc dla twórcy interfejsu w czasie projektowania.<br />

Jest ona zbliona w swoim charakterze do omawianych wczeniej taktyk modyfikowalnoci.<br />

Rysunek 5.12 przedstawia cel taktyk funkcjonalnoci dla czasu wykonywania.<br />

Rysunek 5.12. Cel taktyk funkcjonalnoci dla czasu wykonywania


5.7. TAKTYKI FUNKCJONALNOCI 127<br />

Taktyki dla czasu wykonywania<br />

W trakcie pracy systemu podstawowym mechanizmem sprzyjajcym funkcjonalnoci jest<br />

przekazywanie uytkownikowi informacji zwrotnych, które opisuj wykonywane przez system<br />

czynnoci i daj uytkownikowi moliwo korzystania ze specjalnych polece (o kilku wspomnielimy<br />

w rozdziale 4.). Anuluj, Cofnij, Scal i Poka wiele widoków jednoczenie to typowe<br />

funkcje wspierajce uytkownika w korygowaniu bdów lub deniu do efektywnej pracy.<br />

Badacze interakcji midzy czowiekiem a komputerem uywaj poj „inicjatywa uytkownika”,<br />

„inicjatywa systemu” i „inicjatywa mieszana” — wskazuj one, która strona utrzymuje<br />

inicjatyw w trakcie wykonywania rónych czynnoci i decyduje o ich przebiegu. Scenariusze<br />

przedstawione w rozdziale 4. cz obie perspektywy. Przykadowo w celu anulowania komendy<br />

uytkownik korzysta z polecenia Anuluj, co powoduje reakcj systemu — jest to inicjatywa<br />

uytkownika. Ju w trakcie anulowania system moe wywietli pasek postpu — jest to ju<br />

inicjatywa systemu. Przy anulowaniu polecenia mamy wic do czynienia z inicjatyw mieszan.<br />

Rozrónienie to przydaje si przy omawianiu taktyk, które mona zastosowa w celu realizacji<br />

tego czy innego scenariusza.<br />

Gdy inicjatyw podejmuje uytkownik, architekt projektuje reakcj, podobnie jak przy<br />

kadej innej funkcji systemu. Niezbdne jest okrelenie obowizków systemu w zakresie reakcji<br />

na polecenie. Wracajc do przykadu polecenia Anuluj: gdy uytkownik wydaje polecenie,<br />

system musi by gotowy do jego odbioru (odpowiada za zapewnienie obserwatora, który nie<br />

bdzie zablokowany w zwizku z wykonywaniem anulowanych operacji); anulowana operacja<br />

musi zosta przerwana; zasoby uywane przez t operacj musz zosta zwolnione; wszystkie<br />

komponenty, których praca wie si z anulowan operacj, musz zosta poinformowane, by<br />

mogy podj odpowiednie w takiej sytuacji dziaania.<br />

Gdy inicjatyw podejmuje system, podstaw s pewne informacje o uytkowniku, wykonywanym<br />

przez uytkownika zadaniu lub stanie samego systemu. S to róne modele, z których kady<br />

wymaga innego rodzaju danych wejciowych. Taktyki zwizane z inicjatyw systemu okrelaj<br />

modele stosowane przez system do przewidywania albo wasnych zachowa, albo zamierze uytkownika.<br />

Zahermetyzowanie takich informacji uatwia architektowi dopracowywanie i modyfikowanie<br />

modeli. Dostosowanie i modyfikacja mog by dynamiczne, oparte na zachowaniach<br />

uytkownika albo bardziej tradycyjne, wykonywane w trakcie budowy <strong>oprogramowania</strong>.<br />

Utrzymywanie modelu zadania. Model zadania suy do ledzenia kontekstu pracy w sposób<br />

umoliwiajcy systemowi okrelenie zamiarów uytkownika i uaktywnienie waciwych<br />

mechanizmów pomocy. Przykadowo wiedza o tym, e zdania rozpoczyna si zazwyczaj<br />

wielk liter, pozwala aplikacji korygowa zdania, w których uytkownik nie dostosowa si<br />

do tej reguy.<br />

Utrzymywanie modelu uytkownika. Model uytkownika suy do okrelania jego znajomoci<br />

systemu, jego zachowa w kategoriach oczekiwanego czasu reakcji lub innych<br />

charakterystyk specyficznych dla pewnej osoby czy klasy osób. Przykadem zastosowania<br />

modelu uytkownika jest dopasowanie szybkoci przewijania do szybkoci czytania.<br />

Utrzymywanie modelu systemu. Model systemu suy do okrelania oczekiwanego zachowania<br />

systemu po to, by przekaza odpowiednie informacje zwrotne uytkownikowi.<br />

Jest to na przykad oszacowanie czasu potrzebnego do skoczenia biecej operacji.<br />

Taktyki dla czasu projektowania<br />

Procedury testowania wi si czsto z wieloma zmianami w interfejsie uytkownika — specjalista<br />

zajmujcy si funkcjonalnoci regularnie przekazuje programistom poprawki do bie-<br />

cego projektu interfejsu, a ci wprowadzaj odpowiednie zmiany. W usprawnieniu tego schematu<br />

pomaga taktyka, która jest specjalizacj opisanej wczeniej taktyki spójnoci semantycznej:


128 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

Oddzielenie interfejsu uytkownika od reszty aplikacji. Lokalizacja oczekiwanych<br />

zmian jest gównym uzasadnieniem spójnoci semantycznej. Poniewa interfejs uytkownika<br />

ulega czstym zmianom zarówno przed wdroeniem, jak i po nim, odseparowanie jego<br />

kodu jest pierwszym krokiem w kierunku lokalizacji. Mona wymieni kilka wzorców<br />

architektury, które wykorzystuj t taktyk i uatwiaj modyfikowanie interfejsu:<br />

Model-View-Controller (model-widok-kontroler),<br />

Presentation-Abstraction-Control (prezentacja-abstrakcja-sterowanie),<br />

Seeheim,<br />

Arch/Slinky.<br />

Rysunek 5.13 przedstawia podsumowanie taktyk funkcjonalnoci dla czasu wykonywania<br />

Rysunek 5.13. Taktyki funkcjonalnoci dla czasu wykonywania<br />

5.8. Taktyki atrybutów jakociowych<br />

a wzorce architektury<br />

Przedstawilimy zbiór taktyk, których stosowanie pomaga architektowi uzyska rónego rodzaju<br />

atrybuty jakociowe. W <strong>praktyce</strong> podejmowana decyzja konstrukcyjna to najczciej wybór<br />

pewnego wzorca lub zbioru wzorców, które maj zapewni uycie jednej lub wikszej liczby<br />

taktyk. Jednak kady wzorzec nieodmiennie wprowadza zbiór wielu taktyk — podanych<br />

lub nie. Niech ilustracj bdzie analiza wzorca projektowego Active Object (aktywny obiekt),<br />

opisanego w [Schmidt 00]:<br />

Wzorzec Active Object usuwa cise powizanie midzy wykonywaniem metody a jej wywoaniem,<br />

aby zwikszy wspóbieno i uproci synchronizowany dostp do obiektów<br />

we wasnym wtku sterowania.<br />

Wzorzec skada si z szeciu elementów: porednika, który zapewnia interfejs pozwalajcy<br />

klientom wywoywa publicznie dostpne metody aktywnego obiektu; dania metody, które<br />

definiuje interfejs wykonywania metod aktywnego obiektu; listy aktywacyjnej, przechowujcej<br />

bufor oczekujcych da metod; jednostki szeregujcej decydujcej o tym, które danie<br />

metody zostanie wykonane jako nastpne; wykonawcy definiujcego zachowania i stan, modelowane<br />

przez aktywny obiekt; a take przyszej wartoci, która pozwala klientowi pobra<br />

wynik wywoania metody.


5.9. WZORCE I STYLE ARCHITEKTURY 129<br />

Celem stosowania tego wzorca jest uzyskanie wspóbienoci. Jest to cel dotyczcy wydajnoci.<br />

Architekt stosuje wic taktyk wydajnoci „wprowadzenie wspóbienoci”. Zwrómy<br />

jednak uwag na inne taktyki, które wprowadza wzorzec.<br />

Ukrywanie informacji (modyfikowalno). Kady element ma pewien zakres odpowiedzialnoci,<br />

ale ukrywa sposób dziaania.<br />

Porednik (modyfikowalno). Porednik buforuje zmiany w sposobie wywoywania metod.<br />

Czas wizania (modyfikowalno). Wzorzec aktywnego obiektu opiera si na zaoeniu,<br />

e dania docieraj do obiektu w czasie wykonywania. Kwestia czasu wizania klienta<br />

z porednikiem pozostaje otwarta.<br />

Zasady szeregowania (wydajno). Jednostka szeregujca posuguje si pewnym zbiorem<br />

zasad.<br />

Kady wzorzec to poczenie taktyk, czsto powizanych z rónymi atrybutami jakociowymi,<br />

i kada implementacja wzorca wie si z wyborami dotyczcymi tych taktyk. Przykadowo<br />

implementacja dziennika da moe jednoczenie umoliwia przywracanie systemu, zapewnia<br />

zapis przebiegu pracy i uatwia testowanie.<br />

Architekt musi dobrze zna i rozumie wprowadzone w konstrukcji systemu taktyki, a jego<br />

prac jest poszukiwanie takiego ich poczenia, które pozwoli uzyska wszystkie wymagane<br />

cechy systemu.<br />

5.9. Wzorce i style architektury<br />

Wzorce architektury <strong>oprogramowania</strong> nazywa si czasem stylami architektury. Jest to trafna<br />

analogia ze stylami architektury w budownictwie, takimi jak gotyk, secesja czy barok. Styl buduje<br />

kilka istotnych elementów i regu czenia ich w sposób niezakócajcy spójnoci. Wzorzec<br />

architektury jest okrelany przez:<br />

zespó typów elementów (takich jak magazyn danych lub komponent, który oblicza funkcj<br />

matematyczn),<br />

topologi elementów, która wyraa zwizki midzy nimi,<br />

zespó ogranicze semantycznych (na przykad filtry w stylu z potokami i filtrami to czyste<br />

przetworniki danych — przeksztacaj one strumie wejciowy w strumie wyjciowy,<br />

ale nie maj kontroli nad elementami wczeniejszymi lub póniejszymi),<br />

zespó mechanizmów interakcji (jak wywoanie procedury, subskrypcja zdarze, tablica<br />

podrczna), które okrelaj sposób koordynacji elementów w ramach dozwolonej topologii.<br />

Mary Shaw i David Garlan podjli znaczc prób skatalogowania zbiorów wzorców architektury,<br />

które nazwali stylami lub idiomami. W toku ewolucji inynierii <strong>oprogramowania</strong><br />

z podejcia tego wyoniy si lepiej znane dzisiaj wzorce architektury, analogiczne do wzorców<br />

projektowych i wzorców pisania kodu.<br />

Inspiracj dla autorów [Shaw 96] byo spostrzeenie, e istnieje wiele znanych wysokopoziomowych<br />

abstrakcji zoonych systemów, ale nie zostay one wczeniej systematycznie zbadane<br />

i skatalogowane, podobnie jak robi si w innych dziedzinach technicznych.<br />

Poza bardzo regularnym wystpowaniem w projektach systemów drug charakterystyczn<br />

cech wzorców architektury jest to, e nie s one atwo rozpoznawalne — przede wszystkim<br />

dlatego, e róne zastosowania prowadz do rónego nazewnictwa. Odpowiedzi byo powstanie<br />

katalogów zawierajcych opisy typowych wzorców, ich wasnoci i znaczenia dla systemu.<br />

Przykad takiego katalogu wida na rysunku 5.14.


130 5. UZYSKIWANIE ATRYBUTÓW JAKOCIOWYCH<br />

Rysunek 5.14. May katalog wzorców architektury uporzdkowany wedug relacji „jest…”<br />

Widoczne na rysunku wzorce zostay sklasyfikowane w grupy tworzce pewn hierarchi<br />

dziedziczenia. Na przykad system zdarzeniowy jest „podstylem” ogólniejszego stylu niezalenoci<br />

elementów. Z kolei wród systemów zdarzeniowych mona wyróni dwie podkategorie:<br />

z wywoaniem jawnym i z wywoaniem niejawnym.<br />

Jaka jest relacja midzy wzorcami architektury a taktykami? Jak pisalimy wczeniej, traktujemy<br />

taktyk jako podstawowy „blok konstrukcyjny” projektu, z którego budowane s wzorce<br />

i strategie.<br />

5.10. Podsumowanie<br />

W tym rozdziale pokazalimy, w jaki sposób architekt osiga wymagane przez specyfikacj<br />

atrybuty jakociowe niezbdne do realizacji celów systemu. Zajmowalimy si taktykami stosowanymi<br />

przez architekta w celu skonstruowania waciwego projektu z uyciem rónych<br />

wzorców i strategii architektury.<br />

Przedstawilimy list szeroko znanych taktyk osigania szeciu atrybutów omówionych w rozdziale<br />

4.: dostpnoci, modyfikowalnoci, wydajnoci, bezpieczestwa, testowalnoci i funkcjonalnoci.<br />

Taktyki podane dla kadego z nich s w powszechnym uyciu i atwo zastosowa<br />

je w <strong>praktyce</strong>.<br />

Jak napisalimy, stosowanie wzorców architektury rozpoczyna si od wyboru podanych<br />

taktyk. W kadym projekcie pojawia si wiele taktyk i wiedza o tym, na które atrybuty wpywaj<br />

one pozytywnie, jakie s ich skutki uboczne oraz czym grozi rezygnacja z innych, ma kluczowe<br />

znaczenie w pracy kadego architekta.


5.11. PYTANIA DO DYSKUSJI 131<br />

5.11. Pytania do dyskusji<br />

(1) Zastanów si nad popularn witryn WWW, tak jak na przykad Amazon lub eBay. Podobnie<br />

jak przy pytaniu 3. w rozdziale 4. utwórz kilka scenariuszy atrybutów jakociowych.<br />

Jakie taktyki powiniene rozway przy wybieraniu wzorców i strategii architektury,<br />

aby uatwi spenienie zidentyfikowanych wymaga?<br />

(2) Dla zbioru taktyk utworzonego w odpowiedzi na pytanie 1.: jakich kompromisów z innymi<br />

atrybutami jakociowymi (na przykad bezpieczestwem, dostpnoci lub modyfikowalnoci)<br />

moesz oczekiwa po zastosowaniu tych taktyk?<br />

(3) Funkcjonalnoci nie powica si czsto wystarczajcej uwagi przy projektowaniu architektury.<br />

Takie traktowanie utrudnia osignicie istotnych celów jakociowych. Zastanów<br />

si nad systemem, którego architektur dobrze znasz, i spróbuj wyliczy zastosowane<br />

w nim taktyki funkcjonalnoci.<br />

5.12. Literatura<br />

Wicej informacji o zabezpieczeniach systemu mona znale w [Ramachandran 02]. Zwizki<br />

midzy funkcjonalnoci a wzorcami architektury <strong>oprogramowania</strong> s omawiane w [Bass 01a].<br />

O technikach dostpnoci systemów rozproszonych traktuje [Jalote 94]. Z kolei [McGregor 01]<br />

jest dobrym ródem informacji o zagadnieniach zwizanych z testowalnoci.<br />

Dwuczciowy katalog wzorców architektury, [Buschmann 96] i [Schmidt 00], zawiera omówienie<br />

wzorców MVC i PAC (tom 1.) i koncepcji architektury opartej na wzorcach (tom 2.).<br />

Opis wspomagajcej uzyskiwanie wysokiej dostpnoci architektury Simplex mona znale na<br />

stronie http://www.sei.cmu.edu/simplex/.<br />

W [Bachmann 02] omówienie stosowania taktyk jest podstaw do analizy modyfikowalnoci<br />

i wydajnoci, [Chretienne 95] zawiera opisy mechanizmów szeregowania, a w [Briand 99] mona<br />

znale opis miar siy powiza moduów.<br />

Pen dokumentacj wzorca Model-View-Controller mona znale w [Gamma 95], wzorca<br />

Presentation-Abstraction-Control — w [Buschmann 96], wzorca Seeheim — w [Pfaff 85],<br />

a Arch/Slinky — w [UIMS 92].


Skorowidz<br />

A<br />

ABC, Patrz cykl biznesowy architektury<br />

Active Object, 128<br />

adaptation data, Patrz dane adaptacji<br />

ADD, Patrz metoda Projektowania wedug Atrybutów<br />

algorytm<br />

komponentu preferowanego, 110<br />

rzdów wikszoci, 110<br />

allocation structure, Patrz struktura alokacji<br />

analiza wymaga, Patrz wymagania analiza<br />

analizator<br />

abstrakcyjnego drzewa skadniowego, 227<br />

leksykalny, 227<br />

aplikacja, 183, 335, 401<br />

application, Patrz aplikacja<br />

architectural<br />

mismatch, Patrz architektura <strong>oprogramowania</strong><br />

niedopasowanie<br />

pattern, Patrz architektura <strong>oprogramowania</strong><br />

wzorzec<br />

strategy, Patrz architektura <strong>oprogramowania</strong><br />

strategia<br />

Architecture Business Cycle, Patrz cykl biznesowy<br />

architektury<br />

architecture reconstruction, Patrz<br />

architektura <strong>oprogramowania</strong> rekonstrukcja<br />

Architecture Tradeoff Analysis Method, Patrz<br />

metoda Analizy Kompromisów w Architekturze<br />

architekt, 25, 26, 29, 32, 34, 42, 50, 56, 101, 198,<br />

223, 415, 437, 439<br />

architektura<br />

J2EE, Patrz J2EE<br />

systemowa, 49<br />

architektura <strong>oprogramowania</strong>, 23, 25, 26, 29, 30,<br />

34, 37, 38, 40, 45, 46, 47, 49, 57, 59, 61, 83, 84,<br />

155, 169, 197, 357, 435<br />

analiza, 33, 248<br />

czynniki ksztatujce, 156, 158, 159<br />

diagram kontekstu, 203<br />

dokumentacja, 39, 149, 167, 198, 202, 208,<br />

210, 438<br />

implementacja, 45<br />

implementacja przyrostowa, 34<br />

instrukcja rónicowania, 203<br />

katalog elementów, 203<br />

linia produktów, 331<br />

ocena, 333<br />

Luther, 389, 390, 391, 396, 400, 401, 402, 403,<br />

409, 410<br />

miary, 250<br />

niedopasowanie, 49, 416<br />

obiektowa, 435<br />

ocena, 247, 250, 251, 252<br />

metody, 250, 252<br />

perspektywa, Patrz perspektywa<br />

prezentacja, 32<br />

projektowanie, 157, 438<br />

przegldy, 29<br />

referencyjna, 42, 66<br />

rekonstrukcja, 39, 199, 223, 225, 228, 233, 237<br />

baza danych, 228, 229, 237<br />

ekstrakcja informacji, 226, 237<br />

identyfikacja wzorców, 232<br />

interakcje, 232<br />

konflikt nazw, 231<br />

metoda warsztatowa, 224, 229<br />

narzdzia, 224, 227<br />

scalanie informacji, 230, 231, 238<br />

wizualizacja, 232, 234, 235


456 SKOROWIDZ<br />

architektura <strong>oprogramowania</strong><br />

reprezentacja, 39, 51<br />

schemat gówny, 203<br />

sownik terminów, 204<br />

strategia, 108, 287, 288, 291, 295, 298<br />

struktura, 169, Patrz struktura<br />

styl, Patrz architektura <strong>oprogramowania</strong><br />

wzorzec<br />

tworzenie, 32, 33, 51<br />

uzasadnienie, 204<br />

warstwowa, 74<br />

weryfikacja, Patrz architektura<br />

<strong>oprogramowania</strong> ocena<br />

wzorzec, 41, 42, 49, 108, 128, 129, 130, 157,<br />

159, 183, 232, 420, 438<br />

zgodno, 33<br />

znaczenie, 43<br />

artefakt, Patrz atrybuty jakociowe artefakt<br />

AST, Patrz analizator abstrakcyjnego drzewa<br />

skadniowego<br />

atak, 122<br />

obrona, 122<br />

przywracanie systemu, 124<br />

wykrywanie, 123<br />

ATAM, Patrz metoda Analizy Kompromisów<br />

w Architekturze<br />

atrybuty jakociowe, 32, 34, 42, 46, 58, 64, 67, 81,<br />

83, 85, 128, 147, 199, 274, 275, 284, 285, 295, 299,<br />

369, 370, 375, 383, 390, 393, 421, 425, 437<br />

artefakt, 86, 87, 90, 92, 94, 96, 98, 101<br />

bezpieczestwo, 81, 85, 95, 122, 284, 313, 315<br />

biznesowe, 103<br />

bodziec, 86, 90, 92, 94, 96, 98, 100<br />

czas projektowania, 127<br />

dostpno, 81, 89, 90, 109, 124, 136, 138, 284,<br />

313, 316, 317<br />

funkcjonalno, 81, 84, 85, 99, 100, 102, 104,<br />

126, 284<br />

integrowalno, 194<br />

kompletno, 105<br />

atwo testowania, 81<br />

atwo wprowadzania zmian, Patrz atrybuty<br />

jakociowe modyfikowalno<br />

miara reakcji, 86, 87, 91, 92, 94, 97, 99, 101<br />

modyfikowalno, 61, 68, 81, 85, 88, 91, 112,<br />

149, 160, 194, 195, 284, 313, 315, 317<br />

niezawodno, 85<br />

poprawno, 105<br />

przenono, 103<br />

reakcja, 86, 87, 91, 92, 94, 96, 98, 101, 118<br />

scenariusz, 86, 88, 89, 90, 92, 94, 96, 98, 100,<br />

101, 157, 158, 165, 166<br />

skalowalno, 103, 313, 316, 317, 395<br />

spójno koncepcyjna, 104<br />

rodowisko, 86, 87, 90, 92, 94, 96, 98, 101, 135, 177<br />

taktyka, 107, 109, 110, 112, 113, 115, 118, 119,<br />

122, 124, 126, 130, 149, 157, 159, 437, 438<br />

testowalno, 97, 124<br />

wydajno, 81, 85, 93, 95, 104, 118, 136, 160,<br />

178, 194, 284, 313, 315, 316, 317<br />

wykonalno, 105<br />

ródo bodca, 86, 87, 90, 92, 94, 96, 98, 100<br />

Attribute Driven Design, Patrz metoda<br />

Projektowania wedug Atrybutów<br />

availability, Patrz atrybuty jakociowe dostpno<br />

awaria, 90, 109, 110, 143, 148<br />

B<br />

bezpieczestwo, Patrz atrybuty jakociowe<br />

bezpieczestwo<br />

biblioteka WWW, Patrz libWWW<br />

bd, Patrz obsuga bdów<br />

Bohr Niels, 435, 436<br />

bridge, Patrz most<br />

Brooks Fred, 57, 168, 441<br />

C<br />

CBAM, Patrz metoda Analizy Kosztów i Korzyci<br />

cele biznesowe, 156, 414<br />

CGI, 311<br />

choroba symulatorowa, 179<br />

ciepy restart, Patrz redundancja pasywna<br />

collaboration, Patrz system wspódziaajce zespoy<br />

COM, 317<br />

Common Object Request Broker Architecture,<br />

Patrz CORBA<br />

component-and-connector structure, Patrz<br />

struktura komponenty-zcza<br />

CORBA, 317, 367, 368, 418<br />

Cost Benefit Analysis Method, Patrz metoda<br />

Analizy Kosztów i Korzyci<br />

cross-side scripting, 431<br />

cykl<br />

ycia <strong>oprogramowania</strong>, 438<br />

biznesowy architektury, 25, 26, 30, 31, 35, 62,<br />

135, 176, 247, 301, 313, 318, 339, 368, 411,<br />

436, 437<br />

czas reakcji, 26<br />

D<br />

Dali, 225, 229, 232, 237<br />

dane<br />

adaptacji, 148, 149<br />

trwae, 53<br />

wspóuytkowane, 53, 54<br />

dekompozycja, 52, 84, 113, 149, 157, 159, 166, 190,<br />

191, 192


SKOROWIDZ 457<br />

deskryptor wdroenia, 381, 383<br />

diagram, Patrz schemat<br />

Dijkstra Edsger, 58, 59, 141<br />

dostpno, Patrz atrybuty jakociowe dostpno<br />

E<br />

efekt domina, 112, 113, 114, 115, 160<br />

EJB, 367, 371, 373<br />

F<br />

filtr, 123, 129, 215, 217, 219, 240, 316<br />

framework, Patrz platforma<br />

FTP, 309<br />

funkcja, 83, 84<br />

funkcjonalno, Patrz atrybuty jakociowe<br />

funkcjonalno<br />

G<br />

Garlan David, 49, 129<br />

Glass Bob, 77<br />

gorcy restart, Patrz redundancja aktywna<br />

grupa<br />

docelowa, 32, 198<br />

interesu, 26, 28, 34, 35, 43, 101, 135, 198, 199,<br />

201, 202, 255, 285, 339, 437<br />

H<br />

hermetyzowanie informacji, Patrz ukrywanie<br />

informacji<br />

Hybertsson Henryk, 24<br />

I<br />

IDE, 317<br />

idiom, Patrz architektura <strong>oprogramowania</strong> wzorzec<br />

implementacja, 84, 189<br />

ograniczenia, 422, 427<br />

instrumentacja kodu, 227<br />

integrated development environment, Patrz IDE<br />

interface, Patrz interfejs<br />

interface mismatch, Patrz interfejs niedopasowanie<br />

interfejs, 205, 377, 378, 394, 416<br />

API, 397, 401, 402<br />

komponentów, 215<br />

negocjowany, 421<br />

niedopasowanie, 416, 417, 419, 420<br />

parametryzowany, 421<br />

publiczny, 68<br />

semantyka, 206<br />

skadnia, 206<br />

szablon opisu, 206<br />

uytkownika, 393, 396, 397, 399, 400, 401, 415<br />

wariantowo, 208<br />

interoperacyjno, 436<br />

intrusion detection system, Patrz system<br />

wykrywania wama<br />

inynieria odwrotna, 223<br />

Iverson Ken, 57<br />

J2EE, 317, 367, 368, 371, 375, 388, 396, 403, 409, 411<br />

J2EE/EJB, 367, 383, 388<br />

jarzmo testów, 98, 125<br />

Java, 368<br />

Java 2 Enterprise Edition, Patrz J2EE<br />

Jzyk UML, Patrz UML<br />

J<br />

K<br />

kernel, 85, 145<br />

klasa, 53, 215, 217, 403<br />

kod<br />

adaptacyjny, 421<br />

korygujcy, 417, 418<br />

kompletno, Patrz atrybuty jakociowe<br />

kompletno<br />

komponent, 51, 53, 55, 58, 110, 111, 118, 204, 215,<br />

401, 402, 416<br />

aktualizacja, 111<br />

bezstanowy sesyjny, 374, 383, 384, 387, 408<br />

EJB, 373, 377, 379, 381, 384, 387, 403<br />

encyjny, 374, 375, 380, 384, 385, 386, 387, 407,<br />

408<br />

funkcji ogólnych, 402<br />

komercyjny, 439<br />

kompatybilno, 416<br />

kwalifikacja, 419<br />

pakiet, 403<br />

podstawowy, 402<br />

selekcja, 413<br />

specyficzny dla dziedziny, 402<br />

stanowy sesyjny, 374, 383, 384, 387<br />

z funkcjami wielokrotnego uytku, 404<br />

zarzdzania organizacj pracy, 402, 404<br />

zastpczy, 170<br />

komputer ubraniowy, 390<br />

konflikt, 34<br />

Kruchten Philippe, 56<br />

latencja, 119<br />

libWWW, 307, 309<br />

L


458 SKOROWIDZ<br />

linia <strong>oprogramowania</strong>, 325, 326, 328, 344<br />

ewolucja, 335<br />

narzdzia, 329<br />

ocena, 333<br />

trudnoci, 334<br />

wdraanie, 334<br />

zakres, 328<br />

zrónicowanie, 331<br />

linia produktów, 48, 59, 339, 341, 437<br />

lokalizowanie modyfikacji, 112, 113, 160<br />

M<br />

mapowanie, 54, 76, 144, 185, 189, 211, 218, 225,<br />

234, 255, 431, 439<br />

mechanizm wywoa niejawnych, 28<br />

mediator, 417, 418, 421<br />

meneder<br />

dostpu, 310<br />

interfejsu uytkownika, 310<br />

pamici, 310<br />

protokoów, 310<br />

strumieni, 310, 311<br />

metoda, 420<br />

Analizy Kompromisów w Architekturze, 33,<br />

47, 156, 199, 252, 253, 255, 267, 281, 283,<br />

284, 285, 298<br />

faza analizy, 257<br />

faza procesu, 256, 268, 269<br />

Analizy Kosztów i Korzyci, 252, 283, 285,<br />

291, 298, 333, 437<br />

fazy, 289, 292<br />

podstawy, 285<br />

ATAM, Patrz metoda Analizy Kompromisów<br />

w Architekturze<br />

CBAM, Patrz metoda Analizy Kosztów<br />

i Korzyci<br />

oceniania architektury przed rozpoczciem<br />

budowy, 25<br />

oparta na pomiarach, 250<br />

oparta na pytaniach, 250<br />

parametryzacji, 421<br />

Projektowania wedug Atrybutów, 157, 158, 199<br />

przyrostowej budowy <strong>oprogramowania</strong>, 25<br />

Rational Unified Process, 157<br />

Simplex, 110<br />

warsztatowa, Patrz architektura<br />

<strong>oprogramowania</strong> rekonstrukcja metoda<br />

warsztatowa<br />

miara ilociowa, 34<br />

miara reakcji, Patrz atrybuty jakociowe miara reakcji<br />

middleware, 91, 113, 157, 170, 436<br />

model<br />

jednowtkowy, 309<br />

programowania, 317<br />

referencyjny, 42, 180<br />

strukturalny, 175, 177, 180, 183, 186<br />

modifiability, Patrz atrybuty jakociowe<br />

modyfikowalno<br />

module structure, Patrz struktura moduów<br />

modu, 34, 51, 52, 113, 168, 212 Patrz te procedura<br />

brokera danych, 70<br />

decyzji, 69<br />

dekompozycja, 67, 68, 158, 159<br />

filtrów, 70<br />

generowania systemu, 71<br />

generujcy dane, 34, 37<br />

interfejs, 34, 71, 164<br />

kopia, 164<br />

modeli fizycznych, 70<br />

narzdziowy, 71<br />

obsugi funkcji, 71<br />

opis, 68<br />

pobierajcy dane, 34<br />

rozszerzajcy, 308<br />

sekret, Patrz sekret<br />

typu danych aplikacji, 70<br />

ukrywania warstwy sprztowej, 69<br />

ukrywania zachowa, 69<br />

uogólnienie, 114<br />

zalenoci, 114<br />

modyfikowalno, Patrz atrybuty jakociowe<br />

modyfikowalno<br />

most, 417, 418<br />

N<br />

NET, 317, 367<br />

niedopasowanie architekturalne, Patrz architektura<br />

<strong>oprogramowania</strong> niedopasowanie<br />

O<br />

obiekty rozproszone, 28<br />

obsuga bdów, 58, 72, 148<br />

odwoywanie, 111<br />

opónienie czasu wizania, 113, 117<br />

oprogramowanie<br />

samokonfigurujce si, 421<br />

wytwarzanie, 31<br />

organizacja, 25, 392<br />

cele, 25, 30<br />

struktura, 27, 29, 46, 167, 169, 336, 348, 392<br />

osona, 417, 418, 421<br />

osoby zainteresowane, Patrz grupa interesu<br />

P<br />

parametryzacja, 421<br />

Parnas David, 58, 65, 416, 441<br />

parser, 227, 308


SKOROWIDZ 459<br />

perspektywa, 51, 55, 162, 200, 201, 203, 229, 439<br />

alokacji, 56, 201, 220<br />

budowy <strong>oprogramowania</strong>, 56<br />

dekompozycji, 140, 149, 162, 164, 201, 206,<br />

310, 359<br />

dynamiczna, 34<br />

fizyczna, 56<br />

implementacji, 201<br />

katalog, 210<br />

klient-serwer, 143, 149, 201<br />

kodu, 56, 144<br />

komponenty-zcza, 56, 162, 201, 202, 206, 215<br />

koncepcyjna, 56<br />

logiczna, 56<br />

mapowanie, 210<br />

moduów, 56, 164, 201, 212<br />

odpornoci na bdy, 149<br />

odporno na uszkodzenia, 147<br />

powiza moduów, 56<br />

procesów, 55, 56, 141, 149, 202, 357<br />

relacje, 149<br />

rozmieszczenia, 55, 162, 163, 164, 201<br />

statyczna, 34<br />

szablon, 210<br />

uycia, 201, 202, 206<br />

warstwowa, 145, 201, 202, 359<br />

wspóbienoci, 162, 164<br />

wykonawcza, 56<br />

PICS, 306<br />

Platform for Internet Content Selection, Patrz PICS<br />

platforma, 48, 50, 69, 73, 91, 103, 104, 110, 111,<br />

113, 171, 175, 180, 195, 241, 303, 304, 308, 309,<br />

323, 353, 355, 357, 359, 368, 370, 435<br />

poprawno, Patrz atrybuty jakociowe poprawno<br />

port, Patrz interfejs komponentów<br />

porednik, 116, 128<br />

potok, 41, 129, 215, 219<br />

powielanie, 111<br />

praca w czasie rzeczywistym, 26, 177, 179<br />

problem modelowy, 422, 427<br />

procedura, Patrz te modu<br />

dostpowa, 68<br />

interfejsów urzdze, 75<br />

modeli fizycznych, 75<br />

obsugi bdów, Patrz obsuga bdów<br />

usug wspólnych, 75<br />

proces, 35, 53, 75, 141<br />

inicjowany na danie, 76<br />

okresowy, 75<br />

profilowanie, 227<br />

projektowanie obiektowe, 58, 68<br />

protokó<br />

HTTP, 307, 309, 315, 316, 396, 398<br />

HTTPS, 305, 309, 315, 316<br />

NNTP, 309<br />

SSL, 315<br />

Usenet, 309<br />

WAP, 399<br />

prototyp, 47<br />

budowa iteracyjna, 29<br />

przenono, Patrz atrybuty jakociowe<br />

przenono<br />

przetwarzanie<br />

rozproszone, 386, 395<br />

równolege, 34<br />

przewidywanie zmian, 113<br />

przybornik, Patrz warsztat<br />

przywracanie stanu systemu, 110<br />

punkt kontrolny, 111<br />

Q<br />

quality attribute scenario, Patrz atrybuty<br />

jakociowe scenariusz<br />

quality attribute tactics, Patrz atrybuty jakociowe<br />

taktyka<br />

R<br />

Rational Unified Process, 56<br />

reakcja, Patrz atrybuty jakociowe reakcja<br />

redundancja, 148, 150<br />

aktywna, 110, 111<br />

pasywna, 111<br />

podwójna, Patrz redundancja pasywna<br />

sprztowa, 284<br />

reference model, Patrz model referencyjny<br />

rekonstrukcja, Patrz architektura <strong>oprogramowania</strong><br />

rekonstrukcja<br />

relacja<br />

ma prawo uywa, 73<br />

uywa, 71, 72<br />

wywouje, 71<br />

repozytorium, 53, 119, 232, 258, 331, 355, 357,<br />

363, 408<br />

resynchronizacja stanu, 111<br />

return on investment, Patrz zwrot z inwestycji<br />

reverse engineering, Patrz inynieria odwrotna<br />

Rigi, 232<br />

ROI, Patrz zwrot z inwestycji<br />

rola, 177, 180<br />

rollback, Patrz odwoywanie<br />

rozwizanie modelowe, 422, 427, 428, 429<br />

scenariusz, 81, 156, 255, 256, 260, 261, 262, 264,<br />

266, 273, 274, 276, 278, 279, 285, 286, 290, 291,<br />

293, 294, 408, 437<br />

schemat<br />

karuzelowy, 316<br />

macierzowy, 191<br />

sekwencji, 204<br />

stanów, 204<br />

S


460 SKOROWIDZ<br />

sekret, 67, 69, 70, 71<br />

sequence diagram, Patrz schemat sekwencji<br />

serwlet, 372, 379, 393, 400, 403, 409, 429, 431<br />

shadow operation, Patrz powielanie<br />

Shaw Mary, 129<br />

signature, Patrz sygnatura<br />

skalowalno, Patrz atrybuty jakociowe<br />

skalowalno<br />

skalowanie<br />

pionowe, 386<br />

poziome, 386<br />

skrypt CGI, Patrz CGI<br />

software product line, Patrz linia <strong>oprogramowania</strong><br />

specyfikacja wymaga, 26, 66<br />

spójno<br />

koncepcyjna, Patrz atrybuty jakociowe<br />

spójno koncepcyjna<br />

semantyczna, 113, 127, 141, 160<br />

stakeholders, Patrz grupa interesu<br />

statechart, Patrz schemat stanów<br />

sterta, 387<br />

strona shadow, 111<br />

Structural Model, Patrz model strukturalny<br />

struktura, 51, 54, 61, 201<br />

alokacji, 51, 53<br />

dekompozycji, 52, 54, 55, 61, 67, 68, 69<br />

dominujc, 55<br />

implementacja, 54<br />

klasy, 53, 54<br />

klient-serwer, 53, 54<br />

komponenty-zcza, 51, 53, 55<br />

moduów, 51, 52<br />

podzia pracy, 54<br />

proces, 53, 54<br />

procesów, 61, 67, 75, 77<br />

rozmieszczenie, 53<br />

uycia, 52, 54, 61, 66, 67, 71, 73, 74<br />

warstwowa, 58<br />

wspóbieno, 53, 54<br />

stub, 170<br />

styl, Patrz architektura <strong>oprogramowania</strong> wzorzec<br />

styl architektury, Patrz architektura<br />

<strong>oprogramowania</strong> wzorzec<br />

sygnatura, 206<br />

system<br />

czasu rzeczywistego, 170<br />

klient-serwer, 170<br />

podsystem UML, 218<br />

reguowy, 170<br />

szkieletowy, 34, 170, 189<br />

wieloprocesowy, 170<br />

wspódziaajce zespoy, 219<br />

wykrywania wama, 123<br />

zamknity obiekt, 218<br />

szablon, 50<br />

S<br />

cieka komunikacji, 34<br />

rodowisko, Patrz atrybuty jakociowe rodowisko<br />

techniczne, 24, 25, 28, 29, 31<br />

T<br />

tajemnica, Patrz sekret<br />

taktyka, Patrz atrybuty jakociowe taktyka<br />

TELNET, 309<br />

test harness, Patrz jarzmo testów<br />

testability, Patrz atrybuty jakociowe testowalno<br />

testowalno, Patrz atrybuty jakociowe<br />

testowalno<br />

transakcja, 403, 404, 409<br />

transakcje rozproszone, Patrz przetwarzanie<br />

rozproszone<br />

tworzenie abstrakcji wspólnych usug, 113<br />

U<br />

ukrywanie<br />

informacji, 54, 58, 62, 65, 66, 67, 68, 69, 78, 115,<br />

160, 168<br />

warstwy sprztowej, 69<br />

zachowa, 69<br />

UML, 211, 212, 214, 215, 217, 220<br />

Unified Modeling Language, Patrz UML<br />

urzdzenie przenone, 394, 398<br />

usability, Patrz atrybuty jakociowe<br />

funkcjonalno<br />

usugi wspólne, 113<br />

uszkodzenie, 90, 109, 148<br />

wykrywanie, 109<br />

zapobieganie, 112<br />

utility, Patrz warto uytkowa<br />

uzasadnienie biznesowe systemu, 32<br />

uyteczno, Patrz warto uytkowa<br />

V<br />

Vasa, 24<br />

virtual threads, Patrz wtek wirtualny<br />

W<br />

warstwa, 74, 145, 168, 310, 314, 402<br />

globalnych systemów informacyjnych, 373<br />

internetowa, 372<br />

klienta, 371<br />

komponentów biznesowych, 373<br />

warsztat, 224<br />

warto uytkowa, 285, 286, 287, 288, 291, 294, 296


SKOROWIDZ 461<br />

wtek, 40, 53, 387, 439<br />

fizyczny, 53<br />

logiczny, 53<br />

pseudowtek, 309<br />

wirtualny, 162<br />

wze, 220, 356<br />

wizanie, 117<br />

workbench, Patrz warsztat<br />

wrapper, Patrz osona<br />

wspóbieno, 204, 431<br />

wydajno, Patrz atrybuty jakociowe wydajno<br />

wykonalno, Patrz atrybuty jakociowe<br />

wykonalno<br />

wymagania, 23, 25, 26, 28, 30, 362, 368, 375, 393,<br />

410, 425, 437<br />

analiza, 32, 157<br />

jakociowe, 158<br />

specyfikacja, 25, 26, 32<br />

techniki gromadzenia, 32<br />

wzorzec, 232<br />

interakcji, 35<br />

model strukturalny, Patrz model strukturalny<br />

wzorzec architektury, Patrz architektura<br />

<strong>oprogramowania</strong> wzorzec<br />

Z<br />

zachowanie, 204<br />

zaoenie, 420<br />

lista, 420<br />

wymaga, 416, 419, 420, 421<br />

zapewnia, 416, 419, 420, 421<br />

zapas, 111<br />

zapora, 315<br />

zarzdzanie czasem, 181, 183<br />

zasoby, 162, 404, 420<br />

blokada, 118<br />

ograniczanie zapotrzebowania, 119, 120<br />

poziom wykorzystania, 118, 416<br />

priorytet dostpu, 120<br />

pula, 387<br />

zarzdzanie, 120<br />

zespó sektora, 137<br />

zintegrowane rodowisko programowania, Patrz IDE<br />

zcze, 51, 53<br />

zunifikowany jzyk modelowania, Patrz UML<br />

zwrot z inwestycji, 285, 288, 296, 298, 325<br />

ródo bodca, Patrz atrybuty jakociowe ródo<br />

bodca<br />

Z

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!