Agile Yazılım Geliştirme

Yasin Gözübüyük
4 min readMar 29, 2020

Agile Yazılım Geliştirme 1941 da geliştirilen ilk program ile birlikte doğan farklı yazılım metodolojilerine dayanmaktadır. Bu yazımda Agile ile ilgili felsefeyi, nelere dayandırıldığını, yayımlanan manifestosunu, yaklaşımını değerlendireceğiz.

Öncelikle bir örnek vererek neden Agile Yazılım Geliştirme önemli ondan bahsedeyim.

Diyelim ki bir evinizin çatısını yaptıracaksınız. Usta geldi ve çatınıza baktı. Nelerin yapılabileceğini size sırayla saydı. Bununla ilgili bir plan hazırlayacağını, işin nasıl ve ne zaman sonuçlanacağını size söyledi. Daha sonra iki hafta sonra geldi ve işin işleyişi ile ilgili size planını sundu. Bu aşamaya kadar hiçbir iş yapılmadı sadece dökümantasyon yapıldı ve işe daha başlanılmadı. Usta işe şu zamanda başlanılacağını ve iş bitene kadar bu raporlar üzerinden gidileceğini gerçek işi ise en son göreceğinizi söyledi. Usta işe başladı zamana yaydığı çizelgede günlük bilgilendirmelerini verdi ve siz çatıya çıkmadığınız kontrol etmediğiniz için sadece ustanın aktardıkları kadar bilgi sahibi oldunuz. Usta iş bitene kadar siz işin nasıl yapıldığını bilmiyorsunuz ve doğal olarak birazda tedirginsiniz. İş en son bittiğinde ve siz işi gördüğünüzde şunları diyebilirsiniz.

Usta Şurayı Neden Böyle Yaptın. Şöyle Yapabilirdin…

Bunu dediğiniz anda zaten artık potansiyel bir mutsuz müşterisiniz. Çünkü uzunca bir süredir bekliyorsunuz ama karşılaşılan manzaradan da hoşnut değilsiniz. Fakat para da verdiniz ve tekrar çatıyı kendi istediğiniz gibi yaptırma lüksünüz yok. Mecbur kabul edecek ve bir daha da o ustaya hiçbir iş vermeyeceksiniz.

Agile sadece yazılımcıları değil aslında müşterileri düşünerek ortaya çıkmıştır. Çünkü mutlu müşteriler hedeflenmektedir ve bunu yaparken de mutlu yazılımcılar hedeflenmektedir. Birinden birisi mutsuz olursa olmaz iki taraf da mutlu olmalı ki başarı ortaya çıksın.

Tüm bunların düşünüldüğü tartışıldığı ve 17 kişinin ortak çalışması ile daha iyi yazılım nasıl geliştirilirin konu aldığı Agile Manifestosundan bahsedecek olursak;

  • Süreçler ve araçlardan ziyade bireyler ve etkileşimlere
  • Kapsamlı dökümantasyondan ziyade çalışan yazılıma
  • Sözleşme pazarlıklarından ziyade müşteri ile işbirliğine
  • Bir plana bağlı kalmaktan ziyade değişime karşılık vermeye

Agile manifestosuna göre soldakileri hiç önemsenmiyor değil bunları kabul ediliyor fakat sağdakiler daha değerli.

SÜREÇLER VE ARAÇLARDAN ZİYADE BİREYLER VE ETKİLEŞİMLER

Yazılım geliştirirken en büyük etkenin takım çalışması olduğunu düşünebiliriz. Yazılımı yapacak olan kişilerin arasındaki uyum ve koordinasyon süreçten ve araçtan daha önemlidir. Takım ihtiyacına yönelik ve yazılım geliştirme döngüsüne uygun olan araç seçilmeli ve takım üyelerinin birbiri ile olan etkileşimlerinin önüne geçmemelidir. Yani takım üyeleri araçlarla, onları kullanmakla boğulmamalı bu konuda özgür olmalıdır. Takım hangi aracı uygun görmüşse ve hangi aracın kullanılması kendi aralarındaki etkileşimleri bozmayacak şekildeyse onu kullanmalıdır.

