Badania, analizy i opiniePublikacje

CMMI czyli jak kontrolować rozwój oprogramowania

W globalnym środowisku zaostrzającej się każdego dnia światowej konkurencji, kontrola kosztów i skracanie terminów realizacji stała się priorytetem dla wszystkich dziedzin przemysłu. Niestety, trzeba to otwarcie przyznać, przestrzeganie harmonogramów nie jest najmocniejszym punktem branży oprogramowania. Klienci przywykli i akceptują przekroczenia budżetów i niedotrzymywanie terminów, niedopuszczalne w innych sektorach gospodarki. Istnieje jednak model rozwoju oprogramowania: CMMI, który może zostać wykorzystany jako efektywne narzędzie w rozwiązywaniu tego problemu.

Geneza CMMI

W dziedzinie kontroli kosztów i terminów sytuacja na rynku usług software’owych była zła chyba od zawsze. Na początku lat osiemdziesiątych zeszłego wieku,Department of Defense rządu Stanów Zjednoczonych ogłosił przetarg, którego celem było opracowanie listy referencyjnej punktów i kryteriów pozwalających na ocenę usługodawców współpracujących z rządem amerykańskim. Po długim, ale jednak bardzo potrzebnym okresie
dojrzewania, w 1991 ujrzała światło dzienne pierwsza wersja „Modelu dojrzałości organizacyjnej dla oprogramowania” (Capability Maturity Model). Model ten był owocem wspólnych prac Software Engineering Institute, jednostki badawczej finansowanej przez DoD i niezależnej organizacji Mitre Corporation.

Pierwotnie Capability Maturity Model stanowił po prostu listę tzw. dobrych praktyk, podzielonych na sektory zwane obszarami procesowymi (Zarządzanie Wymaganiami, Planowanie Projektu, itd), na których oparta była metoda oceny dojrzałości organizacji w dziedzinie rozwoju oprogramowania. Poziomy dojrzałości oceniane były w skali od 1 (początkowy) do 5 (w ciągłym ulepszaniu). Dwa lata później, SEI opublikował ulepszoną wersję modelu: CMM 1.1

Bardzo szybko dobra atmosfera wokół modelu poprawy jakości procesów rozwoju oprogramowania przekroczyła krąg zainteresowanych jego zastosowaniem w tej dziedzinie, co zaowocowało pojawieniem się jego „klonów”: SE-CMM (w dziedzinie System Engineering), SA-CMM (Software Acquisition), IDP-CMM (Integrated Product Development), a nawet People-CMM (Zarządzanie Zasobami Ludzkimi). Doszło w końcu do tego, że trzeba było zmienić nazwę oryginalnego modelu na SW-CMM (Software CMM), aby uniknąć pomyłek. Oprócz rodziny CMM, mniej więcej w tym samym czasie, narodziły się również inne modele, na przykład SPICE (Software Process Improvement and Capability Determination) organizacji ISO, czy też SECAM (Systems Engineering Capability Assessment Model) zaprojektowany przez International Council on System Engineering (INCOSE).

Zwielokrotnienie modeli (zarówno konkurencyjnych wobec siebie, jak i dopełniających się wzajemnie) spowodowało efekt odwrotny do zamierzonego, jakim była racjonalizacja procesów. Z tego powodu postanowiono scalić ze sobą wszystkie modele używane do tej pory, w jednym, nazwanym na tą okazję, zintegrowanym CMM (Capability Maturity Model Integration: CMMI). Jedyną domeną niezintegrowaną (jeszcze?) z najnowszą wersją CMMI (z roku 2002) są zasoby ludzkie.

Warto zauważyć, iż aby uniknąć niepotrzebnych konfliktów, norma ISO/IEC15504 (powstała na bazie wspomnianego już SPICE) definiuje jedynie zbiór wymagań potrzebnych do oceny organizacji, a w szczególności wymaga używania kompatybilnego „modelu referencji”. Jednakże sama norma nie żąda, aby modelem referencji był model ISO. CMMI jako model referencji jest zgodny wymaganiami normy i w związku z tym może być używany jako alternatywa do modelu ISO.

CMMI w Polsce
Na świecie CMMI zdobywa rzesze zwolenników każdego roku [1]. W Polsce, gdzie niepodzielnie króluje ISO 9001, nie ma jeszcze wielu organizacji, które używają tej metody. Wystarczy kilka sekund z wyszukiwarką Google: hasło „wdrożenia CMMI” przynosi mniej niż dziesięć rezultatów w styczniu 2005 roku. Pojawia się więc doskonała okazja, aby zdobyć przewagę konkurencyjną wdrażając model, który dużo lepiej odpowiada rzeczywistości sektora i pozwala na rzeczywiste podniesienie jakości i kontrolę kosztów.

Jeden model, dwie reprezentacje
Model CMMI stworzony został wokół pewnej liczby tak zwanych obszarów procesowych (25 w pełnej wersji, istnieją jednak uproszczone wersje zaadaptowane do konkretnych zastosowań), do których przyporządkowana została lista celów i praktyk. Rozróżniamy cele ogólne i szczegółowe, w zależności od tego, czy są one używane we wszystkich obszarach procesowych, czy też przyporządkowane do jednego z nich. Podobnie jest z poszczególnymi praktykami.
Istnieją dwie reprezentacje jednego modelu CMMI, odpowiadając dwóm odmiennym punktom widzenia: reprezentacja ciągła (continous representation) i stopniowana (staged representation). Obie wykorzystują oczywiście tę samą listę obszarów procesowych, ale robią to w odmienny sposób.

Reprezentacja ciągła

W tej reprezentacji obszary procesowe zostały zebrane w czterech kategoriach: Zarządzanie procesami (5 obszarów), Zarządzanie projektem (8 obszarów), Inżynieria (6 obszarów) i Wsparcie (6 obszarów procesowych). Do każdego obszaru procesowego przyporządkowana jest skala oceny poziomu dojrzałości, od 0 do 5:

Poziom Opis
Poziom 0 – Niekompletny Cele przyporządkowane do obszaru procesowego nie są realizowane.
Poziom 1 – Wykonywany Cele są realizowane, ale ta realizacja zależy w dużej mierze od poszczególnych osób a nie organizacji jako takiej.
Poziom 2 – Zarządzany Realizacja celów obszaru opiera się na wcześniej ustalonym planie.
Poziom 3 – Zdefiniowany Na poziomie organizacji wdrożona została polityka normalizująca procesy.
Poziom 4 – Zarządzany ilościowo Realizacja procesu jest kontrolowana za pomocą narzędzi statystycznych i technik ilościowych.
Poziom 5 – Optymalizowany Proces optymalizowany to realizowany i kontrolowany proces, który jest
w sposób ciągły adaptowany do zmieniających się celów i strategii
organizacji.

Używając reprezentacji ciągłej można w sposób precyzyjny ustalić profil danej organizacji poprzez niezależną analizę każdego obszaru procesowego. Ponieważ w każdym z nich poziom dojrzałości jest inny, można ustalić listę mocnych i słabych stron danej organizacji.

Reprezentacja stopniowana

Celem reprezentacji stopniowanej jest przedstawienie stanu danej organizacji jako całości, a nie jej dojrzałości w każdym z obszarów procesowych. 25 obszarów podzielonych jest na poziomy dojrzałości według skali od 1 do 5; każdy z poziomów posiada odpowiednio 0, 7, 14, 2 i 2 obszary procesowe. Poziomy te posiadają następujące charakterystyki:

Poziom Opis
Poziom 1 – Początkowy Procesy są nieprzewidywalne i niekontrolowalne.
Poziom 2 – Zarządzany Ustalone zostały procedury dla każdego projektu osobno.
Poziom 3 – Zdefiniowany Ustalone zostały procedury na poziomie organizacji.
Poziom 4 – Zarządzany ilościowo Organizacja ustaliła listę celów jakościowych i ilościowych i posiada narzędzia pozwalające na kontrolę ich wykonania.
Poziom 5 – Optymalizowany Procesy są w usprawniane w sposób ciągły.

Używając tej reprezentacji ocenia się poziom dojrzałości organizacji licząc ilość obszarów procesowych, w których cele są wypełnione. Dopóki nie będzie to 7 obszarów poziomu drugiego, organizacja zostaje na poziomie początkowym. Po dojściu do poziomu drugiego, należy wypełnić cele 14 sektorów poziomu trzeciego, aby przejść wyżej i tak dalej, aż do poziomu piątego. Dzięki takiemu podejściu, można również w łatwy sposób ustalić strategię usprawniania procesów, narzucając sobie kolejność i daty realizacji celów.

