background image

dr inż. Radosław Adamus

1

Inżynieria 

Oprogramowania

Wykład 2

Proces Inżynierii Oprogramowania

Cel:

z

Zapoznanie z modelami procesu inżynierii 
oprogramowania

z

Opis trzech generycznych modeli procesu IO oraz 
ich zastosowanie

z

Naszkicowanie modeli procesów inżynierii wymagań, 
rozwoju oprogramowania, testowania oraz ewolucji

z

Wprowadzenie do modelu Rational Unified Process

z

Wprowadzenie do technologii CASE wspierającej 
działania procesu IO

background image

dr inż. Radosław Adamus

2

Proces IO i jego modele

z

Ustrukturalizowany zbiór czynności 
wymaganych do wyprodukowania 
oprogramowania:

z

Specyfikacja

z

Projektowanie i rozwój

z

Walidacja

z

Ewolucja

z

Model jest abstrakcyjną reprezentacją procesu. 
Opisuje go z określonej perspektywy.

Generyczne modele procesu IO

z

Model kaskadowy

z

Jednoznacznie wydzielone fazy specyfikacji i 
rozwoju

z

Model ewolucyjny

z

Specyfikacja, rozwój, walidacja są połączone

z

Inżynieria oparta na komponentach

z

System jest asemblowany z istniejących 
komponentów

Waterfall

Evolutionary

development

Component
based SE

Istnieje wiele wariantów tych modeli

background image

dr inż. Radosław Adamus

3

Model kaskadowy 

(wodospadowy)

waterfall model

Określenie

wymagań

Projektowanie

Implementacja

Testowanie

Konserwacja

Cele i szczegółowe wymagania wobec systemu.

Szczegółowy projekt systemu 

uwzględniający wcześniejsze 

wymagania.

Modyfikacje producenta - usunięcie 
błędów, zmiany i rozszerzenia.

Analiza

Ocena modelu kaskadowego

Istnieją zróżnicowane poglądy co do przydatności praktycznej modelu 

kaskadowego. Podkreślane są następujące wady:

¾ Narzucenie twórcom oprogramowania ścisłej kolejności wykonywania prac
¾ Wysoki koszt błędów popełnionych we wczesnych fazach
¾ Długa przerwa w kontaktach z klientem

Z drugiej strony, jest on do pewnego stopnia niezbędny dla planowania, 
harmonogramowania, monitorowania i rozliczeń finansowych. 

background image

dr inż. Radosław Adamus

4

Zmodyfikowany model 
kaskadowy z iteracjami

Określenie

wymagań

Analiza

Projektowanie

Implementacja

Testowanie

Konserwacja

Model ewolucyjny

z

Wytwarzanie „odkrywcze”

z

Opracowanie końcowego systemu odbywa się przy 
współpracy z klientem. System ewoluuje od 
początkowego szkicu specyfikacji. Nowe własności 
dodawane są zgodnie z propozycjami klienta.

z

Prototypowanie

z

Celem jest zrozumienie wymagań dla systemu. 
Budując prototyp definiujemy wymagania.

background image

dr inż. Radosław Adamus

5

Model ewolucyjny

Szkic wymagań

Specyfikacja 

Rozwój 

Walidacja 

Wersja
początkowa

Wersje pośrednie 

Wersja końcowa 

Czynności równoległe 

Model ewolucyjny

z

Wady:

z

„Niejawny proces”

z

System może być w niewielkim stopniu 
ustrukturalizowany

z

Wymagania wiedza w zakresie narzędzi szybkiego 
prototypowania

z

Stosowalność

z

Małe lub średniej wielkości systemy interaktywne

z

Fragmenty większych systemów (np. GUI)

z

Systemy „krótkoterminowe”

background image

dr inż. Radosław Adamus

6

Inżynieria komponentowa

z

Bazuje na powtórnym użyciu:

z

System jest integrowany z istniejących komponentów

z

COTS (Computer-off-the-shelf)

z

Fazy procesu:

z

Analiza komponentów

z

Modyfikacja wymagań

z

Projektowanie z powtórnym użyciem

z

Rozwój i integracja

z

Podejście coraz częściej wykorzystywane

Proces zorientowany na powtórne 
użycie

Specyfikacja
wymagań

Analiza
komponentów 

Modyfikacja
wymagań

Projektowanie
Z powt. użyciem 

Rozwój i 
integracja

Walidacja 

background image

dr inż. Radosław Adamus

7

Proces Inżynierii 

Oprogramowania

Iteracje

Iteracje w procesie IO

z

Wymagania systemu zawsze będą podlegały 

zmianom. Iteracje w procesie są nieuniknione i 

stanowią integralną część procesu IO dla dużych 

systemów.

z

