Yazılım metodolojilerini anlattığımız yazı dizimizin bu son ayağında sektörde oldukça yaygın olan iki metodoloji üzerinde duracağız. Bir tanesi CMMI (Capability Maturity Model Integration for Development - Yetenek Olgunluk Model Entegrasyonu) diğeri de MSF (Microsoft Solutions Framework).
CMMI (Capability Maturity Model Integration for Development - Yetenek Olgunluk Model Entegrasyonu)
CMMI modeli 1987 -1997 yılları arasında geliştirilen bir modeldir. Modelin geliştirilmesinde Amerikadaki yazılım endüstrisinin üyeleri, hükümet üyeleri ve Carnegie Mellon Software Engineering Institute (SEI) tarafından geliştirilen CMMI, organizasyonun performansını arttırmayı amaçlayan bir yaklaşım sunar.CMMI, geleneksel olarak ayrılmış organizasyonel fonksiyonlarını birbirleri ile entegre eden, onların hedef ve önceliklerini belirleyen ve bir kullanım kılavu sunan bir modeldir.
CMMI temelde, dört adet süreç alanı (process area) PA içerir. Her bir PA'da bir ile dört arasında hedef içerir. Her bir hedef de tanımlanmış pratiklerden meydana gelir. Yani toplamda 22 pratik bulunmaktadır.Tüm bu hedef ve pratiklere Spesifik Hedef ve Pratikler adı verilir ve her bir PA'ya ait işleri tanımlar. Ayrıca tüm PA'ları bağlayan Hedef ve Pratikler de vardır ki bunlara da Genel Hedef ve Pratikler adı verilir.
CMMI Modelleri
CMMI modelleri şu an da 1.2 versiyonunda bulunmaktadır ve üç alana ayrılmıştır: yazılım geliştirme, tedarik (satınalma) ve hizmet.
- CMMI for Development (CMMI - Dev): Ağustos 2006 da 1.2 versiyonu çıkan CMMI-Dev ürün ve hizmet geliştirme üzerine bir model kurmaktadır.
- CMMI for Acquisition (CMMI - ACQ): Kasım 2007 de 1.2 versiyonu çıkan CMMI- ACQ tedarik zinciri yönetimi, satınalma ve dış kaynak kullanımı üzerine bir model kurmaktadır.
- CMMI for Services (CMMI - SVC): Şubat 2009 da 1.2 versiyonu çıkan CMMI - SVC iç ve dış müşterilere verilen hizmet yönetimi üzerine bir model kurmaktadır.
2010 yılı içerisinde CMMI'ın 1.3 versiyonunun çıkması planlanmaktadır.
CMMI'ın Hedef ve Pratikleri aşağıdaki gibidir.
- Process Management (Süreç Yönetimi)
- Organizational innovation and deployment (Organizasyonel Yenilik ve Canlıya Alma) (OID)
- Organizational process definition (Organizasyonel Süreç Tanımı) + IPPD (OPD)
- Organizational process focus (Organizasyonel Süreç Odaklanması) (OPF)
- Organizational process performance (Organizasyonel Süreç Performansı) (OPP)
- Organizational training (Organizasyonel Eğitim) (OT)
- Project Management (Proje Yönetimi)
- Project planning (Proje Planlama) (PP)
- Project monitoring and control (Proje İzleme ve Kontrolü) (PMC)
- Supplier agreement management (Tedarikçi Sözleşme Yönetimi) (SAM)
- Integrated project management (Dahili Proje Yönetimi) + IPPD (IPM)
- Risk management (Risk Yönetimi) (RSKM)
- Quantitative project management (Kümülatif Proje Yönetimi) (QPM)
- Engineering (Mühendislik)
- Requirements management (Gereksinim Yönetimi) (REQM)
- Requirements development (Gereksinim Geliştirme) (RD)
- Technical solution (Teknik Çözüm) (TS)
- Product integration (Ürün Entegrasyonu) (PI)
- Verification (Tasdik Etme) (VER)
- Validation (Doğrulama) (VAL)
- Support (Destek)
- Configuration management (Konfigürasyon Yönetimi) (CM)
- Process and product quality assurance (Süreç ve Ürün Kalite Güvencesi) (PPQA)
- Measurement and analysis (Ölçüm ve Analiz) (MA)
- Decision analysis and resolution (Karar Analizi ve Çözümü) (DAR)
- Causal analysis and resolution (Neden Analizi ve Çözümü) (CAR)
CMMI, aynı bir kalite yönetim sistemi (TKY, ISO) gibi belli kuralları ve yöntemleri olan bir modeldir ve belli seviyelerden oluşmaktadır. Her bir seviyeye sahip olunduğunun belgelenmesi için belli denetimlerden geçilmesi gerekemektedir. Ne kadar ilginç ki bir çok bilim ve yöntem gibi CMMI da askeri kaynaklı bir modeldir ve çoğunlukla askeri yazılımlar yapan firmalarda bulunmaktadır. Ancak her alana hizmet eden firma tarafından alınabilir.
CMMI Seviyeleri
- 0: Yetersiz
- 1: Yürütülen süreç. Süreçler üzerine çok az kontrol bulunuyor ve hiç yok. Proje çıktısı tahmin edilemez. Yürütülen süreçlere tüm PA'lar uygulanmış; ancak planlama ve uygulama süreçleri henüz uygulanmamış.
- 2: Yönetilen süreç. Organizasyon yönetilen süreçlere ait tüm gereksinimleri yerine getirmiş. İşler, konu hakkında bilgili ve kuralları bilen çalışanlar tarafından yürütülüyor.
- 3: Tanımlı süreç. Bu seviyede organizasyona spesifik ihtiyaçlara göre standart süreçler şekillendirilmiş ve tanımlanmış durumdadır.
- 4: Nitelikli yönetilen süreç. Bir sürecin tüm yönleri niteliksel olarak ölçülüp kontrol ediliyor. Operasyon ve proje süreçleri normal kontrol limitlerinde.
- 5: Süreç optimizasyonu. Bu seviyede sürekli bir süreç iyileştirme vardır. CMMI seviye 5 kararlı ve sürdürülen bir süreç iyileştirimesine odaklanmıştır.
Türkiye'de CMMI Sahibi Firmalar
2003 Milsoft CMM 3. Seviye
2003 Aydin Yazilim CMM 3. Seviye
2003 Havelsan CMM 3. Seviye
2004 ECS Türkiye'de ilk SEI iş ortağı (SEI-Partner) oldu
2005 Milsoft CMMI 5. Seviye
2006 Koç Sistem CMMI 3. Seviye
2006 STM CMMI 3. Seviye
2006 Meteksan Sistem CMMI 3. Seviye
2007 TAI CMMI 3. Seviye
2007 Cybersoft CMMI 3. Seviye
2007 MilSOFT CMMI 5. Seviye
2008 MilSOFT ICT CMMI 3. Seviye
2008 Tübitak/UEKAE/G222 Birimi CMMI 3. Seviye
2008 TÜBİTAK MAM Bilişim Teknolojileri Enstitüsü CMMI 3. Seviye
2009 NETCAD ULUSAL CAD ve GIS Çözümleri A.Ş. CMMI 3. Seviye
Daha detaylı bilgiyi CMMI'ın resmi sitesinden alabilirsiniz.
Microsoft Solutions Framework (MSF)
1991 yılından önce bir çok Microsoft müşterisi ve partneri Microsoft'a hep aynı soruyu soruyordu "Microsoft yazılım projelerini nasıl yürütüyor?". Soruların gittikçe artması üzerine Microsoft, MSF projesini başlattı ve 1991 yılında kendi iç yazılım süreçlerinin ve sektörün en iyi pratiklerinin toplandığı bir paket halinde MSF'i çıkarttı. MSF'te aynı RUP gibi, en iyi pratikleri ortaya sunarak kendi yapınıza uygun olanları uygulamanıza imkan sağlayan bir metodolojidir.
1991 yılında 1.0 versiyonu ile başlayan MSF, 2005 yılında 4.0 versiyonuna ulaştı. Bu son versiyonda MSF iki perspektif sunmaktadır, birtanesi Agile (MSF for Agile) diğeri de CMMI (MSF for CMMI). Bu iki örnekte Visual Studio Team System ile ve Team Foundation Server proje şablonları ile sunulmaktadır.
MSF sağladığı esneklik aşağıda şematize edilmektedir.

