background image

54

Inżynieria

oprogramowania

www.sdjournal.org

 Software Developer’s Journal   11/2007

Extreme Programming i CMMI

A

rtykuł jest drugą częścią cyklu, poświęconego porów-
naniu dwóch metod tworzenia oprogramowania – „lek-
kich”,  reprezentowanych  przez  metodę 

Extreme  Pro-

gramming  oraz  „tradycyjnych”  (określanych  niekiedy  jako 
„strukturalne”), które odzwierciedla model CMMI.

W  poprzedniej  części,  omówiona  została,  jedna  z  bar-

dziej  znanych  tzw.  zwinnych  metod  programowania  – 

Extre-

me Programming (XP). Metoda ta mieści w sobie wszystko to, 
co uosabia pojęcie kreatywności – spontaniczność, zwinność 
(ang. 

agility), otwartość na zmianę, a także odwaga w przekra-

czaniu stereotypów. Konkretne wartości XP, zasady, a przede 
wszystkim  praktyki  developerskie,  osadzone  zostały  w  re-
aliach cyklu życia projektów agile’owych.

Druga część prezentowanego cyklu, przedstawia krótką 

charakterystykę  tradycyjnych  metod  tworzenia  oprogramo-
wania,  wraz  z  omówieniem  genezy  oraz  podstawowej  struk-
tury modelu CMMI (szkielet modelu, podstawowe komponen-
ty,  konstelacje,  obszary  procesowe),  który  należy  do  bodaj-
że najbardziej popularnych reprezentantów podejść struktu-
ralnych.

Proces tworzenia oprogramowania

Tradycyjne  metody  wytwarzania  oprogramowania  w  sposób 
nierozerwalny związane są z pojęciem „procesu” jego tworze-
nia. Proces, najogólniej rzecz biorąc, to pewien zestaw kroków, 
wykonywanych  w  określonym  celu.  Jego  istotę,  bardzo  traf-
nie  oddaje  film  Roberta  Altmana: 

The  Company  (USA/Niemcy 

2003), który we współpracy z zespołem Joffrey Ballet of Chi-
cago,  przedstawia  znakomite  występy  tancerzy  oprawione 
grą światła, kolorów i muzyki. Taniec wyraża proces w pełnym 
tego słowa znaczeniu. Nad jego właściwą definicją czuwa cho-
reograf, który odpowiada za stworzenie ogólnej koncepcji ukła-
du tanecznego. Określa poszczególne ruchy tancerzy, ewolu-
cje, kroki, obroty, skoki, i dzięki nim przekazuje akcję – nastrój 
dzieła. Taniec oddaje życie organizacji – procesy, które nią kie-
rują. Metaforę tę w sposób znakomity wykorzystała Kim Capu-
to, w książce 

CMM Implementation Guide. Choreographical So-

ftware  Process  Improvement  (Addison–Wesley,  1998),  gdzie 
proces tworzenia oprogramowania opisany został właśnie za 
pomocą języka choreografii.

Mówiąc  o  procesie  w  kontekście  całej  organizacji,  nie 

sposób  pominąć  jej  trzech  podstawowych  wymiarów:  ludzi, 

procedur  i  narzędzi.  Proces,  jest  tym  wszystkim,  co  inte-
gruje  wymienione  obszary.  Pracownik,  mając  do  dyspozycji 
określony zestaw narzędzi, kierując się odpowiednio dobra-
nym zbiorem procedur, może przekształcić surowy materiał 
(dane  wejściowe)  w  gotowy  produkt  (dane  wyjściowe),  któ-
ry będzie stanowił wartość biznesową z punktu widzenia na-
szego klienta.

Proces tworzenia oprogramowania, możemy zdefiniować 

jako zespół aktywności, metod oraz praktyk, stosowanych w 
celu wytworzenia i podtrzymania (ang. 

maintenance) działają-

cego software’u. Warto zauważyć, iż proces ten skupia się nie 
tylko na oprogramowaniu samym w sobie, ale także na wszel-
kich dodatkowych artefaktach, które jego powstaniu towarzy-
szą – plany projektowe, wymagania, projekt systemu, kod, czy 
przypadki testowe.

Metody „Plan–Driven”

Tradycyjne  metody  tworzenia  oprogramowania  nazywane  są 
niekiedy  metodami  typu  „plan–driven”  (wiedzione  planem). 
Ich  geneza  związana  jest  z  inżynierią  systemów.  W  czasie, 
gdy rozwijał się przemysł aerokosmiczny – satelity, statki ko-
smiczne,  rakiety  balistyczne  –  zasady  inżynierii  systemów 
były wykorzystywane do koordynowania dużej liczby wzajem-
nie  ze  sobą  oddziaływujących  komponentów,  dostarczanych 
niekoniecznie przez jednego dostawcę. O ile komponenty har-
dware’owe  bardzo  dobrze  się  wkomponowywały  w  ten  para-
dygmat, o tyle software do niego zupełnie nie przystawał. Za-
rządzano nim w sposób wysoce niezdyscyplinowany, co oczy-
wiście skutkowało niedotrzymywaniem terminów, przekracza-
niem zaplanowanego budżetu, a przede wszystkim niską jako-
ścią wytwarzanych produktów.

Żeby  to  zmienić,  Departament  Obrony  Stanów  Zjedno-

czonych 

(United  States  Departement  of  Defense,  w  skró-

cie  DoD),  przygotował  zestaw  instrukcji,  których  celem  by-
ło dopasowanie procesu tworzenia oprogramowania do wy-
magań, które stawiała inżynieria systemów. Pojawiły się ta-
kie dokumenty jak: 

