7 Şubat 2013 Perşembe

Agile Nedir?



WATERFALL YÖNTEMİ

Agile nedir cevabını vermeden önce "Waterfall nedir?" sorusunun cevabını verelim. 
Waterfall şelale demek oluyor İngilizce'de. Yazılım geliştirme dünyasında ise bir projenin tüm parçalarının tek seferde analiz edilmesi, kodlanması ve test edilerek devreye alınmasıdır. 

Örnek verecek olursak, (rakamlar farazidir. Analiz, yazılım ve test sürelerinin oranı her projede değişebilir) Ali Bey LTD şirketi tüm nakliyat bilgilerini yöneteceği bir sistem istediyse projenin planlaması 2 hafta, analizi 2 ay, yazılımı 1,5 ay ve testleri 1 ay olarak planlanır.  
Bu durumda Ali Bey Ltd. taleplerini tüm detaylarıyla ilk 1-2 ay içerisinde Analist ile netleştirmek zorundadır. Yazılımcı bu projeye planlamaya göre 2,5 ay sonra, test sorumlusu 4 ay sonra başlar. Projenin analizleri bitmiş iken ve yazılımı devam ederken Ali Bey şirketi ara ara olmak üzere irili ufaklı 10-15 talep/değişiklik talep etmiş olsun.İşte bu noktada tüm analiz dokümanlarının yeniden güncellenmesi ve kodların gözden geçirilmesi gerekir. Bu da tüm proje ekibinin hiç hoşlanmadığı bir durumdur ki bunun temel nedeni Waterfall yönteminin değişikliklere hızlı adapte olamamasıdır. Yani Çevik değildir. Waterfall yönteminde proje yönetimi aşağıdaki gibi taşımaya benzer.
Waterfall Proje Metodolojisinden bir kesit

Kaza anında da durum aşağıdaki gibidir tabii :)



Waterfall Proje Risklerinden bir kesit

Agile kavramını duymamış neredeyse tüm analistlerin ve yazılımcıların ve tabii ki birçok banka, telekom ve finans kurumunun Türkiye'de uyguladığı yazılım geliştirme metodolojisidir.

AGILE YÖNTEMİ


Agile bir manifestodur. Bu manifestonun her ne kadar yapılandırılmamış ta olsa daha önceye dayanan bir tarihi olsa da 2001 yılında Kent Beck öncülüğündeki 17 kişinin bir araya gelerek  ilkelerini oluşturdukları bir proje geliştirme felsefesidir. Esasını 4 temel Madde oluşturur. Bu maddelerin altında 12 ilke vardır. (agilemanifesto.org)

Özetle şöyle der,
  • Takım Çalışması yapın.
  • Değişiklikleri kolayca projeye implemente etmek gerekir. 
  • Dokümanlarda boğulmayın. 
  • Ürün sahibi ile sıkı fıkı olun.
Agile ile Scrum da ayrıca karıştırılmamalıdır. Agile deyince Scrum akla gelebilir ama Scrum, Agile manifestoya uygun olarak geliştirilen bir metodolojidir. Felsefesi Agile olup kendine göre pratikler geliştirmiştir. Scrum gibi XP,Kanban, RUP, Lean gibi Agile metodolojiler de vardır. 


Deneyimsel olarak Agile Yöntemi ifade edecek olursak; Egolardan arındırılmış bir takımın Müşterinin isteklerine hızlıca cevap vererek Yazılım Süreçlerini Hızlı Değişen rekabetçi Piyasaya adapte edebilmesidir.

Ali Bey Ltd projesini Agile Manifesto ilkelerine göre yapılandırılmış SCRUM METOD ile oluşturmaya çalışarak AGILE ve WATERFALL arasındaki bir kıyas yapabiliriz. 

