Inynieria oprogramowania II Analiza architektury oprogramowania Jerzy Nawrocki

  • Slides: 76
Download presentation
Inżynieria oprogramowania II Analiza architektury oprogramowania Jerzy Nawrocki Jerzy. Nawrocki@put. poznan. pl © by

Inżynieria oprogramowania II Analiza architektury oprogramowania Jerzy Nawrocki Jerzy. Nawrocki@put. poznan. pl © by Jerzy R.

Inżynieria oprogramowania II Cykl życia wg XPrince Przyg. założ. proj. Inicjowa nie projektu Architek-

Inżynieria oprogramowania II Cykl życia wg XPrince Przyg. założ. proj. Inicjowa nie projektu Architek- Wydanie Zamkn. tura 1 2 3 Projektu Analiza architektury (2)

Inżynieria oprogramowania II Architektura oprogramowania Struktura systemu obejmująca: • Komponenty, • Widoczne na zewnątrz

Inżynieria oprogramowania II Architektura oprogramowania Struktura systemu obejmująca: • Komponenty, • Widoczne na zewnątrz właściwości komponentów, • Zależności między komponentami. L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, Reading MA, Addison-Wesley, 1998. Analiza architektury (3)

Inżynieria oprogramowania II Architektura oprogramowania • AO jest środkiem komunikacji między udziałowcami projektu. •

Inżynieria oprogramowania II Architektura oprogramowania • AO jest środkiem komunikacji między udziałowcami projektu. • AO prezentuje decyzje projektowe na wstępnych etapach rozwoju oprogramowania. • AO jest abstrakcyjnym opisem systemu, który może L. Bass, P. Clements, R. Kazman, Software być powtórnie użyty i Architecture in Practice, Reading MA, przeniesiony. Addison-Wesley, 1998. Analiza architektury (4)

Inżynieria oprogramowania II Główne wyniki rozpracowania architektury Architektura Najtrudniejsze i najważ. przypadki użycia Podejścia

Inżynieria oprogramowania II Główne wyniki rozpracowania architektury Architektura Najtrudniejsze i najważ. przypadki użycia Podejścia architektoniczne (mechanizmy) Opis ważniejszych elementów (protokoły, schematy baz danych itp. ) Fragmenty kodu (przykłady rozwiązań) Analiza architektury (5)

Inżynieria oprogramowania II Cel wykładu Jak ocenić architekturę oprogramowania? Analiza architektury (6)

Inżynieria oprogramowania II Cel wykładu Jak ocenić architekturę oprogramowania? Analiza architektury (6)

Inżynieria oprogramowania II ATAM = Architectural Trade-offs Analysis Method Software Engineering Institute, CMU Analiza

Inżynieria oprogramowania II ATAM = Architectural Trade-offs Analysis Method Software Engineering Institute, CMU Analiza architektury (7)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie Analiza architektury (8)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie Analiza architektury (9)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie Prezentacja: • Metoda ATAM • Czynniki biznesowe • Architektura Lider oceny Analiza architektury (10)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie 1. Wizja przedsięwzięcia 2. Główni udziałowcy 3. Najważniejsze funkcje 4. Ograniczenia 5. Kryteria jakości Kierownik projektu Analiza architektury (11)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (12)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (12)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (13)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (13)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (14)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (14)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (15)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (15)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (16)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (16)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (17)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (17)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (18)

Inżynieria oprogramowania II Prezentacja czynników biznesowych Analiza architektury (18)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie Archite kt 1. Ograniczenia tech. i kontekst 2. Perspektywy architektoniczne 3. Zastosowane podejścia architektoniczne 4. Produkty komercyjne 5. Przypadki użycia 6. Scenariusze zmian(19) Analiza architektury

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (20)

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (20)

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (21)

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (21)

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (22)

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (22)

Inżynieria oprogramowania II Przypadki użycia Analiza architektury (23)

Inżynieria oprogramowania II Przypadki użycia Analiza architektury (23)

Inżynieria oprogramowania II Perspektywy architektoniczne Logiczny Współbieżności Przypadków użycia Implementacyjna Fizyczny Analiza architektury (24)