MIL–STD–1521DoD–STD–2167, czy MIL–

STD–498. Dodatkowo, w tym samym czasie, duże firmy ko-
mercyjne 

(IBM,  Siemens,  Hitachi),  przygotowały  podobne 

standardy,  przeznaczone  do  użytku  wewnętrznego.  Z  cza-
sem, gdy inżynieria oprogramowania stawała się coraz bar-
dziej  popularna,  coraz  większego  znaczenia  nabierały  me-
tody, mające na celu „zdyscyplinowanie” procesu tworzenia 
oprogramowania.

Charakterystyka

Metody  typu 

plan–driven  wykorzystują  najczęściej  kaska-

dowy  cykl  życia  oprogramowania,  który  to,  na  proces  two-
rzenia  oprogramowania  każe  nam  patrzeć  liniowo  –  kolej-
ne  fazy  (analiza  i  specyfikacja  wymagań  /projektowanie/
implementacja, testy, wdrożenie i pielęgnacja) występują se-
kwencyjnie,  jedna  po  drugiej.  Dodatkowo,  dość  duży  nacisk 

Mariusz Chrapko

Autor  pracuje  w  Motorola  Polska  Electronics  sp.  z  o.o.  (krakow-
skie  Centrum  Oprogramoawnia  Motoroli)  na  stanowisku  inżynie-
ra jakości. Od strony zawodowej interesuje się problematyką do-
skonalenia  procesu  tworzenia  oprogramowania  w  oparciu  o  Mo-
del CMMI®, a także praktykami Agile Software Development. Pry-
watnie lubi jazz i filozofię (głównie współczesną). W wolnych chwi-
lach fotografuje.
Kontakt z autorem: 

mariusz.chrapko@gmail.com

background image

Extreme Programming i CMMI

55

www.sdjournal.org

Software Developer’s Journal   11/2007

położony jest na dokumentację poszczególnych faz projektowych. Każ-
da faza realizacji projektu, związana jest z opracowaniem szeregu doku-
mentów,  opisujących  jej  rezultaty,  które  to  z  kolei  stanowią  dane  wej-
ściowe do kolejnej. 

Cechą  charakterystyczną  tradycyjnych  metod  tworzenia  oprogra-

mowania  jest  precyzyjnie  zdefiniowany  proces,  który  podlega  ciągłe-
mu  doskonaleniu.  Dobrze  zdefiniowany  proces  to  taki,  którego  struktu-
rę tworzą następujące elementy: Źródło:

„A Software Process Framework 

for the SEI Capability Maturity Model”, Olson, Timothy G., CMU/SEI–94–HB–
01, 1994.

Mając dobrze zdefiniowany proces, czas na kolejny krok – jego im-

plementację i instytucjonalizację.  Implementacja – to wykonywanie kon-
kretnych  aktywności  projektowych  w  ramach  danego  obszaru  proce-
sowego (np. przygotowywanie planów projektowych w ramach procesu 
zwanego „Planowaniem Projektu”). 

Instytucjonalizacja z kolei, jest wynikiem wielokrotnej implementacji 

danego procesu. Sytuacja taka, ma miejsce wówczas, gdy proces jest cał-
kowicie zintegrowany z działaniami danej organizacji i będzie on stoso-
wany, nawet wówczas, gdy zmienią się wszyscy jej pracownicy.

Metody plan–driven bardzo duży nacisk kładą na tzw. ilościowe za-

rządzanie procesem

 (ang. quantative process management). Procesy są 

najpierw precyzyjnie definiowane, implementowane, by później móc nimi 
zarządzać właśnie w sposób ilościowy. Organizacje, mając do dyspozycji 
narzędzia w postaci statystycznej analizy procesu, zbierają metryki pro-
cesowe, by później, na ich podstawie sporządzać tzw. wykresy kontrolne 
(ang.

 control charts), które umożliwiają śledzenie zachowań procesów. Za 

ich pomocą możemy określić, czy zaimplementowany proces jest stabil-
ny, a więc czy jest powtarzalny oraz, czy jesteśmy w stanie przewidzieć 
jego zachowanie w przyszłości. Ilościowe zarządzanie procesem jest na-
rzędziem, które służy jego ciągłemu doskonaleniu. Dane, które organiza-
cja zbiera, a które są później przetwarzane i analizowane, posiadają nie-
oceniony wpływ na dojrzałość procesów wytwórczych w firmie (Rysunek 
1). Zainteresowanych odsyłam do doskonałej lektury: W. A. Florac oraz A. 
D.  Carleton, 

Measuring  the  Software  Process.  Statistical  Process  Control 

for Software Process ImprovementAddison–Wesley, 1999.

Ciągłe  doskonalenie  procesów  wytwórczych,  zazwyczaj  związa-

ne jest z istnieniem specjalnie do tego powołanej grupy ludzi, tworzącej 
niekiedy odrębny dział w firmie – Dział Jakości. Do ich obowiązków nale-
ży między innymi monitoring i kontrola procesów wytwórczych, a także 
dostarczanie pracownikom wszelkich, niezbędnych szkoleń, związanych 
z ich implementacją

Mocną  stroną  tradycyjnych  metod  tworzenia  oprogramowania  jest 

nacisk  położony  na  powtarzalność  i  standaryzację  procesów.  Dokład-
ne zdefiniowanie procesów wytwórczych w organizacji oraz przeszkole-
nie pracowników w zakresie ich stosowania, prowadzi do sytuacji, w któ-

