Ders 2: Yazılım Geliştirme Yazılım Mühendisliği Ders 2: Yazılım Geliştirme
Hedef Yazılım geliştirme yaşam döngüsünün temel aşamaları olan, Planlama aşaması, Çözümleme aşaması, Tasarım aşaması, Gerçekleştirim aşaması ve Bakım aşaması anlatılarak, yaşam döngüsü modellerinin (süreç modelleri) açıklanması hedeflenmektedir. Yazılım Mühendisliği
Yazılım Mühendisliği
Yazılım Yaşam Döngüsü Yazılım Yaşam Döngüsü, herhangi bir yazılımın, üretim aşaması ve kullanım aşaması birlikte olmak üzere geçirdiği tüm aşamalar biçiminde tanımlanır. Yazılım işlevleri ile ilgili gereksinimler sürekli olarak değiştiği ve genişlediği için, söz konusu aşamalar bir döngü biçiminde ele alınır. Döngü içerisinde herhangi bir aşama da geriye dönmek ve tekrar ilerlemek söz konusudur. Bu nedenle yazılım yaşam döngüsünün tek yönlü ve doğrusal olduğu düşünülmemelidir. Yazılım Mühendisliği
Yazılım Yaşam Döngüsü Yazılım Mühendisliği
Yazılım Yaşam Döngüsü Yazılım Mühendisliği
Yazılım Yaşam Döngüsü Yazılım Mühendisliği
Yazılım Yaşam Döngüsü Yazılım Mühendisliği
Yazılım Yaşam Döngüsü Yazılım Mühendisliği
Belirtim Yöntemleri Bir temel sürece ilişkin işlevleri yerine getirmek amacıyla kullanılan yöntemler "belirtim yöntemleri" olarak adlandırılmaktadır. Üç sınıfa ayrılabilir: Süreç Akışı için kullanılan Belirtim Yöntemleri Süreç Tanımlama Yöntemleri Veri Tanımlama Yöntemleri Yazılım Mühendisliği
Belirtim Yöntemleri Yazılım Mühendisliği
Yazılım Süreç Modelleri Süreç Modelleri, Yazılım Yaşam Döngüsü'nde belirtilen süreçlerin geliştirme aşamasında, hangi düzen ya da sırada, nasıl uygulanılacağını tanımlar. Yazılım Üretim Yaşam Döngüsü beş sınıfta incelenebilir. Gelişigüzel Model Barok Model Çağlayan Model V Modeli Spiral (Helezonik) Model Prototipleme Modeli Evrimsel Geliştirme Modeli Artımlı Geliştirme Modeli Yazılım Mühendisliği
Gelişigüzel Model-1960lar Yazılım geliştirme ortamında herhangi bir model veya yöntemin kullanılmadığı, yalnızca geliştiren kişiye bağımlı, hatta geliştiren kişinin bile aradan belirli bir zaman geçtikten sonra anlayamayacağı ve değiştirme güçlüğü yaşanılan ortamlardaki üretim tarzı "Gelişigüzel Model" olarak adlandırılmaktadır. Bu modelle üretilen ürünlerin izlenebilirliği, bakılabilirliği oldukça zor, bazı durumlarda olanaksızdır. Yazılım Mühendisliği
Barok Model-1970ler Barok modeli, planlama, çözümleme, tasarım ve gerçekleştirim işlevleri içermektedir. Bu modelin ayırıcı özelliği, "Belgeleme" olgusuna ayrı bir önem atfetmesi ve belgelemeyi bir süreç olarak ele almasıdır. Belgelemenin, yazılımın geliştirilmesi ve sınanmasından hemen sonra yapılması öngörülmektedir. Barok modelin zayıf tarafı ise aşamalar arasındaki geri dönüşlerin nasıl yapılacağının tanımlı olmamasıdır. Yazılım Mühendisliği
Çağlayan Model-(Klasik Model) Yazılım Mühendisliği
Çağlayan Model Eksiklikler Gerçek yaşamdaki projelerin çok azı yineleme gerektirmez. Yazılımın kullanıcıya ulaşma zamanı oldukça uzundur. Gereksinim tanımları çoğu kez net olarak yapılamaz, bu konudaki eksiklik ya da yanlışın ortaya çıkma zamanı gerçekleştirim sonrasına rastlar. Bu durumda yanlışların düzeltilme ya da eksikliklerin giderilme maliyetleri yükselir. Çağlayan model ise söz konusu işleri üretim aşamasının sonunda öngörmekte, bu aşamaya kadar yapılması gereken işler (planlama, çözümleme, tasarım, kalite etkinlikleri vb.) teknik personel için çoğu kez önemsiz olarak görülebilmektedir. Bu nedenle bu model ile yapılan üretimlerde yazılım ekipleri mutsuz olmakta ve kod yazma dışında olan ve iş yükünün yaklaşık %80'ini kapsayan kısma yeterli önemi vermemektedir. Üst düzey yönetimlerin hedeflenen ürünü görme süresinin uzun oluşu projelerde sorunlara yol açmaktadır. Yazılım Mühendisliği
V Modeli Yazılım Mühendisliği
V Modeli V-Süreç Modeli, Çağlayan Modelinin uygulanmasını, "Üretim" ve "Sınama" işlevlerinin ne zaman yapılacağını vurgulayarak daha anlamlı hale getirmektedir. V modelinin sol tarafı üretim, sağ tarafı ise sınama işlevleri ile ilgilidir. Model aynı zamanda sınama işlemlerinde hata bulma durumunda nereye dönüleceğini de belirtmektedir. Sağ tarafta yapılan sınama işlemlerinde bulunan bir hata durumunda, yatay olarak karşısına gelen sol taraf işlevlerine dönülmektedir. Örneğin sistem sınama işlemlerinde bulunan yanlışların düzeltilmesi amacıyla mimari modelin sol tarafındaki sistem tasarımına dönülmekte, alt sistem tasarımı, modül geliştirme, modül sınama, alt sistem sınama ve sistem sınama işlemleri yinelenmektedir. Yazılım Mühendisliği
V Modeli Çıktıları Yazılım Mühendisliği
Spiral (Helezonik) Model Yazılım Mühendisliği
Spiral Modelin Üstün Yönleri Yazılım Mühendisliği
Prototipleme Modeli Prototipleme işlevinin temel amacı, ilgili alt modellerde ortaya çıkabilecek belirsizlikleri azaltmaktır. Prototip çalışması araştırma türü bir çalışma olabileceği gibi sonradan atılacak bir yazılım parçası da olabilir. Yazılım Mühendisliği
Prototipleme Modeli Prototip geliştirmedeki iş adımları: Belirsizliği tanımla Çözümleri tanımla Prototip çalışması yap Belirsizliğin sonucunu elde et Prototipleme modelinin temel zayıf yönü, kaynak maliyetlerinin kestirimindeki zayıflığıdır. Bir prototip çalışmasının ne kadar süreceği, ne kadar iş yükü gerektireceği kolayca kestirilememekte ve dolayısıyla yönetimi zorlaşmaktadır. Yazılım Mühendisliği
Evrimsel Geliştirme Süreç Modeli Evrimsel Geliştirme Süreç modeli, daha çok coğrafik olarak geniş alana yayılmış, çok birimli organizasyonlar için önerilmektedir. Yazılım Mühendisliği
Artımsal Geliştirme Süreç Modeli Modelde üretilen ve uygulamaya alınan her ürün sürümü birbirini içerecek şekilde giderek artan sayıda işlev içerecek biçimde geliştirilmektedir. Öncelikle ürüne ilişkin çekirdek bir kısım geliştirilerek uygulamaya alınmakta ardından yeni işlevsellikler eklenerek yeni sürümler elde edilmektedir. Yazılım Mühendisliği
Artımsal Geliştirme Süreç Modeli Yazılım Mühendisliği
Araştırma Tabanlı Süreç Modeli Araştırma ortamları bütünüyle belirsizlik üzerinde çalışan ortamlardır. Yapılacak işlerden edinilecek sonuçlar belirgin değildir ve bir sonraki adımın iş tanımları büyük ölçüde bir önceki adımın sonuçlarına bağlıdır. Bu nedenle gerek zaman gerekse işgücü planlamasında zorluklarla karşılaşılır. Helezonik modelin küçük dönüşleri biçiminde gerçekleştirilir. Geliştirilen yazılımlar genellikle sınırlı kez kullanılır ve kullanım bittikten sonra işe yaramaz hale gelir ve atılırlar. Yazılım Mühendisliği
Metedolojiler Metodoloji, bir Bilgisayar Yazılım Tasarım projesi ya da yazılımın yaşam döngüsü aşamaları boyunca kullanılacak ve birbiriyle uyumlu yöntemler bütününü içerir. Herhangi bir metodoloji, 1. Bir süreç modeli 2.Belirli sayıda belirtim yöntemi içerir. Günümüzde uygulamada yüzden fazla metodoloji kullanılmaktadır. Bir çok kuruluş, belirli bir süreç modelini temel alarak kendi metodolojilerini geliştirmekte ve uygulamaktadır. Metodolojiler genelde Çağlayan ya da Spiral modeli temel almaktadır. Örnek: Yourdon tarafından geliştirilmiş olan "Yapısal Sistem Tasarımı" metodolojisi. Yazılım Mühendisliği
Metedolojiler Bir metodolojide bulunması gereken temel bileşen ya da özellikler aşağıdaki gibidir: Yazılım Mühendisliği
Yourdon Yapısal Sistem Tasarımı Metodolojisi Yazılım Mühendisliği
Çalışma Soruları 1. Yazılım yaşam döngüsünün temel adımlarını açıklayınız. 2. Süreç modelleri ve belirtim yöntemlerinin önemi nedir? 3. Süreç modelleri ile belirtim yöntemleri arasındaki farklılıklar nelerdir? 4. Barok modeli tanımlayınız, yararlarını ve aksak yönleri nelerdir? 5. Şelale modeli tanımlayınız, yararlarını ve aksak yönleri nelerdir? 6. Spiral modeli tanımlayınız, ayırıcı özelliklerini belirtiniz. Yararlarını ve aksak yönlerini açıklayınız. 7. V model kullanılarak geliştirilecek örnek bir proje tanımı yapınız. 8. Prototip Geliştirme modeli ile geliştirilecek bir projede uygulanabilecek üç prototipleme örneği veriniz. 9. Evrimsel Geliştirme süreç modelinde Konfigürasyon yönetimi ve değişiklik denetimi neden sorundur? 10. Artımsal geliştirme süreç modelini tanımlayınız, yararlı ve aksak yönlerini belirtiniz. 11. Artımsal geliştirme süreç modeli kullanılarak geliştirilecek bir proje örneği veriniz. Gerekçenizi açıklayınız. 12. Araştırma tabanlı süreç modeli için uygun proje örnekleri veriniz. 13. Yourdon Yapısal Sistem Geliştirme Metodolojisini tanımlayınız. Yazılım Mühendisliği