background image

 

 

Inżynieria 
oprogramowania

Część 2: Proces tworzenia 

oprogramowania

Ian Sommerville 

Software Engineering 9. wyd.

background image

 

 

Zawartość

Modele procesu tworzenia oprogramowania

Czynności procesu tworzenia 
oprogramowania

Inżynieria zmian w trakcie procesu 
tworzenia oprogramowania

Ulepszanie procesu tworzenia 
oprogramowania

background image

 

 

Proces tworzenia 
oprogramowania

Ustrukturalizowany zbiór czynności prowadzący 
do powstania produktu programistycznego

Następujące czynności są wspólne dla wszystkich 
procesów:

Specyfikowanie – funkcje systemu i dodatkowe 
oczekiwania

Projektowanie i implementacja – zdefiniowanie struktury 
systemu i jego implementacja.

Zatwierdzanie systemu – sprawdzenie, że system działa 
zgodnie ze specyfikacją i oczekiwaniem klienta

Pielęgnacja (ewolucja) – zmienianie systemu w trakcie 
jego użycia.

background image

 

 

Model procesu tworzenia 
oprogramowania

Stanowi abstrakcyjny opis procesu z pewnego 

punktu widzenia, zawiera zatem częściową 

informację o procesie.

Opisując proces, mówimy zwykle o czynnościach 

w nim występujących i ich kolejności. Opis może 

jednak dodatkowo zawierać:

Produkty, które są wynikiem kolejnych kroków.

Role poszczególnych członków zespołu wytwórczego.

Warunki wstępne i końcowe poszczególnych kroków 

(np. akceptacja specyfikacji przez klienta przed 

projektowaniem architektury, zatwierdzenie diagramów 

UML po zakończeniu tego kroku).

background image

 

 

Procesy zaplanowane i 
procesy zwinne

Procesy zaplanowane (ang. plan driven processes) są to 
procesy, w których wszystkie czynności są zaplanowane 
z góry i plan ten jest podstawą miary postępu prac.

W procesach  zwinnych (ang. agile processes) 
planowanie odbywa się w sposób przyrostowy, co 
ułatwia zmiany w specyfikacji.

Wiele procesów stosowanych w praktyce łączy obie 
powyższe metodologie.

Wybór procesu tworzenia oprogramowania zależy w 
dużej mierze od specyfiki zadania. W izolacji o żadnym z 
istniejących procesów nie można powiedzieć ani, że jest 
dobry, ani, że jest zły.

background image

 

 

Modele procesów

Model kaskadowy 

Model zaplanowany. Kolejny krok następuje po zakończeniu 
poprzedniego.

Model przyrostowy 

Fazy specyfikacji, implementacji i zatwierdzania przeplatają 
się. Może być zaplanowany lub zwinny.

Model z użyciem wielokrotnym

Oprogramowanie buduje się przy użyciu gotowych 
komponentów.

W praktyce większość dużych systemów tworzy się przy 
użyciu procesów będących kombinacji powyższych modeli.

background image

 

 

Model kaskadowy (ang. waterfall 
model)

Definiowanie

wymagań

Projektowanie

systemu

i oprogramowania

Implementacja

i testowanie

jednostek

Integracja

i zatwierdzanie

systemu

Działanie

i pielęgnacja

background image

 

 

Fazy modelu kaskadowego

W modelu kaskadowym wyróżniamy pięć rozłącznych faz

Definiowanie wymagań

Projektowanie systemu i oprogramowania

Implementacja i testowanie jednostek

Integracja i zatwierdzanie systemu

Działanie i pielęgnacja

Główną wadą modelu kaskadowego jest wysoki koszt 
zmian. Kolejna faza zakłada zakończenie fazy 
poprzedniej. 

background image

 

 

Problemy modelu 
kaskadowego

Twardy podział na kolejne fazy utrudnia wszelkie 
zmiany w trakcie procesu.

Dlatego model kaskadowy jest właściwy, jeśli 
wymagania są dobrze określone i nie oczekuje się wielu 
zmian. 

