CMM – Yetenek Olgunluk Modeli ve CMMI

CMM ® Nedir?cmmi-logo

Capability Maturity Model (CMM) Türkçe anlamıyla Yetenek Olgunluk Modeli, Carnegie Mellon Üniversitesi’ne bağlı Software Engineering Institute (SEI, http://www.sei.cmu.edu/) yani Yazılım Mühendisliği Enstitüsü tarafından yazılım geliştirme süreçlerinde gerekli iyileştirmeleri yapabilmek amacıyla ortaya çıkarılmış bir modeldir. CMM, verimli bir yazılımın geliştirilmesi için ortaya çıkarıldığından ayrıca yazılım kalitesi ve yazılım kalite güvencesi yazılarını incelemenizde de fayda bulunmaktadır.

CMM, kalite ve verimlilik konusunda uzun çalışmaların ardından sürecin önemli olmasının görülmesiyle birlikte yazılımı ürün olarak ortaya çıkaran tarafın performansını değerlendirmek ve yazılım süreçlerinde olgunluğun tanımlanması için istenen bir projenin sonucu olarak 1991 yılında ilk sürüm olarak ortaya çıkmıştır. Kısaca bu model, organizasyonların ortaya çıkacak ürün ve uzun vadeli performans konusunda süreçlerini ve kaynaklarını olgunlaştırmasını hedeflemektedir.

İlk sürümde CMM olarak sadece yazılım için yayınlanan model, kaynak modelleri entegre etmek amacıyla SEI tarafından 1997 sektör konusunda bağımsız olacak şekilde farklı departmanlara hitap eden modellerin de entegre edilmesini amaçlayarak CMMI olarak yayınlanmıştır (Capability Maturity Model Integration, Bütünleşik Yetenek Olgunluk Modeli.)

CMMI – Yazılım Olgunluk Modeli (SW-CMM)

Organizasyondaki yazılım süreçlerinin olgunluğunu değerlendirmek ve olgunluk seviyesini geliştirmek için gereken temel unsurların belirlendiği bu modelde yazılım olgunluk modeli süreçleri 1’den 5’e kadar 5 ayrı seviye olarak tanımlanmıştır.

1. Initial (Başlangıç)

Tüm şirketler en az 1. olgunluk seviyesindedir. Genel olarak kaotik bir durum söz konusudur. Bu seviyede başarı kişisel çabalar ile oluşmaktadır. Herhangi bir kriz durumunda – varsa – planlar göz ardı edilir. Yazılım konusundaki yetenekler ise önceden öngörülemez.

2. Repeatable (Tekrarlanabilir)

Genel olarak nasıl yapmalıyız sorusu sorulmaktadır. Genellikle proje yönetimi konusundaki kontrol noktaları belirlenmiştir ve projeler önceden dokümante edilmiş olan proje planlarına göre yürütülmekte ve yönetilmektedir. Yazılım gereksinimleri bir şekilde yönetilir. Proje yönetim sistemi vardır ve bu sistem proje geliştirme sürecini etkin bir şekilde kontrol eder. Benzer uygulamalar için önceki başarıları tekrarlayabilmek mümkündür. Durum tanımlandığı kadarı ile yönetimin görüşüne açıktır.

3. Defined (Tanımlı)

Artık süreçler iyi tanımlanmış ve anlaşılmıştır. Tüm süreçler; standartlar, prosedürler, araçlar ve metotlarla açıklanmış ve anlatılmıştır. Standart süreç tanımları organizasyon boyutunda tutarlıdır. Projeler, tanımlı standart süreçleri uyarlama rehberlerine uygun olarak kendilerine uyarlayarak (tailoring) kendi süreçlerini oluşturur. Yani tüm projelerde standart yazılım geliştirme süreçlerinin uyarlanmış hali kullanılır. Bu seviyede, süreçler ii. seviyeye göre daha özenli ve detaylı olarak tanımlanmıştır. Bu seviyede şu tarz sorular sorulur: Nasıl ilerletebiliriz? Nasıl tasarlayabiliriz? Gereksinimleri nasıl yazabiliriz?

4. Managed (Yönetilen)

Bu seviyede sürecin başarılı olup olmadığını belirlemek için önem arz eden alt süreçler belirlenir ve bu alt süreçler istatistiksel ve diğer nicel ölçüm teknikleri ile kontrol edilir. Yani kalite ve süreç kontrolü için metrik toplanır. Kalite ve süreç performansının nicel hedefleri belirlenir ve bunlar süreçlerin yönetiminde bir kıstas olarak kullanılır. Nicel hedefler, tedarik makamlarının ihtiyaç ve istekleri, son kullanıcılar, organizasyon ve bu süreçleri geliştirenler temel alınarak belirlenir. Süreçler ölçülür ve ölçülebilen sınırlar içerisinde gerçekleştirilecek aktiviteler gerçek veriler temel alınarak tahmin edilebilir. Yani bu seviyede uygulamak yeterli değil aynı zamanda doğru uygulanıyor mu sorgulaması yapılmaktadır.

5. Optimizing (İyileştirilen)

Bu seviyede, süreçten gelen sayısal geri bildirimler ve teknolojilerden yararlanılarak sürekli iyileştirilme yapılır. Tüm organizasyon süreç iyileştirmeye odaklanmıştır. Yazılım geliştirme süreç yeteneği “Sürekli İyileşen” olarak tanımlanabilir. Bu seviye ile iv. seviye arasındaki en önemli ayrım, adreslenen süreçlerin değişme derecesidir. IV. seviyede süreçler, süreç değişkenliğinin özel nedenleri ve sonuçların istatistiksel öngörüsüne odaklanmışken v. seviyede süreçler, süreç değişkenliğinin genel nedenleri ve sürecin değişimini (süreç başarımından istatistiksel öngörüye) adreslemekle ilgilenir.

Sonuç

İlk seviye dışında kalan bütün seviyelerin o seviye için özellikle odaklandığı konular vardır ve seviyelerden üst seviyelere çıkıldıkça doğa olarak olgunluk artmaktadır.

Bu yazı size ne kadar faydalı oldu?

Değerlendirmek için bir yıldıza tıklayın!

Yazının sizin için faydalı olmadığını duymaktan dolayı müteessiriz...

Bu yazıyı geliştirmek isteriz!

Bu yazıyı nasıl geliştirebileceğimizi paylaşmak ister misiniz?