Wybór reprezentacji

Obie reprezentacje (ciągła i stopniowana) pozwalają na spojrzenie na ten sam problem: podnoszenia jakości procesów, z różnych punktów widzenia. Reprezentacja ciągła daje dużą dowolność w wyborze obszarów procesowych, które dana organizacja chce zmodernizować; żadna kolejność nie jest narzucona z góry. Niestety, istnieje poważne ryzyko, że wybór ten okaże się zbyt trudny i firma, stojąc przed olbrzymim zadaniem usprawniania procesów nie będzie wiedzieć od czego rozpocząć. Co gorsza, samo ustalenie poziomu dojrzałości w każdym obszarze może okazać się zbyt subiektywne, aby było rzeczywiście przydatne.

Druga reprezentacja: stopniowana, jest mniej elastyczna, a ponieważ ustala tylko poziom globalny dojrzałości, nie pozwala w efekcie na określenie tego poziomu z równie dużą dokładnością, jak reprezentacja ciągła. Z drugiej strony jednak, prowadzi ona poprzez proces zwiększania dojrzałości w sposób przejrzysty, narzucając kolejność poprawy jakości obszarów procesowych. Oprócz tego łatwiej jest ją wdrożyć: dla każdego obszaru procesowego wystarczy jedynie zdecydować, czy jego jakość jest uznana za wystarczającą, czy nie.

Reprezentacja ciągła jest zatem bardziej przydatna dla małych struktur, w których istnieje skuteczna kontrola wszystkich mechanizmów organizacji i gdzie ryzyko pogubienia się w mało znaczących detalach jest niewielkie. Reprezentacja stopniowana jest często dobrym wyborem dla dużych struktur, gdzie prowadzi do otrzymania spójnego i syntetycznego spojrzenia na procesy organizacji, dając przy tym do ręki zbiór sprawdzonych reguł, które należy stosować.

Należy również zauważyć, że przejście z reprezentacji ciągłej na stopniowaną jest stosunkowo łatwe: wystarczy dla wszystkich obszarów procesowych z danego poziomu dojrzałości ustalić czy ich dojrzałość może być uznana za wystarczającą czy nie.

Wdrożenie CMMI

Metodologia CMMI proponuje zbiór reguł pozwalających na ustalenie poziomu dojrzałości organizacyjnej przedsiębiorstwa i w związku z tym, jakości jego usług. Model prezentuje listę celów i praktyk, których przestrzeganie dla każdego obszaru procesowego pozwala ustalić jaki jest poziom jakości tego obszaru. Samo wdrożenie CMMI na poziomie całej organizacji jest procesem długotrwałym, który musi odbywać się równocześnie na wszystkich poziomach zarządzania. Wdrożenie odbywa się w kilku etapach, które przedstawione są krótko poniżej.

Definicja zadań

Ta faza wdrożenia realizowana jest na poziomie zarządu organizacji. Jej celem jest zdefiniowanie powodów decyzji o wdrożeniu, przewidywanych korzyści z wdrożenia CMMI, listy zasobów, które zostaną użyte, itd. Podczas tej fazy wybrana zostaje reprezentacja i ustalany jest harmonogram wdrożenia.

Uczulanie

Inercja przeciwna zmianom, obecna w każdej organizacji, powoduje, że podczas wdrożenia pojawiają się problemy na różnych poziomach przedsiębiorstwa. Podczas fazy „uczulania” prezentacje skierowane osobno do poszczególnych komórek organizacyjnych firmy pozwalają z wyprzedzeniem reagować na trudności, które mogą pojawić się podczas wdrożenia.

Audyt wewnętrzny

Wewnętrzny audyt stosowanych praktyk i metod, przeprowadzony na początku wdrożenia, pozwolą na ustalenie poziomu (możliwości lub dojrzałości, w zależności od wybranej reprezentacji) organizacji. Audyt polega na ogół na przeprowadzeniu ankiety wśród personelu, rozmowach z wybranymi osobami, jak i na analizie używanych metod i narzędzi.

