background image

24

Inżynieria

oprogramowania

www.sdjournal.org

 Software Developer’s Journal   2/2008

Extreme Programming i CMMI 

– kreatywność czy dyscyplina? (Cz. 3)

P

ojęcie balansu, czy też balansowania kojarzy 
nam się przede wszystkim z próbą utrzyma-
nia równowagi, np. przez linoskoczków w cyr-

ku. Zresztą „balansem” nazywany jest również drąg, 
za pomocą którego linoskoczek wspomnianą rów-
nowagę próbuje utrzymać. Niemniej jednak, pojęcie 
to, posiada jeszcze głębsze, filozoficzne znaczenie 
– poszukiwanie umiaru. „Umiar” stanowi syntezę sta-
rożytnej mądrości greckiej, która swój typowy wyraz 
znalazła w pismach wielu poetów, filozofów (Pitago-
ras, Platon, Arystoteles), a która wielokrotnie wska-
zywała na drogę środka, niczego za dużo, słuszną 
miarę jako regułę działania moralnego: regułę, któ-
ra była wzorcem helleńskiego sposobu życia, od-
czuwania. 

Celem prezentowanego cyklu artykułów, jest pró-

ba wypośrodkowania, pomiędzy dwiema dość skraj-
nymi sposobami tworzenia oprogramowania – agile-
’owym 
i tradycyjnym. Wypośrodkowanie, nie oznacza 
jednak przeciętności, co więcej, jest nawet jej przeci-
wieństwem. „Słuszny środek” znajduje się zdecydowa-
nie ponad skrajnościami i stanowi wręcz ich przezwy-
ciężenie, a więc jest pewnego rodzaju „szczytem”, któ-
ry w wielu wypadkach oznacza zwycięstwo rozumu, 
nad tym, co irracjonalne.

Próba sił

Próba znalezienia równowagi pomiędzy światem me-
tod agile’owych a tradycyjnym developmentem nie jest 
sprawą łatwą. Wynika to poniekąd z samej natury two-
rzenia software’u, a także z dużej różnorodności me-
tod, rozwijanych w ramach dwóch prezentowanych po-
dejść. W trzeciej, ostatniej części prezentowanego cy-
klu, „zderzone” zostaną ze sobą podstawowe wartości 
i założenia metod agile’owych z tymi, które dominują w 
świecie tradycyjnych sposobów tworzenia oprogramo-
wania. Praktyki Extreme Programming, zestawione zo-
staną z obszarami procesowymi modelu CMMI. Poka-
zane zostanie to, co łączy i to, co dzieli – świat swo-
bodnego, nieskrępowanego programowania, zaproszo-
ny zostanie do świata dyscypliny i rygoru procesów. 
Czy zostanie przyjęty?

Różnica celów

Podstawowym  celem  projektów  agile’owych  jest 
„szybkość” oraz „błyskawiczne reagowanie na zmia-
nę”.  Pierwsza  z  12  zasad  Manifestu  Agile  (htttp://
www.agilemanifesto.org
),  głosi:  Naszym  najwyższym 
celem jest zaspokojenie oczekiwań klienta przez szyb-
kie i ciągłe dostarczanie mu działającego software’u”. 
Projekty agile’owe zazwyczaj nie przeprowadzają ana-
lizy ROI (ang. Return on Investment) po to, żeby usta-
lić najbardziej opłacalną alokację zasobów, z punktu 
widzenia dostarczanego produktu. Wolą raczej szyb-
ko tworzyć software, określając na bazie doświadcze-
nia z poprzednich iteracji, co tak naprawdę „opłaca” 
się (wartość biznesowa) dodać w kolejnej. Przypomi-
na to trochę znaną maksymę: Laissez faire, laissez pas-
ser!
 – dajcie wolność zarobkowania i handlu, która wy-
rażała podstawową zasadę gospodarki liberalnej, gło-
szącą swobodę gospodarczą jednostek, bez ingerencji 
państwa. W przypadku agile’a, taka postawa jest o ty-
le godna polecenia, iż znakomicie minimalizuje wszel-
kie straty, wynikające z tzw. złych inwestycji – realizo-
wanych na podstawie błędnych założeń, analiz. Z dru-
giej jednak strony, brak analizy zysku i strat, przy oka-
zji alokacji zasobów projektowych, może mieć nega-
tywny wpływ na dalszą realizację projektu. 

Kolejną cechą charakterystyczną projektów agi-

le’owych jest przyjęcie postawy reaktywnej w trakcie 
prac projektowych, co wyraża jedno ze stwierdzeń Ma-
nifestu Agile – „reagowanie na zmianę, ponad trzyma-
niem się planu”. Postawa szybkiej reakcji ma bardzo 
dużo zalet, zwłaszcza w dobie, kiedy wymagania ryn-
ku i technologie zmieniają się w zawrotnym tempie. Wy-
obraźmy sobie jednak hipotetyczną sytuację, kiedy tra-
fi nam się tzw. „niezdecydowany klient”, który – tak na-
prawdę – do końca nie wie, jak powinien wyglądać je-
go produkt – wówczas „reaktywne zarządzanie” może 
skutkować niepotrzebnym chaosem.

Zupełnie inny jest świat celów, który przyświeca 

tradycyjnym  metodom  tworzenia  oprogramowania. 
Tam liczy się stabilizacja i przewidywalność istnieją-
cych procesów w organizacji. Szczegółowe plany pro-
jektowe, rozbudowane strategie weryfikacji i walidacji, 
dodatkowo wspomagają te cele. Doskonalenie proce-
sów odbywa się w oparciu o różnego rodzaju mode-
le, których znakomitym reprezentantem jest CMMI. Za-
chowanie procesów, analizowane jest za pomocą me-
tod analizy statystycznej, ich przebieg jest szczegóło-
wo śledzony i mierzony. Wszystkie odchylenia od przy-
jętych linii bazowych (ang. baseline) są mierzone i na 
bieżąco korygowane, przez co zapewniona jest prze-
widywalność i powtarzalność istniejących procesów w 
organizacji. 

Mariusz Chrapko

Autor pracuje w Motorola Polska Electronics Sp. z o.o. 
(krakowskie Centrum Oprogramowania Motoroli) na sta-
nowisku  inżyniera  jakości.  Od  strony  zawodowej  inte-
resuje się problematyką doskonalenia procesu tworze-
nia oprogramowania w oparciu o model CMMI®, a także 
praktykami Agile Software Development. Prywatnie lubi 
jazz i filozofię. W wolnych chwilach fotografuje. 
Kontakt z autorem: mariusz.chrapko@gmail.com

background image

Extreme Programming i CMMI

25

www.sdjournal.org

Software Developer’s Journal   2/2008

W odróżnieniu od projektów agile’owych, tradycyjne meto-

dy tworzenia oprogramowania charakteryzuje postawa proak-
tywna. Miary i analizy działań projektowych, pozwalają wycho-
dzić naprzeciw wszelkim potencjalnym niezgodnościom. Jest to 
znakomita sytuacja dla bardzo stabilnego środowiska. Nakłady 
na działania proaktywne oraz szczegółowe planowanie przed 
rozpoczęciem projektu, niewątpliwie sprzyja stabilizacji i prze-
widywalności procesów wytwórczych. Sytuacja jednak kompli-
kuje się, kiedy mamy do czynienia z niestabilnym środowiskiem 
projektowym, o wysokim współczynniku nieprzewidywalności i 
zmiany. Wówczas próba stabilizacji i utrzymania przewidywalno-
ści może wymuszać dodatkowe koszty. 

