

Bilindiği gibi yazılım süreçleri sancılı ve uzun süren dönemlerdir. Özelliklede ülkemizde, yazılım projeleri yönetimsel eksiklilerden dolayı ancak %50 başarı ve memnuniyet ile tamamlanabilmektedir. Avrupa ve Amerika’daki büyük şirketler de bu dönemi yaşamışlardır. Daha verimli projeler üretmek üzere çeşitli yöntemler denemişler ve çoğu şirket yönetimde ve uygulamada en başarılı buldukları “Agile” (çevik) yazılım metodolojisini benimsemişlerdir. Bu metodoloji sayesinde, artan verimlilik ve esneklik doğrultusunda projelerin kalitesi artmış ve başarı oranlarını %80’ lere çıkartmayı başarmışlardır.
“Agile” (çevik), dünya üzerinde kabul edilen yöntemler arasında en hızlı ve güvenli proje geliştirme metodolojisidir. Halen birçok şirket tarafından hızla kullanıma geçirilmektedir. Ancak ülkemizde henüz yaygın olarak kullanılmamakta ve birçok şirketin öz kaynakları ve zamanı halen aksaklıklar nedeniyle boşa harcanmaktadır.
ACM, Türkiye de yaygınlaştırmaya çalıştığı bu sistem ile ülkemizdeki yazılım ve proje kültürünün daha başarılı sonuçlar veren bir hale gelmesi için çalışmalarına tüm hızıyla devam etmektedir. ACM, Türkiye’ de belirli bir proje kültürünün oluşarak, kaliteli yazılımda Türkiye’ nin dünyada ön sıralara girmesini hedeflemektedir.
Mevcut Durum
Yazılım projeleri aşağıdaki değişkenlere göre planlanmaktadır:
|
1- Müşteri istekleri
|
|
2- Zaman
|
|
3- Özkaynak
|
|
4- Rekabet
|
|
5- Kalite
|
|
6- Vizyon
|
Bu değişkenler proje başlangıcında birer etken olduğu gibi, proje süresincede değişirler. Bu nedenle projelerde bu değişkenlerin gösterdiği farklılığı dengeleyebilecek esnek yapılara ihtiyaç duyulmaktadır.
Bu değişkenler proje süresince beraberinde bazı problemleri de getirmektedir.
Bu problemleri şöyle sıralayabiliriz:
|
1- Kontrolsüz uygulama geliştirme süreçleri
|
|
2- Belirsiz iş süreçleri ile belirsiz geliştirme süreçlerinin bütünleşmesi
|
|
3- Ortamdaki değişkenlerin sadece proje başlangıcında değerlendirilip, sonrasında proje süresince değerlendirilmemesi.
|
Lineer sistemler(Waterfall, Iterative) yukarıda özetlenen problemleri çözmekte yetersiz kalmaktadır. Ayrıca bu modellerdeki ufak değişiklikler, modelin daha da karmaşıklaşmasına neden olmaktadır. Bu nedenle tüm değişkenlerin hareketlerine kolay uyum sağlayacak bir proje yönetim yapısına ihtiyaç duyulmuştur.
“Agile” Yazılım Metodolojisi Nedir?
“Agile”, dünyada yazılım süreçlerini daha esnek ve güçlü kılmak için kullanılan aynı zamanda yazılım süreçlerini de kısaltan kavramsal bir sistemdir. Bu sistemde projenin ölçeği ne olursa olsun, proje küçük iterasyonlara ayrılır ve her iterasyon başlı başına bir proje gibi ele alınarak geliştirilir. Her iterasyonun sonunda ise proje yönetimi tarafından iterasyonun proje sınırlarının neresinde olduğuna bakılır. “Agile” ile her bir iterasyonun 3-4 hafta kadar sürmesi planlanmaktadır. Her iterasyonun kendi içerisinde çalışan bir sistem olması da müşteriye sürekli teslimat ve müşteri memnuniyetinin artması demektir. “Agile” ın sürati proje ekibinde çalışan tüm ekip üyelerinin sürekli iletişim halinde olmasından kaynaklanmaktadır. Ayrıca projenin küçük parçalardan oluşması da geriye dönük hataların düzletilmesini kolaylaştırmaktadır.
Genel hatlarıyla “Agile” :
|
- Verimliliği yüksek
|
|
- Esnek
|
|
- Hata oranı düşük
|
|
- Hızlı
|
|
- Ucuz
|
çözümler sağlamaktadır.
SCRUM
“Agile” kendi içerisinde özü aynı fakat süreçlerinde farklılaşan çeşitli alt kollara ayrılmaktadır. Bu kollardan en popüleri ise SCRUM yöntemidir. SCRUM kelime olarak rugby oyununda oluşturulan küçük ekiplere verilen isimdir. Bu yöntem 90’li yıllarda oluşturulmuş günümüze sürekli bir gelişme halinde gelmiştir.
SCRUM, karmaşık yazılım veya ürünü küçük birimlere bölerek geliştirmeye yarayan, yönetimsel bir sistemdir. SCRUM, çok basit projelerde kullanıldığı gibi, bir işletmenin iş akışında da kullanılabilir. Bu yöntemde bir birimin tamamlanması 30 günden fazla sürmemekte ve günlük toplantılarla sürekli iş takibi yapılmaktadır. SCRUM master tarafından sürekli tutulan istatistiksel raporlar ve iş takip sistemleri sayesinde takımdaki her bir üyeye verilen iş, işin durumu ve bunlara bağlı olarak elemanın performansı ölçülerek, daha sağlıklı öngörüler yapılabilir. SCRUM yönteminde iş akışı şu şekilde olmaktadır:
Şekilden de anlaşılacağı gibi, SCRUM’da süreçler tüm projeye yayılmakta ve oluşabilecek değişikliklere uyum sağlayabilmek amacıyla sürekli olarak birbiriyle etkileşmektedirler.
Süreçlerin daha rahat anlaşılması için bazı terimler ve anlamları şöyledir:
Koşu(Sprint)
“Agile” daki bir iterasyona karşılık gelir. Scrum’da koşu bazlı çalışmalar yapılmaktadır. Her koşu ana ürünün küçük bir parçası olan alt bir ürün olarak da düşünülebilir.
Ürün sahibi(Product owner)
Ürünün önceliklerini ve üründe bulunması gereken nitelikleri belirlen kişi ya da kurum.
Ürün talebi(Product Backlog)
Ürün sahibi tarafından, önceliğe göre sıralanmış istekler
Koşu talebi(Sprint Backlog)
Ürün talebinden alınan, bir koşuda yapılması gereken istekler
SCRUM Uzmanı(SCRUM Master)
SCRUM uygulamaları konusunda uzman kişi
Günlük SCRUM toplantısı(Daily SCRUM meeting)
Koşu ekibi tarafından günlük yapılan ve çok kısa süreli(15 dk. Kadar süren) toplantıdır. Bu toplantıda SCRUM uzmanı geliştiricilere 3 soru sorar.
|
- En son toplantıdan o anki toplantıya kadar ne yapıldığı
|
|
- Hedefe ulaşmada çıkan problem var mı? Varsa nedir?
|
|
- Bir sonraki toplantıda nelerin tamamlanmış olacağı
|
Koşu planlama toplantısı(Sprint Planning Meeting)
Ürün sahibinin öncelik sırasına göre verdiği ürün taleplerinden bir tanesinin geliştirme sürecine alınması
Koşu değerlendirme toplantısı(Sprint Review Meeting)
Bir konuşunun sonunda yapılan ve o koşunun sonunda ortaya çıkarılan ürünün değerlendirmesi ve varsa son düzeltmelerin yapılması.
SCRUM’ın Avantajları:
|
Hızlı hayata geçirilen projeler
|
|
Esnek alt yapı sayesinde kaliteli yazılımlar
|
|
Maliyetlerin azaltılması
|
|
Sürekli teslimat ile yüksek müşteri memnuniyeti
|
|
Motivasyonu yüksek çalışanlar
|
|