Niewiele systemów o charakterze biznesowym spełnia 
ten warunek.

Model kaskadowy jest najczęściej używany przy 
tworzeniu wielkich systemów, gdy zespół 
wytwórczy jest rozproszony w wielu miejscach. 

Fakt, że model ten jest modelem zaplanowanym ułatwia 
koordynację prac

background image

 

 

Model przyrostowy

Ogólny opis

Specyfikowanie

Tworzenie

Zatwierdzanie

Wersja 

początkowa

Wersje

pośrednie

Wersja

końcowa

Równoległe czynności

background image

 

 

Zalety modelu 
przyrostowego

Zredukowany jest koszt zmian zachodzących w 

toku procesu

Koszt analizy i dokumentacji, którą trzeba powtórzyć jest 

dużo mniejszy.

Współpraca między klientem a zespołem 

wytwórczym istnieje w trakcie całego cyklu 

budowy systemu

Klient może na bieżąco komentować tworzenie  

oprogramowania  i widzi postęp prac.

Możliwe jest wczesne dostarczenie „częściowej” 

wersji systemu

Klient może stosunkowo wcześnie używać fragmentów 

systemu

background image

 

 

Wady modelu 
przyrostowego

Proces nie jest widoczny

Menedżerowie potrzebują konkretnych wyników, aby 
mierzyć postęp prac. Jeśli systemy są tworzone 
szybko, n ie opłaca się generować dokumentów 
opisujących każdą wersję systemu.

System ma złą strukturę

Nieustające modyfikacje przyczyniają się do psucia 
struktury oprogramowania. Wprowadzanie nowych 
zmian staje się coraz trudniejsze i bardziej 
kosztowne.

background image

 

 

Model z użyciem 
wielokrotnym

W większości dyscyplin inżynieryjnych proces 
tworzenia oparty jest o komponenty 
ponownego użycia.

W przypadku inżynierii oprogramowania 
możliwe jest podobne podejście.

Problemem jest, że aby dany komponent 
można było wielokrotnie użyć, trzeba to 
uwzględnić w fazie jego projektowania.

background image

 

 

Elementy wielokrotnego 
użycia

Użycie wielokrotne systemów

Cały system można ponownie użyć poprzez 
włączenie go do innego ststemu (COTS – Commercial 
Off The Shelf).

Użycie wielokrotne komponentów

Podsystemy, moduły, pojedyncze obiekty.

Użycie wielokrotne funkcji

Biblioteki funkcji używane od kilkudziesięciu lat.

Użycie wielokrotne idei

Wzorce programowe, wzorce architektoniczne.

background image

 

 

Tworzenie z użyciem 
wielokrotnym

Specyfikacja

wymagań

Analiza

komponentów

Modyfikacja

wymagań

Projekt systemu

Tworzeni

e

integracj

a

Zatwierdzanie

systemu

background image

 

 

Zalety i wady modelu z 
użyciem wielokrotnym

Mniejszy koszt i mniejsze zagrożenie projektu.

Szybsze dostarczenie oprogramowania.

Nieodzowność pewnych kompromisów, co 
może oznaczać, że system nie w pełni będzie 
spełniać oczekiwania klienta.

Możliwa strata panowania nad pielęgnacją 
systemu, ponieważ firma korzystająca z 
gotowych komponentów nie ma wpływu na ich 
nowe wersje.

background image

 

 

Czynności procesu 
tworzenia 
oprogramowania

Realne procesy tworzenia oprogramowania to 

przeplatające się sekwencje czynności 

zarówno o charakterze technicznym, jak i 

związanych z pracą zespołową i zarządzaniem.

Cztery podstawowe czynności o charakterze 

technicznym, czyli specyfikowanie, tworzenie, 

zatwierdzanie i pielęgnacja są różnie 

zorganizowane w różnych procesach.

Na przykład w modelu kaskadowym 

przebiegają one sekwencyjnie, podczas gdy w 

modelu przyrostowym przeplatają się.

background image

 

 