Rozmiar projektów

Projekty agile’owe znakomicie sprawdzają się w małych i śred-
nich zespołach, pracujących zazwyczaj nad małymi aplikacja-
mi. Wspominał o tym Kent Beck, jeden z twórców metody Extre-
me Programming: „Wielkość projektu nie pozostaje bez znacze-
nia. Najprawdopodobniej nie jest możliwe stosowanie podejścia 
XP w projektach liczących stu developerów, nawet pięćdziesię-
ciu, czy czterdziestu. Dwudziestu również dziesięć to wartość 
optymalna” (K. Beck, Extreme Programming, Boston: Addison-
Wesley, 1999). Panuje powszechna zgoda, iż wymiana informa-
cji oraz efektywne zarządzanie projektem agile’owym ma sens, 
kiedy liczy on nie więcej niż 40 programistów. Oczywiście zda-
rzają się przypadki projektów, liczących nawet do 250 osób. Ta-
kim przykładem może być 250 osobowy projekt prowadzony w 
Singapurze, który zajmował się stworzeniem aplikacji bankowej. 
Jednak menedżer tego projektu, po jego zakończeniu stwierdził, 
iż nie podjąłby się takiego przedsięwzięcia po raz drugi (J. Hi-
ghsmith, Agile Software Development Ecosystems, Boston: Addi-
son-Wesley, 2002). Stosowanie metod agile’owych, w tego typu 
projektach, po prostu nie ma sensu. Jednak do dzisiaj najwięk-
szy projekt, który używał metody SCRUM,  liczył aż 800 deve-
loperów. Projekt ten prowadziła firma IDX, zajmująca się usłu-
gami z zakresu udzielania informacji medycznej (J. Highsmith, 
Agile Software Development Ecosystems, Boston: Addison-We-
sley, 2002). 

Doświadczenie pokazuje, iż prowadzenie projektów agile’o-

wych w dużych, bardzo złożonych projektach, ma sens o tyle, 
o ile development wspomagany jest elementami tradycyjnych 
metod tworzenia oprogramowania, takimi jak: plany projekto-
we,  specyfikacja  wymagań  etc.  Wymaga  tego  poniekąd  bar-
dzo złożona, wielowymiarowa rzeczywistość interakcji zacho-
dzących pomiędzy poszczególnymi komponentami prowadzo-
nych przedsięwzięć.

Tradycyjne metody tworzenia oprogramowania doskonale 

sprawdzają się właśnie przy okazji realizacji kompleksowych 
projektów informatycznych. Szczegółowe plany projektowe, do-
kumentacja, zarządzanie procesami sprzyjają lepszej komunika-
cji i koordynacji prac poszczególnych zespołów. Podstawowym 
zagrożeniem takiej postawy jest oczywiście zbytnia biurokraty-
zacja życia, dlatego szczególnie ważny jest tutaj zdrowy rozsą-
dek oraz wspomniana na początku – zasada złotego środka. W 
przeciwnym wypadku, może mieć to bardzo negatywne skutki 
dla całej organizacji.

Środowisko

Metody agile’owe najlepiej sprawdzają się w bardzo „burzliwym”, 
szybko zmieniającym się środowisku projektowym, gdzie wy-

magania „ujawniają” się niejako w trakcie samej realizacji pro-
jektu. Oczywiście ma to swoje dobre strony. Bardzo często ma-
my przecież do czynienia z projektami (zwłaszcza w dużych fir-
mach), które powstają we współpracy z kilkoma zespołami, roz-
mieszczonymi  w  różnych  lokalizacjach  na  świecie.  Wówczas 
bardzo często wymagania tworzone są przez oddzielny, spe-
cjalnie dedykowany do tej pracy zespół, zajmujący się tylko i 
wyłącznie tą dziedziną. Stąd zdarza się, iż wymagania nie są do-
starczane na czas, co – rzecz zrozumiała – często frustruje ze-
społy developerskie. Wówczas iteracyjne, a co za tym idzie, in-
krementalne dostarczanie wymagań może okazać się świetnym 
rozwiązaniem, oczywiście przy właściwym procesie zarządza-
nia zmianą wymagań.

Metody typu „plan-driven” (wiedzione planem) z kolei naj-

lepiej  sprawdzają  się  w  sytuacjach,  gdy  proces  zbierania  i 
analizy wymagań zamyka się przed oficjalnym rozpoczęciem 
prac nad designem systemu. Stąd też w tym przypadku wszel-
ki brak stabilności wymagań wpływa negatywnie na cały póź-
niejszy development. Statystycznie rzecz biorąc, metody plan-
driven, dopuszczają zmiany wymagań w granicach 1% w ska-
li miesiąca. W przeciwnym wypadku firma zmuszona jest pła-
cić niezwykle duże koszty, wynikające z konieczności utrzy-
mania, wcześniej zdefiniowanych, procesów związanych z za-
pewnieniem jakości i spójności zbieranych wymagań, a także 
ich testowalnością. 

Relacje z klientem

Agile  Software  Development  kładzie  duży  nacisk  na  bliską 
współpracę z klientem. Klient jest wręcz równoprawnym człon-
kiem zespołu projektowego. W praktyce, perspektywa klienta, 
reprezentowana jest przez różnego rodzaju analityków bizne-
sowych, którzy posiadają bardzo dobrą znajomość wymagań 
końcowych użytkowników systemu. Można powiedzieć, iż sta-
nowią pewnego rodzaju medium pomiędzy zespołem develo-
perów, a klientem końcowym. Dlatego sukces projektów agi-
le’owych 
zależy w dużym stopniu od charakteru tej współpra-
cy – na ile przedstawiciel klienta będzie w stanie odzwiercie-
dlić jego rzeczywiste potrzeby. Zawsze przecież może gdzieś 
wkraść się błąd, dwuznaczność, niezrozumienie. Dlatego też, 
sukces tych projektów, w dużym stopniu zależy od właści-
wych relacji z klientem.

Trochę  inaczej  sytuacja  wygląda  w  przypadku  tradycyj-

nych metod tworzenia oprogramowania. Tutaj, punkt nacisku 
położony jest na właściwe sformułowanie kontraktu, pomiędzy 
klientem i developerami/firmą. Na tym właściwie kończy się ta 
współpraca (oczywiście, wykluczają sytuacje nadzwyczajne). 
Metody plan-driven niezwykle pieczołowicie konstruują umo-
wy z klientem. Muszą zaangażować wszelkie zdolności „wizjo-
nerskie”, żeby niejako na papierze przewidzieć wszelkie poten-
cjalne problemy oraz ich możliwe rozwiązania, zanim faktycznie 
wystąpią w trakcie realizacji projektu. Ponieważ klient nie jest 
członkiem zespołu projektowego i nie może zmieniać wymagań 
w trakcie realizacji projektu, kontrakt powinien zawierać tak du-
żo szczegółów, jak to tylko możliwe. Pozytywną stroną tego po-
dejścia jest fakt, iż developerzy przez cały okres trwania pro-
jektu dokładnie wiedzą, co mają robić; także klient wie, czego 
może się spodziewać po zakończeniu projektu. Z drugiej jed-
nak strony, prace nad precyzyjnym sporządzeniem kontraktu, 
chęć uwzględnienia wszystkich niezbędnych detali, mogą po-
wodować niepotrzebne opóźnienia na samym starcie; co wię-