(SCRUM Süreci ileride detaylandırmak için bu sürece ilişkin bazı kavramları Büyük Başlık ile belirttim. Eğer üzerinde link varsa demek ki açıklamışız. Ama link yoksa ölmesek yazacağız :))
  
  1. Önce tüm talepler özetle alınır ve 2 hafta içerisinde proje planlaması kabaca yapılır. Bu kısım waterfall ile benzerlik gösterir.
  2. Planlamada ürün ana parçalara bölünür. EPIC (Uzun hikaye demek).  
  3. Bu EPIC'ler INVEST  ( Independent, Negotiable,Valuable,Estimatable,Small,Testable) parçalardan oluşan STORY'lere bölünür. Bu olaya BACKLOG GROOMING denir ve İş Analisti ile Agile Takımın bir araya gelmesi ile Analistin öncülüğünde ile yapılır. Bu kısım planlama esnasında yapılır fakat STORY detaylarına inilmez. 
  4. Tüm Story'ler PRODUCT BACKLOG'u oluşturur. 
  5. Daha sonra STORY'ler önceliklendirilir. Önceliklendirmeyi İş Analisti, PROJE PAYDAŞLARI (STAKEHOLDERS) olan Product Owner (İşi isteyen kişi), AGILE TAKIM lideri, teknik takım lideri ile birlikte yapar.  
  6. Önceliklendirmeden sonra HIGH LEVEL ESTIMATION (HLE) yapılır. HLE sonunda bu işin 5 ayda 8 ITERATION'da biteceği sonucuna varılır.Iteration1,Iteration2,......Iteration8. Herbir itaration 2-4 hafta arasında sürer herbiri bir veya daha fazla EPIC'ten oluşur.
  7.  Iteration(n)'in başlaması için Iteration(n-1) adımında Analist, Iteration(n) EPIC'lerine ait STORY'leri detaylandırır. Detayları Product Owner ile belirler ve her bir story ACCEPTANCE CRITERIA (AC)'lardan oluşur. 
  8. Her bir iterasyon yazılım, test, SIGN-OFF, Product Owner Testi (SHOWCASE) ve deployment sürecinden oluşur.
  9. Her iterasyonun başında İş Analisti Story'lerin detaylarını takım ile paylaşır. Yazılım ve test ekibi geri bildirimlerini yapar.
  10. Bir iterasyonda yapılan işlerin kapsamı kesinlikle değiştirilemez. değişiklik gerekirse yeni bir story yazılır ve yeniden önceliklenidrme yapılarak başka bir iterasyonda yapılır.
  11. Her iterasyon sonunda Agile Takım iterasyonu ve genel gidişatı değerlendirir.
  12. Iterasyon devam ederken her sabah takımın tüm üyeleri "önceki gün ne yapıldı", "bugün ne yapılacak", "bloklayan durum var mı" şeklinde kısa feedback'lar verir. Sorunlar ortaya atılarak takımla çözülür.
  13. Her iterasyon sonunda İş Analisti ortaya çıkan Story'leri PO'ya sunar ve geri bildirimleri varsa bu bildirimlere göre yeni STORY'ler yazar ve bu iterasyonu kapatır. 



5 Şubat 2013 Salı

İş Analisti Kimdir?


KISA  KISA...
  • Nerden Mezun olduğu çok önemli değildir. Genel olarak ara bölüm olan Endüstri, Matematik,Sistem Mühendisleri ile Bilgisayar Mühendisleridir. Analitik bakış açısı olan kişiler olmalıdırlar. Yani, sorgulayıcı, problem bulucu, problem çözücü ve pratik olmalıdır. 
  •  Eskiden beri kullanılan "İş analisti müşteriler ile yazılım geliştirme ekibi arasında bir köprü olarak hizmet verir" tanım onları yansıtmaz.Çünkü köprünün bir ucundaki kamyon diğer ucundan da kamyon olarak çıkar. Fakat analist bir ucundan ham giren bir datayı diğer uçta işlenmiş ürüne dönüştürür. Bu durumda "Decoder" diye tariflemek daha doğru olur.  
  • Analistler genel olarak büyük finans kurumlarında, Kurumsal IT şirketlerinde, Telekom Şirketlerinde çalışırlar. Ne yaparlar?  Özeti şöyle ki? (Bıyıklı olan analist :))


  • Bu kişiler ilkin aşağıdaki soruları sorabilen insanlar olmalıdır.Sorulara cevap bulurken kısıtları göz önünde bulundurmalıdır. 
    • Problem Nedir?
    • İhtiyaç Nedir? 
    • Bu bir problem/ihtiyaç mıdır?
    • Problemi Nasıl Çözmeliyiz?
    • İhtiyacı Nasıl Karşılamalıyız? 
Bu soruları doğru sormazsa şöyle olur. Adamın biri bir silah yapmak ister ama ihtiyacı tam anlayamayan ve sorgulayamayan analist aşağıdaki ürünü çıkarır. Nasıl benziyor değil mi?