Inżynieria oprogramowania II Perspektywy architektoniczne Logiczny Współbieżności Przypadków użycia Implementacyjna Fizyczny Analiza architektury (24)

Inżynieria oprogramowania II Perspektywa fizyczna Analiza architektury (25)

Inżynieria oprogramowania II Perspektywa fizyczna Analiza architektury (25)

Inżynieria oprogramowania II Perspektywa fizyczna Analiza architektury (26)

Inżynieria oprogramowania II Perspektywa fizyczna Analiza architektury (26)

Inżynieria oprogramowania II Perspektywa fizyczna Analiza architektury (27)

Inżynieria oprogramowania II Perspektywa fizyczna Analiza architektury (27)

Inżynieria oprogramowania II Perspektywy architektoniczne Współbieżności Logiczny Przypadków użycia Implementacyjna Fizyczny Analiza architektury (28)

Inżynieria oprogramowania II Perspektywy architektoniczne Współbieżności Logiczny Przypadków użycia Implementacyjna Fizyczny Analiza architektury (28)

Inżynieria oprogramowania II Perspektywa logiczna Sokrates Connector Data Storage Bank Data Connector Ksantypa 2

Inżynieria oprogramowania II Perspektywa logiczna Sokrates Connector Data Storage Bank Data Connector Ksantypa 2 Logic Starter Screen Builder Data Connector Web Controller Presentation Data Builder Analiza architektury (29)

Inżynieria oprogramowania II Perspektywa logiczna Łatwość zmiany Sokrates Connector XML Storage Data Storage Bank

Inżynieria oprogramowania II Perspektywa logiczna Łatwość zmiany Sokrates Connector XML Storage Data Storage Bank Data Connector Ksantypa 2 Logic Starter Screen Builder Data Connector Web Controller Presentation Data Builder Analiza architektury (30)

Inżynieria oprogramowania II Perspektywa logiczna Bezpieczeństwo Sokrates Connector XML Storage Data Storage Rights Controller

Inżynieria oprogramowania II Perspektywa logiczna Bezpieczeństwo Sokrates Connector XML Storage Data Storage Rights Controller Ksantypa 2 Logic Starter Data Connector Screen Builder Bank Data Connector Web Controller Presentation Data Builder Analiza architektury (31)

Inżynieria oprogramowania II Perspektywa logiczna Wydajność Sokrates Connector XML Storage Rights Controller Ksantypa 2

Inżynieria oprogramowania II Perspektywa logiczna Wydajność Sokrates Connector XML Storage Rights Controller Ksantypa 2 Logic Starter Data Connector Screen Builder Bank Data Connector Data Storage Web Controller Local Data Storage Presentation Data Builder Analiza architektury (32)

Inżynieria oprogramowania II Perspektywy architektoniczne Logiczny Współbieżności Przypadków użycia Implementacyjna Fizyczny Analiza architektury (33)

Inżynieria oprogramowania II Perspektywy architektoniczne Logiczny Współbieżności Przypadków użycia Implementacyjna Fizyczny Analiza architektury (33)

Inżynieria oprogramowania II Perspektywa implementacyjna Analiza architektury (34)

Inżynieria oprogramowania II Perspektywa implementacyjna Analiza architektury (34)

Inżynieria oprogramowania II Perspektywa współbieżności Klient SAS PAS Serw er SAS P. Clements, R.

Inżynieria oprogramowania II Perspektywa współbieżności Klient SAS PAS Serw er SAS P. Clements, R. Kazman, M. Klein, Evaluating Software Architectures, Reading MA, Addison-Wesley, 2002. Analiza architektury (35)

Inżynieria oprogramowania II Perspektywa kodu Window. Kit Abstra ct Factor y Create. Scroll. Bar()

Inżynieria oprogramowania II Perspektywa kodu Window. Kit Abstra ct Factor y Create. Scroll. Bar() Create. Window() Motif. Window. Kit MSWindow. Kit Create. Scroll. Bar() Create. Window() P. Clements, R. Kazman, M. Klein, Evaluating Software Architectures, Reading MA, Addison-Wesley, 2002. Analiza architektury (36)

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (37)

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (37)

Inżynieria oprogramowania II Podejście architektoniczne 1 Bank Kandyda t System 1 Wydział 1 System

