Inżynieria oprogramowania - 3 Slide 1
Proces tworzenia oprogramowania
. Spójny zbiór czynności
specyfikowania,
projektowania,
implementacji
i testowania oprogramowania
Inżynieria oprogramowania - 3 Slide 2
Cele
. Wprowadzenie modeli procesu tworzenia
oprogramowania
. Opis kilku różnych modeli procesu tworzenia
oprogramowania i sytuacji ich zastosowania
. Zrozumienie modeli procesów inżynierii wymagań
stawianych oprogramowaniu, tworzenia oprogramowania,
testowania i ewolucji
. Wprowadzenie pojęcia technologii CASE wspomagającej
proces tworzenia oprogramowania
Inżynieria oprogramowania - 3 Slide 3
Zawartość
. Modele procesu tworzenia oprogramowania
. Iteracja procesu
. Specyfikacja oprogramowania
. Projektowanie i implementacja oprogramowania
. Zatwierdzanie oprogramowania
. Ewolucja oprogramowania
. Zautomatyzowane wspomaganie procesu
Inżynieria oprogramowania - 3 Slide 4
Proces tworzenia oprogramowania
. Zbiór czynności wymaganych do tworzenia
systemów oprogramowania
. Specyfikacja
. Projektowanie
. Zatwierdzanie
. Ewolucja
. Model procesu tworzenia oprogramowania jest
abstrakcyjną reprezentacją procesu. Prezentuje
opis procesów z wielu poszczególnych
perspektyw
Inżynieria oprogramowania - 3 Slide 5
Ogólne modele procesów tworzenia
oprogramowania
. Model kaskadowy (ang. waterfall)
. Separacja faz specyfikacji i tworzenia oprogramowania
. Tworzenie ewolucyjne
. Przeplatanie faz specyfikacji i tworzenia oprogramowania
. Tworzenie formalne systemu
. Matematyczny model systemu jest formalnie przekształcany w
implementację (metoda przekształceń formalnych)
. Tworzenie z użyciem wielokrotnym
. System składany jest z istniejących komponentów
Inżynieria oprogramowania - 3 Slide 6
Model kaskadowy
(wodospadowy)
Definiowanie
wymagań
Projektowanie
systemu i
oprogramowania
Implementacja i
testowanie
jednostek
Integracja i
testowanie
systemu
Eksploatacja
i pielęgnacja
Inżynieria oprogramowania - 3 Slide 7
Fazy modelu kaskadowego
. Analiza i definicja wymagań
. Projektowanie systemu i oprogramowania
. Implementacja i testowanie jednostek
. Integracja i testowanie systemu
. Eksploatacja i pielęgnacja
Wadą tego modelu są trudności z
przystosowaniem do zmieniających się wymagań
klienta już w trakcie trwania procesu tworzenia
oprogramowania
Inżynieria oprogramowania - 3 Slide 8
Problemy modelu kaskadowego
. Nieelastyczny podział projektu na rozłączne
etapy
. Duże trudności w reagowaniu na zmieniające się
potrzeby klienta
Model ten jest odpowiedni tylko wtedy gdy
wymagania są jasne i zrozumiałe
Inżynieria oprogramowania - 3 Slide 9
Tworzenie ewolucyjne
. Tworzenie badawcze
. Celem jest praca z klientem i wytworzenie
ostatecznej wersji systemu z ogólnych specyfikacji.
Powinien rozpocząć się od dobrego zrozumienia
wymagań
. Prototypowanie z porzuceniem
. Celem jest zrozumienie wymagań systemowych.
Powinien zacząć się od pobieżnego zrozumienia
wymagań
Inżynieria oprogramowania - 3 Slide 10
Tworzenie ewolucyjne
Ogólny opis
Wersja
początkowa
Wersje pośrednie
Wersja końcowa
Specyfikacja
Zatwierdzanie
Tworzenie
Równoległe czynności
Inżynieria oprogramowania - 3 Slide 11
Tworzenie ewolucyjne
. Problemy
. Mało widoczny proces
. System ma złą strukturę
. Konieczne mogą być specjalne narzędzia i techniki
(np. języki do szybkiego prototypowania)
. Odpowiedni dla
. Małych i średnich systemów
. Części dużych systemów (np. interfejs użytkownika)
. Systemów o krótkim czasie życia
Inżynieria oprogramowania - 3 Slide 12
Tworzenie formalne systemów
. Bazuje na matematycznych przekształceniach
specyfikacji systemu poprzez różne reprezentacje
aż po program wykonywalny
. Przekształcenia zachowują matematyczną
poprawność reprezentacji systemu więc
bezpośrednio pokazują, że program odpowiada
początkowej specyfikacji
. Najbardziej znanym przykładem formalnego
procesu tworzenia oprogramowania jest
.Cleanroom. firmy IBM
Inżynieria oprogramowania - 3 Slide 13
Tworzenie formalne systemów
Definicja
wymagań
Specyfikacja
formalna
Przekształcenie
formalne
Integracja i
testowanie
systemu
Inżynieria oprogramowania - 3 Slide 14
Przekształcenia formalne
R1 Specyfikacja
formalna
R3 R2 Program
wykonywalny
P1 P2 P3 P4
Inżynieria oprogramowania - 3 Slide 15
Tworzenie formalne systemów
. Problemy
. Wymaga specjalistycznych umiejętności do zastosowania tej
techniki
. Trudności w formalnej specyfikacji kilku aspektów systemu
takich jak np. interfejs użytkownika
Model odpowiedni dla krytycznych systemów, w
szczególności tych gdzie wymaga się pokazania,
że system spełnia wymogi dotyczące
bezpieczeństwa i zabezpieczeń
Inżynieria oprogramowania - 3 Slide 16
Tworzenie z użyciem wielokrotnym
. Bazuje na wielokrotnym wykorzystaniu oprogramowania;
systemy są składane z istniejących już komponentów lub
produktów typu COTS (Commercial-off-the-shelf)
. Etapy procesu:
. Analiza komponentów
. Modyfikacja wymagań
. Projektowanie systemu z użyciem wielokrotnym
. Tworzenie i integracja
. Podejście to staje się się coraz częściej stosowane bardziej
w sposób niejawny niż jako paradygmat procesu
Inżynieria oprogramowania - 3 Slide 17
Tworzenie z użyciem wielokrotnym
Specyfikacja
wymagań
Analiza
komponentów
Modyfikacja
wymagań
Projekt systemu z
użyciem
wielokrotnym
Tworzenie i
integracja
Zatwierdzanie
systemu
Inżynieria oprogramowania - 3 Slide 18
Iteracja procesu
. Wymagania systemowe ZAWSZE ewoluują podczas
trwania projektu; tak więc iteracja w której wcześniejsze
fazy są modyfikowane jest zawsze częścią procesu
tworzenia dużych systemów
. Iteracja może być zastosowana do każdego z ogólnych
modeli procesu tworzenia oprogramowania
. Dwa podejścia
. Tworzenie przyrostowe
. Tworzenie spiralne
Inżynieria oprogramowania - 3 Slide 19
Tworzenie przyrostowe
. Zamiast dostarczać system w pojedynczej
dostawie, tworzenie i dostawa podzielone są na
inkrementacje (przyrosty). Każdy przyrost
dostarcza część wymaganej funkcjonalności
. Wymagania użytkownika mają określone
priorytety i wymagania o najwyższym priorytecie
są spełnione we wczesnych inkrementacjach
systemu
. Kiedy tworzenie przyrostu wystartuje, wymagania
są zamrażane lecz wymagania dla późniejszych
inkrementacji mogą dalej ewoluować
Inżynieria oprogramowania - 3 Slide 20
Tworzenie przyrostowe
Zdefiniuj zarys
wymagań
Przypisz
wymagania do
przyrostów
Zaprojektuj
architekturę
systemu
Wytwórz
przyrost
systemu
Zweryfikuj
przyrost
Zintegruj
przyrost
Zweryfikuj
system
System nie ukończony
System końcowy
Inżynieria oprogramowania - 3 Slide 21
Zalety tworzenia przyrostowego
. Klienci nie muszą czekać na dostarczenie całego
systemu zanim zaczną czerpać z niego korzyści
. Wcześniejsze inkrementacje pełnią rolę
prototypów i są inspiracją do określenia
wymagań dla późniejszych przyrostów
. Mniejsze ryzyko porażki całego przedsięwzięcia
. Usługi o najwyższym priorytecie są dostarczane
jako pierwsze tak więc są najdłużej testowane
Inżynieria oprogramowania - 3 Slide 22
Programowanie ekstremalne
. Bazuje na tworzeniu i dostarczaniu bardzo
małych przyrostów funkcjonalności
. Polega na stałym wzroście kodu oprogramowania
i zaangażowaniu użytkownika
Inżynieria oprogramowania - 3 Slide 23
Tworzenie spiralne
. Proces tworzenia reprezentowany jako spirala
zamiast sekwencji czynności z pewnymi
nawrotami
. Każda pętla spirali reprezentuje fazę w procesie
tworzenia oprogramowania
. Nie ma stałych faz jak specyfikacja czy
projektowanie - pętle w spirali są wybierane
zależnie od tego która jest odpowiednia
Inżynieria oprogramowania - 3 Slide 24
Model spiralny procesu tworzenia
oprogramowania
analysis
analys is
rototyp e
rototyp e
Concept of
Operation
Requiremen
valid ation
Design
V&V
Prod uct
desi n Detailed
design
Code
Unit tes
Acceptance
test Service Develop, v erify
next-level p roduct
Ev aluate altern atives
id en tify, resolve risk s
Determine ob jectiv es
alternatives and
constraints
Plan next p has e
Integration
and test plan
Development
plan
equi rements pla
if c plan
REVIEW
Oceń inne strategie,
rozpoznaj i zmniejsz
zagrożenia Analiza
zagrożeń
Analiza
zagrożeń
Analiza
zagrożeń
Analiza
zagrożeń
Prototyp 1
Prototyp 2
Prototyp 3
Działający
prototyp
Symulacje, modele, miary odniesienia
RECENZJA
Plan wymagań
Plan cyklu życia
Sposób
postępowania
Plan tworzenia
Plan testowania i
integracji Zaplanuj następną
fazę
Wymagania
S/W Projektowa-
nie produktu Szczegółowe
projektowanie Zatwierdzenie
wymagań
Weryfikacja i
zatwierdzanie
Działanie
Testy
akceptacji
Testy
integracji
Testy
jednostek
Kodowanie
Utwórz, zweryfikuj
produkt następnego
poziomu
Określ cele, inne
strategie i ograniczenia
Inżynieria oprogramowania - 3 Slide 25
Sektory modelu spiralnego
. Ustalanie celów
. Definicja konkretnych celów fazy
. Rozpoznanie i redukcja zagrożeń
. Szczegółowa analiza zagrożeń i działania prowadzące do
redukcji tych zagrożeń
. Tworzenie i zatwierdzanie
. Wybór modelu tworzenia systemu spośród dostępnych
ogólnych modeli
. Planowanie
. Przegląd projektu i planowanie kolejnej fazy
Inżynieria oprogramowania - 3 Slide 26
Specyfikacja oprogramowania
. Proces określania wymaganych usług i
ograniczeń jakim podlega tworzenie i działanie
oprogramowania
. Proces inżynierii wymagań
. Studium wykonalności
. Określenie i analiza wymagań
. Specyfikowanie wymagań
. Zatwierdzanie wymagań
Inżynieria oprogramowania - 3 Slide 27
Proces inżynierii wymagań
Studium
wykonalności
Określanie i
analiza wymagań
Specyfikacja
wymagań
Zatwierdzanie
wymagań
Raport
wykonalności Modele
systemu Wymagania
użytkownika i
systemu
Dokumentacja
wymagań
Inżynieria oprogramowania - 3 Slide 28
Projektowanie i implementowanie
oprogramowania
. Proces przekształcania specyfikacji systemu w
działający system
. Projektowanie oprogramowania
. Projektowanie struktury oprogramowania, która realizuje
określone specyfikacje
. Implementacja
. Tłumaczenie zaprojektowanej struktury w wykonywalny
program
. Działania związane z projektowaniem i
implementacją są ściśle ze sobą związane i mogą
się przeplatać
Inżynieria oprogramowania - 3 Slide 29
Czynności procesu projektowania
. Projektowanie architektury
. Specyfikowanie abstrakcyjne
. Projektowanie interfejsów
. Projektowanie komponentów
. Projektowanie struktur danych
. Projektowanie algorytmów
Inżynieria oprogramowania - 3 Slide 30
Ogólny model procesu projektowania
Specyfikacja
wymagań
Projektowanie
architektury
Specyfikowanie
abstrakcyjne
Projektowanie
interfejsów
Projektowanie
struktur danych
Projektowanie
algorytmów
Projektowanie
komponentów
Architektura
systemu
Specyfikacja
oprogramowania
Specyfikacja
interfejsów
Specyfikacja
komponentów
Specyfikacja
struktur
danych
Specyfikacja
algorytmów
Czynności projektowe
Produkty projektowania
Inżynieria oprogramowania - 3 Slide 31
Metody projektowania
. Metodyczne podejście do tworzenia projektu
oprogramowania
. Projekt jest zwykle dokumentowany jako zbiór
graficznych modeli
. Możliwe modele
. Model przepływu danych (DFD)
. Model encja-związek (ERD)
. Model strukturalny
. Model obiektowy
Inżynieria oprogramowania - 3 Slide 32
Programowanie i wyszukiwanie
błędów
. Tłumaczenie projektu na program i usuwanie
błędów z tego programu
. Programowanie jest indywidualną czynnością -
nie istnieje jeden ogólny proces programowania
. Programiści wykonują testy które mają na celu
wykrycie błędów w programie i ich usunięcie
Inżynieria oprogramowania - 3 Slide 33
Proces usuwania błędów
Zlokalizuj
błąd
Zaprojektuj
naprawę błędu
Napraw błąd Przetestuj program
ponownie
Inżynieria oprogramowania - 3 Slide 34
Zatwierdzanie oprogramowania
. Weryfikacja i zatwierdzanie mają na celu
wykazać, że system jest zgodny ze swoją
specyfikacją i spełnia oczekiwania klienta
. Obejmuje procesy sprawdzania, przeglądania i
testowania
. Testowanie systemu dotyczy prezentacji działania
systemu w przypadkach przetwarzania
rzeczywistych danych, które zostały określone w
specyfikacjach
Inżynieria oprogramowania - 3 Slide 35
Proces testowania
Testowanie
jednostek
Testowanie
modułów
Testowanie
podsystemów
Testowanie
systemów
Testowanie
odbiorcze
Inżynieria oprogramowania - 3 Slide 36
Fazy testowania
. Testowanie jednostek
. Testowanie poszczególnych komponentów
. Testowanie modułów
. Testowanie zbioru powiązanych ze sobą komponentów
. Testowanie podsystemów
. Testowanie kolekcji modułów które zintegrowano w podsystemie. Duży
nacisk kładzie się tu na testowanie interfejsów
. Testowanie systemu
. Testowanie systemu jako całości. Bada się także pojawiające się
właściwości systemu
. Testowanie odbiorcze
. Testowanie u klienta, sprawdzanie czy system jest akceptowalny
Inżynieria oprogramowania - 3 Slide 37
Fazy testowania
Specyfikacja
wymagań
Specyfikacja
systemu
Projekt
systemu
Projekt
szczegółowy
Kod modułów i
jednostek oraz
ich test
Działanie Test
odbiorczy
Test integracji
systemu
Test integracji
podsystemu
Plan testów
odbiorczych
Plan testów
integracji
systemu
Plan testów
integracji
podsystemów
Inżynieria oprogramowania - 3 Slide 38
Ewolucja oprogramowania
. Oprogramowanie jest elastyczne i może ulegać zmianie
. W miarę upływu czasu, w wyniku zmiany uwarunkowań
biznesowych, oprogramowanie wspierające musi również
ewoluować
. Pomimo istnienia rozgraniczenia pomiędzy procesem
tworzenia oprogramowania a procesem ewolucji
oprogramowania, rozgraniczenie to jest coraz bardziej
nieistotne ponieważ coraz mniej systemów tworzonych jest
od nowa. Nie są to dwa rozłączne etapy lecz kontinuum
Inżynieria oprogramowania - 3 Slide 39
Ewolucja systemu
Zdefiniuj wymagania
stawiane systemowi
Istniejące
systemy
Nowy
system
Zbadaj istniejące
systemy
Zaproponuj zmiany
systemów
Zmodyfikuj
systemy
Inżynieria oprogramowania - 3 Slide 40
Zautomatyzowane wspieranie procesu
(CASE)
. Computer-aided software engineering (CASE) to
oprogramowanie do wspomagania procesów
tworzenia i ewolucji oprogramowania
. Automatyzacja działań
. Graficzny edytor do tworzenia modeli systemu
. Słownik danych do zarządzania zaprojektowanymi jednostkami
. Graficzne narzędzia do konstruowania interfejsu użytkownika
. Odpluskwiacze do wspomagania znajdowania błędów programu
. Automatyczny tłumacz do generowania nowych wersji
programu
Inżynieria oprogramowania - 3 Slide 41
Technologia CASE
. Technologia CASE doprowadziła do znaczącego
polepszenia procesu tworzenia oprogramowania
chociaż nie tak dużego jak się wcześniej
spodziewano
. Inżynieria oprogramowania wymaga kreatywnego myślenia - nie
jest łatwa do zautomatyzowania
. Inżynieria oprogramowania jest czynnością zespołową i dla
dużych projektów inżynierowie spędzają wiele czasu na
interakcjach z innymi członkami zespołu. Technologia CASE
nie daje tu żadnego wsparcia
Inżynieria oprogramowania - 3 Slide 42
Klasyfikacja CASE
. Klasyfikacja pomaga nam zrozumieć różne typy narzędzi
CASE oraz ich rolę we wspomaganiu czynności procesu
tworzenia oprogramowania
. Perspektywa funkcjonalności
. Narzędzia są klasyfikowane według ich specyficznych funkcji
. Perspektywa procesu
. Narzędzia są klasyfikowane według wspomaganych przez nie
czynności procesu
. Perspektywa integracji
. Narzędzia są klasyfikowane według zakresu i stopnia ich
zorganizowania
Inżynieria oprogramowania - 3 Slide 43
Funkcjonalna klasyfikacja narzędzi
CASE
Typ narzędzia Przykłady
Narzędzia do planowania Narzędzia PERT, narzędzia do szacowania, arkusze
kalkulacyjne
Narzędzia do edycji Edytory tekstowe, edytory diagramów, procesory tekstów
Narzędzia do zarządzania
zmianami
Narzędzia do śledzenia wymagań, systemy kontroli zmian
Narzędzia do zarządzania
konfiguracjami
Systemy zarządzania wersjami, narzędzia do budowania
systemów
Narzędzia do prototypowania Języki bardzo wysokiego poziomu, generatory interfejsu
użytkownika
Narzędzia do wspomagania
metod
Edytory projektów, słowniki danych i generatory kodów
Inżynieria oprogramowania - 3 Slide 44
Funkcjonalna klasyfikacja narzędzi
CASE - c.d.
Typ narzędzia Przykłady
Narzędzia do przetwarzania
języków
Kompilatory, interpretery
Narzędzia do analizy
programów
Generatory wzajemnych odwołań, analizatory statyczne,
analizatory dynamiczne
Narzędzia do testowania Generatory danych testowych, programy porównujące pliki
Narzędzia do usuwania
błędów
Systemy interakcyjnego usuwania błędów
Narzędzia do
dokumentowania
Programy składu, edytory rysunków
Narzędzia do inżynierii
wstecz
Systemy wyszukiwania wzajemnych odwołań, programy do
restrukturyzacji systemów
Klasyfikacja narzędzi CASE względem
czynności
Specyfikowanie Projektowanie Implementowanie Weryfikacja i
zatwierdzanie
Narzędzia do inżynierii wstecz
Narzędzia do testowania
Narzędzia do usuwania błędów
Narzędzia do analizy programów
Narzędzia do przetwarzania języków
Narzędzia do wspomagania metod
Narzędzia do prototypowania
Narzędzia do zarządzania
konfiguracjami
Narzędzia do zarządzania zmianami
Narzędzia do dokumentowania
Narzędzia do edycji
Narzędzia do planowania
x x
x
x x
x x
x x
x x
x x x x
x x
x x
x x x x
x x x x
x x x x
Inżynieria oprogramowania - 3 Slide 46
Integracja CASE
. Narzędzia
. Wspomagają poszczególne zadania w ramach procesu takie jak
sprawdzanie spójności projektu, edytowanie tekstu itd.
. Warsztaty
. Wspomagają fazy procesów takie jak specyfikacja czy
projektowanie; zwykle zawierają pewną liczbę zintegrowanych
narzędzi
. Środowiska
. Wspomagają całość lub znaczną część procesu tworzenia
oprogramowania; zwykle składają się z kilku zintegrowanych
warsztatów
Inżynieria oprogramowania - 3 Slide 47
Narzędzia, warsztaty i środowiska
Technologia
CASE
Warsztaty Narzędzia Środowiska
Kompilatory Edytory Narzędzia do
porównywania
plików
Środowiska
zintegrowane
Środowiska
zbudowane dla
procesu
Programowanie Analiza i
projektowanie
Testowanie
Warsztaty
ogólnego
przeznaczenia
Warsztaty do
konkretnego
języka
Warsztaty do
jednej metody
Warsztaty do
wielu metod
Inżynieria oprogramowania - 3 Slide 48
Główne tezy
. Procesy tworzenia oprogramowania to czynności
zmierzające do wyprodukowania i ewolucji systemów
oprogramowania. Są one reprezentowane w modelu
procesu tworzenia oprogramowania
. Podstawowymi elementami procesu tworzenia
oprogramowania są: specyfikowanie, projektowanie i
implementacja, zatwierdzanie i ewolucja
. Ogólne modele procesów opisują organizację procesów
tworzenia oprogramowania
. Iteracyjne modele procesów tworzenia oprogramowania
opisują proces tworzenia jako cykl czynności
Inżynieria oprogramowania - 3 Slide 49
Główne tezy
. Inżynieria wymagań to proces opracowywania
specyfikacji oprogramowania
. Procesy projektowania i implementowania przekształcają
specyfikację w działający program
. Zatwierdzanie oprogramowania wymaga sprawdzania czy
system jest zgodny ze swoją specyfikacją i potrzebami
użytkownika
. Ewolucja oprogramowania dotyczy modyfikacji systemu
po tym jak został on wprowadzony do użycia
. technologia CASE wspomaga działania procesu
tworzenia oprogramowania