Proces tworzenia oprogramowania l Proces tworzenia oprogramowania jest

  • Slides: 48
Download presentation
Proces tworzenia oprogramowania l Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi

Proces tworzenia oprogramowania l Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu programowego. Może to być tworzenie oprogramowania od zera, ale coraz częściej nowe oprogramowanie powstaje przez rozszerzanie i modyfikowanie istniejących systemów. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 1

Cele l l Poznać pojęcie procesu tworzenia oprogramowania i modelu procesu tworzenia oprogramowania. Poznać

Cele l l Poznać pojęcie procesu tworzenia oprogramowania i modelu procesu tworzenia oprogramowania. Poznać kilka różnych modeli procesów tworzenia oprogramowania oraz wiedzieć, kiedy należy ich używać. Ogólnie rozumieć modele procesów inżynierii wymagań stawianych oprogramowaniu, tworzeniu oprogramowania, testowaniu i ewolucji. Wiedzieć czym jest technologia CASE wspomagająca proces tworzenia oprogramowania. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 2

Zawartość • • Modele procesu tworzenia oprogramowania Iteracja procesu Specyfikowanie oprogramowania Projektowanie i implementowanie

Zawartość • • Modele procesu tworzenia oprogramowania Iteracja procesu Specyfikowanie oprogramowania Projektowanie i implementowanie oprogramowania Zatwierdzanie oprogramowania Ewolucja oprogramowania Zautomatyzowane wspomaganie procesu ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 3

Zasadnicze czynności w procesie tworzenia oprogramowania l l Specyfikowanie oprogramowania. Funkcjonalność oprogramowania i ograniczenia

Zasadnicze czynności w procesie tworzenia oprogramowania l l Specyfikowanie oprogramowania. Funkcjonalność oprogramowania i ograniczenia jego działania muszą być zdefiniowane. Projektowanie i implementowanie oprogramowania. Oprogramowanie, które spełnia specyfikację, musi być stworzone. Zatwierdzenie oprogramowania. Wytworzone oprogramowanie musi spełniać oczekiwania klienta. Ewolucja oprogramowania. Oprogramowanie musi ewoluować, aby spełniać zmieniające się potrzeby użytkowników. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 4

Modele procesów tworzenia oprogramowania l Model kaskadowy • l Tworzenie ewolucyjne • l W

Modele procesów tworzenia oprogramowania l Model kaskadowy • l Tworzenie ewolucyjne • l W tym procesie czynności specyfikowania, projektowania i zatwierdzania przeplatają się. Tworzenie formalne systemu • l W tym modelu podstawowe czynności specyfikowania, tworzenia, zatwierdzania i ewolucji są odrębnymi fazami procesu. To podejście jest oparte na budowaniu formalnych matematycznych specyfikacji systemu i przekształcaniu tych specyfikacji w program za pomocą metod matematycznych. Tworzenie z użyciem wielokrotnym • ©Ian Sommerville 2000 W tym podejściu zakłada się istnienie dużej liczby komponentów zdatnych do ponownego użycia. Software Engineering, 6 th edition. Chapter 3 Slide 5

Model kaskadowy procesu tworzenia oprogramowania Definiowanie wymagań Projektowanie systemu i oprogramowania Implementacja i testowanie

Model kaskadowy procesu tworzenia oprogramowania Definiowanie wymagań Projektowanie systemu i oprogramowania Implementacja i testowanie jednostek Integracja i testowanie systemu Działanie i pielęgnacja ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 6

Problemy modelu kaskadowego • • Następnej fazy nie powinno się rozpoczynać, jeśli poprzednia się

Problemy modelu kaskadowego • • Następnej fazy nie powinno się rozpoczynać, jeśli poprzednia się nie zakończy. Koszty opracowania i akceptacji dokumentów są wysokie i dlatego iteracje są również kosztowne oraz wymagają powtarzania wielu prac. Wadą modelu kaskadowego jest zawarty w nim nieelastyczny podział na rozłączne etapy. Model kaskadowy powinien być używany jedynie wówczas, gdy wymagania są jasne i zrozumiałe. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 7

Tworzenie ewolucyjne polega na opracowaniu wstępnej implementacji, pokazaniu jej użytkownikowi z prośbą o komentarze

Tworzenie ewolucyjne polega na opracowaniu wstępnej implementacji, pokazaniu jej użytkownikowi z prośbą o komentarze i udoskonalaniu jej w wielu wersjach aż do powstania odpowiedniego systemu. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 8