Inżynieria oprogramowania II Podejście architektoniczne 1 Bank Kandyda t System 1 Wydział 1 System 2 Wydział 2 System 8 Wydział 8 Analiza architektury (38)

Inżynieria oprogramowania II Podejście architektoniczne 2 Bank Wydział 1 System Kandyda t Wydział 2

Inżynieria oprogramowania II Podejście architektoniczne 2 Bank Wydział 1 System Kandyda t Wydział 2 Wydział 8 Analiza architektury (39)

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (40)

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (40)

Inżynieria oprogramowania II Perspektywa implementacyjna • Apache Struts 1. 1 • Apache Velocity •

Inżynieria oprogramowania II Perspektywa implementacyjna • Apache Struts 1. 1 • Apache Velocity • Log 4 J • Apache Xerces • Swing • Oracle 10 g Analiza architektury (41)

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (42)

Inżynieria oprogramowania II Prezentacja architektury Analiza architektury (42)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie Analiza architektury (43)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie • Identyfikacja stosowanych podejść architektonicznych • Utworzenie drzewa atrybutów jakościowych • Analiza podejść Analiza architektury (44)

Inżynieria oprogramowania II Podejścia architektoniczne Styl współbieżnych potoków P 1 P 2 P 3

Inżynieria oprogramowania II Podejścia architektoniczne Styl współbieżnych potoków P 1 P 2 P 3 P 4 Analiza architektury (45)

Inżynieria oprogramowania II Podejścia architektoniczne • MVC – aplikacja webowa • redundancja serwerów •

Inżynieria oprogramowania II Podejścia architektoniczne • MVC – aplikacja webowa • redundancja serwerów • XML - definicje ekranów Analiza architektury (46)

Inżynieria oprogramowania II Decyzje związane z wydajnością Typ zasobu • Jeden/Wiele procesorów • Pamięć

Inżynieria oprogramowania II Decyzje związane z wydajnością Typ zasobu • Jeden/Wiele procesorów • Pamięć • Magistrale • Urządzenia Analiza architektury (47)

Inżynieria oprogramowania II Decyzje związane z wydajnością Typ zasobu Szeregowanie zadań • Statyczne •

Inżynieria oprogramowania II Decyzje związane z wydajnością Typ zasobu Szeregowanie zadań • Statyczne • Dynamiczne Analiza architektury (48)

Inżynieria oprogramowania II Decyzje związane z wydajnością Typ zasobu Szeregowanie zadań Synchronizacja • Sekcja

Inżynieria oprogramowania II Decyzje związane z wydajnością Typ zasobu Szeregowanie zadań Synchronizacja • Sekcja krytyczna • Semafory • Komunikaty Analiza architektury (49)

Inżynieria oprogramowania II Decyzje związane z wydajnością Typ zasobu Szeregowanie zadań Synchronizacja Równoważenie obciążenia

Inżynieria oprogramowania II Decyzje związane z wydajnością Typ zasobu Szeregowanie zadań Synchronizacja Równoważenie obciążenia • Statyczne • Dynamiczne Analiza architektury (50)

Inżynieria oprogramowania II Decyzje związane z wydajnością Typ zasobu Szeregowanie zadań Synchronizacja Równoważenie obciążenia

Inżynieria oprogramowania II Decyzje związane z wydajnością Typ zasobu Szeregowanie zadań Synchronizacja Równoważenie obciążenia Przydzielone zasoby • Wielkość pamięci • Szerokość pasma sieciowego Analiza architektury (51)

Inżynieria oprogramowania II Decyzje wpływające na dostępność • Nadmiarowość sprzętowa • Nadmiarowość programowa •

Inżynieria oprogramowania II Decyzje wpływające na dostępność • Nadmiarowość sprzętowa • Nadmiarowość programowa • Orzekanie • Ponawianie • Układ alarmowy Analiza architektury (52)

Inżynieria oprogramowania II Decyzje dotyczące modyfikowalności • Pośredniość (mediator) • Enkapsulacja (interfejs) Analiza architektury