MSF'in Anahtar Öğeleri
MSF 4'üncü versiyonunda aşağıdaki anahtar öğeleri sunar; bizler ise bu öğelerden istediklerimizi veya hepsini kullanmakta serbestiz.
- Temel ilkeler
- Mantalite (Mindset)
- Modeller
- Disiplin
- Onaylanmış Pratikler
- Tavsiyeler
Temel İlkeler
Temel ilkeler, MSF'in üzerine inşa edildiği temel prensipleri ifade etmektedir.Bir yazılım proje takımın nasıl beraber çalışabileceğine dair ilkeler içerir.
- Açık iletişimi güçlendirin: Takım üyeleri ve organizasyon çeşitli seviyede ve yoğunlukta bilgiye ihtiyaç duyarlar. Bu yüzden MSF bizi olabildiğinde iletişim halinde kalmak için teşvik eder. İletişim hem takım içinde hem de takım dışında müşteriler veya paydaşlarla güçlü bir şekilde yürütülmelidir.
- Ortak bir vizyon için çalışın: Takım üyeleri ve organizasyon çalışmanın amacını ve başarılmak istenen hedefe hakim olmalıdır. Bu Scrum metodolojisindekine benzer bir yaklaşımdır.
- Takım üyelerini güçlendirin: Herhangi bir iş yaparken, bu işi yapabileceğine olan güven o işin başarılması için çok önemli bir faktördür. Şayet yeterli güveni olmayan bir çalışana iş verilirse, yüksek ihtimalle başarısız olunacaktır. Bu yüzden takım üyelerinizi destekleyin ve işi yapabileceklerine olan inancı güçlendirin.
- Açık ve ortak sorumluluk: Bu madde de 3'üncü madde gibi çalışanı desteklemek sorumluluk almasını sağlamak demektir.
- Artan değer: RUP ve Scrum gibi, takımın işi müşteriye ulaştırabilmesi için iteratif olarak çalışması gerekmektedir. Bu yaklaşım MSF for Agile için kullanılır.
- Çevik olun,değişime adapte olun: Yine MSF for Agile için kullanılan bu ilke, zaten kendi kendisini açıklıyor. Takım her zaman çevik ve değişime adapte olarak bulunmalıdır.
- Kaliteye yatırım yapın: Kalite MSF için oldukça önemli bir kavramdır, MSF kaliteyi "müşteri beklentilerini karşılamak ve/veya aşmak ve onlara bu değeri sunmak". MSF'e göre takım üyeleri proje için kendilerinde sorumluluk hissederse o zaman kalite içinde sorumlu hissederler.
- Yaşadıklarınızdan ders çıkarın: Bu ilke, bize yıllarca öğretilen bir fikri temel almaktadır. "Geçmişini bilmeyen (unutan), onu tekrar yaşamaya mahkumdur" (George Santayana). Gerçi bu öğreti bize devletimiz ve tarihimiz için öğretilmişti ama siz bunu şirketiniz veya organizasyonunuza da uygulayabilirsiniz, çünkü yapılan hatalardan ders çıkarmazsanız bunları tekrar yapma ihtimaliniz çok yüksektir. Bu yüzden MSF'in tavsiye ettiği karşılaştığınız durumları, yapılan hataları ve çözümleri kayıt altına alın ve çalışanların bunlardan aynı hataları tekrarlamaması için faydalanmasını sağlayın. Konu dışına çıkmak gibi olacak ama benzer bir uygulama Türk Silahlı Kuvvetleri'nde de bulunmaktadır. ALDEM isimli bir dergi düzenli olarak hazırlanır ve birliklere dağıtılır. Bu dergide baskınlarda, operasyonlarda veya gündelik işlerde karşılaşılan olaylar incelenir ve doğrularıyla yanlışlarıyla tekrarlanmaması için tüm organizasyona yayılır.
- Müşteri ile birlikte çalışın: Müşteri ile ne kadar yakın çalışılırsa, çalışmanın sonucu da o kadar başarılı olur. Müşteri ihtiyaçlarını doğru şekilde karşılaşılamak için de mşteri ile mümkün olduğunca yakın olun.
Mantalite (Mindset)
Mantalite, takım içerisindeki her bir bireyin odaklanmanın nasıl azami düzeye çıkarılabileceğini ifade etmektedir.
- Takımı bir eş olarak cesaretlendirin: Projedeki herkes projenin başarısızlığını veya başarısını paylaşmaktadır.
- İş değerine odaklanın: İlk hedef iş değerini sağlamak olmalıdır, aynen Scrum da olduğu gbi.
- Çözüm bakış açısı sunun: Proje üyelerinin, büyük resimde projenin nerede olduğunu görmesini sağlayın.
- Yapılan iş ile gurur duyun: Telkari gibi ince bir zanaat olmasa da yazılımda bir zanaattir ve yaptığı iş ile gurur duyan, seven kimse daha iyi yapar. MSF'in öğüde de budur.
- Ders alın: Aslında daha önce bundan bahsetmiştik. Başarılardan ve başarısızlıklardan mutlaka ders çıkarın ve öğrenin. Gerekirse buna göre gerekli düzenlemeleri yapın.
- Hizmet kalitelerini içselleştirin: Çözümün en başından kaliteyi elden bırakmayın. Hizmet kalitesini sadece müşteri değil, takımında görmesini sağlayın.
- İyi bir vatandaş olun: Bir birey olarak her konuda güvenilir, onurlu, saygılı ve sorumlu bir birey olun.
- Sözlerinizi yerine getirin: Güven ve selahiyet sözlerimizi yerine getirerek kazanılır.
Onaylanmış Pratikler
- Küçük, çoklu disiplinli takımlar oluşturun: Takımlar büyüdükçe çevikliği düşer. Bu yüzden büyük bir projeniz varsa yazılım ekibinizi küçük takımlara bölün
- Takımların birbirine yakın çalışmasını sağlayın: Başarı için takımlarınızın birbirine yakın çalışmasını sağlayın.
- Motivasyon: Takımların motivasyonunu yüksek tutun ki daha verimli olsunlar.
Modeller
Modellerden kasıt, şematik tanımlardır.Bu şemalar takım(lar)ımızın ve süreçlerimizin mantıksal haritalarıdır.
Disiplinler
Disiplinlerden kasıt, Proje Yönetimi veya Risk Yönetimi gibi işlerin hangi metod veya yaklaşımlarla yapılması gerektiğini belirler.
MSF'teki Roller
MSF'te 7 ana rol bulunmaktadır. Bunlar;
- Product Management: Paydaşların ihtiyaç ve beklentilerini çözmek ile birinci derecede sorumludur.
- Program Management: Sponsorların (burada sponsor iş veren, destek veren anlamındadır) ihtiyaç ve beklentilerini çözmek ile birinci derecede sorumludur.
- Architecture: Her türlü ihtiyaç ve beklentiyi karşılamak için teknik çözümü oluşturmaktan sorumludur.
- Development: Teknik çözüme uygun olarak, müşteri ve sponsorların ihtiyaç ve beklentilerini karşılamak ile sorumludur.
- Solution Verification: Oluşturulan çözümün beklendiği gibi çalıştığını doğrulamak ile sorumludur.
- Test: Çözümün ihtiyaçları karşıladığını ve sorunsuz çalıştığını doğrulamak ile sorumludur.
- User Experience: Oluşturulan teknik çözümün kullanıcıya en kolay ve doğru şekilde sunulmasından sorumluur.
- Release/Operations: Uygulamanın canlıya alınmasından sorumludur.
MSF rol tanımlarındaki her bir rolün ürünün kalitesinde ortak sorumluluğu vardır; bu da roller üzerinde baskı oluşturarak kümülatif kaliteyi en iyiye ulaştırmayı hedeflemektedir. MSF'e göre projenin kalitesi en düşük kaliteye sahip rolün kalitesi kadardır.
MSF Hayat Döngüsü
MSF'in hayat döngüsü RUP ve Waterfall'un karışımına benzer. Hem iteratif hem de belirgin aşamaları olan bir yapıya sahiptir. Ancak bu iterasyonlar yine de daha önce bahsettiğimiz Scrum kadar yüksek bir çeviklik sağlamıyor; çünkü Envision ve Planning aşamaları iteratif olarak yapılsa da Build veya Stabilize aşamasında karşımıza çıkan bir sorun için tüm mimariyi değiştirmemiz gerekse MSF bu konuda bir çözüm sunmamaktadır. Aşağıda MSF'in hayat döngüsünü görebilirsiniz.

