Maltepe Üniversitesi Mühendislik Fakültesi YAZILIM KALİTE GÜVENCESİ (SOFTWARE QUALITY ASSURANCE) Yrd. Doç. Dr. Fatih YÜCALAR fatihy@maltepe.edu.tr YZM 410 Maltepe Üniversitesi Mühendislik Fakültesi
2. BÖLÜM YAZILIM SÜRECİ YZM 410 - Yazılım Kalite Güvencesi
Genel Bakış… Süreç Kavramı Süreç Yaklaşımı Organizasyon ve Süreç Yazılım İçin Süreç Kavramı Süreç Teknolojisinin Amacı Bir Sürecin Kavramsal Modeli Yazılım Mühendisliği Süreci Nedir? Süreç Yaklaşımı Yazılım Süreç Kurma (Software Process Establishment) Yazılım Süreç Değerlendirme (Software Process Assessment) Yazılım Süreç İyileştirme (Software Process Improvement) Organizasyon ve Süreç Bu bölüm kapsamında, Süreç Kavramı ve Yaklaşımını inceleyeceğiz. Bu bağlamda, önce sürecin ne olduğunu öğreneceğiz, daha sonra da süreç kavramını yazılım için ele alacağız. Süreç teknolojisinin amacını ve bir sürecin kavramsal modelini göreceğiz. Süreç ile ilgili temel kavramları öğrendikten sonra süreç yaklaşımı ile ilgili yaklaşımları ele alacağız. Bu yaklaşımlar neler? Yazılım Süreç Kurma, Yazılım Süreç Değerlendirme, Yazılım Süreç İyileştirme Son olarak ta, organizasyon ve süreç birlikteliğini inceleyeceğiz. YZM 410 - Yazılım Kalite Güvencesi
Süreç Nedir? “Ürün değil süreç önemlidir…” Süreci, yazılım ve yazılımla bütünleşik ürünlerin geliştirilmesi ve bakımı için kullanılan aktivitelerin, metotların, uygulamaların ve dönüşümlerin oluşturduğu bir bütün olarak tanımlayabiliriz. GİRİŞ: Bir ürünün kalitesi o ürünü incelemekle/sınamakla belirlenmez. Bir ürününün kalitesi büyük oranda onu üreten organizasyona ve üretim süreçlerine bağlıdır. Bu, Toplam Kalite Yönetimi ilkelerinden biridir. Süreç olgunlaşmadan kalite tesadüfe kalır. Yazılımla Bütünleşik Ürünler: proje planları, tasarım dokümanları, kod, test planları. İKİNCİ MADDEDEN SONRA: En basit anlamda süreci, başı sonu belli, ara adımları iyi belirlenmiş işlemler dizisi olarak da tanımlayabiliriz. YZM 410 - Yazılım Kalite Güvencesi
Süreç Kavramı Sürecin amacı, bir standart oluşturmak, değişkenlikleri azaltmak ve devamlı iyileştirmeler sağlamaktır. Bir sürecin göze çarpan karakteristikleri; Süreç bir amaca erişmek için bir işi yapma usulüdür, Genelde, alt süreç, adım ve işlemlerden oluşur, Yazılı ve grafiksel olarak belgelenmiştir, Tekrarlanırlar, Girdileri, çıktıları vardır, Aktörleri vardır, Uyduğu kurallar, politikalar vardır. Büyük (karmaşık) veya küçük (basit) tanımlanabilir. YZM 410 - Yazılım Kalite Güvencesi
Süreç Kavramı (devam…) Süreç örneği verirsek; Müşteri ilişkileri süreci, tek bir süreç olabilir veya bu süreci; pazar araştırması süreci, müşteri isteklerinin belirlenmesi süreci, fizibilite süreci, isterlerin modellenmesi süreci, spesifikasyonların belirlenmesi süreci gibi alt süreçlere ayrılabiliriz. Bu anlattıklarımızın ışığında bir süreç örneği vermek istersek; müşteri ilişkileri sürecini verebiliriz. YZM 410 - Yazılım Kalite Güvencesi
Örnek: Tipik Bir İyi Firma Süreci Test mühendisi, bir “sorun raporu (problem report)” düzenler. Sorun raporunu proje yöneticisine yollar. Proje yöneticisi, “sorun raporunu” inceler ve bir değişim istemi (change request) düzenler. Değişim istemini analizciye verir. Analizci değişim istemini inceler, etkilenen modülleri belirler, o modüllerdeki isterlere ait değişiklikleri yapar. Tasarım değişiklikleri yapılır ve değişiklik istemi 1 belgesi üretilir. Bu belgeyi konfigürasyon yöneticisine verir. Entegrasyon ve Test aşamasında bir hata bulundu. Ne olacak? YZM 410 - Yazılım Kalite Güvencesi
Örnek: Tipik Bir İyi Firma Süreci (devam…) Konfigürasyon yöneticisi, isterler ve tasarım belgelerindeki konfigürasyon değişikliğini yapar. Değişiklik isteği 1’i programcıya verir. Programcı istenilen kod değişikliğini yapar. Yeni kodu konfigürasyon yöneticisine geri verir. Konfigürasyon yöneticisi, yeni kodu entegrasyon ve teste gönderir. Sonuçlar olumlu gelirse, ürün piyasaya sürülür. YZM 410 - Yazılım Kalite Güvencesi
Yazılım İçin Süreç Kavramı Yazılımın nasıl gerçekleştirildiğini, yönetildiğini, ölçüldüğünü, planlandığını, desteklendiğini, organize edildiğini, işletildiğini, iyileştirildiğini, ... vb. işlerin nasıl yapıldığının anlatılıp, tanımlanmasına “yazılım süreci” adı verilir. Tüm ciddi yazılım firmaları, çalışmalarını süreçlere dayandırmaktadır. Yazılım süreçleri ile ilgili standartlar ortaya çıkmıştır ve gelişmektedir. YZM 410 - Yazılım Kalite Güvencesi
Yazılım İçin Süreç Kavramı (devam…) Yazılım süreçlerine örnek olarak aşağıdaki süreçler verilebilir; Yazılım Belirtimi (Mühendislik), Tasarım x Gerçekleştirme (Mühendislik), Doğrulama, Sağlama (Destek), İşletme (Destek), Kalite Yönetimi (Yönetim), Proje Yönetimi (Yönetim). YZM 410 - Yazılım Kalite Güvencesi
Süreç Teknolojisinin Amacı Bir süreç modeli ortaya koymak ve tüm yazılım faaliyetlerini bu modele dayandırmaktır. Ayrıca bilgisayar destekli süreç desteği sağlamaktır. BİRİNCİ MADDEDEN SONRA: Modeller, süreç değerlendirme ve iyileştirmenin temelini oluşturmuştur. Şekilde, klasik üretim üzerinde süreç teknolojisinin yeri görüyoruz. YZM 410 - Yazılım Kalite Güvencesi
Bir Sürecin Kavramsal Modeli Süreç modelinde ana unsurlardan biri aktör ve onun rolüdür. Diğer unsurlar ise; aktiviteler, ürünler, araçlar ve politikalardır. YZM 410 - Yazılım Kalite Güvencesi
Yazılım Mühendisliği Süreci Nedir? Kullanıcı gereksinimlerinin yazılım haline dönüştürülmesi için gerekli bütün yazılım mühendisliği aktiviteleri serisidir. Yazılım mühendisliği süreci, oluşturulacak teknolojileri yani teknik yöntemleri ve otomatikleştirilmiş araçları içine alır. YZM 410 - Yazılım Kalite Güvencesi
Süreç Yaklaşımı Süreç yaklaşımı üç aşamadan oluşur: Yazılım Süreç Kurma (Software Process Establishment) Yazılım Süreç Değerlendirme (Software Process Assessment) Yazılım Süreç İyileştirme (Software Process Improvement) Süreç yaklaşımında amaç iyileştirmedir (SPI). Ama önce süreç kurma (SPE) ve süreç değerlendirme (SPA) aşamaları gelir. Süreç kurma (SPE) için, uluslararası bir modelin referans alınması tavsiye edilir. Değerlendirme (SPA) için de mutlaka bir uluslararası model gerekir. YZM 410 - Yazılım Kalite Güvencesi
Yazılım Süreç Kurma (SPE) Yazılım üreten bir organizasyonda süreçlerin tanımlanması, belgelenmesi, personelin eğitilmesi, uygulamanın başlaması, rayına oturması ve normal akışa girmesi; böylece kararlı (stabil) bir üretim ortamına erişilmesi sürecine “yazılım süreç kurma (software process establishment)” diyoruz. YZM 410 - Yazılım Kalite Güvencesi
Yazılım Süreç Kurma (SPE) (devam…) Referans modelini belirle ve incele. Kendi ihtiyaçlarını belirle ve incele. Modeli kendi durumunla uyuşturup, uyarlama ve adaptasyon ile süreçlerini tanımla. Kendi süreç sisteminle 1-3 yıl arası çalış. Gerekli gördüğün değişiklikleri yap. Önce proje düzeyindeki süreçleri, daha sonra kurumsal süreçleri ele al. Projeler arasında farklar olması muhtemeldir. Süreçler oturunca değerlendirme (SPA) yaptır. YZM 410 - Yazılım Kalite Güvencesi
Yazılım Süreç Kurma (SPE) (devam…) Standart modellerde 3 farklı yolla değişiklik yapılabilir: uyarlama (tailoring), ekleme (extend), değiştirme (adaptation) GİRİŞ: Bir önceki slaytta, “Gerekli gördüğün değişiklikleri yap” demiştik. Standart modellerde 3 farklı yol ile değişiklik yapılabilir. YZM 410 - Yazılım Kalite Güvencesi
Süreç Değerlendirme (SPA) Yazılım süreç değerlendirme (software process appraisal), bir organizasyonun yazılım süreçlerinin disiplinli bir biçimde incelenmesi ve notlanmasıdır. İki amacı vardır: Kendi durumunu bilerek bir iyileşme programı oluşturma, Yetenek belirleme (iş/proje verebilmek için). Değerlendirme, uluslararası standart bir metoda göre yapılmalıdır. SON MADDEDE SÖYLE: Çünkü kıyaslama yani benchmarking yapabilmek için, değerlendirmenin uluslararası standart bir metoda göre yapılması gerekir. YZM 410 - Yazılım Kalite Güvencesi
Süreç Değerlendirme (SPA) (devam…) Süreç değerlendirme, başarımın nicel ölçümü biçiminde olmalıdır. Değişik model ve standartlar vardır: CMM, Bootstrap, CMMI, ve ISO 15504 sürece veya yazılım üreten gruba not verirler. ISO 9001 ve TickIT geçti-kaldı notu verir. Firmaların kendi iç modelleri de vardır. Süreç kalitesinin iyileştirebilmesi için öncelikle, süreçlerin mevcut durumunu değerlendirecek, kanıtlanmış, nicel, tutarlı ve güvenilir bir metoda ihtiyaç vardır. Bunu süreç değerlendirme modelleri sağlar. (CMM, SPICE, CMMI) YZM 410 - Yazılım Kalite Güvencesi
Süreç İyileştirme (SPI) Değerlendirme sonuçlarına göre, süreçleri uygun ve gerekli görülen biçimde değiştirmek üzere bir programın hazırlanması, programın uygulamaya konması (SPE gibi); sonuçlarının yeniden değerlendirilerek (SPA) beklenen ve istenen iyileşmenin (not yükselmesi) sağlanmasıdır. Organizasyonun iş amaçlarının yerine getirilmesini sağlar; verimlilik artışı, kalite artışı, müşteri memnuniyeti. Bir sanayi ürününde mevcut durumu değerlendirme, belirli bir süre içinde çıkan hatalı parça sayısı ile olabilir. İyileştirme programı da, işçinin eğitimi veya makinenin kalibrasyonunu düzeltme gibi işler olabilir. YZM 410 - Yazılım Kalite Güvencesi
Süreç İyileştirme (SPI) (devam…) Süreç değerlendirmenin amacı, iyileştirmeyi sağlamaktır. SPI konusu, SPA modellerinde ele alınır. SPI; hedeflenen bir not için yapılabilir, sürekli iyileşme için yapılabilir, işletme hedefleri göz önüne alınarak yapılabilir. YZM 410 - Yazılım Kalite Güvencesi
Ölçme ve İyileştirme Hedefi Biz neredeyiz? Dünya nerede? SPA: Süreç Değerlendirme Karşılaştırma Normları Nerede olmak istiyoruz… İş İhtiyaçları YZM 410 - Yazılım Kalite Güvencesi
Süreç Değerlendirme Ortamı tarafından incelenir risklerini belirler yeteneğini ve değişiklikleri belirler Süreç Değerlendirme öncülük eder öncülük eder Süreç İyileştirme Yetenek Belirleme motive eder YZM 410 - Yazılım Kalite Güvencesi
Organizasyon ve Süreç Kaliteli yazılım geliştirme ancak uygun bir yapılanma ile gerçekleştirilir. Organizasyonların olgunluk dereceleri geliştirdikleri yazılımın kalitesine doğrudan etki eder. Organizasyonların olgunlaştırılması için, yazılım ve süreç arasındaki ilişkinin iyi bilinmesi ve uygulanması gereklidir. Süreç belirleme, iyileştirme ve bunlara bağlı olarak yetenek belirleme amacıyla çeşitli modeller oluşturulmuştur. Kalite değerlendirme uygulaması içinde sıradüzensel olarak, belgelendirilecek kurumun seçilmesi, ön değerlendirme etkinlikleri, değerlendirme süreci, sürekli inceleme etkinlikleri, yeniden değerlendirme aşamaları uygulanır. YZM 410 - Yazılım Kalite Güvencesi
Olgun Organizasyonlar… Yazılım geliştirme ve bakımını yönetecek bir yetenek tüm organizasyon çapında bulunmaktadır. Yazılım geliştirme süreci, çalışanlara ve yeni elemanlara doğru bir şekilde iletilmektedir. Tüm aktiviteler belirli bir plana göre yürütülmektedir. Tanımlı süreçler içersindeki roller ve sorumluluklar tüm proje ve organizasyon için belirlenmiştir. Disiplinli bir süreç takip edilmekte ve tüm katılımcılar tarafından bunun değeri bilinmektedir. GİRİŞ: Olgun bir organizasyonun en belirgin özellikleri… YZM 410 - Yazılım Kalite Güvencesi
Olgun Olmayan Organizasyonlar… Yazılım geliştirme süreçleri belgelenmemiştir. Yazılım geliştirme süreçleri proje sırasında yönetici ve uygulayıcılar tarafından doğaçlama ile oluşturulmaktadır. Belirtimi yapılmış olsa bile, belirli bir yazılım geliştirme süreci takip edilmemekte ve mecbur tutulmamaktadır. Yöneticiler sürekli kriz çözmekle meşguldür. Ürün kalitesini ölçmek için tutarlı bir temel yoktur. Kaliteyi yükseltici etkinlikler projeler gecikince çoğu kez atlanmaktadır. Olgun olmayan bir organizasyonun özellikleri ise … Kaliteyi yükseltici etkinlikler = belgelendirme, gözden geçirme, test YZM 410 - Yazılım Kalite Güvencesi