Tworzenie ewolucyjne Równolegle czynności Specyfikacja Ogólny opis Tworzenie Zatwierdzenie ©Ian Sommerville 2000 Software Engineering,

Tworzenie ewolucyjne Równolegle czynności Specyfikacja Ogólny opis Tworzenie Zatwierdzenie ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Wersja początkowa Wersje pośrednie Wersja końcowa Slide 9

Typy tworzenia ewolucyjnego • Tworzenie badawcze • • Celem procesu jest praca z klientem,

Typy tworzenia ewolucyjnego • Tworzenie badawcze • • Celem procesu jest praca z klientem, polegająca na badaniu wymagań i dostarczeniu ostatecznego systemu. Tworzenie rozpoczyna się od tych części systemu, które są dobrze rozpoznane. System ewoluuje przez dodawanie nowych cech, które proponuje klient. Prototypowanie z porzuceniem • Celem procesu tworzenia ewolucyjnego jest zrozumienie wymagań klienta i wypracowanie lepszej definicji wymagań stawianych systemowi. Budowanie prototypu ma głównie na celu eksperymentowanie z tymi wymaganiami użytkownika, które są niejasne. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 10

Tworzenie ewolucyjne • Problemy • • Proces nie jest widoczny System ma złą strukturę

Tworzenie ewolucyjne • Problemy • • Proces nie jest widoczny System ma złą strukturę Konieczne mogą być specjalne narzędzia i techniki Stosowanie • • ©Ian Sommerville 2000 W wypadku systemów małych (mniej niż 100 000 wierszy kodu) lub średnich (do 500 000 wierszy kodu) z krótkim czasem życia podejście ewolucyjne jest najlepsze. W wypadku dużych systemów o długim czasie życia wady tworzenia ewolucyjnego ujawniają się jednak z całą ostrością. Software Engineering, 6 th edition. Chapter 3 Slide 11

Tworzenie formalne systemów l l Tworzenie formalne systemów jest podejściem, które ma wiele wspólnego

Tworzenie formalne systemów l l Tworzenie formalne systemów jest podejściem, które ma wiele wspólnego z modelem kaskadowym. Proces tworzenia jest tu jednak oparty na matematycznych przekształceniach specyfikacji systemu w program wykonywalny. W procesie przekształcania formalna matematyczna reprezentacja systemu jest metodycznie przekształcana w bardziej szczegółowe, ale wciąż matematycznie poprawne reprezentacje systemu. Podejście z przekształceniem złożone z ciągu małych kroków jest łatwiejsze w użyciu. Wybór, które przekształcenie zastosować, wymaga jednak dużych umiejętności. Najlepiej znanym przykładem takiego formalnego procesu tworzenia jest Cleanroom, pierwotnie opracowany przez IBM (Proces Cleanroom jest oparty na przyrostowym tworzeniu oprogramowania, gdy formalnie wykonuje się każdy krok i dowodzi jego poprawności. ) ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 12

Tworzenie formalne systemów Definicja wymagań ©Ian Sommerville 2000 Specyfikacja formalna Przekształcenie formalne Software Engineering,

Tworzenie formalne systemów Definicja wymagań ©Ian Sommerville 2000 Specyfikacja formalna Przekształcenie formalne Software Engineering, 6 th edition. Chapter 3 Integracja i testowanie systemu Slide 13

Problemy i stosowalność • • • Oprócz specjalistycznych dziedzin procesy oparte na przekształceniach formalnych

Problemy i stosowalność • • • Oprócz specjalistycznych dziedzin procesy oparte na przekształceniach formalnych są używane rzadko. Wymagają specjalistycznej wiedzy i w praktyce okazuje się, że w wypadku większości systemów nie powodują zmniejszenia kosztów lub polepszenia jakości w porównaniu z innymi podejściami. Interakcje systemów nie poddają się łatwo specyfikowaniu formalnemu. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 15

Tworzenie z użyciem wielokrotnym • • W większości przedsięwzięć programistycznych występuje wielokrotne użycie oprogramowania.

Tworzenie z użyciem wielokrotnym • • W większości przedsięwzięć programistycznych występuje wielokrotne użycie oprogramowania. Etapy procesu: • • • analiza komponentów, modyfikacja wymagań, projektowanie systemu z użyciem wielokrotnym, tworzenie i integracja. Zakłada się istnienie wielkiego zbioru dostępnych komponentów programowych użycia wielokrotnego oraz integrującej je struktury. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 16

