Yazılım Geliştirme Modelleri - Agile'ın Temelleri

Bu yazımda Coursera’da bulunan Software Development Processes and Methodologies dersinin 4. haftasının Agile Fundamentals başlığındaki konulardan tuttuğum notları ve kendi öğrendiklerimi paylaşacağım.

Yazının sonuna da eklediğim bu bildiri her şeyi çok güzel özetliyor.

Agile (Çevik) Temelleri

Neden Agile?

Waterfall modele baktığmızda gayet mantıklı görünüyor. İlk olarak gereksinimleri belirliyoruz, tasarımını yapıyoruz, geliştiriyoruz doğru şeyi geliştirdiğimizden emin olup ürünü ortaya çıkarıyoruz.

Waterfall’da karşılaşılan en büyük problemlerden birisi ürünün geliştirilip testlerinin yapıldığı aşamada bir çok beklenmeyen sorunla karşılaşılmasıydı. Yazılım sistemleri çok kompleks oluşumlar. Bir araya geldiklerinde nasıl davranacaklarını neler yapacaklarını bilmek zorlu bir süreç. Bir araya getirmede oluşan bu sorunlar da önceden farkedilmediklerinden çözmesi maliyetli oluyordu.

Problemlerden bir diğeri ise yazılım geliştirildikten ve ortaya çıkartılıp kullanılmaya başlandıktan sonra kullanıcılar ihtiyaçlarının farklı bir şey olduğunu söylüyordu. Bu aşamada gereksinimlerin iyi belirlenip belirlenmediği konuşulabilir. Ancak kullanıcı ihtiyaçlarını öngörmek ve tahmin etmek yeterince zor bir süreç. Değişen pazar ihtiyaçları da gereksinimlerin değişmesine sebep olup gereksinimlerin önceden belirlenmesini iyice zor hale getirebilmekteydi.

Değişen zorluklara karşı çeşitli yöntemler geliştirilerek takım üyeleri arasındaki yardımlaşmanın arttırılması ve daha hızlı öğrenmenin sağlanması için çalışmalar yapıldı. Denenen yöntemler sonucunda bizi başarılı yapan şeyleri belirlemeye çalışan 17 kişi 2001 Şubat’ında bir araya gelerek Agile Manifesto’yu yayınladı.

Agile manifesto 4 değer ve 12 prensipten oluşan bir düşünce yapısı. Bir process değil.

Agile manifesto’nun daha iyi anlaşılması için derste de önerilen şu video izlenebilir.

Agile Manifesto ve Prensipleri

Ana Maddeler

  • Bireyler ve karşılıklı iletişim süreçlerden ve araçlardan
  • Çalışan yazılım kapsamlı dökümantasyondan
  • Müşteri işbirliği sözleşme görüşmesinden
  • Değişime cevap vermek planı takip etmekten

DAHA ÖNEMLİDİR. Bu manifestoda sağ tarafta bulunan maddelerin önemsiz olmadığı ancak sol taraftaki maddelere daha çok değer verilmesi gerektiği belirtiliyor.

Agile Manifesto Arkasındaki Prensipler

  1. Erken ve sürekli üretim ile müşteri memnuniyetini en üst düzeye çıkarılmalıdır.
  2. Değişen gereksinimler yazılımın son aşamalarında bile kabul edilmelidir.
  3. Sık sık çalışan yazılım teslim edilmelidir.
  4. Geliştiriciler ve iş birimindekiler günlük olarak beraber çalışmalıdır.
  5. Temelde motive olmuş bireyler yer almalıdır.
  6. Yüz yüze iletişim bilgi alışverişinin en iyi yoludur.
  7. İlerlemeyi ölçmenin en iyi yolu çalışan yazılımdır.
  8. Agile sürdürülebilir geliştirmeyi teşvik eder.
  9. Teknik mükemmelliğe verilen önem çevikliği arttırır.
  10. Basitlik
  11. Kendi kendini örgütleyen takımlar en iyi işi çıkarır.
  12. Takım daha neleri daha iyi yapabileceği üzerinde düşünür.

Agile Yöntemlerin Getirdiği Problemler.

  • Değişimi kabul ettiğimizden tasarım, mimari ve veritabanı modelleme konuları epey zorlu olabiliyor.

  • Sürekli bir değişim olduğundan kontrol eksikliği hissedilebilir. Üretilen ürün hakkında bir belirsizlik mevcut. Bu da yöneticiler ve kurumlar için rahatsız edici bir durum.

  • Müşterinin tüm süreçlere dahil olması gerekiyor.

Agile değerleri ve prensiplerini iyi anlamak için derste de önerilen kaynak

So Say We All

Written on February 24, 2019