Yazılım Süreçlerinin Yedi Esas Özelliği Hakan Erdoğmuş Kalemun Research Inc. UYMS 8 Ekim, 2009
Mühendislik ve araştırmaya dayalı: Yazılım katı dır; yazılım geliştirme bilimsel, planlama odaklı, kontrol edilebilir bir süreçtir. Yazılım Geliştirme Yaklaşımlarına İki Tarihsel Bakış Yap, ilerlet, değiştir Planla, uygula, kontrol et Tabandan destekli ve beceriye dayalı: Yazılım esnek tir; yazılım geliştirme organik, yetenek gerektiren, teknoloji tarafından yönlendirilen bir süreçtir. 1-10-2009 2
Düzen Yazılım Geliştirme Süreçlerinin Üç Odak Noktası? İnsan Teknoloji 1-10-2009 3
CMM, TSP/PSP CMMI Spiral model Risk-Yönelimli Değer Bazlı Yaklaşımlar Waterfall, Mil Std 2167, V Model 1980 1990 2000 2010 Gereksinim Mühendisliği Sayısal Yönetim Yaklaşımları: Six Sigma, SPC İnsan Odaklı Formal Metodlar Düzen Odaklı Teknoloji Odaklı 1-10-2009 4
1980 1990 2000 2010 Gereksinim Mühendisliği Formal Metodlar UML Model Güdülü Yaklaşımlar, MDA UP, RUP İnsan Odaklı Düzen Odaklı Yazılım Ürün Yelpazeleri + Teknoloji Odaklı 1-10-2009 5
RAD Spiral model Değer Bazlı Yaklaşımlar Psychology of Programming No Silver Bullet Kullanıcı Odaklı Yaklaşımlar 1980 1990 2000 2010 Gereksinim Mühendisliği Peopleware EVO Açık Kaynaklı Yazılım ( Open-Source ) İnsan Odaklı Düzen Odaklı Çevik Yöntemler Teknoloji Odaklı 1-10-2009 6
Hiç biri bütün değil, hiç biri kesin değil! Bundan sonra: Melez Yöntemler Dönemi Akımların yumuşamasıyla, mevcut sürtüşmeler yavaş yavaş birbirini tamamlayan ve destekleyen fikirlere dönüşüyor! ü Süreç doktrininin yerine Entegrasyon Denge Amaç Ortam 1-10-2009 7
Faydacıl Süreç James Bach ın yazılım süreçlerine faydacıl bakışı (1995) Süreç: bir grup problemi çözmek için kullanılan kalıplar ve etkinlikler sistemi Tom DeMarco ( Software Engineering: An Idea Whose Time Has Come and Gone?, 2009): Süreç = Yönetim + Ölçüm + Planlama + Kontrol 1-10-2009 8
İ T Di P A De DB 1-10-2009 9
İnsan, insan, insan HireAttitudeSample.mp4 Kanada daki yazılım müdürleri işe alacakları mühendislerde ne tür özellikler arıyorlar? (Janice Singer ın izniyle) 1-10-2009 10
Özgeçmişlerde teknik beceriler her zaman aynıdır Onların davranış ş biçimlerine ve takım ile sağlayabileceklerini düşündüğüm uyuma daha çok önem veririm Daha az yetenekli, belki daha az akıllı, ama uyumlu bir çalışanı, daha çok yetenekli ama uyumsuz bir çalışana tercih ederim Sonuçta önemli olan kişiyle i nasıl liletişim i kurduğunuz ğ ve o kişinin de diğerleriyle nasıl iletişim kurduğudur Onların iletişim, mümkünse yazılı iletişim, yeteneklerini ve takımla nasıl bir uyum içinde olacaklarını değerlendiririm Biz küçük bir ekibiz, dolayısıyla sosyal etkileşimimiz son derece önemlidir 1-10-2009 11
İnsan Merkezcilik Takım etkinliği olarak yazılım geliştirme: İşlerinden gurur duyan motive olmuş, yaratıcı, yetenekli bireyler 1-10-2009 12
İnsan Merkezcilik Teşvikleme: etkili ve modern yazılım geliştirme ve yönetim tekniklerinin firmadaki teşviklerle uyuşmasi Uzlaştırma: farklı proje katılımcılarının ihtiyaçlarını dengelenmesi Aşağıdaki noktaların derinlemesine anlaşılmış olması Yazılım geliştirmecilerini ve yazılım müdürlerini neyin motive ettiği Yazılımcı olmayan profesyonellerin yazılım geliştirmeyi nasıl gördükleri Müşterilerin ne istediği ve kullanıcıların yazılımları nasıl kullandıkları Sosyal beceriler: mesleki ve teknik becerilerle aynı bazda tututması Etkin liderlik İşbirliği => Yoğun işbirliği En az sürtüşme ş ile çalışma ş Birbirine güven, sosyal etkileşim Müşteri ve kullanıcı ile yakın iletişim 1-10-2009 13
İ Ancak insan merkezcilik tek başına başarıyı garanti edebilir mi? 1-10-2009 14
Teknik yönelim Yazılım geliştirmenin temellerinde ve yazılım teknolojisinde etkinlik Uygun teknolojinin kullanılması (programlama dilleri, programlama örneklemeleri, tasarım yöntemleri, ) Teknolojinin etkili bir şekilde uygulamasını destekleyen teknik çözümler ve teknik becerilere değer verilmesi Altyapıya önem vermek (araçlar, platform, mimari, geliştirme ortamları, uygulama çerçeveleri - frameworks ) İşlenen en düşük soyutlama seviyesini (kaynak kod?) merkezi ve kesin eser olarak kabul etmek Otomasyondan mümkün olduğu kadar faydalanmak (örneğin derleme etkinlikleri) i) 1-10-2009 15
İ T Teknik yönlendirme tabii ki insan merkezciliği güçlendirir ancak her sürdürülebilir, ciddi, ölçeklendirilebilir iş hem teknik hem de yönetsel düzen ve sistemli bir yaklaşim gerektirmez mi? 1-10-2009 16
Disiplin Ölçeklendirme ve tekrarlanabilirlik için özen gerekir. ancak disiplin resmiyet veya bürokrasi Olgunluk seviyeleri ( maturity levels ) Körü körüne itaat Kontrol etme saplantısı değil Sinerjistik etkinliklerin uyumlu ve sistemli bir şekilde uygulamaları 1-10-2009 17
Disiplin İşin bölümlere ayrılması ve iş akışının yapılandırılması Bireysel Ekip ve proje içinde Firma içinde Teknik etkinliklerin i sistemli ve yeterli olarak uygulanması Program kodlama standartları Gereksinim toplama teknikleri Yazılım mimarisi, modelleme İyi tasarım ilkelerine değer verip uygulamak Program denetleme ve gözden geçirme, düzenli sınama, regresyon testi Yönetsel etkinliklerin sistemli ve yeterli olarak uygulanması İnsan kaynaklarının, n n projelerin ve ürünlerin yönetimi Planlama (yinelemeli ve artımlı iterative and incremental ) Performans, verimlilik ve kalite takibi Dokümantasyon 1-10-2009 18
Disiplin Tüm süreçler disiplini değişik şekillerde mecbur eder: CMMI ve RUP gibi süreç çerçeveleri Extrem Programlama ve Scrum gibi çevik yöntemler 1-10-2009 19
İ T Di Ancak disiplininin bir karşıt kuvvetle dengelenmeye ihtiyacı vardır... 1-10-2009 20
Pragmatiklik Süreç etkinliklerinin sahip olması gereken özellikler Uygulanabilirlik Ortama uyum Ölçeklendirilebilirlik Firma kültürü ü ve firmanın risk alma tercihlerine i uyumluluk l Net bir amaca hizmet etme Düzenleyici gereksinimleri tatmin etmek Müşteri/kullanıcı ihtiyaçlarını karşılama Geliştirme ekibinin ihtiyaçlarını karşılama Diğer ğ proje katılımcılarının ihtiyaçlarını uzlaştırma ş Dokümantasyon =======> P sadece yeteri kadar ve faydalı dokümantasyon 1-10-2009 21
İ T Di P Süreç seçimlerinde çok pragmatik olabilirsiniz, ama seçimlerinizin i i i beklentilerinizi i i i karşıladığını ğ nasıl bileceksiniz? Öngörülen riskleri nasıl yönetebilirsiniz? 1-10-2009 22
Ampirizm Kararları veriye dayalı olarak destekleme: hem gözlemle hem de ölçümle Girdi ve çıktıları ampirik bilgi ile ilişkilendirme Etkinlik ve eylemlerin sonuçlarından haberdar olmak Ne yaptığınızı bilmek: Başarısız veya başarılı olduğunuzda Gelişme gösterirken veya geriye giderken Tekrar kullanılabilir ve paylaşılabilir bilgiyi yakalamak İleriye dönük karar vermek için kanıtları toplamak ve gözden geçirmek Kendi ortamınızdan Dış ş kaynaklardan Verinin var olduğu ortamlarda yönetim olmadığı ortamlardan çok daha kolaydır. Robert L. Glass 1-10-2009 23
Ampirizm Ampirizmin desteklediği etkinlikler: Önkestirim Sözleşme görüşmeleri ve fiyatlandırma Proje planlaması ve yönetimi (kaynak sağlama, öncelik sırasını belirleme, l gelişme takibi, piyasaya çıkış/yayımlama release planlaması) Kalite güvencesi Risk yönetimi Genelde yüksek nitelikli karar alışı 1-10-2009 24
İ T Di P A Ampirizm aynı zamanda neyin işe yarayıp yaramadığı ğ hakkındaki ki teorilerimizi i i i içgüdüselliğin ötesinde daha tarafsız bir şekilde sınamanıza yardımcı olur. Böylece öğrenmeyi teşvik eder 1-10-2009 25
Deneyleme Alternatif çözüm ve varsayımların güvenilir ve az maliyetle sınanabileceği bir ortamın sağlanması Spikes (teknik bir çözümün bir örnekle olurluk denemesi) Prototipleme ti Simülasyon (Benzetim ) Çoklu yayımlamak ( Split runs ) Erken kullanılabilirlik değerlendirmesi 1-10-2009 26
İ T Di P A De Sistematik deneyleme aslında değer arttırıcı bir etkinliktir 1-10-2009 27
Değer Nedir? Bir amaca hangi oranda yaklaşıldığı Kârlılık l 1-10-2009 28
Değer Bazlılık Yazılım projeleri kaynak ve zaman açısından kısıtlı şartlar altında yürütülür Süreç etkinliklerinin karlılık ve proje başarısı ş üzerinde etkilerini anlamak ve açıkça ifade etmek: Karlılığı/sonuçları nasıl destekliyorlar ve arttırıyorlar Karlılığı/sonuçları arttırmak için birbirlerini nasıl destekliyorlar? Başarıyı değer bazlılık anlamında ölçmek Değer bazlılığı ve teşvikleri aynı konuma getirmek 1-10-2009 29
Değer Bazlılık Maliyet etkinliği ile değer yaratma + Geliştirme verimliliğini arttır Üretim maliyetini indir When the Pursuit of Quality Destroys Value John Favaro Düşük kalite maliyetini azalt (ya da kaliteyi arttır) Net verimliliği arttır Üretim Çıktısı Toplam Maliyet = Düşük Kalite Maliyeti + Üretim Maliyeti Değişik aşama ve aktiviteler arasında kaynak tahsisinin optimizasyonu Örneğin yeni işlev geliştirme ve sınama etkinlikleri arasında 1-10-2009 30
Zamanın Değeri Şimdi Erken kazan! Gelecekte Geç harca! 1-10-2009 31
Zamanın Değeri Artımlı Teslimatı Tercih Eder Seyrek: Ertelenmiş kazanımlar, hepsi bir anda veya büyük kısımlar halinde Teslim Son BD = $ Geliştir Ertelenmiş büyük kazanımların Bugünkü Değeri Tekrar Geliştir / Sürdür Ertelenmiş Kazanımlar Artımlı: Erken kazanımlar, küçük kısımlar halinde Teslim Teslim Teslim Teslim Teslim Teslim Teslim $ $ $ $ $ $ $ BD = + + + + + = Zamana yayılmış küçük kazanımların Bugünkü Değerleri nin toplamı 1-10-2009 32
Değer Bazlılık Değer yaratma stratejileri Kazanımların bugünkü değerini arttır İ Son kullanıcı veya müşterilerin neyi önemsediklerini anlayarak Erken ve sık teslimatı garanti ederek Etkin önceliklendirme: yüksek değerli işlevlere öncelik tanıyarak Özellikle maliyet ve kazançların belirsiz olduğu durumlarda yatırımları mümkün olduğunca ertele Di A Yeterli derecede değerlendirme ve planlamayla öngörülebilir riskleri izle ve azalt 1-10-2009 33
Değer Bazlılık Diğer Değer Yaratma Stratejileri Belirsizliğin yüksek olduğu durumlarda esnekliği ve öğrenme ğ kapasitesini arttır De Öğrenme kapasitesini arttırmak için geri besleme devirlerini kısalt Esneklik yalnızca belirsizlik durumunda değerlidir! Esnekliğ ğin Değeri Belirsizlik 1-10-2009 34
Zamanında Karar Verme Yeni bir işlev ilave etmeyi düşünüyorsunuz Bugünkü maliyeti 10000 $ Kazancın 15000 $ olacağını tahmin ediyorsunuz Bir sene içinde i belli olacak! lama Mal liyeti Uygu Belirsizlik? İyi Senaryo: Müşteri memnundur; kazanç elde edilmiştir i Kötü senaryo: Müşteri açısından bir şey değişmemiştir; zaman ve para kaybettiniz Zaman 1-10-2009 Example courtesy of John Favaro 35
opsiyon bazlı değer analizi yoluyla uygulama maliyeti ve belirsizliğe dayalı Zamanında Karar Vermenin Genel Kuralları Belir rsizlik / Zaman Sürec ci / Kısa Yükse ek / Uzun Alçak Uygulama Maliyeti Geleneksel l Yavaş Artan At Sabit Erken Erken Geç Erken Geç Geç 1-10-2009 36
Net Değerğ Belirsizlik Durumunda Öğrenme Kapasitesinin Önemi Müdahaleli Geribesleme Devirlerinin Etkisi ile Alakalıdır Sabit Masraflar hakim olmaya başlar Seyrek Sık Çok sık Müdahaleli Geribesleme devirlerinin sıklığı Geribesleme devirlerini (yinelemelerin süresini) kısaltın! 1-10-2009 37
DB? Geleneksel Başarı Ölçütleri Her Zaman Geçerli midir? Bütçeyi Aşmadanş Zamanında Tam İşlevsel İstatistiki proje başarı oranları bu kriterlere göre düşük: < 60% => yani bir yazılım krizi mi söz konusu? Burada hedef: tekrarlanabilirlik ve öngörülebilirlik; acaba bu doğru mu? Şöyle bir proje başarılı mıdır? Bütçeyi çy%100 aşmış, ş ş, %100 ü gecikmiş, Sadece öngörülen işlevlerin sadece %10 u planlandığı biçimde teslim edilmi ve%20 si önemli bir şekilde değiştirilmiş, ancak ürün 30000 çalışan tarafından verimliliği %20 arttırarak her gün kullanılıyor, hem de asgari destekle 1-10-2009 38
Bu yedi temel unsur hem birbirlerini destekleyici hem birbirlerini dengeleyici; her biri değişik geliştirme süreçleri için değişik ik ölçülerde geçerli... Teknik Yönelim İnsan Merkezcilik Değer Bazlılık Disiplin Pragmatiklik Ampirizm Deneyleme 1-10-2009 39
1-10-2009 40 Copyright NRC 2008