MSF for Agile ve MSF for CMMI
Daha önce de bahsettiğimiz gibi TFS ve Visual Studio Team System üzerinde oluşturulan projelerde iki tane proje şablonu seçilebilmektedir; MSF for Agile ve MSF for CMMI.
MSF for Agile yukarıdaki hayat döngüsü ile ilerleyen bir metodolojidir ve Waterfall ile RUP karışımıdır. Ne yazık ki gerçekten çeviklik sağlanamadığını az önce söylemiştik. Çünkü iterasyonlar olsada aşamalar arası geçiş keskin ve bir önceki aşamanın onaylanmasına bağlıdır. Bu da ilerki aşamalarda gerekebilecek çevikliğin sağlanamamasına sebep oluyor.
MSF for CMMI ise CMMI 3. seviyeyi hedefleyen bir şablondur.Bu şablonda CMMI ın gereksinimleri için gereken süreç ve adımlar bulunur; ayrıca MSF for Agile'a göre daha fazla dökümantasyon gerekir.
Bu yazımız ile birlikte yazılım metodolojilerini incelediğimiz dördüncü ve son yazımıza gelmiş olduk. Waterfall, Spiral, RUP, Agile, Scrum, CMMI ve MSF'i elimizden geldiğince, dilimiz döndüğünce anlatmaya çalıştık. Daha fazla bilgi için her zaman Google'ı kullanabilirsiniz Bu metodolojilerden şirketiniz için uygun olanı seçmek size kalmış durumda. Biz bundan sonraki yazılarımıza Visual Studio 2010 ve TFS 2010 ile devam edeceğiz.
Tekrar söylemek isterim ki tüm bu yazıları yazarken Wikipedia ve Joachim Rossberg'in Pro Visual Studio Team System Application Lifecycle Management kitabından bolbol yararlandım. Daha detaylı bilgiler için iki kaynağa da bakabilirsiniz.
6 kişi tarafından 5.0 olarak değerlendirildi
- Currently 5/5 Stars.
- 1
- 2
- 3
- 4
- 5
Application Lifecycle Management
alm, application lifecycle management, cmmi, msf, microsoft solutions framework, yazılım metodolojileri