Inżynieria oprogramowania II Decyzje dotyczące modyfikowalności • Pośredniość (mediator) • Enkapsulacja (interfejs) Analiza architektury (53)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie • Identyfikacja stosowanych podejść architektonicznych • Utworzenie drzewa atrybutów jakościowych • Analiza podejść Analiza architektury (54)

Inżynieria oprogramowania II Drzewo użyteczności (H, L) (H, (H, L) L) (H, L) Analiza

Inżynieria oprogramowania II Drzewo użyteczności (H, L) (H, (H, L) L) (H, L) Analiza architektury (55)

Inżynieria oprogramowania II Drzewo użyteczności Użyteczność Wydajność Dostępność Analiza architektury (56)

Inżynieria oprogramowania II Drzewo użyteczności Użyteczność Wydajność Dostępność Analiza architektury (56)

Inżynieria oprogramowania II Drzewo użyteczności Użyteczność Wydajność Opóźnienie danych Dostępność Awaria sprzętowa Analiza architektury

Inżynieria oprogramowania II Drzewo użyteczności Użyteczność Wydajność Opóźnienie danych Dostępność Awaria sprzętowa Analiza architektury (57)

Inżynieria oprogramowania II Drzewo użyteczności Użyteczność Wydajność Opóźnienie danych Opóźnienie dostępu do bazy d.

Inżynieria oprogramowania II Drzewo użyteczności Użyteczność Wydajność Opóźnienie danych Opóźnienie dostępu do bazy d. <= (M, L) 200 ms Dostarczanie obrazu wideo w czasie(H, M) rzecz. Dostępność Awaria sprzętowa Restart po awarii dysku w czasie < (M, M) 5 min. Wykrycie i naprawa awarii w sieci < 2 (H, M) min. Analiza architektury (58)

Inżynieria oprogramowania II Drzewo użyteczności Użyteczność Wydajność Opóźnienie danych Opóźnienie dostępu do bazy d.

Inżynieria oprogramowania II Drzewo użyteczności Użyteczność Wydajność Opóźnienie danych Opóźnienie dostępu do bazy d. <= (M, L) 200 ms Dostarczanie obrazu wideo w czasie(H, M) rzecz. Dostępność Awaria sprzętowa Restart po awarii dysku w czasie < (M, M) 5 min. Wykrycie i naprawa awarii w sieci < 2 (H, M) min. Ważnoś ć Trudno ść architektury Analiza (59)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie • Identyfikacja stosowanych podejść architektonicznych • Utworzenie drzewa atrybutów jakościowych • Analiza podejść Analiza architektury (60)

Inżynieria oprogramowania II Punkty wrażliwości i kompromisu Punkt wrażliwości = właściwość o podstawowym znaczeniu

Inżynieria oprogramowania II Punkty wrażliwości i kompromisu Punkt wrażliwości = właściwość o podstawowym znaczeniu dla atrybutu jakościowego Przykład: Liczba bitów klucza szyfrowania a bezpieczeństwo. Format plików a modyfikowalność. Analiza architektury (61)

Inżynieria oprogramowania II Punkty wrażliwości i kompromisu Punkt kompromisu = punkt wrażliwości dla więcej

Inżynieria oprogramowania II Punkty wrażliwości i kompromisu Punkt kompromisu = punkt wrażliwości dla więcej niż jednego atrybutu jakościowego Przykład: Liczba bitów klucza szyfrowania: bezpieczeństwo a wydajność. Format plików: modyfikowalność a wydajność. Analiza architektury (62)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie • Burza mózgów nt. scenariuszy • Powtórna analiza podejść architektoniczny ch Analiza architektury (63)

Inżynieria oprogramowania II Rodzaje scenariuszy Scenariusze przypadków użycia (użytkownik końcowy) Scenariusze rozwoju (informatyk) Analiza

Inżynieria oprogramowania II Rodzaje scenariuszy Scenariusze przypadków użycia (użytkownik końcowy) Scenariusze rozwoju (informatyk) Analiza architektury (64)

Inżynieria oprogramowania II Scenariusze - Przykłady • Detekcja i przywrócenie normalnego stanu po awarii

