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.

  • 📊 Definisjon: CMM er en målestokk som måler modenheten til en organisasjons programvareutviklingsprosess.
  • 🏛️ Opprinnelse: Den ble utviklet ved Software Engineering Institute på slutten av 1980-tallet for det amerikanske luftforsvaret.
  • 🪜 Fem nivåer: Initial, Administrert, Definert, Kvantitativt Administrert og Optimalisering danner modenhetsstigen.
  • Implementeringstid: Full adopsjon tar vanligvis måneder per nivå, ikke en endring over natten.
  • 🧩 Viktige prosessområder: Hvert nivå, unntatt nivå 1, er definert av nøkkelprosessområder (KPA-er) som grupperer relaterte mål.
  • ⚠️ Begrensning: CMM angir hva en prosess skal adressere, ikke hvordan den skal implementeres, og ignorerer forretningsstrategi.

Capability Maturity Model (CMM)

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.

Evne til modenhetsmodell

Hva er Capability Maturity Model (CMM) nivåer?

Modellen definerer fem progressive modenhetsnivåer:

  1. Initial
  2. Repeterbar/administrert
  3. Definert
  4. Kvantitativt administrert
  5. Optimalisere

Capability Maturity Model (CMM) nivåer

Hva skjer på ulike nivåer av CMM?

Tabellen nedenfor viser aktivitetene og fordelene på hvert nivå.

Nivåer Aktiviteter Fordeler
Nivå 1 Initial
  • På nivå 1 er prosessen vanligvis kaotisk og ad hoc.
  • En evne karakteriseres på grunnlag av individene og ikke av organisasjonen.
  • Fremgang ikke målt.
  • Produkter som utvikles er ofte forsinket og overskrider budsjett.
  • Store variasjoner i tidsplan, kostnader, funksjonalitet og kvalitetsmål.
Ingen. Et prosjekt er totalt kaos.
Nivå 2 administrert
  • Kravstyring
  • Estimer prosjektparametere som kostnad, tidsplan og funksjonalitet
  • Mål faktisk fremgang
  • Utvikle planer og prosess
  • Programvareprosjektstandarder er definert
  • Identifisere og kontrollere produkter, problemrapporter, endringer osv.
  • Prosesser kan variere mellom prosjekter
  • Prosesser blir lettere å forstå
  • Ledere og teammedlemmer bruker mindre tid på å forklare hvordan ting gjøres og mer tid på å gjennomføre det.
  • Prosjekter er bedre estimert, bedre planlagt og mer fleksible
  • Kvalitet er integrert i prosjekter
  • Kostnadene kan være høye i starten, men går ned over tid
  • Krever mer papirarbeid og dokumentasjon
Nivå-3 definert
  • Avklare kundekrav
  • Løse designkrav, utvikle en implementeringsprosess
  • Sørger for at produktet oppfyller kravene og den tiltenkte bruken
  • Analyser beslutninger systematisk
  • Rett opp og kontroller potensielle problemer
  • Prosessforbedring blir standarden
  • Løsningen går fra å være "kodet" til å bli "konstruert"
  • Kvalitetsporter vises gjennom hele prosjektarbeidet med hele teamet involvert i prosessen
  • Risikoer reduseres og tar ikke teamet på senga
Nivå-4 Kvantitativt administrert
  • Styrer prosjektets prosesser og delprosesser statistisk
  • Forstå prosessytelse, administrere organisasjonens prosjekt kvantitativt
  • Optimaliserer prosessytelsen på tvers av organisasjonen
  • Fremmer kvantitativ prosjektledelse i en organisasjon
Nivå-5 Optimalisering
  • Oppdag og fjern årsaken til defekter tidlig
  • Identifiser og implementer nye verktøy og prosessforbedringer for å møte behov og forretningsmål
  • Fremmer organisatorisk innovasjon og distribusjon
  • Gir drivkraft til årsaksanalyse og oppløsning

Følgende diagram gir en billedlig fremstilling av hva som skjer på forskjellige CMM-nivåer:

Ulike nivåer av CMM

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:

  1. Forpliktelse til å prestere
  2. Evne til å prestere
  3. Utførte aktiviteter
  4. Måling og analyse
  5. 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.

Spørsmål og svar

CMM er den opprinnelige modellen som hovedsakelig fokuserte på modenhet i programvareprosesser. CMMI (Capability Maturity Model Integration) er etterfølgeren, og dekker programvare, maskinvare og tjenester med et integrert rammeverk. De fleste organisasjoner tar i dag i bruk CMMI i stedet for den eldre CMM.

CMM er mye brukt innen IT- og programvaretjenester, forsvar, luftfart, bank og telekom. Enhver organisasjon som outsourcer eller leverer kompleks programvare bruker det til å måle kvalitet, redusere risiko og demonstrere pålitelige, repeterbare prosesser til kunder.

Ja, selv om CMMI i stor grad har erstattet den opprinnelige CMM. Modenhetsvurderinger er fortsatt relevante for organisasjoner som trenger å bevise prosessdisiplin i outsourcing av tjenester.tracts, offentlige anbud og kvalitetsrevisjoner, selv ved siden av Agile og DevOps-praksiser.

AI kan analysere prosessdata, oppdage feil tidlig og forutsi risikoer knyttet til tidsplaner eller kostnader. Ved å automatisere måling og rapportering støtter den de høyere CMM-nivåene, der organisasjoner er avhengige av kvantitativ styring og kontinuerlig, datadrevet forbedring.

Ja. AI-verktøy automatiserer testing, kodegjennomgang og prosessovervåking, noe som gjør praksis repeterbar og målbar. Dette hjelper team med å gå fra ad hoc-arbeid til definerte og optimaliserte nivåer, selv om menneskelig styring fortsatt er nødvendig for å opprettholde gevinsten.

Oppsummer dette innlegget med: