CMMI’nın açılımı nedir?
Capability Maturity Model Integration ( Entegre Yetenek Olgunluk Modeli)
CMMI modeli kim tarafından oluşturuldu?
ABD Savunma Bakanlığı ( Department of Defense, DoD) için Carnegie Mellon Üniversitesi bünyesindeki Software Engineering Institute (SEI) tarafından oluşturuldu. Açık bir standart/model olmayıp tüm hakları SEI’ ya aittir.
CMMI’nın oluşturulma amacı nedir?
CMMI iki temel amaç için oluşturulmuştur:
- Yazılım geliştiren kuruluşlardaki süreç iyileştirme çabalarına rehberlik oluşturmak.
- Yazılım işlerini yapmak üzere mukavele yapılacak nitelikli/ehliyetli şirketlerin belirlenmesine yardım etmek.

Amerikan Savunma Bakanlığı Neden Böyle Bir Model Oluşturulmasını İstedi?
Amerikan Savunma Bakanlığı(DOD) dünyanın en büyük yazılım müşterilerinden / tüketicilerinden birisidir. Amerikan Savunma Bakanlığı büyük paralara şirketlere ihale ettiği birçok yazılım projesinden büyük maddi zararlara uğramıştır. Artık daha az kayba uğramak için ihalelere giren şirketlerin değerlendirebileceği bir kıstas istemiştir.
CMMI bir yazılım geliştirme süreci midir?
Hayır! CMMI bir yazılım geliştirme süreci değildir! CMMI etkin ve verimli bir sürecin tipik özelliklerini
ana hatlarını tanımlar:
- Süreç iyileştirmesi için bir temel sağlar.
- Özel ve geçici olarak kurulmuş, olgunlaşmamış bir süreçten, olgun disiplinli bir sürece evrimsel bir iyileştirme yolu tanımlar.
CMMI süreçlerin iyileştirilmesi için ne yapılması gerektiğini söylerken bunların nasıl yapılacağına dair detaylara
girmemektedir.
CMMI Modelinin yapısı nasıldır?
CMMI Modelinin temel yapısal elemanı Süreç Alanıdır (Process Area).Örneğin Proje Planlaması, Gereksinim Yönetimi, Risk Yönetimi birer süreç alanıdır.
Model her süreç alanı için birtakım hedefler(goals) tanımlamaktadır. Bu tanımlamayı yaparken hedefleri özel ( specific goals) ve genel (generic goals) olmak üzere ikiye ayırmaktadır. Genel hedefler öyle bir şekilde ifade edilir ki birden fazla süreç alanına uygulanabilir. Özel hedeflerin her biri ise belirli bir süreç alanına karşılık gelir. Örneğin Proje Planlanması süreç alanına ait Proje Planını Geliştir hedefi özel bir hedeftir. Peki, bu hedeflere nasıl ulaşılacak? CMMI her bir hedefe ulaşılması için bir takım pratikler (practices) atar. Örneğin Proje Planını Geliştir hedefi için uygulanacak pratikler: Bütçeyi ve Takvimi Sapta, Proje Risklerini Belirle, Proje Kaynaklarını Planla sayılabilir. CMMI ‘nın resmi söyleminde bu pratiklerin bilinen ve başarı ispatlanmış uygulamalar olduğu ifade edilmektedir.
Ayrıca CMMI, hedeflere ulaşıldığı sürece alternatif pratiklerin de uygulanmasına müsaade etmektedir.


CMMI Modelinin kaç çeşit gösterimi vardır?