Mogą pojawić się w każdym ze wspomnianych 

modeli.

z

Dwa podstawowe i powiązane ze sobą podejścia 

do iteracji to:

z

Realizacja przyrostowa

z

Model spiralny

Incremental
development

Spiral 
development

background image

dr inż. Radosław Adamus

8

Realizacja przyrostowa

z

System jest dostarczany w następujących po 
sobie wydaniach. Każde wydanie posiada 
zwiększoną funkcjonalność.

z

Wymagania użytkownika są priorytetyzowane. 
Im wymaganie ma wyższy priorytet tym we 
wcześniejszym wydaniu zostanie zrealizowane.

z

W momencie rozpoczęcia inkrementacji 
zamraża się wymagania. Ich ewolucja będzie się
odbywała w iteracji kolejnej.

Realizacja przyrostowa

incremental development

Określenie

wymagań

Ogólny
projekt

Wybór

podzbioru

funkcji

Szczegółowy

projekt,

implementacja

testy

Dostarczenie 

zrealizowanej

części

systemu

Proces

realizowany

iteracyjnie

background image

dr inż. Radosław Adamus

9

Zalety realizacji przyrostowej

z

Wybrana funkcjonalność systemu jest 
dostarczona wcześnie.

z

Wczesne iteracje można traktować jako 
prototypy

z

Ryzyko niepowodzenia jest minimalizowane.

z

Najbardziej priorytetowe usługi systemu są
najdłużej testowane.

Programowanie extremalne

z

Podejście do realizacji przyrostowej zakładające budowę
systemu w bardzo częstych wydaniach o małym 
przyroście funkcjonalności.

z

Opiera się na stałym udoskonalaniu kodu.

z

Użytkownicy bezpośrednio współpracują z zespołem 
budującym system.

z

Najbardziej rozpoznawalne zasady XP 

z

Programowanie w parach

z

Rozwój oparty na testach

z

Ciągła integracja

(XP) eXtreme Programming

pairwise programming

TDD test driven development

Continuous integration

background image

dr inż. Radosław Adamus

10

Model spiralny

z

Proces jest reprezentowany jako spirala (a nie 
sekwencja z powrotami)

z

Każda pętla w spirali reprezentuje fazę procesu

z

Nie ma wyróżnionych faz typu specyfikacja czy 
projektowanie – wybierane jest to co jest 
obecnie potrzebne.

z

Istotnym elementem modelu jest ryzyko –
szacowanie i zarządzanie

Spiral 
development

Działy modelu spiralnego

z

Identyfikacja i określanie celów dla kolejnej fazy

z

Identyfikacja i minimalizacja zagrożeń

z

Działania mające na celu redukcję najważniejszych 
zagrożeń

z

Rozwój i walidacja

z

Wybierany jest model rozwoju (może być dowolny)

z

Planowanie

z

Przegląd (ewaluacja) projektu, planowanie kolejnej 
fazy

background image

dr inż. Radosław Adamus

11

Spiralny model procesu IO

Określanie celów

ograniczeń,

Rozwiązań alternatywnych

Analiza ryzyka

Analiza ryzyka

Analiza ryzyka

Ewaluacja, identyfikacja
i minimalizacja zagrożeń, 

Analiza

ryzyka

Prototyp1

Prototyp2 Prototyp3

Funkcjo-
nujący
prototyp

Koncepcja
działania

Planowanie cyklu 
życia

Przegląd

Plan rozwoju

Plan kolejnej fazy

Plan testów i integracji

Symulacje, modele, benchmarki

Definiowanie
wymagań

Rozwój, weryfikacja
Produkt na kolejnym
poziomie

Walidacja
wymagań

Projektowanie
produktu

Weryfikacja
i walidacja 
projektu

Projekt
szczegółowy

Kodowanie

Testy
jednostkowe

Testy
integracyjne

Testy
akceptacyjne

Proces Inżynierii 

Oprogramowania

Czynności procesu IO

background image

dr inż. Radosław Adamus

12

Czynności procesu IO

z

Specyfikacja oprogramowania

z

Projektowanie i implementacja oprogramowania

z

Weryfikacja i Walidacja oprogramowania

z

Ewolucja oprogramowania

Specyfikacja oprogramowania

z

Proces, którego celem jest określenie jakie 
usługi musi dostarczać projektowany system 
oraz jakie są ograniczenia na działanie systemu 
oraz proces jego produkcji.

z

Proces inżynierii wymagań:

z

Studium osiągalności

z

Pozyskiwanie i analiza wymagań

z

Specyfikacja wymagań

z

Walidacja wymagań

Software specification

background image

dr inż. Radosław Adamus

13

Proces inżynierii wymagań

Model systemu

Raport 
osiągalności