background image

26

Inżynieria

oprogramowania

www.sdjournal.org

 Software Developer’s Journal   2/2008

cej, zmiany w trakcie realizacji przedsięwzięcia, czynią wręcz 
niemożliwymi. 

Podstawa budowania zaufania w relacjach z klientem, w 

obu podejściach, oparta jest na różnych zasadach. W projek-
tach agile’owych, zaufanie budowane jest w oparciu o dostar-
czanie klientowi fragmentów działającego software’u. Co ja-
kiś czas klient dostaje mały fragment swojego produktu, testu-
je go – widzi, że developerzy faktycznie pracują. W przypadku 
tradycyjnych metod, zaufanie budowane jest w oparciu o doj-
rzałość procesów wytwórczych danej organizacji. Z kolei, bar-
dzo często gwarantem dojrzałości procesów jest legitymowa-
nie się przez firmę implementacją określonych celów i praktyk, 
obecnych w modelach dojrzałości procesów, takich jak CMMI. 
Klient decyduje się na podpisanie kontraktu z firmą, której pro-
cesy znajdują się na określonym poziomie dojrzałości, bo wie, 
że stanowi to określoną, solidną podstawę budowania zaufa-
nia. Podejście to niesie ze sobą jednak duże pokłady ryzyka. 
Zaufanie oparte na certyfikatach i ludziach, posiada zawsze 
wiele ograniczeń.

Planowanie i kontrola

Cytowany już Kent Beck, powiedział kiedyś, że metodę XP 
można scharakteryzować jako „planning-driven”, co należa-
łoby przetłumaczyć jako „wiedzioną planowaniem”. Planowa-
nie w projektach agile’owych zajmuje około 20% ich czasu i 
jest wynikiem zaangażowania się całego zespołu oraz dziele-
nia się tzw. „wiedzą ukrytą (ang. tacit knowledge). Jest to wie-
dza, z której istnienia wprawdzie zdajemy sobie sprawę i któ-
rą wykorzystujemy w codziennym działaniu, ale nie potrafimy 
jej do końca określić, a przez to wszelkie próby jej sformali-
zowania są niezwykle trudne. Więcej szczegółów na ten temat 
można znaleźć w książce autora pojęcia „wiedzy ukrytej” Mi-
chaela Polanyi, The Tacit Dimension, Routledge & Kegan Paul 
Ltd, London 1967. 

Wiedza ukryta, jest tym rodzajem wiedzy, który doskona-

le  sprawdza  się  w  małych  zespołach  agile’owych,  które  bar-
dzo efektywnie mogą dzielić się tym rodzajem wiedzy, która nie 
jest przecież wiedzą udokumentowaną. Niestety, wraz ze wzro-
stem organizacji ten sposób przekazywania wiedzy staje się co-
raz bardziej nieefektywny. Dlatego metody plan-driven tak duży 
nacisk kładą na dokumentowanie planów projektowych, w du-
żej mierze, w celu usprawnienia komunikacji projektowej. Trady-
cyjne metody tworzenia oprogramowania mają ściśle zdefinio-
wany proces planowania prac projektowych (tworzenie harmo-
nogramu, określenie punktów milowych, szacowanie wielkości 
prac, kosztów etc.) oraz prac związanych z rozwijanym produk-
tem (wymagania, opis architektury systemu, design, implemen-
tacja, testy). Poszczególne plany, których przygotowanie zwią-
zane jest z konkretną fazą prac projektowych – łączą się, two-
rząc integralną całość. 

Komunikacja w projekcie

Komunikacja w projektach agile’owych w dużej mierze opar-
ta jest na dzieleniu się, wspomnianą wcześniej, wiedzą „ukry-
tą”. Wiedza ta, rozwijana jest w takich praktykach agile’owych 
jak: zabawa w planowanie (ang. planning game), programowa-
nie w parach, czy retrospekcje. Wiedza ukryta odsłania się w 
codziennej pracy projektowej. Programiści, pracując nad kon-
kretnymi zadaniami, w ramach konkretnej iteracji, wymienia-
ją swoje doświadczenia, wzajemnie obdarowywują się swo-

ją wiedzą, która nie wymaga złożonej dokumentacji. Niemniej 
jednak, pokładanie całego zaufania firmy w założenie, iż wie-
dza ukryta jest konsystentna we wszystkich zespołach pro-
jektowych – należy traktować jako wysoce ryzykowne. Ryzy-
ko zwiększa się jeszcze bardziej, gdy mamy do czynienia z du-
żą rotacją w tych zespołach, co jest przecież rzeczą dość czę-
stą w organizacjach. 

Im większa organizacja, tym sposób przekazywania wie-

dzy ukrytej staje się coraz bardziej nieefektywny. Należy tu-
taj rozważyć, jak bardzo zwiększa się liczba relacji zależno-
ści pomiędzy poszczególnymi pracownikami. Dlatego meto-
dy plan-driven, tak wielką wagę przykładają do wiedzy „jaw-
nej”, formalnej – a więc jasno sprecyzowanej i usystematyzo-
wanej, którą można udokumentować. Jednak i tutaj pojawiają 
się przeszkody. Informacje znajdują się w wielu miejscach i w 
różnych formach, nie zawsze jest też oczywiste, gdzie daną in-
formację można znaleźć. 

Należy jednak pamiętać, iż ścisły rozdział wiedzy „jawnej” 

od „ukrytej”, w żadnym z omawianych podejść, nie ma charakte-
ru absolutnego. Kod źródłowy czy przypadki testowe, które po-
wstają w projektach agile’wych jak najbardziej kwalifikują się do 
uznania ich jako wiedzę „jawną”. Podobnie, w przypadku metod 
plan-driven, komunikacja interpersonalna, indywidualna wymia-
ny doświadczeń – wspierają rozumienie dokumentacji proceso-
wej. Metody agile’owe dokumentują niezbędne minimum (user 
stories
, plan projektu). 

Tradycyjne metody tworzenia oprogramowania cierpią z 