CMMI Modelinin iki gösterimi mevcuttur. Her iki gösterimdeki içerik aynı olmasına karşın bu verinin gösterimi ve düzenlenmesi birbirinden farklıdır.
Farklı gösterimlerin amacı kurumların farklı iyileştirme hedeflerini takip edebilmelerini olanak sağlamaktır.
- Staged ( Basamaklı) Gösterim: Kurumun standart sürecinin olgunluğunu gösterir.Bu gösterimim cevap verdiği temel soru: Kurum genelinde iyileştirme sağlayabilmek için izlemem gereken doğru sıralama nedir?Bu gösterimde 5 adet Olgunluk Seviyesi (Maturity Level) tanımlanmıştır. Her bir olgunluk seviyesi bir sonraki seviyedeki süreçlerin etkin bir şekilde gerçekleştirilmesi için gerekli olan alt yapıyı sağlar.
- Continuous (Sürekli) Gösterim: Tek bir Süreç Alanındaki (Process Area) iyileştirmeyi gösterir.Bu gösterimim cevap verdiği temel soru: Belirli bir X süreç alanında iyileştirme sağlayabilmek için izlemem gereken doğru sıralama nedir? Bu gösterimde 6 Adet Yetenek /Ehliyet (Capability) Seviyesi vardır.
CMMI Modelindeki Süreç Alanları Nelerdir?
CMMI Modelinde toplam 22 adet süreç alanı vardır. Bu süreçler, süreçlerin dahil bulunduğu kategori ve ilişkili olduğu Olgunluk Seviyesi
aşağıdaki tabloda gösterilmiştir:

Kaç tane CMMI modeli var?
Şu an itibariyle (2008–03–20) 3 adet CMMI modeli vardır:
- CMMI for Development (CMMI-DEV) ürün(yazılım, donanım) ve servis geliştiren kuruluşlar için.
- CMMI for Acquisition (CMMI-ACQ) ürün ve servislerin tedarik/edinme sürecinde tedarikçi firmalara rehberlik sunan (bunların başlatılması, yönetilmesi) bir modeldir.
- CMMI for Services (CMMI-SVC) servislerin oluşturulması, sunulması ve yönetilmesini kapsayan CMMI modelidir.

CMMI sadece sürece mi odaklanır?
Uzun yıllar öyleydi! Fakat gelen haklı eleştiriler üzerine İnsan boyutu ayrıca ele alınmıştır. Bunun üzerine People Capability Maturity Model (People CMM) oluşturulmuştur.

CMMI 5 seviyesindeki bir şirket nirvanaya mı ulaşmıştır?