Tworzenie z użyciem wielokrotnym Specyfikacja wymagań Analiza komponentów Modyfikacja wymagań Projekt systemu z użyciem

Tworzenie z użyciem wielokrotnym Specyfikacja wymagań Analiza komponentów Modyfikacja wymagań Projekt systemu z użyciem wielokrotnym Tworzenie i integracja ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Zatwierdzenie systemu Slide 17

Iteracja procesu • • • Potrzebne jest także wspomaganie procesu tworzenia oprogramowania nazywane iteracjami,

Iteracja procesu • • • Potrzebne jest także wspomaganie procesu tworzenia oprogramowania nazywane iteracjami, które polega na powtarzaniu fragmentu tego procesu w miarę ewolucji wymagań stawianych systemowi. N. p. prace projektowe i implementacyjne musza być ponownie wykonane, aby spełnić zmienione wymagania. Mamy tutaj dwa hybrydowe modele: • • ©Ian Sommerville 2000 tworzenie przyrostowe, tworzenie spiralne. Software Engineering, 6 th edition. Chapter 3 Slide 18

Tworzenie przyrostowe l l l Podejście przyrostowe do tworzenia zaproponował Mills (1980) jako sposób

Tworzenie przyrostowe l l l Podejście przyrostowe do tworzenia zaproponował Mills (1980) jako sposób na ograniczenie powtarzania prac w procesie tworzenia oraz danie klientom pewnych możliwości odkładania decyzji o szczegółowych wymaganiach do czasu, aż zdobędą pewne doświadczenia w pracy z systemem. W procesie przyrostowym klienci identyfikują w zarysie usługi, które system ma oferować. Wskazują, które z nich są dla nich najważniejsze, a które najmniej ważne. Definiuje się następnie pewną liczbę przyrostów, które maja być dostarczone. Gdy przyrost jest już gotowy i dostarczony, klienci mogą go uruchomić. Oznacza to, że szybko otrzymują część funkcjonalności systemu ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 19

Tworzenie przyrostowe Zdefiniuj zarys wymagań Przypisz wymagania do przyrostów Wytwórz przyrost systemu Zweryfikuj przyrost

Tworzenie przyrostowe Zdefiniuj zarys wymagań Przypisz wymagania do przyrostów Wytwórz przyrost systemu Zweryfikuj przyrost Zaprojektuj architekturę systemu Zintegruj system Zweryfikuj system System nie ukończony ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 20 System końcowy

Zalety procesu tworzenia przyrostowego l l Klienci nie muszą czekać na dostarczenie całego systemu,

Zalety procesu tworzenia przyrostowego l l Klienci nie muszą czekać na dostarczenie całego systemu, zanim zaczną czerpać z niego korzyść. Klienci mogą używać wstępnych przyrostów jako rodzaju prototypu i zdobywać doświadczenia, które inspirują wymagania wobec późniejszych przyrostów. Ryzyko całkowitej porażki przedsięwzięcia jest mniejsze. Usługi o najwyższym priorytecie będą dostarczane jako pierwsze. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 21

Programowanie ekstremalne (XP) • • Opiera się ono na tworzeniu i dostarczaniu bardzo małych

Programowanie ekstremalne (XP) • • Opiera się ono na tworzeniu i dostarczaniu bardzo małych przyrostów funkcjonalności. Ustawiczne poprawianie kodu i programowanie pozbawione indywidualizmu. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 22

Tworzenie spiralne • • Każda pętla spirali reprezentuje jedną fazę procesu. Najbardziej wewnętrzna pętla

Tworzenie spiralne • • Każda pętla spirali reprezentuje jedną fazę procesu. Najbardziej wewnętrzna pętla może być poświęcona wykonalności systemu, następna definicji wymagań stawianych systemowi, kolejna projektowaniu itd. . ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 23

Model spiralny procesu tworzenia oprogramowania Określ cele, inne strategie i ograniczenia Oceń inne strategie,