kolei bardzo często na syndrom, nazwijmy to „niepewnego de-
velopera”. Oto bowiem, z jednej strony, dość duży nacisk kła-
dą na szczegółową dokumentację wszystkich procesów, za-
chodzących na poziomie organizacji i poszczególnych pro-
jektów, z drugiej zaś – dają ludziom bardzo cenne narzędzie 
w postaci „tailoringu” – a więc przykrywania istniejących pro-
cesów do zindywidualizowanych potrzeb konkretnego projek-
tu. Narzędzie to świetnie wykorzystywane jest przez tzw. „de-
veloperów ekspertów”, których wiedza i doświadczenie są na 
tyle duże, iż bez problemu potrafią dopasować istniejący gor-
set wymagań procesowych, do własnych potrzeb, które skądi-
nąd zawsze posiadają rozsądne uzasadnienie biznesowe. Nie-
stety, w wielu projektach, bardzo często, zwłaszcza wśród me-
nedżerów, pojawiają się osoby, które mimo swoich ogromnych 
kompetencji oraz ogromnego doświadczenia/ekspertyzy, wo-
lą spełnić wymagania wszystkich istniejących procesów w or-
ganizacji, po to tylko, ażeby się za nimi schować, przyjmując 
w ten sposób postawę asekuracyjną na wypadek, gdyby pro-
jekt zakończył się niepowodzeniem. Takie podejście, skutkuje 
najczęściej ogromną frustracją ze strony pozostałych człon-
ków zespołu projektowego i mnożeniem ton nikomu niepo-
trzebnej dokumentacji.

Wymagania, design i testy

Wśród dyskusji na temat różnic pomiędzy agilem, a tradycyj-
nymi metodami tworzenia software’u, najczęściej wskazuje się 
na aspekty techniczne. Po pierwsze – sposób zbierania wyma-
gań. Jak już zostało wcześniej powiedziane, w projektach agile-
’owych 
sposób zbierania i tworzenia wymagań ma charakter bar-
dzo nieformalny. Słowem-kluczem jest tutaj pojęcie „kart klien-
ta” (ang. user stories), a więc bardzo lakonicznych opisów po-
szczególnych funkcjonalności systemu (najczęściej zapisanych 
na małych karteczkach), powstałych w wyniku współpracy klient 

background image

Extreme Programming i CMMI

27

www.sdjournal.org

Software Developer’s Journal   2/2008

– developer. To, które wymagania zostanie zaimplementowane 
w każdej kolejnej iteracji, w dużej mierze decyduje klient. Deve-
loperzy określają jedynie, na ile dana karta może zostać zaim-
plementowana. Zawsze jednak, jest to przedmiotem negocjacji, 
w które każdorazowo zaangażowane są obie strony: kliencka i 
developerska.

Świat tradycyjnych metod tworzenia oprogramowania, pod 

względem zbierania i dostarczania wymagań, funkcjonuje zu-
pełnie inaczej. Tutaj wszystko ma charakter wysoce sformalizo-
wany. Wymagania są wersjonowane, a ich zmiany skrupulatnie 
śledzone. Służą temu różnego rodzaju narzędzia, które pozwa-
lają należycie nimi zarządzać, przez cały czas trwania projek-
tu. Wspomnę tutaj chociażby o takich komercyjnych systemach 
jak RequisitePro firmy Rational, CaliberRM firmy TBI, czy DO-
ORS firmy Telelogic.

Mówiąc o różnicach technicznych, warto również wspomnieć 

o kwestiach związanych z tworzeniem designu systemu. Świat 
metod agile’owych zaleca maksymalną prostotę – pojawia się 
praktyka określana mianem simple design, która zaleca budo-
wanie systemu możliwie jak najmniej skomplikowanego, co zna-
komicie oddaje powiedzenie, określane w skrócie „YAGNI” (You 
aren’t going need it
) – developerzy powinni implementować tylko 
to, co wyrażają aktualne potrzeby klienta, nie zaś to, co ich zda-
niem, może być klientowi potrzebne. Oczywiście przekłada się 
to na tworzenie designu systemu. Przemawiają za tym dwa argu-
menty. Pierwszy, zakłada mniejszy koszt związany z reworkiem 
wszelkich zmian w trakcie trwania developmentu (ciągła refak-
toryzacja wymagań, kodu, przypadków testowych). Drugim ar-
gumentem, przemawiającym za stosowaniem tej praktyki, jest 
tempo prac developerskich zorientowanych wokół poszczegól-
nych iteracji. Nasz system zmienia się tak szybko, że jakiekol-
wiek próby „przygotowania” go do przyjęcia w przyszłości in-
nych funkcjonalności mogłoby okazać się zabójcze dla całego 
przedsięwzięcia.

Zupełnie  inaczej  sytuacja  wygląda  w  metodach  plan-dri-

ven. Pomijając fakt, iż fazy architektury i designu są szczegóło-
wo dokumentowane, to jednak chyba najważniejszą rzeczą, jest 
ogromny wysiłek, wkładany w to, aby system był przygotowany 
do przyjęcia wszelkich możliwych zmian w przyszłości. Dobrym 
przykładem jest tutaj firma Hewlett-Packard, która na skutek mo-
dułów software’owych, nadających się do powtórnego użycia, 
była w stanie skrócić czas trwania developmentu z 48 miesię-
cy do 12, w ciągu 5 lat. Więcej szczegółów na ten temat można 
znaleźć w raporcie technicznym laboratorium HP – Malan R., K. 
Wentzel, kwiecień 1993, Economics of Reuse Revisited, HP Labs 
Technical Report HPL-93-31).

Jeśli chodzi o podejście do kwestii testowania, obie metody 

również reprezentują odmienne stanowiska. W tradycyjnych po-
dejściach, związanych najczęściej z kaskadowym cyklem życia 
projektu, faza testowania następuje po fazie implementacji, co 
powoduje, iż ewentualne defekty w kodzie, wykrywane są sto-
sunkowo późno. Świat metod agile’owych adresuje ten problem 
stosując praktykę tzw. „programowania sterowanego testami” 
(ang. test driven development), która polega na tym, że najpierw 
piszemy test, a potem kod, który ten test spełnia. Ma to wiele 
zalet, między innymi, znacząco zwiększa stopień pokrycia kodu 
(ang. test coverage) oraz sprawia, iż powstające moduły są sto-
sunkowo mało skomplikowane (piszemy kod, który jest niezbęd-
ny do osiągnięcia danej funkcjonalności), a także umożliwia peł-
ną automatyzację testów.

Metody plan-driven zapobiegają późnemu znajdowaniu błę-

dów w kodzie, poprzez jego ciągłe inspektowanie. Jest to prak-
tyka, mająca na celu wykrycie jak największej ilości błędów, a 
także ich naprawę, jeszcze w trakcie fazy kodowania. Polega na 
przeglądzie kodu przez niewielkie grupy programistów (zwykle 
4-5 osób) zanim kod zostanie objęty kontrolą wersji i przetesto-
wany. W tradycyjnych metodach tworzenia oprogramowania, in-
spekcje zazwyczaj są stosowane w odniesieniu do wszystkich 
artefaktów projektowych, takich jak: wymagania, design, plany/
strategie testowania, przypadki testowe, a także do dokumen-
tów procesowych. Pełnią rolę tzw. „bram jakości” (ang. quali-
ty gates
). Projekt nie może opuścić jednej fazy i przejść do na-
stępnej, bez uprzedniego przeinspektowania wszystkich jej ar-
tefaktów. A więc, nie możemy opuścić fazy designu i przejść 
do fazy kodowania, bez uprzedniego przeglądu projektu nasze-
go systemu. Podobnie w przypadku fazy kodowania – nie mo-
żemy rozpocząć testów, bez uprzednich przeglądów kodu. Ta-
kie podejście umożliwia bardzo wczesne wychwytywanie błę-
dów w procesie developmentu software’u. Więcej na temat pro-
cesu inspekcji w artykule: M. Chrapko, Inspekcje kodu jako sku-
teczna metoda weryfikacji kodu
, Software Developer’s Journal, 
nr 3/2007 (147). 

