Architektura oprogramowania w praktyce ... - Czytelnia - Helion
Architektura oprogramowania w praktyce ... - Czytelnia - Helion
Architektura oprogramowania w praktyce ... - Czytelnia - Helion
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