Model spiralny procesu tworzenia oprogramowania Określ cele, inne strategie i ograniczenia Oceń inne strategie, rozpoznaj i zmniejsz zagrożenia Analiza zagrożeń RECENZJA Plan wymagań Plan cyklu życia Plan tworzenia Plan testowania i integracji Zaplanuj następną fazę ©Ian Sommerville 2000 Analiza zagrożeń Prototyp 1 Prototyp 3 Działający prototyp Prototyp 2 Sposób postępowania Symulacje, modele, miary odniesienia Szczegółowe projekto. Wymagania Projektowanie S/W wanie Kodowanie Zatwierdzenie produktu Testy wymagań jednostek Weryfikacja i Testy zatwierdzenie integracji Testy akceptacji Utwórz, zweryfikuj Działanie produkt następnego poziomu Software Engineering, 6 th edition. Chapter 3 Slide 24

Każda pętla spirali jest podzielona na cztery sektory: l Ustalanie celów • l Rozpoznanie

Każda pętla spirali jest podzielona na cztery sektory: l Ustalanie celów • l Rozpoznanie i redukcja zagrożeń • l Przeprowadza się szczegółową analizę każdego z rozpoznanych zagrożeń przedsięwzięcia. Tworzenie i zatwierdzanie • l Definiuje się konkretne cele tej fazy przedsięwzięcia. Identyfikuje się ograniczenia, którym podlega proces i produkt. Po ocenie zagrożeń wybiera się model tworzenia systemu. Planowanie • ©Ian Sommerville 2000 Recenzuje się przedsięwzięcie i podejmuje decyzję, czy rozpoczynać następną pętlę spirali. Software Engineering, 6 th edition. Chapter 3 Slide 25

Specyfikowanie oprogramowania l l Ma na celu określenie, jakich usług wymaga się od systemu

Specyfikowanie oprogramowania l l Ma na celu określenie, jakich usług wymaga się od systemu i jakim ograniczeniom podlega tworzenie i działanie oprogramowania. Ta czynność jest obecnie bardzo często nazywana inżynierią wymagań. W procesie inżynierii wymagań możemy wyróżnić cztery główne fazy: • • ©Ian Sommerville 2000 studium wykonalności, określenie i analiza wymagań, specyfikowanie wymagań, zatwierdzanie wymagań. Software Engineering, 6 th edition. Chapter 3 Slide 26

Proces inżynierii wymagań Studium wykonalności Określenie i analiza wymagań Specyfikacja wymagań Zatwierdzanie wymagań Raport

Proces inżynierii wymagań Studium wykonalności Określenie i analiza wymagań Specyfikacja wymagań Zatwierdzanie wymagań Raport o wykonywalności Modele systemu Wymagania Modele użytko. Modele wnika systemu Dokumentacja wymagań ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 27

Projektowanie i implementowanie wymagań l l l Faza implementowania w tworzeniu oprogramowania to proces

Projektowanie i implementowanie wymagań l l l Faza implementowania w tworzeniu oprogramowania to proces przekształcania specyfikacji systemu w działający system Projekt oprogramowania to opis struktury oprogramowania, które ma być zaimplementowane, danych, które są częścią systemu, interfejsów między komponentami systemu i użytych algorytmów. Proces projektowania może obejmować opracowanie kilku modeli systemu na różnych poziomach abstrakcji. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 28

Charakterystyczne czynności procesu projektowania • • • Projektowanie architektury Specyfikowanie abstrakcyjne Projektowanie interfejsów Projektowanie

Charakterystyczne czynności procesu projektowania • • • Projektowanie architektury Specyfikowanie abstrakcyjne Projektowanie interfejsów Projektowanie komponentów Projektowanie struktur danych Projektowanie algorytmów ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 29

Ogólny model procesu projektowania Specyfikacja wymagań Projektowanie architektury Architektura systemu Specyfikowanie abstrakcyjne Specyfikacja programowania

Ogólny model procesu projektowania Specyfikacja wymagań Projektowanie architektury Architektura systemu Specyfikowanie abstrakcyjne Specyfikacja programowania Czynności projektowe Projektowanie interfejsów Specyfikacja interfejsów Projektowanie komponentów Specyfikacja komponentów Projektowanie struktury danych Specyfikacja algorytmów Produkty projektowania ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Projektowanie algorytmów Slide 30

Metody projektowania l l l Ciągle często projektowanie jest działaniem ad hoc, gdzie wymagania