Czynnik ludzki

Dotykamy obszaru, który jest bodajże najbardziej newralgiczny 
z punktu widzenia tematu niniejszej publikacji. „Lekkie” metody-
ki, o czym była mowa wcześniej, stosunkowo duży nacisk kładą 
na ciągłą obecność i aktywne zaangażowanie klienta, bądź je-
go reprezentanta (analityk biznesowy), w prace zespołu projek-
towego. Owo zaangażowanie sprawia, iż z jednej strony uczest-
niczy on w planowaniu i priorytetyzowaniu prac projektowych, 
przygotowuje testy akceptacyjne, opowiada na wszystkie pyta-
nia programistów, związane z tworzonym produktem – z dru-
giej zaś, bardzo często zdarza się, że firmy oddelegowują tzw. 
„zbędnych” pracowników do pracy właśnie w projektach agile-
’owych
, nie mając przy tym świadomości, jak bardzo duże nie-
sie to ryzyko. 

Rysunek 1. 

Znaczenie czynnika ludzkiego w metodach agile i 

plan-driven. Źródło: J. Highsmith, Agile Software Development 
Ecosystems, Boston: Addison-Wesley, 2002

������

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

�����

�����

������

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

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

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

���������

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

background image

28

Inżynieria

oprogramowania

www.sdjournal.org

 Software Developer’s Journal   2/2008

Metody plan-driven angażują klienta jedynie na początku prac 
projektowych – w momencie zbierania i definiowania wymagań 
oraz w momencie przygotowywania i zawierania kontraktu. Jed-
nak, w odróżnieniu od metod agile’owych, nie jest to obecność 
permanentna. 
Obie metody wymagają jednak zaangażowania, właściwych i 
kompetentnych osób. W projektach agile’owych, oprócz okre-
ślonych umiejętności technicznych, niezbędne są pewne pre-
dyspozycje „miękkie”, a więc zdolność do komunikacji, pracy 
w grupie, twórczego rozwiązywania problemów, co wynika ze 
specyfiki obecnych w nich praktyk. Nie sposób programować 
w parach, nie posiadając zdolności pracy w grupie czy komu-
nikacji. Oczywiście w tradycyjnych metodach tworzenia opro-
gramowania cechy te są równie ważne, jednak nie krytyczne. W 
tradycyjnych metodykach, powodzenie projektów nie zależy od 
posiadania określonych cech interpersonalnych developerów. 
Dobrze zdefiniowany i zarządzany proces, jego powtarzalność 
i przewidywalność są gwarantem sukcesu projektów. Oczywi-
ście nie jest też tak, iż w projektach tych pracują roboty, które 
w cieniu swoich kubików, w odizolowaniu od świata, tworzą ma-
łe fragmenty kodu. 

Kultura organizacji

Dotykamy tutaj elementu, którego rola jest krytyczna w poszu-
kiwaniu równowagi pomiędzy omawianymi podejściami. Kultura 
projektów agile’owych opiera się na wolności – swobodzie w de-
finiowaniu i organizacji pracy. Jest to kultura swobodnego, nie-
skrępowanego działania. W projektach agile’owych każda oso-
ba dokładnie wie, co należy do jej obowiązków. 

W tradycyjnych metodach, programiści czują się najlepiej, 

kiedy ich role i zakres obowiązków zostały jasno i czytelnie zde-
finiowane (polityki, procesy, procedury). W ten sposób, każdy 
dokładnie wie, jakie są względem niego oczekiwania oraz za wy-
tworzenie, jakiego fragmentu produktu jest on odpowiedzialny. 
Kultura organizacji jest tym elementem, który najbardziej opie-
ra się wprowadzaniu zmian. Oczywiście nie są one wykluczone, 
niemniej jednak wymagają dużo cierpliwości i czasu. 

XP i CMMI

Metoda XP oraz Model CMMI to pozornie dwa różne światy, któ-
rym przyświeca wspólny cel – produkcja dobrego oprogramo-
wania, spełniającego wymagania stawiane przez klienta. Model 
CMMI jest doskonałym narzędziem oceny i doskonalenia proce-
sów wytwórczych w organizacji. Składa się z 22 obszarów pro-
cesowych (ang. Proces Areas), które tworzą dobre praktyki z 
zakresu inżynierii oprogramowania. Należy pamiętać, iż model 
CMMI nie jest w żadnym wypadku tworem intelektualnym, stwo-
rzonym przez środowisko akademickie, choć oczywiście posia-
da ono niezaprzeczalny wkład w jego rozwijanie. Jest to jednak 
model, o którego powstaniu zadecydowała przede wszystkim 
praktyka – Departament Obrony Stanów Zjednoczonych (ang. 
United States Department of Defense) chciał mieć narzędzie do 
oceny swoich kontraktorów, chciał współpracować z firmami, 
którym można zaufać. Dlatego powstał model, posiadający po-
dwójne zastosowanie, z jednej strony stanowi on doskonałe na-
rzędzie oceny poziomu dojrzałości procesów wytwórczych da-
nej organizacji, z drugiej zaś, definiuje ścieżkę ich rozwoju/do-
skonalenia, gdyby tego wymagały. Model w obecnej postaci (od 
momentu powstania w 1987 roku pojawiło się kilka jego wer-
sji) składa się z dwóch reprezentacji: stałej (ang. staged) oraz 

ciągłej (ang. continuous). Przypominają one trochę dwa odręb-
ne widoki (ang. view) w bazie danych, są czymś w rodzaju wir-
tualnej tabeli. Pozwalają firmie na 22 obszary procesowe spo-
glądać z dwóch odmiennych perspektyw/reprezentacji. Z jed-
nej strony, akcentują tylko te procesy wytwórcze, które wyma-
gają poprawy i dostarczają niezbędnych środków do ich rozwo-
ju (reprezentacja ciągła); z drugiej zaś, umożliwiają organiza-
cję, stopniowe, krok po kroku, doskonalenie procesów, dostar-
czając jej gotowej, kilku stopniowej ścieżki rozwoju (reprezen-
tacja stała). Takie podejście, umożliwia pracę nad poprawą pro-
cesów wytwórczych, zarówno tym organizacjom, które posia-
dają dobrą znajomość swoich procesów, jak i firmom, które do-
piero zaczynają swoją przygodę z ich poprawą, startując bar-
dzo często od zera. 

Model CMMI pełni więc rolę swoistego drogowskazu na 