CMMI 5 olan bir şirketin yazılım projelerinde başarılı olması neredeyse garanti midir?Hayır! CMMI olgunluk seviyesini yükseltirken işe ait beklentilerini gerçekleyen şirketler olduğu gibi, yüksek bir olgunluk seviyesine ulaşmasına rağmen maliyet ve takvimi aşan, kalitesi düşük olan ürünleri teslim eden şirketler de olduğunu görülmüştür.
Bir benzetme yaparsak ISO Standardından:
Çevrenize bir bakın; aldığınız sütün, suyun, çayın, pirincin, sucuğun, musluk kafasının, borunun vb. maddelerin etiketleri üzerinde ISO XXX standartları mevcuttur.
Sizce bu standartları veren kuruluşlar sütün iyisinden tutun musluk kafasının kalitesine kadar olan geniş bir yelpaze içinde iyi sütün nasıl olduğu ya da iyi musluk kafasının nasıl olduğunu bilen kişiler mi? Hayır. Örneğin ben bir pirinç üreticisi olarak dersem ki benim pirincimin 1 kilogramında 100 gram taş 2 adet kurtçuk olacak ve daha sonra bu ürünü nasıl üreteceğimin süreçlerini belirler bunlara yazılı hale getirir ve bu belgelere göre süreç adımlarını tekrar edilebilecek şekilde yeniden uygulayarak sonucunda da kilogramında 100 gram taş ve 2 adet kurtçuk olan pirinç üretirsem ISO için bir sorun yoktur. (en azından teorik olarak).
Teorikte, kötü hantal gerçekçi olmayan süreçleri tanımlayıp, bunları daha sonra belgeleyip, bu işe yaramayan süreçleri herkese uygulatıp, zamanında bitmeyen, bütçesini aşmış kalitesiz yazılımlar üretip, süreci bizzat uygulayanların bu süreçlere ait geri bildirimlerini çeşitli yollarla bertaraf edip (özellikle çalışanların iş, onaylanmama, dışlanma korkusu olduğu açık olmayan genellikle sıkı hiyerarşik ilişkilerin hâkim olduğu şirket ortamlarında) CMMI 3 hatta CMMI 5 olabilirsiniz.
Eğer tek amacınız bir olgunluk seviyesi almak ise alacağınız tek şey de budur! [ Ki şirketinizin ş alabilmesi için sadece bunu almak isteyebilirsiniz ve bu da kendi içinde mantıklı bir davranıştır] Ama alamadığınız tek şey ise “İyi Bir Yazılım” olur.
SEI kurumların olgunluk seviyesini onaylayan ve sertifikalandıran bir kurum mudur?
HAYIR! SEI yazılım kurum ve kuruluşlara herhangi bir olgunluk seviyesini gösteren sertifika vermemektedir! SEI sadece değerlendiricileri (appraisers) değerlendirme yapabilmeleri için lisanslamakta, yetkilendirmededir.
Süreç kısaca şöyle işlemektedir: Bir değerlendirme takımı (SEI’den lisans almış ve yetkilendirilmiş kişilerin liderliğini yaptığı) bir hafta veya daha fazla bir süreyi sizin sistem / yazılım mühendisliğinize ilişkin pratiklerinizi değerlendirmek için kurumuzda geçirir. Değerlendirmenin sonucunda da değerlendirme takımı bulgularını size sunar. Eğer onaylanmış değerlendirme planında, değerlendirmenin sonucunda bir olgunluk seviyesi belirtiminin yapılması istenmişe, sonuçta verilen bulgulara ait sunuma belirli bir olgunluk seviyesini ait hedefleri sağlayıp sağlamadığınız belirten cümle eklenir.
Herhangi bir kuruma CMMI sertifikası verilmemektedir: ortada sertifika falan yoktur. Dolayısıyla SEI’ nın bir sertifikalandırması da söz konusu değildir. Ayrıca SEI kendisine rapor edilen olgunluk seviyesi bildirimlerinin doğruluğunu ayrıca teyit etmemektedir: ilerde de böyle bir teyit mekanizmasını kurmak gibi bir niyetleri de kesinlikle söz konusu değildir.
Süreç iyileştirme modeli olarak CMMI kullanmaya karar verdim. Bu durumda RUP/UP bana faydalı olur mu? Peki ya CMMI ve Çevik Süreçler?
CMMI bir süreç iyileştirme modeli olduğundan sizin zaten bir sürecinizin var olduğunu varsaymaktadır. [ Yazılı olup olmaması önemli değil] Zaten olmayan bir süreci iyileştiremezsiniz.
Kötü bir süreci ölçülebilir hale getirip geri beslemelerle bunu düzeltmeye çalışmak yerine baştan kendinize göre özelleştirdiğiniz bir UP sürecini kullanabilirsiniz! UP / RUP CMMI’daki buyurgan bir şekilde belirtilen (ne yapılması gerektiği) yazılım geliştirme ile ilgili ifadelerin birçoğunun nasılları içermektedir.(hepsini değil). Örneğin Gereksinimlerin Elde Edilmesi ve Yönetilmesi ile ilgili UP size CMMI’daki birçok pratiğin nasılı verir. Fakat UP CMMI’daki tüm süreç alanları içermemektedir: örneğin SUPPLIER AGGREMENT MANAGEMENT süreç alanı UP’nin şu anki içeriği / kapsamı dışındadır.
Çevik süreçlere ait kendini ispat etmiş birçok pratik vardır: Birim Test(Unit Testing), Sürekli Entegrasyon, Refactoring vb. Süreçlere ait pratikleri CMMI süreç alanlarındaki hedeflere ulaşmak için kullanabilirsiniz.Bu pratikleri alet çantanıza koymanızda hiçbir sakınca yoktur.
Her ne kadar CMMI ve Çevik Süreç(Agile) birlikteliğine dair bazı çalışmalar ve makaleler görsekte aslında CMMI’nın temelinde yatan felsefe ile Çevik Süreçlerin arasında ciddi bir doku uyuşmazlığı vardır.Çevik süreçler sadece pratiklerden oluşan bir alet kutusu değildir. Pratikleri anlamlı kılan çevik süreçlerin temel değerleri ve prensipleridir.[ bunları ötesinde içinde bulunulan "bağlam"]. Neden bu pratiği uyguluyorum? sorusu ceveplanmadan bu pratikleri uygularsanız"en iyi pratikleri" uygulayan "devlet dairelerine" dönersiniz.

