Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SDLC - Software Development Life Cycle

428 views

Published on

Yazılım geliştirme yaşam döngüsü hakkındaki yaklaşımları içerir.

Published in: Software
  • Be the first to comment

SDLC - Software Development Life Cycle

  1. 1. ddemirel / 20171124 Software Development Life Cycle
  2. 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. 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.
  4. 4. SDLC – Adımlar/Aşamalar Planlama Analiz Teknik ve Süreçsel Tasarım Geliştirme Test Deployment
  5. 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. 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. 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. 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. 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. 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.
  11. 11. SDLC - Modelleri • Waterfall • Iterative • V-Model • Agile
  12. 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.
  13. 13. SDLC - Waterfall
  14. 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. 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. 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. 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.
  18. 18. SDLC – Iterative(Yinelemeli)
  19. 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. 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. 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. 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.
  23. 23. SDLC – V-Model
  24. 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. 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. 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. 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ı
  28. 28. SDLC – Agile
  29. 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. 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. 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. 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. 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.
  34. 34. Kaynaklar • https://www.tutorialspoint.com/sdlc • https://www.pem360.com/blog/Agile/Agile-Yontemlerin- Avantajlari-ve-Dezavantajlari/183

×