Wybór sektorów priorytetowych

Opierając się na wynikach audytu wewnętrznego i w zależności od strategii całej organizacji, dyrekcja firmy może wybrać sektory, których poziom dojrzałości powinien zostać traktowany w sposób priorytetowy. Definicja priorytetów pozwoli na ustalenie dokładnego planu działania.

Wdrożenie

Następnym etapem jest już samo wdrożenie modelu według opracowanego planu działania: opracowanie nowych dyrektyw, instalacja nowych narzędzi, opis nowych metod działania, szkolenia personelu etc. Na tym poziomie okazuje się również jaki jest rzeczywisty poziom akceptacji nowej strategii kontroli jakości przez całość organizacji.

Bilans

Na zakończenie wdrożenia, należy opracować bilans operacji, który pozwolą z jednej strony na ocenę skutków wprowadzanych zmian, zarówno pozytywnych jak i negatywnych, a z drugiej na ustalenie przyszłych kroków procesu podnoszenia jakości w firmie.

Zagrożenia i szanse

Wdrożenie CMMI (jak każdej innej metodologii racjonalizującej procesy) niesie za sobą pewne ryzyko. Największym zagrożeniem jest to, co wspólne jest każdemu wprowadzaniu dowolnego przekształcenia: bezwład i naturalny ludzki opór wobec zmian. Aby zminimalizować tą groźbę, należy być pewnym rzeczywistego i bezwarunkowego poparcia całego zarządu organizacji (co samo w sobie nie jest łatwe, mimo iż decyzja o wdrożeniu podejmowana jest zazwyczaj przez wszystkich członków zarządu). Oprócz tego, zaangażowanie i aktywne włączenie się w proces podnoszenia jakości jak największej ilości aktorów w przedsiębiorstwie zależy głównie od nacisku, jaki położony został w fazie uczulania.

Drugie zagrożenie związane jest ze względnym skomplikowaniem samego modelu, który za każdym razem trzeba adaptować, aby odpowiedzieć na rzeczywiste problemy organizacji. Chęć robienia wszystkiego na raz może przekształcić się w zadanie niewykonalne i pogrzebać na wstępie wszystkie późniejsze wysiłki w tym kierunku. Należy ograniczać swoje wymagania i ambicje i za każdym razem poruszać się małymi krokami, powtarzając kilkukrotnie cały proces modernizacji.

Niezwykle istotne jest, aby mieć świadomość, że CMMI nie jest metodologią sensu stricto, lecz modelem: opisuje on co należy zrobić, ale nie mówi o tym, jak to zrobić. Nie należy więc łudzić się, że CMMI będzie cudownym remedium na wszystkie bolączki danej organizacji. Każda z nich musi samodzielnie definiować metody i narzędzia, które należy wdrożyć, aby wypełnić warunki modelu.

Będąc świadomym wszystkich zagrożeń, należy zauważyć jednocześnie, że zyski, jakie przynosi prawidłowe wdrożenie modelu usprawniania procesów są niezaprzeczalne. Wdrożenie takie jest doskonałą okazję na ustalenie, czy wszystkie praktyka stosowane w organizacji są potrzebne i, co najważniejsze, optymalne. Sam fakt, że CMMI zmusza do dogłębnej analizy procesu rozwoju oprogramowania, pozwala na uzyskanie lepszego obrazu tego procesu.

Po drugie, zastosowanie w procesie poprawy konkretnej listy obszarów procesowych musi zaoowocować lepszą kontrolą kosztów, terminów dostaw i jakości produktów firmy. Naturalnie, zależy to w dużej mierze od zaangażowania, z jakim nowe metody zostaną użyte przez decydentów w firmie i od motywacji całości personelu na wszystkich szczeblach hierarchii.

Podsumowując: z racjonalizacji procesów rozwoju oprogramowania wynika zwiększenie zaufania klientów, którzy odczują bezpośrednio zmniejszenie ryzyka w kontaktach z daną organizacją. Najistotniejszym zagadnieniem podczas wdrożenia takiej racjonalizacji jest więc komunikacja: wewnętrzna, tak jak już wspomnieliśmy, ale i zewnętrzna, pozwalająca na uwypuklenie nowego atutu, jakim dysponuje Państwa firma.

Autor: Maciek Borówka