YAZILIM GELİŞTİRME VE SÜREÇ MODELLERİ
Yazılım Geliştirme Yaşam Döngüsü
Yazılımla ilgili herhangi bir projeyi geliştirme sadece kodlamadan oluşmamaktadır. Öncelikle bir yazılım geliştirme yaşam döngüsü bulunmaktadır. Yazılımın hem üretim hem de kullanım süresi boyunca geçirdiği tüm aşamalar yazılım geliştirme yaşam döngüsü olarak tanımlanır.
Başarılı bit yazılım geliştirme süreci için her aşamanın ayrıntılı bir şekilde planlanması, süreçlerin sağlıklı bir şekilde yönetilmesi sağlanmalıdır. Yazılım projelerin temel adımları aşağıdaki gibidir:
ü Planlama
ü Analiz
ü Tasarım
ü Gerçekleştirme
ü Teslim ve Bakım
1.Planlama
Yazılım yaşam döngüsünün ilk aşamasıdır. Projeye başlanmadan önce kullanıcı istekleri dikkate alınarak proje ihtiyaçları belirlenir. Proje süreci boyunca izlenecek yol ve yöntemler ile, donanım maliyeti, personel iş bölümü, proje yöneticisinin ön görü ve seçimleri, proje adımlarının sürece dağıtılması gibi unsurlar değerlendirilir.
2.Analiz
Sistem ihtiyaç ve işlevlerinin ayrıntılı bir şekilde çıkarıldığı ve belirli kurallar çerçevesinde kağıda döküldüğü aşamasıdır. Geliştirilecek olan yazılım ürününden tam olarak ne istendiği net bir şekilde belirlenir.
3.Tasarım
Belirlenen istekler çerçevesinde yazılım sisteminin temel yapısının oluşturulduğu aşamadır. Tasarım safhası boyunca 2 tür tasarımdan bahsedilebilir:
a)Mantıksal Tasarım
Önerilen sistemin yapısı anlatılır.
b)Fiziksel Tasarım
Yazılımı içeren bileşenler ve bunların ayrıntıları anlatılır.
4.Gerçekleştirme
Kodlama, test etme ve kurulumun yapıldığı aşamadır:
a)Kodlama
Oluşturulan yazılım ürünün programlama aşamasıdır. Basit ,okunabilir ve bakımı kolay olan kodlama tekniğiyle programlama yapılmalıdır.
b)Test Etme
Önceden belirlenen ihtiyaçları karşılayıp karşılamadığı ,doğru çıktı üretip üretmediği testleri yapılarak sistemdeki açıklıklar kapatılmalıdır.
5.Teslim ve Bakım
Tüm test aşamaları tamamlandıktan sonra ürün müşteriye teslim edilir. Yazılım ürünü kullanılmaya başlandıktan sonra bakım aşaması da başlar. Ürün kullanıldıktan sonra yazılımın desteklenip desteklenmemesine göre hata giderilir ya da yeni eklentiler yapılır.
YAZILIM YAŞAM DÖNGÜSÜNÜN TEMEL ADIMLARI
Yazılım yaşam döngüsün temel adımları çekirdek süreçler olarak adlandırılır. Bu süreçlerin gerçekleştirilmesi amacıyla Yazılım Belirtim Yöntemleri ve Yazılım Süreç Modelleri kullanılır.
Yazılım Belirtim Yöntemleri
Bir çekirdek sürece ilişkin fonksiyonları yerine getirmek amacıyla kullanılan yöntemlerdir.
1.Süreç Akışı İçin Kullanılan Belirtim Yöntemleri
Süreçler arası ilişkilerin ve iletişimin gösterildiği yöntemlerdir.
(Veri Akış Şeması,Yapısal Şemalar,Nesne-Sınıf Şemaları)
2.Süreç Tanımlama Yöntemleri
Süreçlerin iç işleyişini göstermek için kullanılan yöntemlerdir
(Düz Metin,Algoritma,Karar Tabloları,Karar Ağaçları,Anlatım Dili)
3.Veri Tanımlama Yöntemleri
Süreçler tarafından kullanılan verilerin tanımlanması için kullanılan yöntemlerdir.
(Nesne İlişkisi Modeli,Veri Taban Tabloları,Veri Sözlüğü)
YAZILIM SÜREÇ MODELLERİ
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 uygulanacağını tanımlayan modellerdir.Süreçlere ilişkin ayrıntılara ya da süreçler arası ilişkilerle ilgilenmezler.
Yazılım süreç modelleri 9 tanedir :
ü Kodla ve Düzelt Model Yaşam Döngü Modelleri
ü Çağlayan Yaşam Döngü Modeli
ü V Süreç Modeli
ü Evrimsel Geliştirme Süreç Modeli
ü Prototipleme Yaşam Döngü Model
ü Spiral Model
ü Formal Sistem Geliştirme Modeli
ü Yeniden Kullanıma Yönelik Geliştirme Modeli
ü Artırımsal Geliştirme Süreç Modeli
ü
1.Kodla Ve Düzelt Yaşam Döngü Modeli
Genellikle resmi olmayan bir ürün fikriyle başlar ve program ürün hazır olana kadar ya da gerekli zaman bitene kadar kodlama yapılarak devam edilir.
Avantajları
ü Herhangi bir planlamaya ihtiyaç duyulmaz
ü Çok küçük projelerde ya da kısa ömürlü prototiplerde uygulanabilir.
ü Program aşamaları çabuk geçilir.
ü Uzman görüşüne ihtiyaç düşüktür, herkes bu modeli kullanabilir.
Dezavantajları
ü Kontrollü değildir.
ü Kaynak planlaması yoktur.
ü Bitiş süresi belli değildir.
ü Hataların bulunması ve doğrulanması zordur.
ü Kodları düzeltmek maliyetli olabilir.
ü Kodlar kullanıcının ihtiyacını karşılamayabilir.
ü Kodlar sonradan değiştirmek için planlanmadığından esnek değildir ve değiştirilmesi zordur.
2.Çağlayan Modeli
Şelale yönteminde yazılım geliştirme süreci analiz, tasarım, kodlama, test, sürüm ve bakım gibi safhalardan oluşur.
Avantajları
ü Kullanılması ve anlaşılması basittir.
ü Yönetimi kolaydır.
ü Projenin safhaları ayrı ayrı olduğundan iş bölümü ve iş planı projenin en başında net bir şekilde bellidir. Bu durum projenin yönetimini de oldukça kolay hale getirir.
ü Çok küçük ve gereksinimleri çok iyi anlaşılmış projelerde iyi çalışır.
Dezavantajları
ü Karmaşık ve nesne yönelimli projeler için uygun değildir.
ü Devam eden ve uzun projeler için zayıftır.
ü Projede oluşabilecek her türlü değişime elverişsiz, katı bir modeldir. Yapılan her değişiklik maliyeti büyük oranda artırır.
ü Müşteri memnuniyetini sağlamak çok zordur ; çünkü gelişim ve değişime açık bir model değildir
ü Model safhalardan oluştuğu için ürün son safhada tamamlanır, gereksinimlerinin iyi tanımlanmadığı ,müşterinin ne istediğinin anlaşılmadığı bir projede bu durum proje bittikten sonra projenin iptal edilmesine ve başka gerginliklere sebep olmaktadır.
3.V Modeli
Şelale modelinin gelişmiş hali olarak düşünülebilecek bir yazılım geliştirme süreci sunar .Doğrusal bir yönde ilerlemek yerine , süreç adımları kodlama evresinden sonra yukarıya doğru eğim alarak tipik V şeklini oluşturur.
Avantajları
ü Doğrulama ve onaylama planları erken aşamalarda vurgulanır.
ü Doğrulama ve onaylama sadece son üründe değil tüm teslim edilebilir ürünlerde uygulanır.
ü Proje yönetimi tarafından takibi kolaydır.
ü Kullanımı kolaydır.
Dezavantajları
ü Aynı zamanda gerçekleştirilecek olaylara kolay imkan tanımaz.
ü Fazlar arasında tekrarlamaları kullanılmaz.
ü Risk çözümleme ile ilgili aktiviteleri içermez.
ü Yazılım da diğer sitemler gibi zamanla evrimleşir.
ü Geliştirme devam ettikçe iş ve ürün gereksinimleri de değişkenlik gösterebilir.
ü Son ürüne ulaşma düz bir çizgi ile ifade edilmez.
4.Evrimsel Geliştirme Süreç Modeli
İlk tam ölçekli modeldir. Coğrafik olarak geniş alana yayılmış, çok birimli organizasyonlarda kullanılmak üzere geliştirilecek projeler için önerilir. Modelin başarısı ilk evrimin başarısına bağımlıdır.
Avantajları
ü Kullanıcıların kendi gereksinimlerini daha iyi anlamlarını sağlar.
ü Sürekli değerlendirme erken aşamalardaki geliştirme risklerini azaltır.
ü Hatalar azalır.
Dezavantajları
ü Sürecin görünürlüğü azdır. (Düzenli teslim edilebilir ürün yoktur.)
ü Sistemler sıklıkla iyi yapılandırılmaz. (Sürekli değişiklik yazılımın yapısına zarar verir.
ü Bakımı zordur.
ü Yazılımın gereksinimini yenilemek gerekebilir.
5.Prototipleme
Bir yazılım sisteminin ilk sürümüdür. Bir problem ve olası çözümleri hakkında daha fazla bilgi edinmek,
Tasarım seçeneklerini denemek ve temel kavramları göstermek için prototip modeller kullanılmaktadır. Burada amaç; kullanıcının gereksinimlerini ortaya çıkarmaktır. Ana fonksiyonları gösterecek olan bir ürün geliştirilir, burada detaylar yoktur, sadece anahtar fonksiyonlar vardır.
Avantajları
ü Kullanıcı sistem gereksinimlerini görebilir.
ü Karmaşa ve yanlış anlaşılmaları engeller.
ü Yeni ve beklenmeyen gereksinimler netleştirilebilir.
ü Risk kontrolü sağlanır.
Dezavantajları
ü Prototip hedefleri net değilse kod hackleme ya da jenga başlar.
ü Düzeltme aşaması atlanır ise düşük performansa yol açar.
ü Müşteri prototipten de son ürün gibi görünüm ve etki bekler.
6.Spiral Model
Sarmal modeli aynı safhalara geri dönülmesinin bir zorunluluk olduğunu vurgular, şelale modelinde yok sayılan riskleri göz önünde bulundurur .Proje çevrimlere ayrılır ve her bir çevrimin riskleri ayrı ayrı ele alınır .Çağdaş modellere son derece yakındır.
Avantajları
ü -Kullanıcılar sistemi erken görebilirler.
ü -Geliştirmeyi küçük parçalara böler. En riskli kısımlar önce gerçekleştirilir.
ü -Pek çok yazılım modelini içinde bulundurur.
ü -Riske duyarlı yaklaşımı potansiyel zorlukları engeller.
ü -Hataları erken gidermeye odaklanır.
ü -Yazılım-donanım sistemi geliştirmek için bir çerçeve sağlar.
Dezavantajları
ü Küçük ve düşük riskli projeler için pahalı bir yöntemdir.
ü Karmaşıktır.
ü Ara adımların fazlalığı nedeniyle çok fazla dokümantasyon gerektirir.
7.Formal Sistem Geliştirme Modeli
Yazılım tasarım ve gerçekleştirmesiyle ilgili matematiksel bir tekniktir .Bu modelin temelinde karmaşık sistemleri geliştirme ve program geliştirmeye destek yatar .Kullanıcı sistemi kullanmaya başladığında karşısına çıkan belirtim hatalarını minimize eder.
Avantajları
ü Yazılımdaki belirsizlikleri, eksiklikleri ve uyumsuzlukları saptar.
ü Hatasız yazılım geliştirme imkanları sunar.
ü Karmaşık değildir.
Dezavantajları
ü Çok zaman alan ve pahalı bir yöntemdir.
ü Kullanımı esnasında teknik olmayan personelle iletişim mekanizması zor işler.
ü Sadece birkaç geliştirici bu modelin uygulamasıyla ilgili temel bilgilere sahip olması için yaygın eğitim gerektirir.
8.Yeniden Kullanıma Yönelik Geliştirme
Organizasyon tarafından daha önce hazırlanmış veya dışarıdan temin edilmiş yazılımların kullanılması ile geliştirme yapılması son yıllarda popülaritesi artan bir yaklaşımdır .Organizasyonların olgunlukları artıkça , bu tür uygulamalar yapabilmek için alt yapı kurulmuş olmaktadır.
Avantajları
ü Kaynak kontrolü mümkündür.
ü Maliyet denetimi yapmak mümkündür.
ü Kısa sürede yazılım geliştirilebilir.
ü Basit ve anlaşılırdır.
ü Önceden oluşturulmuş sınıflar tekrardan kullanılabilir.
Dezavantajları
ü Gereksinimleri anlamak güçtür.
ü Pahalıdır.
ü Uzmanlık gerektirir.
ü Başarı garantisi yoktur.
9.Artırımsal Geliştirme Süreç Modeli
Artırımsal geliştirme süreç modeli, çağlayan yaşam döngü modeli ile evrimsel geliştirme süreç modelini temel almaktadır. Bir yazılım ürünü geliştirilirken sürekli olarak değişen müşteri gereksinimlerini karşılayan ve ortaya çıkan kaçınılmaz hataların zamanında düzeltilmesini sağlayan bir süreç modelidir.
Avantajları
ü Sistem için gerekli olan gereksinimler müşterilerle belirlenir.
ü Gereksinimlerin önemine göre teslim edilecek artırımlar belirlenir.
ü Öncelikle en önemli gereksinimleri karşılayan çekirdek bir sistem geliştirilir.
ü Tüm projenin başarısız olma riskini azaltır.
ü En önemli sistem özellikleri daha fazla sınanma (test edilme ) imkanı bulmuş olur.
Dezavantajları
ü Yapılan işlerden edinilecek sonuçlar belli değildir.
ü Geliştirilen yazılımlar genellikle sınırlı sayıda kullanılır ve kullanımı bittikten sonra işe yaramaz hale gelir ve atılır.
ü Model -zaman fiyat kestirimi belli olmadığı için sabit fiyat sözleşmelerinde uygun değildir.
ÇEVİK YAZILIM GELİŞTİRME METODOLOJİLERİ
Çevik Yazılım Geliştirme
Yazılım geliştirme süreci sıkıntılı ve uzun süren bir dönemdir. Yazılım geliştirme projeleri yönetimsel eksikliklerden dolayı ancak kısmi bir başarı memnuniyet ile tamamlanabilmektedir. Yazılım sektöründe , yazılım sürümlerinin zamanında ortaya çıkarılmaması , değişiklik isteklerine çabuk cevap verilmemesi ,yazılım hatalarının geç fark edilmesi ve zaman içinde gelen isteklere göre sistemin kendi yapısını geliştirememesi gibi çeşitli sorunlar ortaya çıkmıştır.
Bu sorunların aşılmasına yönelik yapılan çalışmalar sonucu ,1990 ‘lı yılların sonlarına doğru çevik “çevik “olarak adlandırılan metotlar ortaya çıkmıştır .Çevik yazılım geliştirme metotları ; piyasaya çabuk ürün çıkarabilme , değişen isteklere hızlı yanıt verme ve en kısa sürede bir yazılım ürünün müşteri hizmetine sunmayı amaçlamaktadır .Çevik yazılım geliştirme metotları, verimliliği yüksek ,esnek, hata oranı düşük, hızlı ve ucuz çözümler sunmaktadır .Çevik yazılım geliştirme metotları ,kendi içerisinde özü aynı fakat pratikleri farklılaşan çeşitli metodolojilere ayrılmaktadır.
Çevik Yazılım Geliştirme Manifestosu
Kent Beck ve değişik çevik metotların temsilcileri olan 16 arkadaş bir araya gelerek ortak yanlarını ortaya koyan bir çevik manifestosu yayınladılar. Bu manifestoda ;
ü Süreçler ve Araçlar yerine Bireyler ve Etkileşimler,
ü Kapsamlı Belgeler yerine Çalışan Yazılım,
ü Sözleşme Görüşmeler yerine Müşteri İlişkileri,
ü Plan İzleme yerine Değişikliğe Açıklığın,
daha önemli ve öncelikli olduğu belirtilmektedir.
Çevik Yazılım Geliştirme Prensipleri
Çevik yazılım geliştirme manifestosunun altında yatan temel prensipler şunlardır;
ü Müşteriye hızlı ve sürekli olarak kullanılabilir yazılım teslimatı yapmaktır.
ü Kodlamanın ilerleyen safhalarında bile gereksinim değişiklikleri kabul edilir, esnektir.
ü Mümkün olduğunca kısa zaman aralıklarında çalışan, kaliteli yazılım teslimatı yapılır.
ü Analistler, uzmanlar, yazılımcılar, tesisatçılar vs. tüm ekip elamanları birebir işetişim halinde birlikte çalışırlar.
ü İyi projeler motivasyonu yüksek kişiler etrafında kurulabilir.
ü Ekip içerisinde kaliteli bilgi akışı için yüz yüze iletişim önemlidir.
ü İlerlemenin birincil ölçüsü çalışan bir yazılımdır.
ü Çevik süreçler, sürdürülebilir geliştirmeyi destekler.
ü Sağlam teknik alt yapı ve tasarım, çevikliği artırır.
ü Basitlik önemlidir.
ü En iyi mimariler ve tasarımlar kendini organize edebilen ekipler tarafından yaratılır.
ü Düzenli aralıklarla ekip kendi yöntemlerini gözden geçirir ve verimliliğini artırmak için gerekli iyileştirmeleri yapar.
Yazılım Projelerinde Yaygın Uygulanan Çevik Metodolojiler
ü Extreme Programming (XP)
ü Rational Unified Process
ü Feature-Driven Development (FDD)
ü Test-Driven Development (TDD)
ü LEAN Development
ü Dynamic System Development Methodology (DSDM)
ü Microsoft Solution Framework (MSF)
ü SCRUM
SCRUM
Çevik yazılım yöntemi kendi içerisinde özü aynı, fakat süreçlerinde farklılaşan alt kollara ayrılmaktadır Bu popüler kollardan bir tanesi de SCRUM’ dır. SCRUM, kelime olarak Rugby oyununda oluşturulan küçük ekiplere verilen isimdir. Bu yöntem 1990’ lı yılların ortalarında Jeff Sutjerland ve Ken Schawaber tarafından oluşturulmuş ve günümüze sürekli bir gelişme halinde gelmiştir.
SCRUM, gereksinimleri açıkça belli olmayan, değişime açık, karmaşık yazılım projelerin yönetimi için uygulanması en ideal yöntemdir. İhtiyaca yönelik, esnek, bir geliştirme sürecidir. Düzenli geri bildirim ve kısa dönemli planlamalarla hedefe ulaşmayı sağlıyor. En önemli özelliği ise müşteri ve geliştirici doğrudan temas halinde olmadıkları için yazılım geliştirici baskı altında olmaz, yapması gereken işe yoğunlaşır. Başarısı kanıtlanmış bir yazılım geliştirme yöntemi olan Microsoft, Google, Facebook gibi şirketler tarafından kullanılmaktadır.
SCRUM’ da 3 temel kavram vardır:
1. Roller
2. Toplantılar
3. Bileşenler/ Araçlar
KAYNAKÇA
https://www.codex.com.tr/yazilim-gelistirme-modelleri
https://fikirjeneratoru.com/yazilim-proje-yonetimi-yontemleri/
http://www.acm-software.com/scrum/
Yazılım Mühendisliğinde Modern Yaklaşımlar,Dr. Fatih Yücalar,Dr. Emin Borandağ,2018
Berfin KAÇAR 180601007