Metody projektowania l l l Ciągle często projektowanie jest działaniem ad hoc, gdzie wymagania zapisuje się w języku naturalnym. Lepsze podejście polega na użyciu metod strukturalnych, które są zbiorami notacji i porad dla projektantów oprogramowania. Ich użycie polega zwykle na opracowaniu graficznych modeli systemu i prowadzi do dużej ilości dokumentacji projektowej. Metody strukturalne mogą obejmować: • • ©Ian Sommerville 2000 modele przepływu danych, modele encja-związek, modele strukturalne, modele obiektowe. Software Engineering, 6 th edition. Chapter 3 Slide 31

Programowanie i wyszukiwanie błędów • • • Programiści wykonują pewne testy kodu, który napisali.

Programowanie i wyszukiwanie błędów • • • Programiści wykonują pewne testy kodu, który napisali. Często prowadzi to do wykrycia błędów, które należy usunąć z programu. Testowanie usterek i usuwanie błędów to dwa różne procesy. Lokalizacja błędu może wymaga nowych przypadków testowych. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 32

Proces usuwania błędów Zlokalizuj błąd ©Ian Sommerville 2000 Zaprojektuj naprawę błędu Naprawbłąd Napraw w

Proces usuwania błędów Zlokalizuj błąd ©Ian Sommerville 2000 Zaprojektuj naprawę błędu Naprawbłąd Napraw w błąd Software Engineering, 6 th edition. Chapter 3 Przetestuj program ponownie Slide 33

Zatwierdzanie oprogramowania l l l Weryfikacja i zatwierdzenie (W&Z) mają wykazać, że system jest

Zatwierdzanie oprogramowania l l l Weryfikacja i zatwierdzenie (W&Z) mają wykazać, że system jest zgodny ze swoją specyfikacją i spełnia oczekiwania klienta, który go kupuje. Obejmuje proces sprawdzania, m. in. kontrole i recenzje w każdym kroku procesu tworzenia od definicji wymagań użytkownika do pisania programów. Większość kosztów zatwierdzania powstaje po zaimplementowaniu, gdy testuje się działający system. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 34

Proces testowania Testowanie komponentów Testowanie modułów Testowanie podsystemów Testowanie komponentów Testowanie odbiorcze Testowanie integracji

Proces testowania Testowanie komponentów Testowanie modułów Testowanie podsystemów Testowanie komponentów Testowanie odbiorcze Testowanie integracji ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Testowanie przez użytkownika Slide 35

Fazy procesu testowania l Testowanie komponentów (jednostek) • l l Testowanie modułów • Moduł

Fazy procesu testowania l Testowanie komponentów (jednostek) • l l Testowanie modułów • Moduł jest kolekcją niezależnych komponentów takich jak klasy obiektów, abstrakcyjne typy danych, albo bardziej luźną kolekcją procedur i funkcji. Testowanie podsystemów • l Testuje się poszczególne komponenty, aby zapewnić, że działają poprawnie. Ta faza obejmuje testowanie kolekcji modułów, które zintegrowano w podsystemie. Testowanie systemu • Podsystemy zintegrowano już w system. Ten proces testowania ma wykryć błędy wynikające z nie przewidzianych interakcji między podsystemami i problemów z interfejsami podsystemów. Testowanie odbiorcze • Jest to końcowa faza procesu testowania przed przyjęciem systemu do użytkowania. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 36

Fazy testowania w procesie tworzenia oprogramowania Specyfikacja wymagań Projekt i systemu Specyfikacja systemu Plan

Fazy testowania w procesie tworzenia oprogramowania Specyfikacja wymagań Projekt i systemu Specyfikacja systemu Plan testów odbiorczych Działanie ©Ian Sommerville 2000 Plan testów integracji systemu Test odbiorczy Projekt szczegółowy Kod modułów i jednostek oraz ich test Plan testów integracji podsystemów t. Test integracji systemu Test integracji podsystemu Software Engineering, 6 th edition. Chapter 3 Slide 37

Testowanie alfa i beta • Testowanie alfa jest testowaniem odbiorczym stosowanym, kiedy system jest

Testowanie alfa i beta • Testowanie alfa jest testowaniem odbiorczym stosowanym, kiedy system jest tworzony dla jednego klienta. Proces testowania trwa do momentu osiągnięcia zgody pomiędzy wytwórcą systemu i klientem co do tego, że dostarczony system jest możliwą do przyjęcia implementacją wymagań. • Testowanie beta stosuje się, kiedy system sprzedawany jako produkt programowy. Testowanie polega na dostarczeniu systemu pewnej liczbie potencjalnych klientów, którzy zgodzili się z niego korzystać. Klienci informują wytwórców o pojawiających się problemach. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 38