Proces specyfikacji 
wymagań

Studium

wykonalności

Raport

o wykonalności

Określanie i 

analiza wymagań

Modele

systemu

Wymagania

użytkownika

Specyfikowanie

wymagań

Zatwierdzanie

wymagań

Dokumentacja

wymagań

background image

 

 

Specyfikowanie wymagań

Określenie wymaganych funkcji systemu 

(wymagania funkcjonalne) i ograniczeń 

nakładanych na system.

Proces inżynierii wymagań

Studium wykonalności

Ocenia się, czy potrzeby klienta mogą być spełnione.

Określanie i analiza wymagań

Określenie wymagań stawianych systemowi. Może 

obejmować opracowanie kilku modeli systemu, 

pozwalających zrozumieć system.

Specyfikowanie wymagań

Szczegółowa definicja wymagań.

Zatwierdzenie wymagań

Sprawdzenie spójności i kompletności wymagań

background image

 

 

Ogólny model procesu 
projektowania

Informacje wejściowe

Czynności projektowe

Projekt

Platforma

Specyfikacja

wymagań

Dane

Projektowanie

architektury

Projektowanie

interfejsu

Projektowanie
komponentów

Projektowanie

struktur danych

Architektura

systemu

Specyfikacja

struktur danych

Specyfikacja

interfejsu

Specyfikacja

komponentów

background image

 

 

Czynności projektowe

Projektowanie architektury

Definiowanie ogólnej struktury systemu, głównych 

komponentów (podsystemów, modułów), relacji 

między nimi i ich rozmieszczenie.

Projektowanie interfejsu 

Definiowanie interfejsu między komponentami.

Projektowanie struktur danych 

Definiowanie struktur danych (być może bazy 

danych)

Projektowanie komponentów

Przypisanie usług do komponentów. Ewentualnie 

poszukiwanie komponentów wielokrotnego użycia.

background image

 

 

Implementacja systemu

Implementacja polega albo na programowaniu 
komponentów albo konfigurowaniu gotowego systemu.

W większości przypadków implementacja i 
projektowanie przeplatają się.

Programowanie jest czynnością indywidualną i nie 
istnieje żaden ogólny proces postępowania. Niektórzy 
programiści zaczynają od komponentów, które najlepiej 
rozumieją, inni postępują odwrotnie. Niektórzy 
programiści lubią jak najszybciej definiować struktury 
danych, inni pozostawiają dane bez specyfikacji tak 
długo, jak to jest możliwe.

Programiści wykonują pewne testy kodu i usuwają błędy.

background image

 

 

Zatwierdzanie systemu

Zatwierdzanie systemu, lub ogólniej weryfikacja i 
zatwierdzanie (W & Z) mają wykazać, że system jest zgodny 
ze swoją specyfikacją (W) i spełnia oczekiwania klienta (Z).

Istnieją dwie metody, z których można skorzystać w trakcie 
procesu W & Z: kontrole oprogramowania i testowanie.

Kontrole oprogramowania polegają na analizie treści 
programu. Jest to metoda statyczna.

Testowanie polega na uruchamianiu implementacji 
oprogramowania na danych testowych. Jest to metoda 
dynamiczna.

Kontrole oprogramowania i testowanie nie wykluczają się.

background image

 

 

Fazy testowania

Testowanie

jednostek

Testowanie

modułów

Testowanie

podsystemów

Testowanie

systemu

Testowanie

odbiorcze

background image

 

 

Fazy testowania

Testowanie jednostek

Testowanie poszczególnych komponentów. Każdy z nich jest 

testowany oddzielnie.

Testowanie modułów

Moduł jest kolekcją niezależnych komponentow. Mogą to być 

klasy obiektów lub zbiorem procedur i funkcji.

Testowanie podsystemów

Testujemy kolekcje modułów. Głównym problemem są interfejsy.

Testowanie systemu

Ma wykryć błędy wynikające z nieprzewidzianych interakcji 

między podsystemami.

Testowanie odbiorcze