drodze doskonalenia procesów tworzenia oprogramowania w 
organizacji – mówi „co robić” (praktyki i cele), aby jej proces 
był  faktycznie  dojrzały.  Metoda  XP  natomiast,  stanowi  kon-
kretną  propozycją  implementacji  niektórych  praktyk,  obec-
nych w modelu CMMI. Tutaj odsłania się możliwość synergii 
omawianych podejść. Kiedy zestawimy praktyki Extreme Pro-
gramming z obszarami procesowymi modelu CMMI, nie od-
kryjemy sprzeczności – w niektórych przypadkach możemy 
mówić co najwyżej o sytuacji, kiedy pewne obszary proceso-
we pozostają neutralne względem praktyk Extreme Program-
ming (ich ewentualna implementacja na gruncie XP nie stano-
wiłaby więc sprzeczności); bądź skrajnie możliwe (prawdopo-
dobieństwo ich wprowadzenie jest bardzo niskie, choć oczy-
wiście nie wykluczone). Można, więc całkiem zasadnie stwier-
dzić, iż relacja zakresu obszarów procesowych modelu CMMI 
względem konkretnych praktyk metody XP jest relacją – zbio-
ru względem jego podzbioru. Wszystkie praktyki Extreme Pro-
gramming stanowią „ucieleśnienie” większości praktyk obec-
nych w modelu CMMI.

Dla potrzeb tej publikacji, praktyki metody XP zostaną ze-

stawione z obszarami procesowymi modelu CMMI w czterech 
kategoriach reprezentacji ciągłej: Zarządzanie projektem (ang. 
Project Management), Inżynieria (ang. Engineering), Wsparcie 
(ang. Support) oraz Zarządzanie procesem (ang. Process Ma-
nagement
).

Rysunek 2. 

Reprezentacja modelu CMMI. Reprezentacja stała

����������

����������

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

����������

���������

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

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

background image

29

Extreme Programming i CMMI

www.sdjournal.org

Software Developer’s Journal   2/2008

Zarządzanie projektem

W obszarach procesowych CMMI, należących do tej katego-
rii, znalazły się: 

•  planowanie projektu (ang. Project Planning) – szacowanie 

projektu (wielkość, koszty, czasu trwania); definiowaniu je-
go cyklu życia (kaskadowy, spiralny, przyrostowy etc.); two-
rzenia dokumentacji projektowej; sporządzanie planu; 