rej każdy wie, gdzie, w razie potrzeby, może znaleźć potrzebne mu infor-
macje oraz czego projekt od niego oczekuje. Dodatkowo, znika problem 
migracji  międzyprojektowej.  Menedżerowie,  mając  ludzi  posiadających 
znajomość  procesów  w  organizacji,  mogą  dowolnie  przypisywać  osoby 
do  różnych  projektów,  bez  ryzyka  poniesienia  klęski.  Oczywiście  dość 
ważną rzeczą, o której nie wolno nam zapominać, jest ekspertyza, a co za 
tym idzie indywidualizm poszczególnych członków zespołu projektowe-
go. Wynika ona ze szczególnie dobrej znajomości określonej części pro-
duktu, procesu etc. Jest to czynnik, który będzie zawsze nierozerwalnie 
związany z pracownikiem – stanowi tzw. dobrą energię projektu i, tak na-
prawdę, od menedżera zależy jak ją wykorzysta.

Podejście procesowe niesie ze sobą również pewne zagrożenia. Kie-

dy  organizacja  zbytnio  skupi  się  na  procesie,  może  bardzo  szybko  za-
tracić  perspektywę  całego  produktu,  która  przecież  jest  perspektywą 
naszego  klienta.  Może  to  być  zabójcze  dla  innowacyjności  oraz  prowa-
dzić do powstania czegoś, co niektórzy nazywają tzw. „mentalnością li-
sty kontrolnej” (ang.

 checklist mentality). Pracownicy wówczas, bardziej 

skupiają się na karmieniu źle zdefiniowanego procesu, niż na tworzeniu 
działającego, wolnego od defektów software’u. Produkt wówczas zajmu-
je plan drugi – tak rodzi się 

dyktatura procesu.

Wyznaczniki sukcesu

Tradycyjne  metody  tworzenia  oprogramowania,  silnie  zorientowane 
na  powtarzalność  i  ciągłe  doskonalenie  procesu,  wymagają  pełnego 
wsparcia  i  zaangażowania  ze  strony  wyższego  kierownictwa.  Mene-

Tabela 1. 

Elementy dobrze zdefiniowanego procesu

Pytanie

Element procesu

Po co dana aktywność jest wykonywana?

1. Cel

Jakie działania są podejmowane?

2. Aktywności

Jakie produkty robocze są wykorzystywane?

3. Wejście/ścia

Jakie produkty robocze powstają?

4. Wyjście/ścia

Kiedy dana aktywność się rozpoczyna?

5. Kryteria wejściowe

Kiedy dana aktywność się kończy?

6. Kryteria wyjściowe

Kto wykonuje daną aktywność?

7. Role

Gdzie dana aktywność jest wykonywana?

8. Kontekst procesu (np. Hierarchia)

Jak dana aktywność jest zaimplementowana?

9. Procedury

Rysunek 1. 

Cykl doskonalenia procesu

Doskonalenie

procesu

Pomiar

procesu

Kontrola

procesu

Egzekucja

procesu

Definicja

procesu

background image

56

Inżynieria

oprogramowania

www.sdjournal.org

 Software Developer’s Journal   11/2007

dżerowie  muszą  dostrzegać  znaczenie  dobrze  zdefiniowanego  i  pod-
trzymywanego procesu z punktu widzenia produktu, który mają dostar-
czyć klientowi. Organizacja musi stworzyć pewnego rodzaju infrastruk-
turę, której celem będzie podnoszenie świadomości pracowniczej w za-
kresie istniejących procesów w firmie oraz zależności, które między ni-
mi zachodzą.

Taka infrastruktura, to systematyczne dostarczanie szkoleń proce-

sowych  dla  pracowników  firmy,  dzięki  którym  zdobywają  oni  niezbęd-
ną wiedzę na temat wszystkich dostępnych procesów organizacyjnych, 
dowiadują się o miejscu ich przechowywania, rodzajach szablonów (ang.

 

templates), których mogą używać, a także do kogo, w razie pytań, mo-
gą się zwrócić o pomoc. Szkolenia tego typu zazwyczaj prowadzone są 
przez ekspertów procesowych, którzy albo uczestniczyli w pracach nad 
definiowaniem określonych procesów, albo ich ekspertyza i doświadcze-
nie są na tyle wysokie, że takie szkolenia mogą prowadzić.

Dodatkowo,  organizacje,  które  właściwie  zarządzają  swoimi  proce-

sami  wytwórczymi,  utrzymują  wspólne  repozytorium,  w  którym  skła-
dowane są wszystkie procesy w postaci konkretnych plików „doc”, czy 
„pdf”. Repozytorium to najczęściej nazywane jest 

Process Asset Library

w skrócie PAL.

Podejście  procesowe  wymaga  od  firmy  pewnego  rodzaju  dyscypli-

ny. Projekty muszą w pewnym sensie wyzbyć się swojego indywiduali-
zmu – niepowtarzalności, na rzecz zdefiniowanego procesu organizacji. 
Brzmi to nieco kontrowersyjnie, w praktyce jednak  oznacza wiele dobre-
go, szczególnie, z perspektywy klienta i jego produktu. Załóżmy, że ma-
my do czynienia z organizacją, która realizuje dziesiątki projektów infor-
matycznych  rocznie.  Wyzbycie  się  indywidualizmu  na  poziomie  projek-
tów oznacza, iż wymagania zbierane są zgodnie z przyjętym procesem: 
plany projektowe tworzone są z użyciem wspólnego szablonu, struktu-