Testowanie przy użyciu danych dostarczonych przez klienta.

background image

 

 

Dwie zasady

Poza testowaniem jednostek, procesu 
testowania nie powinni wykonywać 
twórcy oprogramowania.

Testowanie jest procesem destrukcyjnym!

Testowanie powinno odbywać się na 
prawdziwych danych.

To nie zawsze jest możliwe.

background image

 

 

Fazy testowania w zaplanowanym 
procesie tworzenia oprogramowania

Plan testów

integracji

systemu

Plan testów

integracji

podsystemów

Plan 

testów

odbiorczy

ch

Specyfikacja

wymagań

Specyfikacja

systemu

Projekt

szczegółowy

Projekt

systemu

Kod jednostek 

i modułów oraz

ich test

Test integracji 

podsystemu

Test integracji 

systemu

Test

odbiorczy

Działanie

background image

 

 

Pielęgnacja 
oprogramowania

Pielęgnacja (ewolucja) oprogramowania dotyczy jego 
modyfikacji po oddaniu  do użycia.

Dwa rodzaje modyfikacji:

Poprawa błędów.

Zmieniające się wymagania stawiane systemowi.

Chociaż istnieje rozgraniczenie pomiędzy procesem 
tworzenia oprogramowania a procesem jego ewolucji, 
warto oba procesy traktować łącznie.

Budżet przeznaczony na oprogramowanie w dużych 
firmach na pielęgnację istniejących programów jest dużo 
większy niż budżet przeznaczony na nowe systemy 
informatyczne. 

background image

 

 

Pielęgnacja systemu

Zdefiniuj 

wymagania

stawiane 

systemowi

Zbadaj istniejące

systemy

Istniejące

systemy

Zaproponuj zmiany

Zmodyfikuj

system

Nowy system

background image

 

 

Inżynieria zmian

Zmiany w oprogramowaniu są nieuniknione.

Użytkowanie oprogramowania może wymuszać nowe 
wymagania.

Następują zmiany w firmie używającej oprogramowanie.

Istnieje potrzeba poprawy błędów.

Może nastąpić zmiana sprzętu. 

Może istnieć potrzeba poprawy efektywności.

Zmiany mogą wymagać przerobienia istniejących 
fragmentów systemu, jak i zaimplementowanie 
nowych funkcjonalności.

background image

 

 

Redukowanie kosztu zmian

Przewidywanie możliwości  zmian w 

procesie tworzenia oprogramowania

Na przykład konstruowanie prototypów 

(makiet) pokazujących klientowi kluczowe 

własności systemu. 

Tolerowanie zmian polegające na 

wyborze procesu, w którym zmiany są 

stosunkowo tanie.

To podejście realizowane jest przez procesy 

przyrostowe. Kolejnym zmianom 

odpowiadają kolejne wersje systemu.

background image

 

 

Prototypowanie

Prototyp jest początkową wersją oprogramowania, 
która służy do prezentacji założeń oraz 
wypróbowania różnych wariantów projektu, a 
bardziej ogólnie do coraz lepszego poznawania 
problemu i jego możliwych rozwiązań.

Bardzo ważne jest szybkie stworzenie prototypu, 
ponieważ umożliwia użytkownikom eksperymenty z 
systemem we wczesnej fazie jego budowy.

Prototyp jest przydatny w procesie specyfikacji 
wymagań, w projektowaniu interfejsu użytkownika 
oraz w procesie testowania (testowanie różnicowe – 
ang. back-to-back testing).

background image

 

 

Korzyści z prototypowania

Zwiększona użyteczność systemu

Lepsze dostosowanie systemu do 
potrzeb użytkowników.

Zwiększona jakość projektu.

Większa zdatność do pielęgnacji.

Zmniejszony wysiłek twórczy.

background image

 

 

Prototypowanie

Prototypowanie nie musi oznaczać zwiększenia 
kosztów systemu.