•  monitoring i kontrola (ang. Project Monitoring and Control

– monitorowanie prac projektowych pod kątem zgodności 
z przyjętym planem (śledzenie harmonogramu, wydatków, 
dostępności zasobów, ryzyk); zarządzanie procesem defi-
niowania i rozwiązywania akcji korekcyjnych, powstałych na 
skutek odchyleń od przyjętego planu; 

•  zarządzanie dostawcami (ang. Supplier Agreement Mana-

gement) – określenie jakiego typu produkty i usługi, zwią-
zane z realizacją danego projektu, będą realizowane przez 
zewnętrznych bądź wewnętrznych dostawców; definiowa-
nie kryteriów wyboru dostawców; sporządzanie umów z do-
stawcami; ewaluacja dostarczanych produktów, zwłaszcza 
tych, które mają znaczenie krytyczne dla powodzenia reali-
zowanego projektu; organizowanie procesu tranzycji dostar-
czanego produktu/usługi (szkolenia, konsultacje, support);

•  zintegrowane zarządzanie projektem (ang. Integrated Project 

Management) – zdefiniowanie procesów, które będą wyko-
rzystywane w trakcie realizacji projektu, w zależności od je-
go specyfiki, cyklu życia (np. proces estymowania, zarzą-
dzania ryzykiem, inspekcji/przeglądów, testowania etc.); pla-
nowanie projektu w oparciu o wcześniej zdefiniowane pro-
cesy; przygotowanie środowiska projektowego (narzędzia, 
sprzęt, manuale, support – wszystko, co jest niezbędne do 
efektywnie wykonywanej pracy w ramach projektu); integra-
cja planu projektowego z wszystkimi innymi planami, które 
bezpośrednio go dotyczą (plany zapewnienia jakości, zarzą-
dzania konfiguracją, ryzykiem);

•  zarządzanie ryzykiem (ang. Risk Management) – analiza i 

ocena ryzyka w projekcie; identyfikacja możliwych źródeł 
ryzyka; szacowanie prawdopodobieństwa jego wystąpie-
nia oraz wpływu na projekt; definiowanie poziomów ryzy-
ka; przygotowywanie planu działań zapobiegawczych; 

•  ilościowe zarządzanie projektem (ang. Quantitative Project 

Management)  –  definiowanie  mierzalnych  celów  projektu 
(np. pożądany poziom kosztów jakości, kosztów złej jakości, 
gęstości błędów, produktywności etc.); zbieżnych z celami 
ogólno-organizacyjnymi; dokumentowanie przyjętych celów 
w planach projektowych; monitorowania stopnia realizacji 
założonych celów; zbieranie miar projektowych; definiowa-
nie akcji korekcyjnych w przypadkach odchyleń od przyję-
tych celów; stosowanie metod statystycznej analizy proce-
sów do śledzenia ich zachowań.

Metoda XP w pełni realizuje wymagania związane z kategorią 
„Planowania projektu”. Praktyki związane z „zabawą w planowa-
nie” (ang. planning game); „krótkimi wydaniami” (ang. short rele-
ases
), przekładające się na planowanie poszczególnych wydań 
oraz iteracji; estymowanie wielkości projektu poprzez szacowa-
nie pracy związanej z implementacją poszczególnych kart klien-
ta (ang. user stories) – stanowią urzeczywistnienie zaleceń mode-
lu CMMI w tym zakresie. Kolejny obszar – „Monitoring i kontrola”, 
jest również doskonale spełniony w metodzie XP m.in. poprzez 

śledzenie tzw. „prędkości” (ang. velocity) projektu – określającej, 
jak wiele kart klienta udało się zespołowi zaimplementować w ra-
mach danej iteracji. Metryka ta jest dość precyzyjnie śledzona w 
metodzie Extreme Programming. Szacowana prędkość projektu, 
porównywana jest z wartościami rzeczywistymi; analizowany jest 
całkowity wysiłek zespołu względem danej iteracji (ang. cumula-
tive story point chart
), a także ile pracy pozostało do wykonania 
pod koniec trwania danej iteracji (ang. iteration burndown chart). 
Również obszar „Zintegrowanego zarządzania projektem” znaj-
duje swoje odzwierciedlenie w praktykach agile’owych. XP po-
siada ściśle zdefiniowany iteracyjny cykl życia oprogramowania 
– estymaty oraz plany poszczególnych wydań i iteracji, wykorzy-
stywane są do planowania kolejnych aktywności projektowych; 
wraz z planowaniem projektu, tworzone jest odpowiednie środo-
wisko pracy (narzędzia, krytyczne zasoby); definiowane są pod-
stawowe metryki (np. velocity) oraz sposób, w jaki będą mierzone 
i przechowywane. W procesie planowania poszczególnych itera-
cji, metody agile’owe stosują podejście określane mianem risk-dri-
ven iterative development
. Oznacza to, iż przy planowaniu począt-
kowych iteracji brane są pod uwagę przede wszystkim te elemen-
ty systemu, które odznaczają się dużym poziomem ryzyka wzglę-
dem pozostałych. Mimo, że Extreme Programming nie posługuje 
się zaawansowanym planem zarządzania ryzykiem, niemniej jed-
nak, risk-driven iterative development stanowi pewną jego namiast-
kę. Jeśli chodzi obszar „Zarządzania dostawcami”, metoda XP po-
zostaje względem niego raczej neutralna. Natomiast, w przypadku 
„Ilościowego zarządzania procesem”, implementacja obecnych w 
tym obszarze praktyk, można uznać za skrajnie możliwą. 

Inżynieria

Drugi zbiór obszarów procesowych modelu CMMI, zebranych 
wokół  kategorii:  „Inżynierii”,  również  posiada  wiele  punktów 
wspólnych z metodą XP. Znalazły się tutaj:

•  zarządzanie wymaganiami (ang. Requirements Management

– osiąganie wspólnego zrozumienia definiowanych wymagań 
(klient – projekt); zarządzanie zmianami wymagań; śledze-
nie poziomu ich implementacji oraz pokrycia testami; iden-
tyfikowanie wszelkich rozbieżności pomiędzy pracą projek-
tu, a przyjętymi wymaganiami;

•  rozwój wymagań (ang. Requirements Development) – zbie-

ranie wymagań od klienta; definiowanie wymagań produktu; 
analiza i walidacja wymagań;

��������

��������

��������

����

������

���������

Rysunek 3. 

Reprezentacja modelu CMMI. Reprezentacja ciągła

background image

30

Inżynieria

oprogramowania

www.sdjournal.org

 Software Developer’s Journal   2/2008

•  rozwiązania techniczne (ang. Technical Solution) – ewaluacja 

i wybór odpowiedniego projektu systemu (w oparciu o jego 
wymagania); sporządzenie szczegółowego design’u systemu 
(opis architektury, projekt systemu); implementacja przyję-
tych rozwiązań; 

•  integracja produktu (ang. Product Integration) – integracja 

komponentów produktu w integralną całość; przygotowanie 
środowiska integracyjnego; definiowanie procedur integra-
cyjnych (dokumentacja, kryteria); dostarczenie produktu;

•  weryfikacja (ang. Verification) – sprawdzenie produktu, pod 

kątem jego zgodności z przyjętą specyfikacją; wybór pro-
duktów roboczych, które zostaną poddane procesowi we-
ryfikacji; przygotowanie środowiska umożliwiającego wery-
fikację; metody weryfikacji: inspekcje/przeglądy artefaktów 
projektowych, testy; stworzenie procedur i kryteriów wery-
fikacyjnych (dokumentacja); ewaluacja uzyskanych rezulta-
tów (raporty);

•  walidacja (ang. Validation) – sprawdzenie, czy to, co zostało 

zdefiniowane w wymaganiach, jest zgodne z oczekiwaniami 
użytkownika; przeprowadzanie testów w środowisku rzeczy-
wistym naszego klienta, bądź zbliżonym do niego; przygoto-
wanie środowiska umożliwiającego walidację (np. symulatory, 
wykwalifikowani pracownicy, odpowiednie środowisko testo-
we, narzędzia); stworzenie procedur i kryteriów walidacyjnych 
(dokumentacja); ewaluacja uzyskanych rezultatów (raporty).

Dwa pierwsze obszary procesowe, dotyczące zarządzania wy-
maganiami, metoda XP odzwierciedla poprzez posługiwanie się 
kartami klienta w definiowaniu i zarządzaniu wymaganiami oraz 
jego  aktywne  zaangażowanie  w  trakcie  całego  developmen-
tu. Klient jest obecny na każdym etapie cyklu życia projektu. 
Uczestniczy w jego planowaniu, dokonuje priorytetyzacji funk-
cjonalności, a także odpowiada na wszystkie pytania programi-
stów. Obszar „Rozwiązania techniczne” modelu CMMI jest po-
wiązany z praktyką metafory w obrazowaniu działania systemu 
(odpowiednik architektury), zasadą maksymalnej prostoty w de-
finiowaniu projektu systemu (ang. simple design), a także prak-
tyką refaktoryzacji kodu. Integracja produktu, wspierana jest 
przez praktykę ciągłej integracji (ang. continuous integration), 
obecną w podejściu XP. Komponenty systemu, integrowane są 
z dużą częstotliwością, nawet do kilku razy dziennie. W meto-
dzie XP, szczególnie mocno reprezentowane są dwa ostatnie ob-
szary z omawianej grupy: „Walidacja” oraz „Weryfikacja”. Wyko-
nywanie testów jednostkowych, akceptacyjnych, regresyjnych, 
wspomaganych przez automatyzację procesu testowania, sta-
nowią „twardy rdzeń” tej metody. Obszary te, dodatkowo wspie-
rane są przez praktykę programowania w parach (ang. pair pro-
gramming
), która w niektórych przypadkach wydaje się być du-
żo silniejszym narzędziem, aniżeli inspekcje kodu – ze względu 
na jej duży ładunek prewencyjny: wspólne programowanie zapo-
biega wprowadzaniu błędów do powstającego kodu, które nor-
malnie wykrywane są podczas inspekcji. 

Wsparcie

Kolejny zbiór procesów, skupiony jest wokół kategorii: „Wspar-
cia”. Znajdują się tutaj:

•  zarządzanie konfiguracją (ang. Configuration Management

– identyfikacja produktów poddanych kontroli wersji; usta-
nowienie systemu zarządzania konfiguracją (procedury, na-

rzędzia);  definiowanie  baseline’ów;  śledzenie  tzw.  „żądań 
zmian” (ang. change request) – sugestii modyfikacji produk-
tu roboczego, bądź zgłoszenia wykrytych w nim defektów; 
przyprowadzanie audytów konfiguracji;

•  zapewnienie jakości procesu i produktu (ang. Process and 

Product Quality Assurance) – obiektywna ewaluacja pro-
cesów w organizacji (raporty); przeprowadzanie audytów 
projektowych/organizacyjnych; identyfikowanie i dokumen-
towanie niezgodności/odstępstw od zdefiniowanych pro-
cesów w firmie; dostarczanie informacji zwrotnej członkom 
zespołu projektowego oraz menedżerom; właściwe adreso-
wanie niezgodności audytowych oraz akcji korekcyjnych;  

•  miary i analizy (ang. Measurement and Analysis) – definio-

wanie metryk projektowych/organizacyjnych; sporządzenie 
procedur, określających jak zbierać metryki projektowe; wy-
korzystywanie narzędzi do zbierania metryk; analiza uzyska-
nych rezultatów; podejmowanie działań korekcyjnych;

•  analiza decyzyjna (ang. Decision Analysis and Resolution) – 

zdefiniowanie kryteriów stosowania procesu analizy decy-
zyjnej w organizacji; przygotowanie odpowiednich procedur 
(dokumentacja); wybór metod ewaluacji możliwych rozwią-
zań; ocena ryzyka wybranych rozwiązań;

•  analiza przyczyn i działania prewencyjne (ang. Causal Ana-

lysis and Resolution) – identyfikacja przyczyn wykrytych de-
fektów oraz wszelkich innych problemów, pojawiających się 
w  trakcie  życia  projektu;  podejmowanie  akcji  prewencyj-
nych; weryfikacja poprawnego wykonania akcji. 

W tej kategorii o komplementarności można mówić jedynie w 
przypadku obszaru związanego z zarządzaniem konfiguracją 
oprogramowania.  W  metodzie  XP  kontrola  zmian  produktów 
roboczych dokonuje się za sprawą praktyki kolektywnej wła-
sności kodu (ang. collective ownership), krótkich wydań (ang. 
small releases), a także ciągłej integracji (ang. continuous inte-
gration
). Należy zaznaczyć, iż kolektywna własność kodu mo-
że być nieco problematyczna w przypadku dużych systemów, 
które wymagają bardziej sformalizowanych kanałów komunika-
cji, by skutecznie zapobiegać ewentualnym problemom związa-
nym z zarządzaniem konfiguracją oprogramowania. Pozostałe 
obszary procesowe, poza „Analizą decyzyjną”, pozostają neu-
tralne względem podejścia XP. Analiza decyzyjna, obejmująca 
analizę i wspomaganie procesu podejmowania decyzji, jest ra-
czej mało prawdopodobna (skrajnie możliwa) na gruncie XP, 
choć nie wykluczona. 

Zarządzanie procesem

Wreszcie ostatnia grupa obszarów procesowych modelu CMMI, 
skupionych wokół kategorii „Zarządzania procesem”. Znalazły 
się tutaj takie obszary jak:

•  koncentracja na procesie organizacyjnym (ang. Organiza-

tional Process Focus) – przeprowadzanie ocena dojrzało-
ści istniejących procesów w organizacji (zdefiniowanie za-
kresu, metod oraz kryteriów oceny); analiza zachowań pro-
cesów pod kątem możliwości ich doskonalenia; planowanie 
działań związanych z poprawą procesów organizacyjnych; 
wdrażanie i ewaluacja nowych procesów w organizacji;

•  definicja  procesu  organizacyjnego  (ang.  Organizational 

Process  Definition)  –  definiowanie  procesów  w  organiza-
cji; określenie ich wzajemnych relacji; definiowanie możli-

background image

Extreme Programming i CMMI

wych cyklów życia projektów (kaskadowy, spiralny, przyro-
stowy etc.); ustanowienie kryteriów przykrawania procesów 
(ang. tailoring); ustanowienie ogólnodostępnego repozyto-
rium wszystkich procesów w firmie (ang. Process Assets Li-
brary
); a także miejsca przechowywania metryk;

•  szkolenia organizacyjne (ang. Organizational Training) – iden-

tyfikacja i analiza potrzeb szkoleniowych na poziomie ca-
łej organizacji; przygotowanie planu szkoleń (jego regular-
na aktualizacja); wybór dostawców szkoleń (wewnętrzni, ze-
wnętrzni); umożliwienie pracownikom dostępu do materia-
łów szkoleniowych (wewnętrzne biblioteki, zakup potrzeb-
nych książek, materiały video, płyty CD, e-książki); dostar-
czenie szkoleń (szkolenia wyjazdowe, wewnętrzne organizo-
wane przez innych pracowników, e-learning); ewaluacja do-
starczanych szkoleń;

•  wydajność  procesu  organizacyjnego  (ang.  Organizational 

Process Performance) – śledzenie zachowań procesów w 
organizacji; zbieranie i analiza metryk procesowych; spo-
rządzanie na ich podstawie tzw. linii bazowych (ang. basli-
ne
), które będą wyznaczały możliwe odchylenia od standar-
dowych zachowań procesów; wykorzystywanie narzędzi sta-
tystycznej analizy procesów;

•  innowacje i wdrożenia (ang. Organizational Innovation and 

Deployment) – doskonalenie istniejących procesów i stoso-
wanych technologii w organizacji; zbieranie i analiza propo-
nowanych rozwiązań; uruchamianie projektów pilotażowych 
wdrażających te rozwiązania; ewaluacja rezultatów. 

Obszary te mają bodajże najmniej wspólnego z podejściem 
Extreme Programming. Dzieje się tak, ponieważ metody agile’o-
we 
zorientowane są przede wszystkim na projekt i ludzi, którzy 
w nim pracują. Szczegółowe definiowanie procesów i procedur 
na poziomie organizacji, z punktu widzenia podejścia XP, mają 
małe znaczenie. Z obszarów tych jedynie dwa pozostają czę-
ściowo komplementarne: „Szkolenia organizacyjne” oraz „Inno-
wacje i Wdrożenia”. Projekty agile’owe, podobnie jak podejścia 
strukturalne, definiują potrzeby szkoleniowe, organizują ludziom 
niezbędne szkolenia, czy to związane z pełnionymi rolami w 

projekcie, czy też nową technologią, która jest wykorzystywana. 
Podobnie rzecz się ma z drugim obszarem procesowym – „In-
nowacje i wdrożenia”. Metoda XP jest metodą otwartą na wdra-
żanie nowych, innowacyjnych rozwiązań, zarówno w aspekcie 
technologii jak i samego procesu tworzenia oprogramowania – 
mających wpływ na jakość dostarczanego produktu.

Podsumowanie

Dyscyplina jest nieodzownym elementem wielu przedsięwzięć, 
niekoniecznie informatycznych. Muzycy, sportowcy muszą pod-
dawać się wielogodzinnym treningom, żeby osiągnąć sukces. 
Jednak, czymże byłaby dyscyplina bez kreatywności? W pierw-
szej części prezentowanego cyklu, zacytowana została książka 
Jim Collins Good to Great (Collins J. 2001, New York: Harper-
Collins), gdzie mowa jest o dwóch czynnikach, które decydu-
ją o sukcesie w biznesie – dyscyplinie i postawie przedsiębior-
czej (kreatywność). Jeżeli organizacja skupia się tylko i wyłącz-
nie na dyscyplinie, rezultatem może być zbytnia biurokratyzacja 
i stagnacja jej procesów wytwórczych. Z kolei przyjmowanie sa-
mej postawy przedsiębiorczości, może spowodować, iż począt-
kowy entuzjazm, związany z powstaniem firmy, może nie zostać 
podtrzymany w kolejnych latach jej funkcjonowania. Dobre or-
ganizacje to takie, w których wymiar dyscypliny jest tak samo 
obecny jak wymiar postawy przedsiębiorczej – na zasadzie rów-
nouprawnienia. 

Celem prezentowanych artykułów nie była chęć wtłocze-

nia wybranych praktyk agile’owych do świata tradycyjnych me-
tod tworzenia oprogramowania. Chodziło raczej o znalezienie 
pewnego rodzaju balansu/równowagi pomiędzy dwoma, dość 
odmiennymi sposobami tworzenia software’u. Wiele punktów 
wspólnych, które w trakcie tej analizy się ujawniło, stanowi dość 
silny impuls do wypracowania podejścia, łączącego w sobie, 
z jednej strony świat „lekkich” metod, reprezentowanych przez 
podejście określane mianem Extreme Programming; z drugiej – 
„tradycyjnych”, których istotę oddaje model CMMI. Jest to wy-
zwanie, przed którym stanęła dzisiaj inżynieria oprogramowania 
– wyzwanie, którego jednak nie sposób nie podjąć. Chodzi prze-
cież o lepszą jakość tworzonego software’u. Czyż nie? n

R

E

K

L

A

M

A