2. Yazılım Geliştirme Nedir?
Yazılım geliştirmek sadece kodlamadan ibaret değildir. Bu konu
karmaşıktır ve günümüzdeki uygulama gereksinimlerinde daha
da karmaşık hale gelmektedir.
Bu bize gösteriyor ki bu işin ciddi bir sistematiğinin olması
gerekmektedir. Aksi takdirde ne kaliteli yazılımlar
geliştirebiliriz ne de piyasa şartlarında aynı pozisyonda
kalabiliriz.
3. SDLC
SDLC yazılımların nasıl geliştirilmesi gerektiğini veya nasıl
iyileştirilmesi gerektiğini anlatan bir rota çizmektedir.
SDLC yüksek kaliteli yazılımları tasarlamak, geliştirmek ve test
etmek için yazılım endüstrisi tarafından kullanılan bir süreçtir.
SDLC müşteri beklentilerini karşılayan, planlanan zaman
içerisinde tamamlanan, maliyet tahminlerine uygun kaliteli bir
yazılım üretmeyi amaçlar.
Uluslararası bir standarttır. Yazılım geliştirmede ve bakımında
gerekli olan tüm görevleri tanımlamayı hedeflemektedir.
5. • SDLC’nin en önemli aşamasıdır.
• Müşteri ve ekipteki tecrübeli kişiler tarafından
gerçekleştirilir.
• Burada ortaya çıkan bilgiler daha sonra temel proje
yaklaşımını planlamak ve ekonomik, teknik fizibilite
çalışmaları aşamasında kullanılır.
• Kalite güvencesi şartlarının planlanması yapılır.
• Projeye ilişkin riskler ortaya konur.
• En az riskle projeyi gerçekleştirmek için teknik
yaklaşımlar belirlenir.
6. • Ürün gereksinimlerini açıkça tanımlama ve belgeleme
yapılır.
• Müşteriden onay alınır.
• Proje boyunca geliştirilecek tüm ürün gereksinimleri bu
belgelerde bulunur.
7. • Ürün gereksinimlerine bağlı olarak yazılımın hangi
mimaride geliştirileceğinin tasarlandığı aşamadır.
• Birden fazla yaklaşım önerisi verilebilir.
• Bu yaklaşımlar ilgili proje paydaşları ile paylaşılır,
gözden geçirilir ve risk değerlendirmeleri yapılır. Bu
aşamada aşağıdaki konulara dikkat edilir ve en iyi
yaklaşım seçilir.
• Ürün sağlamlığı, tasarım modülerliği, bütçe, zaman
kısıtları
8. • Bu aşamada geliştirmeler başlar.
• Geliştirmeler yapılan analiz ve tasarımlara göre
geliştirilir.
• Bu aşamada teknik tasarım ve kurum standartlarına sadık
kalınır.
9. • Modern SDLC yöntemlerinde testler her aşamada yapılır.
• Ürünün analiz ve müşteri gereksinimlerine uygunluğu
kontrol edilir.
10. • Ürün test edildikten ve kullanılmaya hazır hale geldikten
sonra teslim edilir.
• Ürün öncelikle pilot kullanım aşamasından geçirilir.
• Sonrasında geri dönüşler ile ürün iyileştirilebilir.
12. SDLC - Waterfall
• İlk modeldir.
• Doğrusal-sıralı model olarak da adlandırılır.
• Kullanımı ve anlaması çok kolaydır.
• Her aşamanın bir sonraki aşama başlamadan tamamlanması
gerekir.
• Fazlandırmalar yapılır ve bu fazlardan birinin sonucu
diğerinin girdisi olarak kabul edilir.
14. SDLC - Waterfall
• Kullanımın uygun olduğu durumlar;
– Gereksinimler çok iyi dokümante edilmiş, açık ve sabit
ise,
– Ürün tanımı kararlı ise,
– Belirsiz gereksinimler yok ise,
– Ürünü destekleyecek gerekli uzmanlığa sahip kaynaklar
var ise,
– Proje kısa ise.
15. SDLC – Waterfall - Avantajları
• Anlamak ve kullanmak kolaydır.
• Modelin sağlamlığı nedeniyle kolay yönetilir. Her aşamada
belirli çıktılar ve inceleme süreci vardır.
• Aşamalar ardı ardına işlenir ve tamamlanır.
• Gereksinimlerin iyi anlaşılabildiği küçük projelerde iyi
uygulanabilir.
• Aşamalar açıkça tanımlanır.
• İşleri sıralamak kolaydır.
• Süreçler ve sonuçlar kolay iyi dokümante edilir.
16. SDLC – Waterfall - Dezavantajları
• Son aşamaya kadar uygulama çalışır durumda olmayabilir.
• Sonuçlar açısından yüksek risk ve belirsizlikler vardır.
• Karmaşık ve object-oriented projeler için uygun değildir.
• Uzun ve devam eden projeler için zayıf bir modeldir.
• İhtiyaçların değişme riskinin yüksek olduğu projeler için
uygun değildir. Bundan dolayı bu modelde risk ve belirsizlik
yüksektir.
• Aşamaların ilerlemesini ölçmek zordur.
• Herşey önceden belirlendiği için değişen gereksinimleri
karşılayamaz.
17. SDLC – Iterative(Yinelemeli)
• Bu modekde süreç yazılım gereksinim setinin küçük bir parçasının
implementasyonu ile başlar ve uygulama tamamlanana kadar devam
eder.
• Bu işlem tekrarlanarak modelin her tekrarlanması sonunda yazılımın
yeni bir sürümü üretilir.
• Her yinelemede tasarım değişiklikleri yapılır ve yeni işlevler eklenir.
• Gereksinimlerin tamamen hazır olması gerekmez.
• Temel fikir tekrarlanan döngüler ile her defada küçük bölümler halinde
sistem tamamlanmaya çalışılır.
• Aynı anda iki farklı iterasyon yapılıyor olabilir.
• Bu modelde gereksinimlerin tümü çeşitli bölümlere ayrılmıştır.
• Gereksinimler her iterasyonda tasarım, geliştirme ve test işlemine tabi
olur.
• Yazılım arka arkaya iterasyonlar vasıtasıyla geliştikçe, sürümü
doğrulamak için testler tekrarlanmalı ve genişletilmelidir.
19. SDLC - Iterative(Yinelemeli)
• Kullanımın uygun olduğu durumlar;
– Sistem gereksinimlerinin açıkça tanımlandığı ve
anlaşılmış olduğunda,
– Ana gereksinimler tanımlanmalıdır, sonrasında bazı
işlevler ya da iyileştirmeler zamanla geliştirilebilir
olduğunda,
– Yeni bir teknoloji kullanılıyor ve projede çalışanlar bunu
yeni öğreniyorsa,
– Gelecekte değişebilecek bazı yüksek riskli özellikler ve
hedefler varsa.
20. SDLC - Iterative(Yinelemeli) - Avantajları
• Bazı fonksiyonlar sürecin başında geiştirilebilir.
• Sonuçlar erken ve periyodik olarak alınır.
• Paralel geliştirme planlanabilir.
• İlerlemeler ölçülebilir.
• Kapsam ve gereksinimleri değiştirmek daha az maaliyetlidir.
• Küçük iterasyonlarda test ve hataları temizleme kolaydır.
• Riskler iterasyon sırasında tanımlanır ve çözülür, her yineleme
kolaylıkla yönetilen bir kilometre taşıdır.
• Risk yönetimi kolaydır. Önce yüksek riskli kısımlar yapılır.
• Her adımda, kullanılabilir ürün çıkartılır.
• Her iterasyonda tespit edilen sorunlar, zorluklar ve riskler
sonrakilerde göz önünde bulundurulabilir.
• Değişen gereksinimleri destekler.
• Başlangıçtaki çalışma süresi daha azdır.
• Büyük ve kritik projelere daha uygundur.
• Döngüde müşterinin değerlendirebileceği ürünler ortaya çıkar.
21. SDLC - Iterative(Yinelemeli) -
Dezavantajları
• Fazla kaynak gerekebilir.
• Değişim maaliyeti kolay olsada değişimi yönetmek kolay
olmayabilir.
• Çok fazla yönetim takibi, dikkati gerekebilir.
• Sistem mimarisi veya tasarım konuları ile ilgili sorunlar ortaya
çıkabilir, çünkü tüm gereksinimler tüm yaşam döngüsü başında
toplanmamaktadır.
• İterasyonların tanımlanması, komple sistemin tanımlanmasını
gerektirebilir.
• Küçük projelere uygun değildir.
• Yönetim karmaşıklığı yüksektir.
• Projenin sonu bilinmeyebilir, ki bu bir risktir.
• Risk analizi için yüksek vasıflı kaynaklara ihtiyaç vardır.
• Projelerin ilerlemesi, risk analizi aşamasına oldukça bağımlıdır.
22. SDLC – V-Model
• Süreçlerin yürütülmesinin V şeklinde sıralı bir şekilde
gerçekleştiği SDLC modelidir.
• Waterfall’ın bir uzantısıdır ve her bir aşamanın bir test
aşamasına bağlı olma prensibine dayanır.
• Geliştirme döngüsündeki her aşamanın ilişkili olduğu bir test
aşaması olduğu anlamına gelir.
• Disiplinli bir modeldir ve sonraki aşamaya mevcut aşamayı
tamamladıktan sonra geçilebilir.
• Geliştirme ve test paralel yürür.
24. SDLC – V-Model
• İşleyiş olarak Waterfall modele çok benzemektedir, ikisi de
sıralı olarak işler.
• Gereksinimler proje başlamadan açık olarak belirlenmelidir
çünkü geri dönüp değişiklik yapmak çok maaliyetli olur.
• Bu model medical projelerde kullanılır, çünkü çok disiplinlidir.
• V-Model uygulamak için uygun durumlar;
– Gereksinimlerin iyi belirlenmiş ve net olarak belgelenmiş
olması
– Ürün tanımının stabil olması
– Teknolojinin değişken olmadığı ve takım elemanlarınca iyi
bilinmesi
– Belirsiz ya da tanımsız gereksinimlerin olmaması
– Kısa proje olması
25. SDLC – V-Model – Avantaj/Dezavantaj
• Avantajları
– Yüksek disiplinlidir, aşamalar tamamlanarak ilerler
– Gereksinimlerin iyi tanımlandığı küçük projeler için uygundur
– Anlaması ve uygulaması kolaydır
– Sağlam bir model olduğu için kolay yönetilir
– Her aşamada belirli çıktılar ve inceleme süreci vardır
• Dezavantajları
– Sonuç uygulama açısından yüksek riskli ve belirsizlikleri vardır
– Karmaşık projeler için uygun değildir
– Uzun ve devam eden projeler için yetersizdir
– İhtiyaçların orta ve yüksek derecede değişme ihtimali olan projeler
için uygun değildir
– Uygulama test aşamasındayken geriye dönüp bir işlevi değiştirmek
zordur
– Son aşamaya kadar çalışan bir uygulama ortaya çıkmayabilir
26. SDLC – Agile(Çevik)
• Agile Model, süreç uyumluluğu ve müşteri memnuniyetine
odaklanarak hızlı bir şekilde sürekli çalışan uygulamalar
oluşturmayı hedefler
• Küçük iterasyonlarla üretim yaparak ürünü ortaya çıkarır
• Her iterasyon 1-3 hafta arasında sürer
• Her iterasyonda farklı konularda eşzamanlı olarak çalışan
yetenekli takımlar ile gerçekleştirilir
– Planlama
– Gereksinim analizi
– Tasarım
– Geliştirme
– Unit Test
– Kabul Testi
• İterasyonun sonunda çalışan uygulma müşteriye gösterilir
27. SDLC – Agile(Çevik)
• Odaklanılan Noktalar
– Değişime ayak uydurabilme
– Dokümantasyandan çok değişebilen müşteri
gereksenimlerine odaklanma
– Sürekli çalışan ve işe yarayan uygulama üretme
– Küçük zaman dilimlerinde belilenen görevleri
tamamlama
– Yetenekli ve yüksek iletişime sahip takım elemanları
29. SDLC – Agile(Çevik)
• Çevik model her projenin farklı şekilde ele alınması
gerektiğine ve mevcut yöntemlerin proje gereksinimlerine
en uygun hale getirilmesi gerektiğine inanır
• İşler, bir sürümde belirli özellikler sunmak için küçük
zamanlara bölünür
• Yinelemeli yaklaşım uygulanır ve her yinelemenin sonunda
çalışan yazılım teslim edilir
• Her çıktı aşamalı olarak farklı özellikler kazandırır ve
nihayetinde müşterinin istediği tüm özelliklere sahip olmuş
olur
30. SDLC – Agile Manifesto Prensipleri
• Bireyler ve Etkileşim
– Kendi kendini iyileştirme ve motivasyon önemlidir
– Görevlerde yer değiştirme ve birlikte kodlama önelidir
• Çalışan Uygulama
– Çalışan bir uygulama sunmak belgeler oluşturmadan daha
önemlidir ve gereksinimleri anlamak için en iyi iletişim
aracıdır
• Müşteri İşbirliği
– Gereksinimler çeşitli faktörlerden dolayı projenin
başlangıcında tamamen toplanamayacağı için, doğru ürün
gereksinimlerini sağlama müşteri ile sürekli iletişim ile
sağlanabilir.
• Değişime Karşılık Verme
– Hızlı bir şekilde değişime ve sürekli gelişime olumlu yanıt
veremeye odaklanılır.
31. SDLC – Agile ile Geleneksel Modellerin
Kıyaslaması
• Agile uyarlanabilir yazılım geliştirme yöntemlerine dayanır, geleneksel
modeller tahmini bir yaklaşım benimser
• Geleneksel modeller detaylı planlama ile çalışır ve ileriki birkaç ayda
veya ürünün ömrü boyunca tamamlanacak işlerin bir tahmini ile yürür.
• Tahminli yöntemler tamamen döngü başlangıcında yapılan ihtiyaç
analizi ve planlamaya bağlıdır. Sonradan istenen değişiklikler sıkı bir
değişim yönetimi ile sağlanır.
• Agile ayrıntılı planlama yapılmadan uyarlanabilir bir yaklaşım kullanır
ve gelecekteki işler üzerinden yalnızca hangi özelliklerin geliştirilmesi
gerektiğine ilişkin netlik vardır.
• Özelliklere dayalı bir gelişim vardır ve ekip sürekli olarak değişen ürün
gereksinimlerine uyum sağlar.
• Agile ile aşamalı ve istenilenler doğrultusunda ilerlediği için çıktı
açısında riskler en aza iner.
• Müşteri etkileşimi Agile metodolojinin omurgasını oluşturur, az
dökümantasyon sürekli iletişim, bu metodolojinin en tipik özelliğidir.
• Agile takımlarda yakın işbirliği çok önemlidir.
32. SDLC – Agile - Avantaj / Dezavantaj
• Agile son dönemde yazılım dünyasında büyük oranda kabul
görmüş bir yöntemdir. Bununla birlikte bu yöntem her ürün için
uygun olmayabilir.
– Avantajlar
• Çok gerçekçi bir yaklaşım sağlar
• Ekip çalışmasını ve birbirini eğiten elemanları destekler
• İşlevler hızlı geliştirilir ve gösterilir
• Az kaynak ihtiyacı vardır
• Sabit ve değişken gereksinimlere uygundur
• İhtiyaçların bir parçasını karşılayan ve sürekli çalışan
uygulamalar sunar
• Planlanmış zamanlarda ürün çıkartmayı sağlar
• Az ya da hiç planlama gerekli olmayabilir
• Kolay yönetilir
• Geliştiricilere esneklik kazandırır
33. SDLC – Agile - Avantaj / Dezavantaj
• Dezavantajlar
– Müşteri etikileşimine bağlı olarak müşteri açık değilse ekip
yanlış yönde yönlenir
– Minimum dökümantasyon olduğundan yüksek bireysel
bağımlılık vardır
– Ürün gereksinimleri sürekli değişebileceğinden maliyetler
peşinen tahmin edilemez.
– Müşterilerden sürekli geri bildirim almak sizi alaşağı edebilir
ya da bazı müşterilerin zamanı ve hiç ilgisi olmayabilir.
– Müşteriler geri bildirim vermek istediklerinde akıllarına
gelebilecek yeni istekler ek fazları ortaya çıkarır. Bu durum
proje maliyetlerini ve süresini uzatabilir.
– Müşteri ile iletişimi zor olan büyük Kurumsal yapılarda
uygulamak zor olacaktır.