Prototypowanie zwiększa zwykle koszty we 
wczesnej fazie budowy oprogramowania, ale za to 
zmniejsza je w późniejszym okresie. Przyczyną tego 
faktu jest uniknięcie powtarzania prac wytwórczych, 
ponieważ klienci zgłaszają mniej zmian.

Negatywną konsekwencją prototypowania może być 
mniejsza efektywność, jeśli przy tworzeniu 
ponownie wykorzysta się nieefektywny rdzeń 
prototypu.

background image

 

 

Proces budowy prototypu

Plan 

prototypowania

Zdefiniuj

funkcjonalność

prototypu

Określ cele

prototypu

Zbuduj prototyp

Oceń prototyp

Ogólna

 definicja

Wykonywalny

prototyp

Raport o ocenie

prototypu

background image

 

 

Proces budowy prototypu

Określanie celów prototypu

Celem może być opracowanie prototypu interfejsu użytkownika, 
budowa prototypu w celu zatwierdzenia wymagań 
funkcjonalnych lub wykazania kierownictwu, że system jest 
wykonalny.

Definiowanie funkcjonalności prototypu

Co uwzględnić i, co ważniejsze,  czego nie uwzględniać w 
prototypowym systemie. 

Warto skupić się na najmniej zrozumiałych elementach 
budowanego oprogramowania. Można pominąć większość  
wymagań niefunkcjonalnych.

Ocena prototypu

Negatywna ocena będzie wymagać powtórzenia pewnych prac 
nad systemem, na przykład specyfikacji wymagań.

background image

 

 

Porzucanie prototypów

Po wypełnieniu swej funkcji, prototyp powinien 
być porzucony, ponieważ nie jest dobrą bazą dla 
budowanego oprogramowania:

Konstrukcja prototypu może uniemożliwiać jego 
rozbudowę tak, aby spełnić wszystkie wymagania 
niefunkcjonalne.

Prototypy zwykle są słabo udokumentowane.

Prototypy mają często zdegradowaną strukturę 
ponieważ są szybko budowane i przez to narażone na 
liczne zmiany w trakcie budowy.

Proces budowy prototypu na ogół nie spełnia 
standardów wymaganych w firmie wytwórczej.

background image

 

 

Przyrostowe dostarczanie 
oprogramowania

Polega na dostarczaniu użytkownikowi 
kolejnych wersji systemu. Nowa wersja 
rozszerza funkcjonalność wersji poprzedniej.

Wymaganiom użytkownika 
przyporządkowuje się priorytety. Wymagania 
o wysokich priorytetach realizowane są przez 
wczesne wersje.

Rozpoczęcie budowy kolejnej wersji 
powoduje „zamrożenie” dalszych wymagań. 

background image

 

 

Przyrostowe tworzenie vs.  
przyrostowe dostarczanie 
oprogramowania

Przyrostowe tworzenie oprogramowania

Oprogramowanie tworzone jest etapami. Kolejny 

przyrost realizowany jest po ocenie poprzedniej wersji.

Metodologia stosowana w programowaniu zwinnym.

Ocenę przeprowadzają reprezentanci klienta i firmy 

wytwórczej.

Przyrostowe dostarczanie oprogramowania

Wersja uzyskana poprzez realizacji kolejnego przyrostu 

dostarczana jest użytkownikom do eksploatacji.

Ułatwia definiowanie nie zrealizowanych jeszcze 

wymagań.

Pozwala rozpocząć pracę bez konieczności dokładnej 

specyfikacji wymagań. 

background image

 

 

Przyrostowe dostarczanie 
oprogramowania

Zdefiniuj zarys 

wymagań

Przypisz

wymagania

do przyrostów

Zaprojektuj

architekturę 

systemu

Wytwórz przyrost

systemu

Zatwierdź

przyrost

Zintegruj

przyrost

Zatwierdź 

system

Dostarcz

system

System

 ukończony

System

nieukończony

System

background image

 

 

Zalety przyrostowego 
dostarczania 
oprogramowania

Klienci nie muszą czekać na dostarczenie całego 
systemu. Pierwszy przyrost spełnia najbardziej 
istotne wymagania, oprogramowanie może więc 
być natychmiast uzywane.

