Kapabilitetsmodenhetsmodell (CMM) i programvareutvikling
⚡ Smart oppsummering
Capability Maturity Model (CMM) er en målestokk som brukes til å måle hvor moden en organisasjons programvareprosess er. Den ble utviklet ved Software Engineering Institute, og definerer fem nivåer som veileder team fra kaotisk, ad hoc-arbeid til kontinuerlig, optimalisert forbedring.

Hva er CMM?
Evne til modenhetsmodell brukes som en referanse for å måle modenheten til en organisasjons programvareprosess.
CMM ble utviklet ved Software Engineering Institute på slutten av 80-tallet. Det ble utviklet som et resultat av en studie finansiert av det amerikanske luftforsvaret som en måte å evaluere arbeidet til underkonstruktører.tractors. Later, basert på CMM-SW-modellen som ble laget i 1991 for å vurdere modenheten til programvareutvikling, ble flere andre modeller integrert med CMM-I.
Hva er Capability Maturity Model (CMM) nivåer?
Modellen definerer fem progressive modenhetsnivåer:
- Initial
- Repeterbar/administrert
- Definert
- Kvantitativt administrert
- Optimalisere
Hva skjer på ulike nivåer av CMM?
Tabellen nedenfor viser aktivitetene og fordelene på hvert nivå.
| Nivåer | Aktiviteter | Fordeler |
|---|---|---|
| Nivå 1 Initial |
|
Ingen. Et prosjekt er totalt kaos. |
| Nivå 2 administrert |
|
|
| Nivå-3 definert |
|
|
| Nivå-4 Kvantitativt administrert |
|
|
| Nivå-5 Optimalisering |
|
|
Følgende diagram gir en billedlig fremstilling av hva som skjer på forskjellige CMM-nivåer:
Hvor lang tid tar det å implementere CMM?
CMM er den mest ønskelige prosessen for å opprettholde kvaliteten på produktet for ethvert programvareutviklingsselskap, men implementeringen tar litt lengre tid enn forventet.
- CMM-implementering skjer ikke over natten.
- Det er ikke bare «papirarbeid».
- Typiske tidspunkter for implementering er:
- 3-6 måneder -> for forberedelse
- 6-12 måneder -> for gjennomføring
- 3 måneder -> for vurderingsforberedelse
- 12 måneder -> for hvert nytt nivå
Intern struktur av CMM
Hvert nivå i CMM er definert som en nøkkelprosessområde eller KPA, med unntak av nivå 1. Hver KPA definerer en klynge av relaterte aktiviteter, som når de utføres samlet, oppnår et sett med mål som anses som viktige for å forbedre programvarekapasiteten.
For ulike CMM-nivåer finnes det sett med KPA-er. For eksempel, for CMM-modell 2, er KPA-ene:
- REQM – Kravstyring
- PP – Prosjektplanlegging
- PMC – Prosjektovervåking og -kontroll
- SAM – Leverandøravtalehåndtering
- PPQA – Prosess og kvalitetssikring
- CM – Konfigurasjonsstyring
På samme måte har du for andre CMM-modeller spesifikke KPA-er. For å vite om implementeringen av en KPA er effektiv, varig og repeterbar, kartlegges den på følgende grunnlag:
- Forpliktelse til å prestere
- Evne til å prestere
- Utførte aktiviteter
- Måling og analyse
- Verifiserer implementering
Begrensninger for CMM-modeller
Modellen har også flere begrensninger:
- CMM bestemmer hva en prosess skal adressere i stedet for hvordan den skal implementeres.
- Den forklarer ikke alle muligheter for forbedring av programvareprosesser.
- Den konsentrerer seg om programvareproblemer, men vurderer ikke strategisk forretningsplanlegging, bruk av teknologier, etablering av en produktlinje og styring av menneskelige ressurser.
- Den forteller ikke hva slags virksomhet en organisasjon bør drive.
- CMM vil ikke være nyttig i et prosjekt som har en krise akkurat nå.
Hvorfor bruke CMM?
I dag fungerer CMM som et «godkjenningsstempel» i programvarebransjen. Det bidrar på ulike måter til å forbedre programvarekvaliteten.
- Det leder mot en repeterbar standardprosess og reduserer dermed læringstiden for hvordan man får ting gjort.
- Å praktisere CMM betyr å praktisere en standardprotokoll for utvikling, noe som betyr at det ikke bare hjelper teamet med å spare tid, men også gir et klart bilde av hva de skal gjøre og hva de kan forvente.
- Kvalitetsaktivitetene passer godt inn i prosjektet i stedet for å bli sett på som et eget arrangement.
- Den fungerer som en kommunikator mellom prosjektet og teamet.
- CMM-innsatsen er alltid rettet mot forbedring av prosessen.