Inżynieria oprogramowania II Scenariusze - Przykłady • Detekcja i przywrócenie normalnego stanu po awarii sprzętowej. • Dynamiczne modyfikowanie planu przydzielonej misji. • Zmiana CORBY na nowszy standard (pracochłonność < 6 osobomiesięcy) Analiza architektury (65)

Inżynieria oprogramowania II Selekcja scenariuszy Każdy uczestnik ma N głosów, gdzie N = 30%

Inżynieria oprogramowania II Selekcja scenariuszy Każdy uczestnik ma N głosów, gdzie N = 30% liczby scenariuszy. Głosy przydziela się dowolnie (od 0 do N na dany scenariusz, byle suma nie przekroczyła N). Głosuje się jawnie. Do dalszej analizy przechodzi K pierwszych (np. 5 pierwszych) scenariuszy w sensie liczby oddanych na nie głosów. Analiza architektury (66)

Inżynieria oprogramowania II Porównanie z drzewem użyteczności Scenariusz #Głosów Atrybut jakościowy 10 25 danych)

Inżynieria oprogramowania II Porównanie z drzewem użyteczności Scenariusz #Głosów Atrybut jakościowy 10 25 danych) 4 21 oprogr. ) 23 15 (Zmiana COTS) Wydajność (Opóźnienie Dostępność (Awaria Modyfikowalność Analiza architektury (67)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie • Burza mózgów nt. scenariuszy • Powtórna analiza podejść architektoniczny ch Analiza architektury (68)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie Prezentacja rezultatów Analiza architektury (69)

Inżynieria oprogramowania II Wyniki metody ATAM • Udokumentowane podejścia architektoniczne • Drzewo użyteczności •

Inżynieria oprogramowania II Wyniki metody ATAM • Udokumentowane podejścia architektoniczne • Drzewo użyteczności • Scenariusze opatrzone priorytetami • Zagrożenia (decyzje ryzykowne) • Punkty wrażliwości i punkty kompromisowe Analiza architektury (70)

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie

Inżynieria oprogramowania II Ogólny opis metody ATAM Prezenta Analiz Testowan Raportowa cja a ie nie Analiza architektury (71)

Inżynieria oprogramowania II Podsumowanie Czynniki biznesowe Prezentacja architektury Identyfikacja podejść architekt. Drzewo użyteczności atrybutów

Inżynieria oprogramowania II Podsumowanie Czynniki biznesowe Prezentacja architektury Identyfikacja podejść architekt. Drzewo użyteczności atrybutów Analiza podejść architekt. Generowanie scenariuszy Powtórna analiza Prezentacja wyników Analiza architektury (72)

Inżynieria oprogramowania II Podsumowanie Czynniki biznesowe Prezentacja architektury Identyfikacja podejść architekt. Drzewo użyteczności atrybutów

Inżynieria oprogramowania II Podsumowanie Czynniki biznesowe Prezentacja architektury Identyfikacja podejść architekt. Drzewo użyteczności atrybutów Analiza podejść architekt. Generowanie scenariuszy Powtórna analiza Prezentacja wyników Analiza architektury (73)

Inżynieria oprogramowania II Podsumowanie Czynniki biznesowe Prezentacja architektury Identyfikacja podejść architekt. Drzewo użyteczności Według

Inżynieria oprogramowania II Podsumowanie Czynniki biznesowe Prezentacja architektury Identyfikacja podejść architekt. Drzewo użyteczności Według atrybutów wymagań Analiza podejść architekt. pozafunkcjonaln Generowanie scenariuszy ych (ISO 9126) Powtórna analiza Jak realizujesz Prezentacja wymaganiewyników. . . Analiza architektury (74)

Inżynieria oprogramowania II Podsumowanie Czynniki biznesowe Prezentacja architektury Identyfikacja podejść architekt. Drzewo użyteczności atrybutów

Inżynieria oprogramowania II Podsumowanie Czynniki biznesowe Prezentacja architektury Identyfikacja podejść architekt. Drzewo użyteczności atrybutów Analiza podejść architekt. Generowanie scenariuszy Powtórna analiza Prezentacja wyników Analiza architektury (75)

Inżynieria oprogramowania II Dziękuję za uwagę Analiza architektury (76)

Inżynieria oprogramowania II Dziękuję za uwagę Analiza architektury (76)