Wstępne przyrosty mogą być używane jako 
prototyp służący do redefiniowania dalszych 
przyrostów.

Zmniejsza się ryzyko całkowitej porażki 
przedsięwzięcia.

Najważniejsze usługi będą dostarczane jako 
pierwsze, a wię będą najlepiej przetestowane.

background image

 

 

Wady 

przyrostowego 

dostarczania 
oprogramowania

Większość systemów wymaga  podstawowych 
funkcjonalności, używanych przez różne części 
systemu.

 Skoro wymagania nie są szczegółowo zdefiniowane 
przed implementacją przyrosty, trudno jest 
zidentyfikować funkcjonalności potrzebne wszystkim 
przyrostom.

Esencją procesów przyrostowych jest równoległe 
wytwarzanie oprogramowania i jego specyfikacji.

W wielu przypadkach jest to nieakceptowalne, ponieważ 
specyfikacja wymagań jest częścią kontraktu.

background image

 

 

Ulepszanie procesu 
wytwarzania 
oprogramowania

W wielu firmach programistycznych pojawiło 
się w ostatnich znaczne zainteresowanie 
ulepszaniem procesu wytwórczego. 

Ulepszanie procesu polega na analizie dotąd 
stosowanych procesów i ich modyfikacji w 
taki sposób, aby poprawić jakość produktu 
lub zmniejszyć koszt lub czas tworzenia. 

background image

 

 

Podejścia do ulepszania 
procesu 

Podejście klasyczne (ang. process maturity 

approach), które opiera się na ciągłym 

wprowadzaniu dobrych praktyk do klasycznych 

metod wytwarzania oprogramowania i 

przestrzegania, że te praktyki są stosowane w 

firmie. Podejście to nastawione jest przede 

wszystkim na zwiększenie niezawodności produktu, 

często kosztem pewnych dodatkowych narzutów.

Podejście zwinne, które opiera się na iteracyjnym 

wytwarzaniu oprogramowania i redukowaniu 

pewnych elementów w procesie wytwórstwa. 

Podejście to nastawione jest przede wszystkim na 

przyspieszenie budowy produktu.

background image

 

 

Cykl ulepszania procesu

Miernictwo 

procesu

Analiza

Zmiany

background image

 

 

Czynności ulepszania 
procesu

Miernictwo procesu

Mierzymy jeden lub kilka atrybutów procesu. Miary 
mają pomóc w ocenie, czy dotychczasowe zmiany 
procesu są efektywne.

Analiza

Próba identyfikacji słabości procesu.

Zmiany

Propozycja przedefiniowania procesu wytwarzania 
oprogramowania, aby wyeliminować słabości 
procesu. Następnie cykl ulepszania procesu powtarza 
się.

background image

 

 

Miernictwo procesu

Miernictwo procesu daje ilościowe dane o 
procesie tworzenia oprogramowania. 

Miernictwo procesu zakłada, precyzyjną definicję 
samego procesu. W przeciwnym przypadku nie 
bardzo wiadomo co powinno być mierzone. 

Miary związane z procesem stanowią jedynie 
wskazówkę o potrzebnych zmianach. Kluczową 
rolę odgrywają tu potrzeby i cele firmy tworzącej 
oprogramowanie. 

background image

 

 

Klasy miar procesowych

Czas potrzebny na ukończenie procesu lub 

jego etapów.

 

Może to być czas całkowity, czas kalendarzowy, czas 

spędzony przez konkretnych inżynierów. 

Zasoby niezbędne w konkretnym procesie. 

Mogą to być osobo-dni, koszty podróży, zasoby 

komputerowe, zasoby w postaci narzędzi 

pomocniczych. 

Liczba wystąpień konkretnego zdarzenia. 

Na przykład liczba defektów odkrytych w trakcie 

kontroli kodu, liczba żądanych zmian wymagań, 

średnia liczba wierszy kodu zmodyfikowanego w 