Wymagania użytkowe
I systemowe

Dokument wymagań

Walidacja wymagań

Specyfikacja 
wymagań

Pozyskiwanie i 
Analiza wymagań

Studium 
osiągalności

Projektowanie i implementacja 
oprogramowania

z

Proces, którego celem jest przekształcenie 
specyfikacji w działający system

z

Projektowanie

z

Określenie struktury oprogramowania, która realizuje 
jego specyfikacje.

z

Implementacja

z

Translacja struktury na wykonywalny program

z

Projektowanie i implementacja są ze sobą
mocno powiązane i często równoległe

Software design and implementation

background image

dr inż. Radosław Adamus

14

Czynności procesu projektowania

z

Projektowanie architektury

z

Abstrakcyjna specyfikacja

z

Projektowanie interfejsów

z

Projektowanie komponentów

z

Projektowanie struktur danych

z

Projektowanie algorytmów

Proces projektowania 
oprogramowania

Specyfikacja
wymagań

Projektowanie
architektury

Abstrakcyjna
specyfikacja

Projektowanie
interfejsów

Projektowanie
komponentów

Projektowanie
struktury
danych

Projektowanie
algorytmów

Architektura
systemu

Specyfikacja
oprogramowania

Specyfikacja
interfejsów

Specyfikacja
komponentów

Specyfikacja
struktur
danych

Specyfikacja
algorytmów

aktywności

produkty

background image

dr inż. Radosław Adamus

15

Metody strukturalne

z

Systematyczne podejście do procesu 
projektowania

z

Produktem procesu projektowanie jest zbiór 
modeli (reprezentowanych graficznie)

z

Modele obiektów

z

Modele sekwencji

z

Model stanów

z

Model struktury

z

Model przepływu danych

Kodowanie i debugowanie

z

Translacja projektu do kodu wykonywalnego 
oraz usuwanie błędów

z

Jest to aktywność nie posiadające specjalnego 
procesu – programista indywidualista (?)

z

Programowanie to również usuwanie błędów!

Zlokalizuj
błąd

Zaprojektuj 
poprawkę

Napraw
błąd

Ponownie
uruchom test

background image

dr inż. Radosław Adamus

16

Walidacja oprogramowania

z

Celem weryfikacji i walidacji (V&V) jest 
wykazanie, że opracowany system jest zgodny 
ze specyfikacją i realizuje wymagania klienta

z

V&V to proces kontroli i przeglądów 
oprogramowania plus testowanie systemu

z

Testowanie systemu to jego uruchamianie z 
przypadkami testowymi wywodzących się ze 
specyfikacji rzeczywistych danych które system 
ma przetwarzać.

Software verification and validation

Proces testowania

Testy
komponentów

Testy
systemowe

Testy
akceptacyjne

background image

dr inż. Radosław Adamus

17

Etapy testowania

z

Testy komponentowe (jednostkowe)

z

Komponenty (obiekty, funkcje lub ich spójne 

grupy) są testowane indywidualnie 

z

Testy systemowe

z

Testowanie systemu jako całości ze 

szczególnym uwzględnieniem nowo powstałych 

elementów

z

Testy akceptacyjne

z

Testowanie z wykorzystaniem rzeczywistych 

danych w celu udowodnienia, ze system spełnia 

wymagania użytkowników.

Unit

testing

System

(integration)
testing

Acceptance
testing

Fazy testowania

Plan testów
akceptacyjnych

Plan testów
integracyjnych

Plan testów
Integracyjnych
dla podsystemów

Moduły, 
kod jednostek,

testy

Specyfikacja
wymagań

Specyfikacja
systemowa

Projekt
systemu

Projekt 
szczegółowy

Testy
akceptacyjne

Testy integracyjne
systemu

Testy integracyjne
podsystemów

Usługi

background image

dr inż. Radosław Adamus

18

Ewolucja oprogramowania

z

Oprogramowanie musi być elastyczne bo 
zmiany są nieuniknione

z

Zmieniają się uwarunkowania biznesowe -> zmieniają
się wymagania -> ewoluuje system

z

Pomimo pierwotnego wyróżnienia procesu 
budowy i ewolucji systemu granica ta dzisiaj 
coraz bardziej się zaciera.

Software evolution

Ewolucja systemu

Definiowanie
wymagań

Ocena 
istniejacego
systemu

Propozycja 
zmian

Modyfikacja
systemu

Istniejący
system

Nowy system

Proces Inżynierii 

Oprogramowania 

Nowe lub 
zmienione 
wymagania

Nowy lub 
zmieniony 
system

Czyli po prostu…

background image

dr inż. Radosław Adamus

19

Do poczytania…

z

Sommerville: Inżynieria Oprogramowania, 
rozdział 3.