KAPSAMLI DOKÜMANTASYONDAN ZİYADE ÇALIŞAN YAZILIM

Bir yazılım geliştirirken projenin nasıl olacağı, yazılımın nasıl çalışacağından ziyade müşteriye çalışan yazılımı göstermek daha iyi olur diyebiliriz. Müşteri yapılan işi görmek ister. Neler yapılacağıyla ilgilenir, fakat neler yapılacağından ziyade neler yapıldığıyla daha çok ilgilenir. Agile prensibinde en önemli madde bana göre budur. Çünkü burada müşteri ile direkt temas halindesin ve yaptığın işi gösteriyorsun. Zaten Agile’ın diğer maddeleri de bu yapıyla örtüşmekte ve bu yapıdan çıkmakta diyebiliriz.

SÖZLEŞME PAZARLIKLARINDAN ZİYADE MÜŞTERİ İŞ BİRLİĞİ

Müşterinin ihtiyaçları tabi ki gene müşteri bilir, prensibinden ortaya çıkmıştır. Sözleşme yazılım geliştirici şirketi korumak için önemlidir. Fakat müşteriye her aşamada kulak vermek gerekir. Müşteri burada takımın bir parçası gibi davranırsa ve yazılım geliştirirken işbirliğinde bulunmalı ve son müşteriye ulaşacak olan yazılımı en iyi şekilde yönetebilmelidir. Müşterinin burada yapması gereken takıma tüm ihtiyaçları tek seferde yüklemek yerine geri bildirim bekleyerek ilerlemektir. Müşteri isteyecek takım yapacak müşteri kontrol edecek ve takım ilerleyecek.

BİR PLANA BAĞLI KALMAKTAN ZİYADE DEĞİŞİME KARŞILIK VERMEK

Süreci projenin başından sonuna yaymak ve planlamak küçük çaplı projelerde başarılı olsa da büyük ölçekli projelerde oldukça zahmetli ve büyük riskler taşımaktadır. Bu yüzden aslında en güzeli süreci parça parça yönetmektir. Böylece değişimlere daha kolay cevap vermiş olursunuz. Diğer türlü baştan planlanmış bir süreci tekrar planlamak gerekmekte. Fakat siz belli periyotlar halinde giderseniz yapmakta olduğunuz proje değişime kolayca ayak uydurur.

Agile manifestosunu detaylıca anlatmaya çalıştım. Agile Manifesto’da ifade edilen 4 değeri destekleyici 12 prensipten bahsedelim.

AGİLE YAZILIM GELİŞTİRME PRENSİPLERİ

  • Değerli yazılımı erken ve sürekli olarak müşteriye sağlamak.
  • Değişen geliştirmelere açık olmak. Müşterinin istedikleri süre içerisinde değişebilir ve bu değişikliklere cevap vermek gerekir.
  • Ayda veya haftada bir çalışan yazılımı test ettir müşteriye.
  • İş birimleri ve geliştiriciler günlük olarak beraber çalışmalıdırlar.
  • Çalışanlara işi bitirebilmek için gerekli motivasyonu, güveni sağla ve onlara güven.
  • Geliştirme ekibiyle ve geliştirme ekibin içerisinde bilgiyi yaymak için yüz yüze konuşarak iletişime geç.
  • İlerlemenin birincil ölçüsü çalışan yazılımdır.
  • Sürdürülebilir bir yazılım geliştirmeyi destekler. Sponsorlar,geliştiriciler ve kullanıcıların kafasında belirsizlikler olmamalıdır.
  • Teknik mükemmeliyete ve iyi tasarıma dikkat etmek iyidir.
  • Yapılmayan iş miktarını maksimize etmeye çalışmak. Baştan yaparken küçük başlamalı ve ileride aşama geliştirilmeli.
  • En iyi gereksinimler, tasarımlar ve mimariler kendi içerisinde karar alabilen, dışarıya minimal bağlı takımlardan çıkar.
  • Düzenli aralıklarla nasıl daha iyi olabileceğini düşünerek iyileştirme yapılmalı.

Yazının orjinal hali. https://projeyenilik.com/agile-yazilim-gelistirme.html/

--

--