odpowiedzi na zmianę wymagań. 

background image

 

 

SEI CMMI

 

Software Engineering Institute (SEI) w Cornegie-Mellon 

University jest instytutem utworzonym przez 

Departament Obrony Stanów Zjednoczonych. 

Instytut został stworzony, aby zwiększyć zdolności 

przemysłu informatycznego w Stanach Zjednoczonych, a 

w szczególności tych przedsiębiorstw, które otrzymują od 

Departamentu Obrony fundusze na wielkie 

przedsięwzięcia wojskowe. 

Jednym z wczesnych przedsięwzięć SEI był SEI CMM 

(Capability Maturity Model – model dojrzewania 

zdolności). Model ten wywarł ogromny wpływ na 

przekonanie społeczności inżynierów oprogramowania do 

poważnego traktowania ulepszania procesu. Prace nad 

modelem rozpoczęły się w połowie lat 90. W 2001 

powstała uaktualniona wersja modelu, znana jako CMMI 

(Capability Maturity Model Integration). W 2013 w SEI 

został wyodrębniony instytut zajmujący się wyłącznie tym 

modelem. 

background image

 

 

Model dojrzewania zdolności 
CMM

 

Firmy wytwórcze podzielono na pięć różnych 

poziomów 

Poziom początkowy. 

Firma na tym poziomie nie ma skutecznych procedur 

zarządzania. Wytworzone oprogramowanie jest 

nieprzewidywalne. 

Poziom powtarzalny. 

Firma na tym poziomie wdrożyła już formalne 

zarządzanie, zapewnienie jakości i zarządzanie 

konfiguracjami. Firma może z powodzeniem powtarzać 

przedsięwzięcia tego samego rodzaju. Brakuje jednak 

formalnego modelu procesu. Powodzenie 

przedsięwzięcia zależy od tego jak menedżerowie 

umotywowali zespół i od firmowego folkloru, który 

stanowi intuicyjny opis procesu. 

background image

 

 

Model dojrzewania zdolności 
CMM

Poziom zdefiniowany. 

Firma na tym poziomie zdefiniowała już swój proces, ma 

więc podstawy do ilościowego ulepszania procesu. 

Wdrożono formalne procedury zapewniania, że ten 

zdefiniowany proces jest przestrzegany we wszystkich 

przedsięwzięciach realizowanych w firmie. 

Poziom zarządzany. 

Firma na tym poziomie zdefiniowała już swój proces i 

formalny program zbierania danych ilościowych. 

Gromadzi się pomiary procesu i produktów, które są 

podstawą ulepszania procesu. 

Poziom optymalizowany. 

Firma na tym poziomie jest zaangażowana w ustawiczne 

ulepszanie procesu. Ulepszanie ma swój budżet oraz 

plan i jest integralną częścią procesu przedsiębiorstwa.

background image

 

 

Podsumowanie

Procesy tworzenia oprogramowania to czynności 

zmierzające  do wyprodukowania systemu. Modele 

procesów tworzenia oprogramowania to abstrakcyjne 

reprezentacje tych procesów.

Inżynieria wymagań to proces opracowywania specyfikacji 

oprogramowania. 

Proces projektowania i implementowania polega na 

przekształceniu specyfikacji wymagań w działający system.

Zatwierdzanie oprogramowania to proces sprawdzaia, czy 

system jest zgodny ze swoją specyfikacją oraz czy spełnia 

rzeczywiste potrzeby użyrkowników.

Pielęgnacja oprogramownia polega na modyfikowaniu 

istniejącego systemu, tak aby usunąć błędy lub 

dodać/zmodyfikować wymagania.

background image

 

 

Podsumowanie

Prototypowanie oraz przyrostowe dostarczanie 
oprogramowania to podstawowe techniki 
redukujące koszt zmian w trakcie budowy 
oprogramowania.

Model dojrzewania zdolności CMM pozwala 
podzielić firmy programistyczne na pięć 
kategorii względem jakości ich procesów 
wytwórczych.


Document Outline