ra podziału pracy (ang.

 Work Breakdown Structure) wprowadzana jest do 

wspólnego narzędzia, kod pisany jest zgodnie z przyjętym standardem, 
testy, przeprowadzane są na podstawie wcześniej zdefiniowanego planu. 
Taki brak indywidualizmu powoduje, iż każdy z realizowanych projektów 
w organizacji jest przewidywalny, tzn. jeżeli zostaną spełnione określone 
warunki początkowe (które definiuje proces), to z pewnością jesteśmy w 
stanie przewidzieć jego rezultaty końcowe. Każdy z realizowanych pro-
jektów jest więc w pewien sposób podobny, jednolity – pozbawiony swo-
jej niepowtarzalności.

Indywidualizm  projektowy  należy  jednak  odróżnić  od  indywidu-

alizmu  pracowniczego,  który  –  zarówno  w  tradycyjnych,  jak  i  agile’o-
wych  metodach  tworzenia  oprogramowania  ma  charakter  niezbywal-
ny!  Dzięki  niemu  właśnie  możliwa  jest  kreatywność,  która  sprawia, 
że wszelkie problemy projektowe mogą być rozwiązane na kilka moż-
liwych  sposobów,  a  development  produktu  staje  się  niezwykle  dyna-
miczny i twórczy.

Capability Maturity Model Integration (CMMI)