Eee...Karacaoğlan'ın SEI ya da CMMI ile ne alakası var?
Süreç kağıt üzerinde olan "kontrol listeleri" değildir. Bizzat işleyen, iş yapma tarzını belirleyen yapılardır.Süreçin iyi olup olmamasını belirleyen tek basit kıstas çıktısıdır. Bizim çıktımız: yazılım. [ ya da size göre ne ise]. "Çıktının kalitesini söyle, sana sürecinin kalitesini söyleyim".
Genellikle süreç iyileştirme çalışmlarında şöyle bir durum oluşmaktadır:
- Bizzat işi yapanları( elini kirletenleri) küçümseyen, onların deneyimlerini "ciddiye almayan", onlarla bir araya gelip gelip onları dinlemeyen, masa başı "süreç yazıcıları".
- Kalite ve süreçlerini "sırtında" yük, kalite grubunu da "bir kaç egzantirik terim bilen" "boş adamlar" olarak gören "bıkkın" bir geliştirme ekibi.
Bırakın süreciniz "raftan insin", sanal kağıt ortamdaki "kusursuz" akışını birde bizzat sizin şirketinizin gerçek ortamında/kültüründe "kanlı-canlı" bir şekilde gerçekleştirsin, böylece neyin işe yarayıp neyin yarmadığını,bunun nedenlerini bizzat deneyerek, yaşayarak görün ve "bereberce" çözümler üretin.Süreci ve sonuçlarını görünür kılın: insanların işini kolaylaştırıyormusunuz yoksa "insanları" saçmalıklara mı boğuyorsunuz.Hata yaparak öğrenirsiniz.
Kalite sürecinde "Karacaoğlan" ekolü işe yarar :-{ )
Bakınız Karacaoğlan: http://tr.wikipedia.org/wiki/Karacaoğlan
," Düşten çok gerçeğe yaslanır. Çıkış noktası yaşanmışlıktır. .....Onun için sevgili, düşlenen, bin bir hayal ile var edilen, ulaşılmazlığın umutsuzluğuyla adına türküler yakılan bir varlık değildir; doğa ve insan ilişkileri içindedir. Onu, yaşamdan ve bu ilişkilerden soyutlamadan verir. İlk kez onun şiirinde sevgililerin adları söylenir: Elif, Anşa, Zeynep, Hürü, Döndü, Döne, Esma, Emine, Hatice...Karacaoğlan bunların kimine bir pınar başında su doldururken, kimine helkeleri omuzunda suya giderken, kimine de yayık yayıp halı dokurken görüp vurulmuştur."
Bakınız, Divan şiirinin beyitleri arasında, İskender Pala, http://www.iskenderpala.net/yeni/calismalar.asp
"...Şair çaresiz ve donakalmış hayatını şiire adamış, onca gazel yazmış, gazellerde bıkmadan ve usanmadan hep kara gözlü, kara kaşlı, kara saçlı, kara benli, servi boylu, gül yanaklı, yay kaşlı ve ok kirpikli bir güzeli anlatıp durmuş, ama onun bir yerlerde yaşamakta olduğunu hiç düşünmemişti."
Pınarın başına inmekte fayda var.İnip görmek lazım uğruna methiye düzdüğümüz güzel (süreç) ne haldedir...
Hamiş:
CMMI Dokümanları:
SEI CMMI Modelleri ve Bunlara Ait Raporlar: .
İlginç Linkler:
Tavsiye Edilen Kitap :
Real Process Improvement Using the CMMI,Michael West, Auerbach Publications.