Ewolucja oprogramowania • • • Elastyczność systemów oprogramowania jest jedną z głównych przyczyn, że

Ewolucja oprogramowania • • • Elastyczność systemów oprogramowania jest jedną z głównych przyczyn, że coraz więcej i więcej oprogramowania włącza się do wielkich, złożonych systemów. Zmiany mogą być wprowadzone w każdej chwili tworzenia lub nawet po jego zakończeniu. Koszt tych zmian może być bardzo wysoki, ale wciąż będzie niższy niż odpowiednie zmiany w sprzęcie systemu. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 39

Ewolucja systemu Zidentyfikuj wymagania stawiane systemowi Zbadaj istniejące systemy Zaproponuj zmiany systemów Istniejące systemy

Ewolucja systemu Zidentyfikuj wymagania stawiane systemowi Zbadaj istniejące systemy Zaproponuj zmiany systemów Istniejące systemy ©Ian Sommerville 2000 Zmodyfikuj system Nowy system Software Engineering, 6 th edition. Chapter 3 Slide 40

Zautomatyzowane wspomaganie procesu tworzenia oprogramowania l l Komputerowo wspomagana inżynieria oprogramowania (CASE) korzysta z

Zautomatyzowane wspomaganie procesu tworzenia oprogramowania l l Komputerowo wspomagana inżynieria oprogramowania (CASE) korzysta z różnego oprogramowania do wspomagania czynności procesu tworzenia oprogramowania, takich jak inżynieria wymagań, projektowanie, programowanie i testowanie. Czynności, które można zautomatyzować za pomocą CASE: • oprogramowanie graficznych modeli systemu jako części specyfikacji wymagań i projektu oprogramowania, • czynności projektu za pomocą słownika danych, który przechowuje informacje o encjach i związkach w projekcie, • generowanie interfejsu użytkownika na podstawie graficznego opisu interfejsu opracowanego interaktywnie przez użytkownika, • śledzenie błędów przez udostępnienie informacji o wykonującym się programie, • automatyczne tłumaczenie programów ze starych wersji języków programowania. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 41

Technologia CASE l l l Technologia CASE jest obecnie dostępna dla większości rutynowych czynności

Technologia CASE l l l Technologia CASE jest obecnie dostępna dla większości rutynowych czynności procesu tworzenia oprogramowania. Oprogramowanie jest głównie czynnością projektowania opartą na kreatywnym myśleniu. Istniejący system CASE automatyzuje rutynowe czynności, ale próby zastosowania sztucznej inteligencji do wspomagania programowania nie były udane. W większości firm inżynieria oprogramowania jest czynnością zespołową. Inżynierowie spędzają więc sporo czasu na interakcji z innymi członkami zespołu. Technologia CASE nie daje tu żadnego wsparcia. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 42

Klasyfikacja narzędzi CASE l l l Klasyfikacja narzędzi CASE pomaga zrozumieć różne typy narzędzi

Klasyfikacja narzędzi CASE l l l Klasyfikacja narzędzi CASE pomaga zrozumieć różne typy narzędzi oraz ich rolę we wspomaganiu czynności tworzenia oprogramowania. Klasyfikacje prowadzić z: perspektywy funkcjonalności, w której klasyfikuje się narzędzia CASE względem ich specyficznej funkcji; perspektywy procesu, w której klasyfikuje się narzędzia CASE względem wspomaganych przez nie czynności procesu; perspektywy integracji, w której klasyfikuje się narzędzia CASE względem sposobu ich integracji w spójne jednostki, które oferują wspomaganie jednej lub więcej czynności procesu. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 43

Klasyfikacja narzędzi CASE względem ich funkcjonalności l Narzędzia do planowania • l Narzędzia do

Klasyfikacja narzędzi CASE względem ich funkcjonalności l Narzędzia do planowania • l Narzędzia do edycji • l Języki bardzo wysokiego poziomu, generatory interfejsu użytkownika Narzędzia do wspomagania metod • l System do zarządzania wersjami, narzędzia do budowania systemów Narzędzia do prototypowania • l Narzędzia do śledzenia wymagań, systemy kontroli zmian Narzędzia do zarządzania konfiguracjami • l Edytory tekstowe, edytory diagramów, procesory tekstów Narzędzia do zarządzania zmianami • l Narzędzia PERT, narzędzia do szacowania, arkusze kalkulacyjne Edytory projektów, słowniki danych i generatory kodów Narzędzia do przetwarzania języków • ©Ian Sommerville 2000 Kompilatory, interpretatory Software Engineering, 6 th edition. Chapter 3 Slide 44