Jednym  z  czołowych  reprezentantów  tradycyjnych  metod  tworzenia 
oprogramowania jest Capability Maturity Model Integration. Pełni on funk-
cję swoistego drogowskazu na drodze doskonalenia procesów tworzenia 
oprogramowania w organizacji. Składa się ze zbioru dobrych (

dojrzałych

praktyk  inżynierii  oprogramowania,  sprawdzonych  i  zaimplementowa-
nych w wielu organizacjach informatycznych. CMMI nie mówi nam jednak, 
jakie konkretne praktyki powinniśmy zaimplementować w naszej firmie, 
aby obecne w niej procesy były powtarzalne, a przez to stabilne. CMMI je-
dynie podpowiada pewne rozwiązania. Na przykład, jedną z dobrych prak-
tyk, sugerowaną przez CMMI w ramach obszaru procesowego: „Planowa-
nie projektu”, jest sporządzenie jego planu. Model akcentuje, na co należy 

Tabela 2. 

Obszary Procesowe modelu CMMI wraz z kategoriami, do których zostały przypisane oraz poziomami dojrzałości

Obszar Procesowy

Kategoria

Poziom dojrzałości

Analiza przyczyn i działania prewencyjne (Causal Analysis and Resolution)

Wsparcie

5

Zarządzanie konfiguracją (Configuration Management)

Wsparcie

2

Analiza decyzyjna (Decision Analysis and Resolution)

Wsparcie

3

Zintegrowane zarządzanie projektem (Integrated Project Management + IPPD) Zarządzanie projektem

3

Miary i analizy (Measurement and Analysis)

Wsparcie

2

Innowacje i wdrożenia (Organizational Innovation and Deployment)

Zarządzanie procesem

5

Definicja procesu organizacyjnego (Organizational Process Definition + IPPD)

Zarządzanie procesem

3

Koncentracja na procesie organizacyjnym (Organizational Process Focus)

Zarządzanie procesem

3

Wydajność procesu organizacyjnego (Organizational Process Performance)

Zarządzanie procesem

4

Szkolenia organizacyjne (Organizational Training)

Zarządzanie procesem

3

Integracja produktu (Product Integration)

Inżynieria

3

Monitoring i kontrola (Project Monitoring and Control)

Zarządzanie projektem

2

Planowanie projektu (Project Planning)

Zarządzanie projektem

2

Zapewnienie jakości procesu i produktu (Process Product Quality Assurance)

Wsparcie

2

Ilościowe zarządzanie projektem (Quantitative Project Management)

Zarządzanie projektem

4

Rozwój wymagań (Requirements Development)

Inżynieria

3

Zarządzanie wymaganiami (Requirements Management)

Inżynieria

2

Zarządzanie ryzykiem (Risk Management)

Zarządzanie projektem

3

Zarządzanie dostawcami (Supplier Agreement Management)

Zarządzanie projektem

2

Rozwiązania techniczne (Technical Solution)

Inżynieria

3

Walidacja (Validation)

Inżynieria

3

Weryfikacja (Verification)

Inżynieria

3

background image

Extreme Programming i CMMI

57

www.sdjournal.org

Software Developer’s Journal   11/2007

zwrócić szczególną uwagę przy konstruowaniu takiego dokumentu, wy-
mienia przykładowe jego elementy, a także wskazuje, z jakimi, innymi ob-
szarami procesowymi proces planowania projektu jest powiązany. CMMI 
jest więc czymś, w rodzaju „układu odniesienia” – zbioru punktów (obsza-
ry procesowe), względem których określa się położenie lub zmianę po-
łożenia danego ciała (organizacji). Z jednej strony, umożliwia nam ocenę 
dojrzałości procesów wytwórczych w organizacji, z drugiej zaś – pomaga 
w zdefiniowaniu planu ich poprawy.

Początki

Pierwsza wersja Capability Maturity Model powstała w 1987 roku. Została 
opracowana przez grupę amerykańskich programistów, pracujących w So-
ftware Engineering Institute (SEI), przy Carnegie Mellon University, w Pit-
tsburghu.  Instytut  od  samego  początku  swego  istnienia  był  i  nadal  jest 
sponsorowany przez Departament Obrony Stanów Zjednoczonych (DoD), 
za pośrednictwem Biura Podsekretarza Obrony ds. Zaopatrzenia, Techno-
logii  i  Logistyki  (OUSD/AT&L).  Celem  utworzenia  SEI  było  wypracowanie 
metod, które zwiększałyby skuteczność realizowanych przez DoD projek-
tów informatycznych tak, by nie przekraczały one zaplanowanego czasu, 
mieściły się w założonym budżecie oraz były dostarczane w ręce klien-
ta bez okrojonej funkcjonalności. W tym celu opracowano tzw. „kwestio-
nariusz oceny dojrzałości procesów” (ang.

 maturity questionnaire), który 

przeprowadzono w organizacjach, będących podwykonawcami DoD. Skła-
dał się on z 85 pytań dotyczących między innymi takich zagadnień jak: 
planowanie  projektu  informatycznego,  śledzenie  postępu  jego  prac,  za-
rządzanie harmonogramem, zarządzanie wymaganiami, zarządzanie kon-
figuracją,  zapewnienie  jakości  tworzonego  oprogramowania  oraz  ciągłe 
doskonalenie  procesu.  Jak  się  okazało,  wśród  setek  przebadanych  firm 
wykryto pewne prawidłowości w zakresie wytwarzanego oprogramowa-
nia. Proces „dojrzewania” do określonego poziomu jakości i produktywno-
ści, w każdym z badanych przypadków, miał podobny przebieg. Wnioski, 
wypływające z przeprowadzonych badań, a także zaobserwowane dobre 
praktyki projektowe, zebrano i opisano, w wyniku czego, w 1991 roku po-
wstała pierwsza miniatura modelu CMM – Capability Maturity Model for So-
ftware (SW–CMM), wersja 1.0. Model ten skupiał się na doskonaleniu pro-
cesów wytwórczych, ale tylko w organizacjach, zajmujących się wytwa-
rzaniem oprogramowania. Po dwóch latach, w roku 1993, powstała kolej-
na wersja 1.1, której kontynuatorką w roku 1997 miała być wersja 2.0, któ-
ra powstała jedynie jako wersja robocza – nigdy nie doczekała się swojego 
oficjalnego wydania. Prace jednak nad wersją 2.0 nie poszły na marne, zo-
stały one wykorzystane przy okazji tworzenia modelu CMMI.

Sukces  i  ogromna  popularność  modelu  SW–CMM  wśród  organizacji 

zajmujących się tworzeniem software’u, spowodował, iż w 1995 roku gru-

pa Enterprise Process Improvement Collaboration (EPIC), zrzeszająca or-
ganizacje rządowe, przemysłowe, a także akademickie opracowała Sys-
tem Engineering Capability Maturity Model (SE–CMM). Dodatkowo, w tym 
samym  czasie,  International  Council  on  System  Engineering  (INCOSE), 
stworzyła listę kontrolną (ang. 

checklist), mającą na celu ocenę dojrza-

łości  procesów  w  organizacjach,  zajmujących  się  inżynierią  systemów. 
Z czasem pytania z listy kontrolnej, zostały przekształcone i opracowa-
ne w postaci System Engineering Capability Assessment Model  (SECAM). 
Po kilku latach dyskusji nad sensownością utrzymywania dwóch podob-
nych modeli, utworzono jeden – Electronic Industries Alliance (EIA) Inte-
rim Standard 731, znany również jako System Engineering Capability Mo-
del (SECM).

Dodatkowo, w 1996 roku, powstał Acquisition Capability Maturity Mo-

del (SA–CMM), który jest zorientowany przede wszystkim na akwizycję – 
adresuje  potrzeby  tych  działów  danego  przedsiębiorstwa,  które  zajmu-
ją się pozyskiwaniem nabywców, zbieraniem zamówień handlowych, za-
wieraniem umów o wykonanie określonych usług itp.

Software Engineering Insitute zwrócił także uwagę na doskonalenie 

tzw. „miękkich umiejętności” w przedsiębiorstwach, a więc to wszystko, 
co składa się na dziedzinę zarządzania zasobami ludzkimi. W 1995 roku 
powstał  People  Capability  Maturity  Model  (People  CMM),  który  stanowi 
zbiór dobrych praktyk, z zakresu kierowania ludźmi, rozwijania obecnego 
w nich potencjału, pogłębiania komunikacji interpersonalnej, a także wła-
ściwego zarządzania wiedzą w organizacji.

W tym samym też czasie, doszło do opublikowania modelu Inegra-

ted Product Development CMM (IPD–CMM), który ukazał się tylko w wer-
sji roboczej i zawierał praktyki, mające na celu doskonalenie procesów 
wytwórczych z zakresu zintegrowanego zarządzania produktem. W je-
go powstaniu, dość dużą rolę odegrała, wspomniana grupa EPIC. Model 
IPD–CMM  miał  stanowić  pewnego  rodzaju  szkielet,  do  którego  można 
by było dopasować pozostałe modele rodziny CMM, takie jak SW–CMM, 
czy SE–CMM. Był to pierwszy moment, kiedy uwidoczniły się potrzeby 
stworzenia jednego modelu, który miałby zastosowanie w wielu dyscy-
plinach.

Integracja

Mimo,  że  wszystkie  modele  rodziny  CMM,  cieszyły  się  dużą  popularno-
ścią wśród przedsiębiorstw, każdy z nich dotykał jakby innego problemu/
dziedziny. Implementacja kilku modeli, była niezwykle kosztowna dla or-
ganizacji, która chciała jednocześnie doskonalić swoje procesy wytwór-
cze w kilku dziedzinach. Wiązało się to z dodatkowymi nakładami w po-
staci szkoleń pracowniczych, oceny stopnia implementacji praktyk, któ-
re  zazwyczaj  przeprowadzane  są  przez  zewnętrzne  firmy,  a  także  sa-
mych  nakładów  organizacyjnych,  które  w  tego  rodzaju  przedsięwzię-
ciach  są  przecież  niemałe.  Dlatego  Software  Engineering  Institute,  w 
1997 roku, rozpoczął bardzo intensywne prace nad modelem, który miał-
by charakter kompleksowy, i który można by było zaimplementować w 
organizacjach o różnych profilach działalności. W efekcie powstał Capa-
bility Maturity Model Integration (CMMI). Zespół SEI, a konkretnie „CMMI 
Product  Team”,  do  jego  stworzenia  wykorzystał  trzy  modele  źródłowe 
(ang. 

source models):

•   The Capability Maturity Model for Software (SW–CMM), v2.0 draft C;
•   The System Engineering Capability Maturity Model (SECM);
•   The Integrated Product Development Capability Maturity Model (IPD–

CMM), v0.98.

Modele  te  zostały  wykorzystane  przede  wszystkim  ze  względu  na  ich 
ogromną  popularność  i  zastosowanie  w  wielu  organizacjach.  W  efekcie 
powstał model, który mógł być wdrożony zarówno w firmach, które po-

Rysunek 2. 

Ewolucja modelu CMMI

�����������������

�����������

������������

������

�������������������

����������������

������������������

�����������

������

�������������

�����������

������

������������

������

�����������������

������������

��������������������

������������

������������

������������

��������������������

������������

background image

58

Inżynieria

oprogramowania

www.sdjournal.org

 Software Developer’s Journal   11/2007

siadały  już  jeden  ze  wspomnianych  wcześniej  modeli,  jak  i  tych,  –  któ-
re dopiero zaczynały swoją przygodę z programem doskonalenia proce-
sów wytwórczych. CMMI Product Team, przygotował trzy odmiany mode-
lu CMMI:

•   CMMI–SE/SW, v.1.0 – wersja łącząca praktyki z dziedziny inżynierii 

systemów (ang. System Ingineering) oraz inżynierii oprogramowania 
(ang. 

Software Engineering).

•   CMMI–SE/SW/IPPD, v.1.0 – oprócz praktyk wymienionych w punkcie 

1, wersja ta zawierała rozszerzenie o praktyki z zakresu zintegrowa-
nego zarządzania produktem i procesem w organizacji (ang. 

Integra-

ted Product and Process Development).

•   CMMI–SE/SW/IPPD/SS, v. 1.0 – jedyna wersja, która pojawiła się w for-

mie roboczej. Oprócz praktyk wskazanych w punktach 1–2, dodatko-
wo została wzbogacona o praktyki z dziedziny zarządzania dostaw-
cami (ang.

 Supplier Sourcing). Model ten, był przeznaczony wyłącznie 

do użycia w projektach pilotażowych.

Po  dwóch  latach  stosowania  odmian  modelu  CMMI  w  organizacjach,  po 
uwzględnieniu około 1500 propozycji zmian (ang

. change request), set-

kach komentarzy, zdecydowano się na publikację kolejnej wersji modelu 
1.1 w roku 2002. Oprócz wspomnianych trzech, pojawiła się czwarta od-
miana, skupiająca w sobie tylko te praktyki, które dotyczyły poprawy pro-
cesów tworzenia oprogramowania w organizacjach, zajmujących się two-
rzeniem software’u.

Popularność  wersji  1.1  modelu  CMMI,  przerosła  najśmielsze  ocze-

kiwania Software Engineering Institute. Przeszkolono ponad 45 tysięcy 
ludzi,  przeprowadzono  około  1500  ocen  (ang.

  appraisal),  mających  na 

celu  zmierzenie  dojrzałości  procesów  wytwórczych  różnych  organiza-
cji w kontekście praktyk zdefiniowanych w modelu CMMI. Implementacja 
modelu CMMI okazała się możliwa w wielu różnych organizacjach. Model 
CMMI okazał się być na tyle uniwersalny, że jego użycie stało się możliwe 
w  organizacjach,  zajmujących  się  nie  tylko  developmentem  software’u. 
Praktyki obecne w modelu, a dotyczące właściwego zarządzania proce-
sem oraz projektem, były na tyle uniwersalne, że ich implementacja oka-
zała się możliwa na gruncie wielu organizacji, co zaowocowało powsta-
niem wersji 1.2 Capability Maturity Model Integration (Rysunek 2). Źródło: 
CMMI Product Team, CMMI for Development, Version 1.2 (CMU/SEI–2006–
TR–008), Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon 
University, 2006.

Architektura

Zmiany, które pojawiły się w ostatniej wersji modelu 1.2, dotyczą przede 
wszystkim jego architektury. W obecnej formie, umożliwia ona dopaso-
wanie modelu CMMI do potrzeb różnych organizacji. Jednym z jej podsta-

wowych elementów jest tzw, „szkielet CMMI” (ang.

 CMMI Framework), któ-

ry składa się z 3 komponentów:

•   modelu (ang.

 model components) – obszary procesowe (ang. process 

areas), praktyki, materiały informacyjne, stanowiące dla organizacji 
pomoc w implementacji wymagań modelu CMMI;

•   szkoleń  (ang.

  training  components)  –  materiały  szkoleniowe,  prze-

wodniki  wyjaśniające  zasady  związane  z  implementacją  modelu, 
oraz wszelkie pomoce audi–wizualne, przekazujące wiedzę związa-
ną z praktycznym wdrożeniem praktyk modelu CMMI;

•   oceny (ang.

 appraisal components) – zasady opisujące metodę oce-

ny dojrzałości procesów wytwórczych organizacji w kontekście ce-
lów i praktyk opisanych w modelu. Na obszar ten składają się również 
wszelkie szkolenia, związane z organizowaniem i przeprowadzaniem 
ocen (ang.

 appraisals). 

Szkielet CMMI dostarcza nam pewnej struktury, którą należy jedynie wy-
pełnić praktykami, dotyczącymi konkretnych obszarów zainteresowań. 
Nie musimy tworzyć nowej terminologii, programów szkoleń, metod oce-
ny – to wszystko zapewnia nam dostępny szkielet. 

Kolejnym  ważnym  pojęciem,  związanym  z  architekturą  mode-

lu  CMMI  jest  pojęcie  „konstelacji”  (ang.

  constellation).  Jest  to  takie  po-

łączenie  komponentów  szkieletu  CMMI,  które  umożliwia  doskonalenie 
procesów wytwórczych w określonym obszarze jej zainteresowań (np. 
w sferze usług, czy rozwoju oprogramowania). W chwili obecnej, istnie-
ją 3 konstelacje, z których – jak dotąd – jedynie pierwsza została opu-
blikowana:

•   CMMI for Development (CMMI–DEV) – wspiera organizacje, zajmujące 

się developmentem produktów lub usług;

•   CMMI for Services (CMMI–SVC) – wspiera organizacje, zajmujące się 

dostarczaniem usług;

•   CMMI for Acquisition (CMMI–ACQ) – wspiera organizacje zajmujące się 

pozyskiwaniem produktów i usług od zewnętrznych poddostawców.

W skład każdej konstelacji, oprócz materiałów szkoleniowych oraz  me-
tod oceny, wchodzi tzw. „podstawa modelu CMMI” (ang.

 CMMI model fo-

undation) – zbiór komponentów, które są wspólne dla wszystkich odmian 
modelu CMMI. Tworzą ją określone obszary procesowe, ogólne cele i prak-
tyki, a także wspólny słownik (ang.

 glossary). Natomiast to, co decyduje o 

powstaniu nowego modelu, w ramach danej konstelacji, to pewne dodat-
ki, które rozbudowywane są w oparciu o jego podstawę (Rysunek 3). Na 

Rysunek 3. 

Szkielet modelu CMMI (ang. CMMI Framework)

��������

�����������

�����������

���������

������������

������

�����

�����������

��������

������

�������

Rysunek 4. 

Reprezentacja stała (ang. staged) modelu CMMI

������������

������������

������������

������������

���������

��������������

�����������������

��

background image

59

Extreme Programming i CMMI

www.sdjournal.org

Software Developer’s Journal   11/2007

podstawie: D. M. Ahern, A. Clouse, R. Turner, CMMI Distilled: A Practical In-
troduction to Integrated Process Improvement, Second Edition, Boston: 
Addison–Wesley, 2003.

CMMI for Development (CMMI–DEV)

Konstelacja CMMI for Development składa się z dwóch modeli: CMMI for 
Development + IPPD (ang. 

Integrated Product and Process Development

oraz CMMI for Development (bez dodatków IPPD). Ponieważ model CMMI–
DEV+IPPD, oprócz wspomnianych dodatków, w zasadzie niczym nie róż-
ni się od CMMI–DEV, Software Engineering Institute opublikował tylko je-
den z nich CMMI–DEV+IPPD. Model jest do pobrania na stronie SEI (

http:/

/www.sei.cmu.edu/cmmi/),  która  oprócz  wszystkich  dotychczasowych 
wersji modelu, zawiera liczne, ciekawe opracowania (pliki „pdf” i „doc”) z 
zakresu różnych dziedzin inżynierii oprogramowania. Dostęp do wszyst-
kich materiałów jest oczywiście bezpłatny.

Grupa dodatków IPPD, obecnych w modelu CMMI–DEV+IPPD, skupia 

w sobie praktyki, które dotyczą rozwoju zintegrowanych procesów i pro-
duktów w organizacji. Są one szczególnie pomocne dla tych organizacji, w 
których praca podzielona jest pomiędzy zespoły projektowe, skupione w 
różnych lokalizacjach (zespoły rozproszone). Zasady zawarte w dodatku 
IPPD, określają reguły właściwej komunikacji w zespołach projektowych, 
promują umiejętne zarządzanie wiedzą oraz doświadczeniem pracowni-
ków, a także zawierają wytyczne, dotyczące tworzenia niezbędnej infra-
struktury organizacyjnej w zakresie praktyk IPPD.  Dodatki IPPD zosta-
ły przypisane do tych obszarów procesowych modelu CMMI, które w ja-
kiś sposób pozostają zbieżne z obecną w nich tematyką (Tabela 2). Sporo 
ciekawych informacji na temat IPPD, można znaleźć w publikacji Departa-
mentu Obrony Stanów Zjednoczonych (United States Department of De-
fense): DoD guide to Introduction Product and Process Development (Ver-
sion 1.0), Washington DC, Office of the Under Secretary of Defense (Acqu-
isition and Technology), 1996 – materiał do pobrania na stronie: 

https://

acc.dau.mil/.

Jeden Model, Dwie reprezentacje

Model CMMI składa się z 22 obszarów procesowych (ang.

 Proces Areas), 

które  organizacja  może  doskonalić  w  ramach  dwóch  reprezentacji:  sta-
łej (ang.

 staged) i ciągłej (ang. continuous). Reprezentacja stała, umożli-

wia doskonalenie procesów wytwórczych, w ramach ściśle zdefiniowanej 
ścieżki rozwoju. Wyznacza ją pięć poziomów dojrzałości (ang.

 maturity le-

vels), co obrazuje(Rysunek 4)

Każdy z poziomów dojrzałości składa się z określonej liczby obsza-

rów procesowych, które organizacja musi zaimplementować, aby zna-
leźć się na określonym poziomie dojrzałości CMMI. Warto zauważyć, iż 
obszary procesowe w tej reprezentacji zostały tak zaprojektowane, iż 
nie jest możliwe osiągnięcie poziomu 3, nie spełniając wcześniej wyma-
gań poziomu 2 – podobnie, w przypadku poziomu 4, czy 5. W ten spo-
sób,  doskonalenie  procesów  wytwórczych  w  reprezentacji  stałej  ma 
charakter  przyrostowy  (inkrementalny).  Organizacja  posiada  nieja-
ko  gotowy  program  doskonalenia,  obecnych  w  niej  procesów  wytwór-
czych. Jest to dobre rozwiązanie dla tych przedsiębiorstw, które nie po-
siadają wystarczającej wiedzy na temat stopnia zaawansowania swo-
ich  procesów  wytwórczych,  a  co  za  tym  idzie  –  trudno  jest  im  jedno-
znacznie zdecydować, jak powinien wyglądać ich plan doskonalenia. W 
takiej sytuacji, zastosowanie reprezentacji stałej może się okazać nie-
zwykle pomocne.

Gdy  jednak  organizacja,  posiada  ugruntowaną  wiedzę  na  temat 

swoich  procesów  wytwórczych,  wówczas  dobrze  jest  skorzystać  z 
rozwiązań, które proponuje nam reprezentacja ciągła. Umożliwia ona 
skupienie się tylko na tych obszarach procesowych, które wymagają 
szczególnej poprawy. W reprezentacji ciągłej pojawia się pojęcie po-

ziomów  wydolności  procesu  (ang. 

capability  levels),  które  obrazują 

poziom  instytucjonalizacji  procesu  w  organizacji.  Obszary  proceso-
we w reprezentacji ciągłej mogą być doskonalone w ramach sześcio-
stopniowej skali od 0 do 5. Wydolność procesów wytwórczych może 
być zróżnicowana, co ilustruje (Rysunek 5). To organizacja decyduje 
o tym, który proces wymaga poprawy oraz w jakim zakresie. Źródło: 
D. M. Ahern, A. Clouse, R. Turner, CMMI Distilled: A Practical Introduc-
tion to Integrated Process Improvement, Second Edition, Boston: Ad-
dison–Wesley, 2003.

W reprezentacji ciągłej, obszary procesowe zostały podzielone na 4 

kategorie: Zarządzanie procesem (ang.

 Process Management), Zarządza-

nie  projektem  (ang.

  Project  Management),  Inżynieria  (ang.  Engineering

oraz Wsparcie (ang.

 Support). Zestawienie wszystkich obszarów obrazu-

je Tabela 2, podając nazwę procesu wraz z przypisaniem go do określo-
nej kategorii oraz poziomu dojrzałości modelu CMMI. Obszary te zostaną 
szczegółowo  omówione  oraz  zestawione  z  wybranymi  praktykami  me-
tody 

Extreme Programming, w kolejnej, ostatniej części prezentowanego 

cyklu, która ukaże się w kolejnym numerze pisma. Źródło: M. B. Chrissis, 
M.  Konrad,  S.  Shrum,  CMMI:  Guidelines  for  Process  Integration  and  Pro-
duct Improvement, Addison–Wesley, 2007.

Podsumowanie

Artykuł  jest  kolejną  częścią  cyklu  artykułów,  poświęconych  porówna-
niu dwóch metod tworzenia oprogramowania – „lekkich”, reprezentowa-
nych przez podejście określane mianem 

Extreme Programming oraz „tra-

dycyjnych”,  których  istotę  oddaje  model  CMMI.  Publikacja  przedstawia 
charakterystykę tradycyjnych metod tworzenia oprogramowania, które 
wykorzystują najczęściej kaskadowy cykl życia projektu software’owe-
go (wymagania/projekt/implementacja), a ich cechą charakterystyczną 
jest precyzyjnie zdefiniowany proces, który podlega ciągłemu doskona-
leniu. Metody te, wyrażają wszystko to, co mieści w sobie pojęcie: „dys-
cypliny”. Dodatkowo, w artykule omówione zostały podstawowe założe-
nia modelu CMMI (jego geneza, struktura, reprezentacje), który należy do 
jednego z bardziej znanych reprezentantów tradycyjnych metod tworze-
nia oprogramowania.

W trzeciej, ostatniej części prezentowanego cyklu, która ukaże się 

w kolejnym numerze pisma, przedstawiona zostanie próba pogodzenia 
tych dwóch, pozornie odmiennych, stanowisk: „lekkiego” (

Extreme Pro-

gramming)  oraz  „strukturalnego”  (CMMI).  Praktyki  metody  XP  zesta-
wione  zostaną  z  obszarami  procesowymi  (ang. 

Process  Areas)  mode-

lu CMMI. n

Rysunek 5. 

Reprezentacja ciągła (ang. continuous) modelu CMMI

���������

��������

��������

��������

����

������