Yazılım Süreçleri Software Processes Yazılım geliştirme Süreç Modelleri Software Development Process Models Proje Yönetimi Süreçleri Project Management Process Yazılım Geliştirme Süreçleri Software Development Process Amaç: Yüksek nitelikli (high quality) yazılım projeleri geliştirmek software project Nasıl Gerçekleşir? Tasarım, kodlama, test aktivitelerine odaklanarak yazılım ürününün geliştirilmesidir. Proses Ne demektir? Girdileri (inputs) , çıktılara (outputs) dönüştüren bir dizi aktivitedir [ISO 12207] ISO (International Organization for Standardization) ISO12207 yazılım yaşam döngüsü prosesleri (software lifecycle processes) için bir ISO standartıdır. Standart sözcüğü bir yazılım ürününün geliştirilmesi (developing) ve devamlılığının sağlanması (maintaining) için gereken tüm işleri tanımlar. . Yazılım Projesi sağlanması Kullanıcı İhtiyaçlarını Yazılım Ürünü Ürünün Sadece Teslim Edilmesi Yeterli midir? Hayır; kesinlikle yeterli değildir. Yazılım ürünün müşterinin ihtiyaçlarını (gereksinimlerini) karşılar şekilde çözülmesi yeterli değildir. Müşterinin ihtiyaçlarını karşılanırken projenin aynı zamanda düşük maliyetle Hedeflenen zamanda Yüksek nitelikli olmasına önem vermek gerekir. Bu İlave Amaçlar Nasıl Sağlanır? Yazılım Süreçleri bu sorunun cevabını verir. Herhangi bir yazılım ürünün geliştirilmesi için çeşitli yazılım geliştirme süreç tipleri vardır. Bunların içerisinden optimum olanı seçilerek yüksek nitelikli ve üretkne ürünler elde edilebilir. Gerçek ve Planlanmış Süreçler arasında fark var mıdır? Bir projedeki gerçekleştirilmiş (implemented) proses gerçek (actual) prosesdir. Eğer belirlenmiş (specified) süreç bazı problemler içeriyorsa, bu proses hiçbir şekilde gerçek proses değildir. Planlanmış proses olarak adlandırılabilir. Proses Modeli: Başarının Reçetesi Üzerinde çalışılan proje için en uygun olan genel bir prosesin kullanımına proses modeli adı verilir. Proses modeli ilgili projenin yapısına uygun iyi tanımlanmış (well-defined) bir yazılım ürünü gerçekleştirilir. Yazılım Prosesi Nasıl Belirlenir? Bir yazılım prosesi yüksek düzeyde (high level) bir dizi aşamadan meydana gelir. Altproses (subprocess) ise bu bir dizi adımın herhangi bir aşamasıdır. Diğer Prosesler : Yazılım Olmayan (Nonsoftware) Prosesler Yazılım geliştirme aktivitesini etkileyen farklı pek çok prosesler vardır. İş Prosesleri (Business process) Sosyal Prosesler (Social process) Eğitim Prosesleri (Training Process) ………. Yazılım Prosesi (Software Process) Yazılım ürünü geliştirmenin hem teknik hem de yönetimsel (management) konuları Yazılım Prosesi olarak adlandırılır. Yazılım Prosesinin 2 büyük bileşeni vardır. Software Process has two major components Proje Geliştirme Prosesi (tüm mühendislik aktiviteleri gerçekleştirilir Proje Yönetimi : projenin planlanması ve geliştirilmesi süresince kontrolü aktiviteleridir. Maliyet, zaman çizelgeleri, nitelik ve diğerleri Yazılım Geliştirme Proses Modelleri Şelale Modeli -Waterfall Model Prototipleme- Prototyping İteratif Gelştirme- Iterative Development Rational Unified Process Timeboxing Model Extreme Programming ve Çevik Prosesler (Agile Processes) Yazılım Geliştirme Proses Modelleri Amaç: Yüksek nitelikli yazılım ürünü geliştirmek Bu nedenle uygulanan aktiviteler doğrudan yazılım ürününün tasatımı, kodlanması ve testi işlemleri ile ilgilidir. Geliştirme prosesi (Development process) bir yazılım ürününün çekirdeğidir. Yönetim sürecine ( management Project) genellikle geliştirme proseslerine göre karar verilir. Şelale Modeli -Waterfall Model Yazılım ürünü geliştirilirken tüm aşamalar lineer olarak düzenlendiği için en basit model olarak adlandırılır. Herhangi bir Geliştirme Aşamasının Diğerinden Ayrılması Büyük ve karmaşık yazılım sistemleri daha küçük parçalara ayrılarak yazılım ürününe dönüştürülür. Karmaşık gerçek dünya problemlerinin çözümünde gerek mühendisler gerekse yöneticiler için daha etkili bir çözüm yoludur. Yazılım Kalitesi (Software Quality) Defect Repair Cost Requirements Maintenance Design Implementation Test Yazılım ürününün geliştirilmesi aşamasında hataları (defects) çalışmanın ilk aşamalarında bulmak daha kolay ve çok daha az maliyetlidir. 16 Başarılı Sonuçlar Nasıl Gerçekleşecektir? V&V Verification (doğrulama) ve Validation (sağlama) müşterinin gereksinimlerini karşılayan yazılım ürünlerine ulaşmanın en önemli koşuludur. Doğrulama (Verification): Herhangi bir geliştirme aşamasının girdisi ile birlikte çıktısı Ürünü doğru mu geliştiriyoruz? sorusunu cevaplar “Are we building the product right?” Sağlama (Validation) : Sistemin tüm gereksinimlerine uygun olarak şekilde her tamamlanmış bir döngünün çıktısı Doğru ürün mü geliştiriyoruz? Sorusunu cevaplar “Are we building the right product?” Bazı betimleme mekanizmaları her aşamada gerçekleştirilmelidir.