Klasyfikacja narzędzi CASE względem ich funkcji l Narzędzia do analizy programów • l Narzędzia

Klasyfikacja narzędzi CASE względem ich funkcji l Narzędzia do analizy programów • l Narzędzia do testowania • l Systemy interakcyjnego usuwania błędów Narzędzia do dokumentowania • l Dane testowe, programy porównujące pliki Narzędzia do usuwania błędów • l Generatory wzajemnych odwołań, analizatory statyczne, analizatory dynamiczne Programy składu, edytory rysunków Narzędzia do wyszukiwania • ©Ian Sommerville 2000 Systemy wyszukiwania wzajemnych odwołań, programy do restrukturyzacji systemów Software Engineering, 6 th edition. Chapter 3 Slide 45

Podział systemów CASE ze względu na zakres wspomagania • • • Narzędzia wspomagające poszczególne

Podział systemów CASE ze względu na zakres wspomagania • • • Narzędzia wspomagające poszczególne zadania w ramach procesu, np. ssprawdzania spójności projektu, kompilacji programu, porównywania wyników testów itd. Warsztaty wspomagają całe fazy procesów lub czynności, np. specyfikowanie, projektowanie itd. Środowiska wspomagają całość lub znaczną część procesu tworzenia oprogramowania. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 46

Główne tezy l l Procesy tworzenia oprogramowania to czynności zmierzające do wyprodukowania systemu. Modele

Główne tezy l l Procesy tworzenia oprogramowania to czynności zmierzające do wyprodukowania systemu. Modele procesów tworzenia oprogramowania to abstrakcyjne reprezentacje tych procesów. Wszystkie procesy tworzenia oprogramowania obejmują specyfikowanie, projektowanie, implementację, zatwierdzanie i ewolucje oprogramowania. Ogólne modele procesów opisują organizację procesu tworzenia oprogramowania. Przykładami takich modeli są: model kaskadowy, tworzenie ewolucyjne, tworzenie formalne systemów oraz tworzenie z użyciem wielokrotnym. W modelach iteracyjnych procesów tworzenie oprogramowania przedstawia się w postaci cyklu czynności. Zaletą tego podejścia jest uniknięcie zbyt wczesnego zatwierdzenia specyfikacji lub projektu. Przykładami modeli iteracyjnych są tworzenie przyrostowe i model spiralny. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 48

Główne tezy l l l Inżynieria wymagań to proces opracowywania specyfikacji oprogramowania. Obejmuje przygotowanie

Główne tezy l l l Inżynieria wymagań to proces opracowywania specyfikacji oprogramowania. Obejmuje przygotowanie specyfikacji zrozumiałej dla użytkowników systemu oraz bardziej szczegółowej specyfikacji dla budowniczych systemu. Proces projektowania i implementowania polega na przekształceniu specyfikacji wymagań w działający system oprogramowania. Metody systematycznego projektowania mogą być elementem tego przekształcenia. Zatwierdzenie oprogramowania to proces sprawdzania, czy system jest zgodny ze swoją specyfikacją oraz czy spełnia rzeczywiste potrzeby użytkowników. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 49

Główne tezy l l Ewolucja oprogramowania polega na modyfikowaniu istniejącego systemu oprogramowania, tak aby

Główne tezy l l Ewolucja oprogramowania polega na modyfikowaniu istniejącego systemu oprogramowania, tak aby spełniał nowe wymagania. Takie podejście staje się standardem tworzenia oprogramowania w wypadku małych i średnich przedsięwzięć. Technologia CASE zapewnia zautomatyzowane wspomaganie procesu tworzenia oprogramowania. Narzędzia CASE wspomagają poszczególne czynności procesu. Warsztaty CASE wspomagają zbiory powiązanych czynności. Środowiska CASE wspomagają większość lub nawet wszystkie czynności procesu tworzenia oprogramowania. ©Ian Sommerville 2000 Software Engineering, 6 th edition. Chapter 3 Slide 50