Agile Sistemlerde Proje Yönetimi
Vakti zamanında bir ödevim için hazırladığım bu çalışmayı, belki işinize yarar düşüncesiyle sizinle paylaşmak istedim.
Keyifli incelemeler.
YAZILIM GELİŞTİRME FELSEFESİNİN DOĞUŞU
Yazılım geliştirme süreçleri 1940’ lara kadar, ilk bilgisayar sistemlerinin ortaya çıkması ile hayatımıza girmiştir. Uzun süreler boyunca projeleri zamanında yetiştirememek, istenilen kalite ve hedeflenen projelere ulaşamamak gibi sorunların belirmesiyle genel bir süreç ortaya atılmıştır. Bu süreç genel hatları ile planlama, tasarım, geliştirme ve test adımlarından oluşmaktadır.
AGILE FELSEFESİNİN DOĞUŞU
Yazılım firmaları, yaptıkları yatırımların kazanca dönüşünü sağlayabilmek, süreci hızlandırmak, rekabet avantajı elde etmek ve yazılımı daha kaliteli ortaya çıkarabilmek gibi hedefler doğrultusunda yazılım sürecini geliştirmek isterler.
Ancak, bu geliştirme süreci ve yazılım planının, hayatın sürekli değişim içinde olmasından mütevellit proje başlangıç ve bitişinde aynı olması beklenemez. Bu sebeple süreç boyunca düzenli aralıklar ile takibinin, revizelerinin planlanması ve geliştirilmesi beklenir.
Planın revize edilmediği durumlarda, ekip içi bir baskı mevcuttur. Programcı başlangıç aşamasında konuşulan herhangi bir durumu yanlış anladıysa süreç planlananda çok daha farklı sonuçlanabilir. Bu da maliyetin yüksek oranlarda değişmesini doğurabilir.
Sırf bu sebepten dolayı bile Agile sistemlerde yazılım geliştirilmesi gerekmektedir.
AGILE YAKLAŞIM NEDİR?
Agile yaklaşım isminden de anlaşılabileceği üzere atik, kıvrak ve çevik bir metodolojidir. Ekibin yeniliklere açık olmadı beklenir. Düzenli toplantılarla, her şey için geç olmadan, projelerin şekillenmesi sağlanır.
Doğru kaynak kullanımı, doğru önceliklendirmeler, müşteri gereksinimlerinin doğru belirlenmesi gibi agile yazılımın getirileri ile projelerin başarı oranlarını oldukça yükseltir. The Standish how to give an informative speech Group’ un 2009 yılı Chaos Raporu’ na göre yazılım projeleri %68 başarısızlık ile sonuçlanmaktadır. Bu rapor doğrultusunda ise birçok firma bu başarısızlık oranını düşürmek için Agile yöntemler ile yollarına devam etme kararları almışlardır.
Agile yaklaşım proje üretkenliği, projenim hızlı bir şekilde düzenlemelere ve değişikliklere adapte olabilmesi, kalitesi, pazara çıkış hızı doğrultularında başarı oranlarında %80’ lere kadar çıktığı gözlemlenmektedir.
YAZILIM GELİŞTİRME YÖNTEMLERİ
Teknolojinin ilerlemesi ile her alanda karşımıza çıkmakta olan yazılım, git gide temel ihtiyaç halini alan, doğru ve performanslı geliştirilebilmesi için düzen ve planlamaya ihtiyaç duyulan bir yazılım geliştirme yöntemidir.
Yazılım geliştirme, yazılımdan oldukça farklı ve kendi içerisinde birçok farklı dinamiğe sahip bir yapı, model ve süreçtir.
Yazılım geliştirme, bir dizi mühendislik, proje yönetim süreci, ekip uyumu, dokümantasyon, felsefi bir bakış açısından oluşur.
Yazılım geliştirme, belirli araçlar kullanılarak kolaylaştırılmalıdır.
Yazılım geliştirme, planlaması iyi yapılması gereken, gereksinim listeleri çıkartılması gereken, kodlama standartlarına uygun kodların geliştirildiği ve çalışan sistemlerin elde edildiği, test ve bakımının düzenli olarak yapılması gereken uzun ve planlı bir süreçtir.
GELENEKSEL YAZILIM GELİŞTİRME YÖNTEMLERİ
Yazılım geliştirme metodolojisi aynı zamanda bir felsefesidir. Sürece destek verecek araçlar, modeller ve yöntemlerden oluşur. Bu özellikler genellikle metodolojiyi geliştiren, destek veren ve onu ilerleten organizasyon tiplerine bağımlıdır. Waterfall geleneksel yazılım geliştirmeyi temsil eder. Aşağıda, waterfall ve waterfall mantığı ile geliştirilen yöntemler listelenmiştir.
- Şelale(Waterfall) Yazılım Geliştirme Yöntemi
- V Yazılım Geliştirme Modeli
- Prototip Yazılım Geliştirme Modeli
- Spiral Yazılım Geliştirme Modeli
AGILE YAZILIM GELİŞTİRME YÖNTEMLERİ
On yedi yazılım gururu tarafından, 2001 yılında, Amerika’ vın Utah eyaletinde bir araya gelip beyin fırtınası yaparak, 2 gün içinde yayınladıkları bir manifestoya dayanır. Yapılan toplantının esas amacı yazılım geliştirme sürecinin verimliliğini artırmak ve farklı yaklaşımları değerlendirmektir. Bu toplantının sonucunda 4 maddelik bir değerler topluluğu Agile Yazılım Geliştirme Manifestosu adı ile yayınlarlar. 18 yıl içinde de projelere bir yön gösterici, hedef vizyon ve yön gösterici olarak kabul edilmiştir.
Geliştirmeler ve çözümler, grupların ortak çalışmaları ile olgunlaşır. Kaliteli yazılımların, hızlı biçimde geliştirilmesini hedefler, takım çalışmasına ve müşteri memnuniyetine önem gösterir. Bu yönüyle Agile business yaklaşımı desteklemektedir.
Bir yaklaşım değil, geliştirme süreçleri topluluğu olarak ifade edilebilir. Bir değer sistemini ifade etmektedir ve filozofi bir akım haline gelmiştir.
Extreme Programming, Scrum ve Lean Development bu filozofi akıma örnek gösterilebilen somut ögelerdir.
AGILE YAZILIM GELİŞTİRME MANİFESTOSU
Bizler daha iyi yazılım geliştirme yollarını uygulayarak ve başkalarının da uygulamasına yardım ederek ortaya çıkartıyoruz. Bu çalışmaların sonucunda:
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
değer vermeye kanaat getirdik.
Özetle, sol taraftaki maddelerin değerini kabul etmekle birlikte, sağ taraftaki maddeleri daha değerli bulmaktayız.
Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas
AGILE YAZILIM GELİŞTİRME YÖNTEMLERİNİN 12 PRENSİBİ
- En önemli önceliğimiz değerli yazılımın erken ve devamlı teslimini sağlayarak müşterileri memnun etmektir.
- Değişen gereksinimler yazılım sürecinin son aşamalarında bile kabul edilmelidir. Agile süreçler değişimi müşterinin rekabet avantajı için kullanır.
- Çalışan yazılım, tercihen kısa zaman aralıkları belirlenerek birkaç haftada ya da birkaç ayda bir düzenli olarak müşteriye sunulmalıdır.
- İş süreçlerinin sahipleri ve yazılımcılar proje boyunca her gün birlikte çalışmalıdırlar.
- Projelerin temelinde motive olmuş bireyler yer almalıdır. Onlara ihtiyaçları olan ortam ve destek sağlanmalı, işi başaracakları konusunda güven duyulmalıdır.
- Bir yazılım takımında bilgi alışverişinin en verimli ve etkin yöntemi yüzyüze iletişimdir.
- Çalışan yazılım ilerlemenin birincil ölçüsüdür.
- Çevik süreçler sürdürülebilir geliştirmeyi teşvik etmektedir. Sponsorlar, yazılımcılar ve kullanıcılar sabit çalışma temposunu sürekli devam ettirebilmelidir.
- Teknik mükemmeliyet ve iyi tasarım konusundaki sürekli özen çevikliği artırır.
- Sadelik, işin özü olmayan işlerin yapılmamasını en üst seviye tutmak elzemdir.
- En iyi mimariler, gereksinimler ve tasarımlar kendi kendini örgütleyen takımlardan ortaya çıkar.
- Takım, düzenli aralıklarla nasıl daha etkili ve verimli olabileceğinin üzerinde düşünür ve davranışlarını buna göre ayarlar ve düzenler.
AGILE YAZILIM GELİŞTİRME AİLESİ
Agile proje yönetimi yaklaşımında, kullanılan metodolojilerden en bilinirleri;
- XP (Extreme Programlama),
- Yalın Prensipleri ve araçları (Lean Principles and Tools),
- SCRUM, RUP, KANBAN Prensipleri,
- Crystal Metodojileri,
- FDD (Feature-Driven Development) ,
- DSDM (Dynamis Systems Development Method)’ dir.
XP (EXTREME PROGRAMLAMA)
XP, yazılım geliştirme sürecinde oldukça kaliteli olmak koşulu ile çalışabilir kod üretmeye dayalı bir metodolojidir. En temel ve önemli ürünü çalıştırılabilir kod olduğu için, XP’ nin merkezinde çalıştırılabilir kod olması yadsınamaz. Extreme Programming ise ismini bu sebepten alır.
Kısa adımlardan oluşan ve tekrarlı bir süreçtir. Birkaç günlük veya haftalık döngülerden oluşur. İlk döngü tamamlandığında, minimum seviyede çalıştırılabilir bir örnek üretilmiştir. Bu ilk döngüden sonraki her döngüde daha fazla özelliğe sahip, bir öncekinden daha iyi olan bir sürümün çıkarılması hedeflerindendir.
Her seviyede genişletebilirlik ve sürdürülebilirlik özellikleri açısından, kod kalitesinin yüksek olmasına önem vermiştir. Her adımın temel hedefi geliştirmek(yeni özellikler, işlevler eklemek) ve refactor(çalışan koda zarar vermeden kod kalitesinin artırılması amacıyla tekrar yapılandırılması) etmektir. XP programing’ in üzerinde durduğu işlemlerdir. Değerleri,
- Basitlik,
- İletişim,
- Geri Dönüşüm(Feed Back),
- Cesaret
XP (Extreme Programlama) Uygulaması
Planlama:
Basit bir planlama yapılır. Gerekli görüldükçe ise bu planda iyileştirmelere gidilir.
Sık ve Küçük Sürümler:
Birkaç haftayı geçmeyecek şekilde çalışan bir sürüm elde edilir.
Basit Tasarım:
Gerektiğinde refaktör edilebilecek, basit tasarımlar oluşturulmalı.
Önce Test:
Koddan önce testi yazılır.
Refactor Etme:
Kod tekrarlarından uzak durmak, sade ve temiz kodlar elde etmek için reaktör edilmeli.
Çift Programcı:
Kodların 2 programcı ile paralel yazılması.
Sürekli Entegrasyon (Continuos Integration):
Kodlama sistemleri tamamlandıktan sonra sisteme entegre edilmeli.
Haftada 40 Saat Çalışma:
Verimliliği artırmak için aşırı çalışmanın engellenmesi.
Müşteri ile Yakın İletişim:
Sürecin her anında müşterinin dahil olabilmesi ve tam zamanlı olarak geliştirme ekibi ile yakın temas halinde bulunabilmesidir.
Kodlama Standartları:
Kod düzenlemeleri ve dökümantasyon için tüm ekip tarafından aynı standartın kullanılmasıdır.
SCRUM
Scrum, rugby oyununda oluşturulan küçük ekiplerden ismini almıştır. 90’ lı yıllarda oluşturulmuştur.
Yazılımda iteratif ve incremental olması önemlerindendir.
Roller , toplantılar ve üründen oluşur.
Şeffaflık(günlük sorun takibi ve izlenilebilirlik), denetleme(düzenli aralıklarla teslim değerlendirme) ve uyarlama (gereksinimler bir kez yapılmaz, tekrar değerlendirilir, gerekirse uyarlanır).
Roller
Toplantılar
Eserler
Ürün Sahibi
Sprint Planlama
Ürün Gereksinim Dökümanı
Scrum Yöneticisi
Daily Scrum
Sprint Dökümanı
Takım
Sprint Review
Sprint Kalan Zaman Grafiği
Sprint Retrosprective
ROLLER:
Ürün Sahibi:
- Müşteri tarafından belirlenir.
- İterasyon sonunda ürünü kabul eder.
- Gereksinimleri toplar, önceliklendirir.
SCRUM Master:
- Ekibi korumak, işleri kolaylaştırmak, sorunları çözmek, müşteri ve yöneticilere karşı ekibi korumak zorundadır.
- SCRUM kurallarına uymak ve uyulmasını sağlamak, organizasyon adaptasyonlarını sağlar.
Team:
- 5–10 kişi arasında idealdir.
- Gereksinim süre tahminlemelerini yaparlar. Sprint hedefi için proje sınırları içinde herşeyi yapmakla serbesttirler.
- Geliştirici, tester, mimar ve tasarımcılardan oluşur.
TOPLANTILAR:
Sprint Planlama:
- Sprinte başlamadan önce yapılır. Gereksinim listesi çıkarılır.
- Çıkış tarihi ve fonksiyonel özellikler belirlenir.
- Geliştirme, materyal toplama, pazarlama maaliyetleri hesaplanır.
Daily SCRUM:
- Standup meeting şeklinde, kişi başı 1–2 dklık, toplamda ise ortalama 15–20 dklık konuşmalardan oluşur.
- “Dün ne yaptım?”, “Bugun ne yapacağım?” ve “Problem ya da engel öngörülüyor mu?” sorularının cevapları ana konusudur.
- SCRUM Master bu toplantılarda notlar tutar ve sonrasında ekibe destek olması beklenir.
Sprint Review:
- Ekip, müşteri, ürünü kullanacak yöneticilerin katıldığı toplantılardır.
- Karşılaşılan sorunlar ve çalışan yazılım teslim edilir.
- Gidişat tartışılır, ne yapıldığı ve neler yapılabilirse daha iyi sonuçlar alınabileceği konuşulur.
Sprint Review:
- Kişiler, süreçler, araçlar kapsamı ile geriye dönük bir değerlendirme, iyileştirme ve nasıl daha iyi yapabiliriz sorularına cevaplar aranır.
ESERLER:
Product Backlog:
- Sistem hareket ve eylemlerini içerir. Küçük parçalar halinde hazırlanmalıdır.
- Story points(Hikaye puanları) hesaplanır. Öncelik değerleri 1 ile 10 arasında ardışık verilir.
- Puanlamalar 1, 2, 3, 5, 8, 13, 21, 34,… şeklinde verilir.
Sprint Backlog:
- Product backlog listesinden seçilen özellikler aktarılır.
- Takım, sonraki sprinte kadar bu backlogdan ilerler.
- Her özellik ve fonksiyon için maksimum 3 günlük efor beklenir.
Koşu Kalan Zaman Grafiği :
- Sprint boyunca işlerin ne kadarının yapıldığı ile normalde ne kadarının yapılması gerektiğini karşılar.
- İstenilen özellikler sprint içinde gerçekleşip, gerçekleşmediği izlenir.
SCRUM Avantajları ve Dezavantajları
Avantajları:
- Takım için motivasyonu yüksek tutar.
- Müşteri, sık sık gördüğü outputlar ile memnun kalır,
- Planlar sprintlerde tutulduğundan, yoğun dökümantasyonlar ile uğraşılmaz.
- Esneklik ve müşteri memnuniyeti üst sıralardadır.
- Planlama ile yürütme eş zamanlı ilerlenir.
Dezavantajları:
- Kalabalık ekiplerde problemler çıkabilir.
- Değişken şartlardan ötürü, çalışma yükü artabilir.
- Müşteri ile iletişim sürekli tutulacağından, müşteri taraflı biri olmadığı takdirde yapılması zor hatta imkansıza yakındır.
- Uygulansa bile doğru sonuç vermeyebilir.
RUP
Rational firması tarafından geliştirilmiş bir süreçtir. Organizasyon sorumluluklarını detaylıca belirleyerek sorumlulukları artırır. Ekip üretkenliğini artırmak temel amaçlardandır. Yazılım RUP içinde lifecycle 4 aşamadan oluşmaktadır.
- Başlangıç (Inception)
- Düzenleme(Elaboration)
- Oluşturma(Construction)
- Geçiş(Transition)
Her aşama bir duraksama ile sonlanır, değerlendirilir. Orta ölçekli bir proje baz alındığında takvimin %10’ u başlangıçta, %30’ u düzenlemede, %50’ si oluşturmada, %10 u ise geçişte kullanılabilir. Her aşamada kodlama yapılabilir.
Birinci aşamada, yakın tahminler yapılarak temel gereksinimler oluşturulmaya çalışılır.
İkinci aşamada daha gerçekçi tahminleme yapılır, mimari belirlenir. Yüksek riskler için çözümler sunulur.
Üçüncü aşamada ürün hazır hale getirilir, hatalar tespit edilir.
Dördüncü aşamada ise müşteriye ürün teslim edilir, feedbackler alınır ve iyileştirmeler yapılır.
Her aşamanın sonunda elde edilen çıktılar oldukça fazladır Bu sebeple büyük ölçekli ve değişim açısından esnek kabul edilen projelerde kullanımı önerilir.
Proje lideri, rol tasarımcı gibi birçok rol tanımlıdır. Kalabalık ekipler ve büyük projeler için uygundur. Maliyetli olduğu için risk yönetimi oldukça önemlidir.
KANBAN Prensipleri
KANBAN, görselleştirmek ve sınırlaştırmak kelimelerini baz almış bir prensiptir. Trello ya da JIRA gibi uygulamalar ile kullanılır.
- Güncel sistemi iyileştirebilme,
- Değişimi kamu etme ve ayak uydurabilme,
- Rollere sadık kalınamsı
- Liderliği motive etme ilkeleridir.
Temel Pratiği:
- Görselleştirme (Akılda kalıcılığı artırır)
- İşleri sınırlandırma (WIP)
- Akışı yönetme (Kontrolü Kolay)
- Kuralların açık ve net şekilde ifade edilebilmesi
- Geri bildirim sistemlerinin oluşturulması İşbirliği sürecinin iyileştirilmesi
KANBAN Tahtasının Faydaları:
- Şeffaflık ve açıklık
- İş dengesinin ve dengesizliklerinin netleşmesi
- Ekip içinde tartışmaların en aza indirgenmesi
- Aşırı iş yükünün net olarak ortaya konması
- Anlaşımı kolay
- Doğru kullanıldığında atıkları azaltır ve döngü süresini kısaltır.
WIP(Work In Progress) Faydaları:
- Teslim süresini azaltarak, sürecin hızlanmasına yardımcı olur ( Reduce Lead Time )
- Düzen ve planlı ilerlendiğinden işlerin kalitesinde artış yaratır.
- Küçük tasklar halinde hazırlanan işlemler sayesinde
Crystal Metodolojileri
Crystal Metodlar, Alistair Cockburn tarafından ve takımından geliştirilen bir yazılım geliştirilen bir metodolojisi ailesidir. Metotlar, insan hayatı riskini belirtmek için renk kodludur. Örneğin, insan hayatı için risk içeren projeler Crystal Sapphire’ı kullanırken, bu tür riskleri olmayan projeler Crystal Clear’ı kullanacaktır.
Crystal altı temel konuya odaklanır:
- insanlar,
- etkileşim,
- topluluk,
- iletişim,
- beceriler,
- yetenekler
Crystal’de ayrıca daha yüksek başarı olasılığını gösteren yedi ortak özellik vardır.
Bunlar;
- Odaklanmak,
- Agile teknik ortamı,
- Kişisel güvenlik,
- Sık teslimat,
- Yansıtıcı gelişim,
- Osmotic iletişim,
- Uzman kullanıcılara kolay erişimdir.
Metotlar çok esnektir ve insan kaynaklı ya da insan merkezli odağı nedeniyle katı işlemlerden kaçınırlar. Alistair Cockburn, Çevik Manifesto’nun orijinal imzacılarından biridir.
Crystal Clear’ ın 7 Özelliği
Uzmana Kolay Erişim:
- Erken, hızlı geri dönüşlerin yapılması beklenmektedir.
- Yöneticiler değil, gerçek kullanıcılar yer alır.
- Yazılı görüşler yetersizdir.
Kişisel Güvenlik:
- Ekibin korkmaması, çekinmemesi ve performanslı geliştirmeler yapması beklenir.
Focus:
- Minimum aksama yapılmalı.
- Ortam sesinin iyi ayarlanması, gürültüden kaçınılmalı.
- Multitasking yerine, daha sınırlı işlere yoğunlaşılmalı.
Agile Teknik Env.:
- Sık sık entegrasyon yapılmalı.
- Test otomatikleştirilmeli.
- Konfigürasyon yönetim yapılmalı.
Sık Teslimat:
- Her 2 ayda minimum 2 proje teslim edilmeli.
Gelişimin Yansıtılması:(Çarpım Etkeni)
- Metodolojiyi ve takımı geliştirmek.
- Workshoplar ile bunu yansıtmak.
Osmotic Communication:
- Yakın oturma düzeni sağlanmalı.
- Ekip için sık iletişimin önemi.
DSDM (Dynamic Systems Development Method)
Agile yaklaşımlardan daha evvel ortaya atılmıştır. Agile yaklaşımın temellerinin atıldığını düşünen kitle oldukça fazladır.
Nesne yönelimli programlamanın getirdiği hızlı uygulama geliştirme teknikleri için bir yapı sağlamak amacıyla yazılım mühendisliği alanında satıcılar ve uzmanlar tarafından oluşturulan bir dernek olan DSDM Konsorsiyumu tarafından yayınlandı.
DSDM ekibi yönetecek ve zamanında ve bütçe dahilinde sunmak için bir zihniyet yaratacak sekiz ilkeden oluşur. Prensipler arasında iş ihtiyacına odaklanmak, zaman kutulama çalışmasıyla zamanında hizmet vermek ve son kullanıcılar, ekip üyeleri, iş temsilcileri ve diğer paydaşlarla işbirliğini vurgulamak sayılabilir. Sadece bir yazılım geliştirme yöntemi değil, bir çerçeve olarak, BT dışı projelerde de kullanılabilir. Proje yönetimi standartlarıyla eşleştirildiği devlet projelerinde sıklıkla kullanılır.
Önce zaman ve kaynak, daha sonra işlevsellik önemlidir.
Geliştirme sonuçları doğrudan ve hemen görülebilir.
Kullanıcılar sistemin geliştirilmesine aktif olarak katıldıkları için sistemi benimserler ve dolayısıyla sistem sorunlarının üstesinden gelmeleri daha da kolaylaşır.
FDD (Feature Driven Development)
90’ lı yıllarda Jeff Luca tarafından ortaya atılmıştır. Ekibe yeni biri katılması gibi durumlarda avantajlar sunar.
Geliştiricinin güçlü ve zayıf yönlerini dikkate alır.
İlerleme raporları sayesinde sonuçların her sürümde durumu incelenebilir.
Gereksinim ve beklentiler daha az alınır. Küçük iterasyonlarr ve küçük program parçaları ile risk kontrol altına alınmaya çalışır. Bir sprint ortalama 2–10 gün arasındadır. SCRUM’ a (2–4 hafta) ve XP’ ye(6 hafta) göre daha azdır.
Tasarımlar küçük parçalara ayrıldığı için risklerde azalmalar meydana gelir.
Proje özellikleri belirlendiği için proje maliyeti doğru bir şekilde belirlenebilir.
Çok fazla döküman yığınları yoktur.
Beş ana basamaktan oluşur ve her basamağın çıkış şartları tanımlıdır. Bu geliştirme yönteminde bu şartlara uyulması beklenir.
- Genel sistem modelinin geliştirilmesi,
- Özellik listesinin oluşturulması,
- Planlama yapılması,
- Tasarımın oluşturulması,
- Geliştirmenin yapılması.
Sisteme yeni bir özellik kazandırılmadan önce, detaylı bir tasarım çalışması yapılarak bu özelliği kapsayan mimari yapı oluşturulur.
Adımları:
Projenin Gözden Geçirilmesi : Gereksinimler yüz yüze görüşülerek geliştiricilere aktarılır.
Tasarım: Diyagramlar üzerinden gidilir.
Tasarım Denetimi: Gereksinimlerin karşılandığından emin olunur.
Kodlama: Proje kodlaması yapılır.
Kod Denetimi ve Birim Testi: Tasarımda belirtilen yapıların kontrolü ve eş değerlendirilmesi.
Derleme: Ürün testi ile sisteme entegre edilmesi.
Yalın Prensipleri (Lean Principles)
Lean yaklaşım değer yaratmayan işlerin temizlenmemesi ve yapılmamasına dayanır.
Gereksiz görülen işlerin yapılmaması bu yaklaşımın en temel görevidir.
Gereksiz işlerde kasıt, ağır dökümantasyona, uzun toplantılara, gereksiz görevlerdir.
Esasen, Agile’ den farklıdır, fakat günümüzde yoğun olarak Agile ile iç içe kullanılır.
Amacı, boşa harcanan zamanı azaltmaktır. Agile ise işlerin kısa sürede yapılabilmesi için sınırlar ve kısıtlar belirler. Bu iki yaklaşım birbirine geçmiştir.
Lean yaklaşım değer yaratmayan işlerin temizlenmemesi ve yapılmamasına dayanır. Gereksiz görülen Lean Toyota tarafından ortaya atılmıştır. Yaklaşım olarak şunları tavsiye eder:
- Çöpü elimine et
- Kaliteyle beraber üret
- Edinim kazan
- Sözünü tutu
- Hızlı teslim et
- İnsanlara değer ver
- Bütünü optimize et
AGILE YAZILIM GELİŞTİRMENİN AVANTAJLARI
Agile yazılım geliştirme yöntemi, diğer yöntemlere göre:
- Daha esnektir. Yeniliklere açıktır.
- Çalışan yazılımın neye benzeyeceği en son aşamada belli olmaz. Süreç içerisinde döngüler halinde takibi yapılır, herhangi bir durumda hızlıca müdahale edilebilir.
- Ekip içi müşteri iletişimi diğer yöntemlere göre daha kuvvetlidir. Müşteri memnuniyetini artırmak amaçlı, belirleyici faktör olarak yer alabilir.
AGILE’ DA BÜTÇE PLANLAMASI
Planlama, detaylıca yapılmadan Agile yönetilen bir projenin bütçe planlamasının yapılması oldukça zordur.
Projeye başlanmadan maliyetinin tahmin edilmesi, proje geliştirme yöntemi ve metodolojisi bağımsız hesaplaması oldukça zordur. Maliyet hesaplanmasında en önemli birimlerden bir tanesi zamandır diyebiliriz.
Projelerde ne kadar çok sprint olacağı ve projenin bitiş tarihini tahmin edebilmek için bir burndown tablosu oluşturulmalı ve burndown oranı kullanılmalıdır. Ardından ise projenin yapılma süresi saat cinsinden hesaplanmalı ve çalışan ekibin birim(saat) maliyeti ile genel tutar hesaplanmalı.
Herkesin çalışma saati de toplam planlanan spring saati ile çarpılıp bu değerler toplanmalı. Seyahat gibi maliyet unsunları varsa bu hesaplamaya eklenmeli.
Geliştirme süreçleri için hesaplanması için planlama pokeri denilen tahmin amaçlı, oyunlaştırma teknikleri de mevcuttur. Ekip üyeleri, masaya yüzleri kapalı ve üzerinde numaralı kartlar bulunan tahminlemeler yaparlar. Kartlar sonrasında açılır ve tahminler tartışılır. “Scrum Time” isimli uygulamada ile de bu tahminleme oyunu oynanabilir.
SONUÇ
Agile yazılım geliştirme yöntemleri ve teknikleri ekipten ekibe, projeden projeye değişiklik gösterse de, ekibe ve projeye uygun Agile yazılım geliştirme yöntemi seçildiğinde projelerde aşağıdaki gibi faydalar gözlemlenebilir.
Risk Yönetimi: Tekrarlanan yazılım geliştirme metodlarının yardımı ile proje riskleri sürekli gözlemlenir ve acil durumlarda hızlıca müdahale edilebilir. Projenin başlangıç aşamasından, son çıktının alınmasına kadar olan süre boyunca sistem denenerek, müşteri beklentisini karşılayıp karşılamadığı, planlanan hedeflerden sapıp sapmadığı, maliyet ve kaynakların tutarlı olup olmadığı gibi sorunlar düzenli aralıklar ile kontrol edilme şansına sahip olur. Ciddi sorunlar, çok geç olmadan farkedilir.
Devamlı Yazılımın Sunulması: Agile metodolojilerde her döngü sonrasında, bir öncekinden daha büyük ve daha işlevsel bir çıktı üretilir. Projenin en başından beri üretilen bu programlar ise müşteri memnuniyetini oldukça fazla oranlarda etkilemektedir.
Sürekli Değişkenlik: Dünyanın kaçınılmazı olduğu gibi yazılım projelerinde de değişim şarttır. Orta çaplı projelerde başlangıçlarının yaklaşık %30’ unun değiştiği kabul edilmektedir. Bu sebeple değişim, yazılım projelerinde de olağan bir durum olarak kabul edilebilmelidir. Agile’ ında önemlerindendir. Agile, değişimi kabul etmiş ve projenin mümkün oldukça hızlı bir şekilde sürece adapte olmasını sağlamaktadır.
Karmaşıklığın Yönetimi: Yazlım projelerinin boyutları ile birlikte karmaşıklıkları da artmaktadır. Karmaşıklık oranı artan her durumda olduğu gibi bu projelerde de hata oranlarında artışlar söz konusu olur. Agile yöntemlerde ise projelerin oldukça küçük parçalara ayrılması ile karmaşıklık düşük seviyelere indirgenir.
Kalite: Test odaklı geliştirme sürecinin bir etkisi olarak (Her döngü içinde kendi test işlemlerini de barındırmaktadır.), projelerde meydana gelen hataların hızlıca önüne geçilebilir. Hataların geç fark edilmesi ise projelerin yanlış ilerlemelerine ve ilerde büyük revizeler ile tekrar doğru çalışması sağlanmasını ise proje kalitesini oldukça düşürmektedir. Agile yaklaşım ile yürütülen projelerde bu sorunlar oldukça erken farkedilir. Ayrıca, refactor edilmesinin desteklenmesinden dolayı kod ve proje kalitesinde de artışlar yaşanması beklenir.
KAYNAKLAR
- http://www.acm-software.com/acmblog/agile-manifesto-nedir/
- http://furkanalniak.com/yazilim-muhendisligi-yazilim-surec-modelleri/
- https://fikirjeneratoru.com/yazilim-proje-yonetimi-yontemleri/
- http://www.acm-software.com/agile/
- http://www.kurumsaljava.com/2008/11/21/extreme-programming-nedir/
- http://mis.sadievrenseker.com/2015/01/selale-modeli-waterfall-model/
- http://www.yazilimprojesi.com/index.php?q=uc-programlama-extreme-programming-xp-nedir
- http://www.acm-software.com/scrum/
- http://mis.sadievrenseker.com/2015/01/saldirgan-yazilim-gelistirme-scrum-software-development/
- http://www.csharpnedir.com/articles/read/?id=458
- http://www.yilmazcihan.com/scrum-ve-kanban-arasindaki-benzerlikler-ve-farkliliklar/
- https://scrumandkanban.co.uk/what-is-crystal-clear/
- https://miro.com/blog/choose-between-agile-lean-scrum-kanban/
- https://masterofproject.com/blog/3525/agile-frameworks-methodologies
- https://leankit.com/learn/kanban/kanban-system/
- https://blog.finartz.com/kendi-metodolojinizi-belirleyin-fe514dd7f8b9
- http://agilemodeling.com/essays/fdd.htm
- https://codingzap.com/waterfall-model/
- https://medium.com/innodev/agile-development-for-dummies-dd161da253c7
- https://www.lean.org/WhatsLean/Principles.cfm
- http://www.wikizero.biz/index.php?
- q=aHR0cHM6Ly90ci53aWtpcGVkaWEub3JnL3dpa2kvV2F0ZXJmYWxsX21vZGVs http://www.ilkimdilara.com/scrum-degerleri-scrum-values/
- https://www.cyber-warrior.org/Forum/evrimsel-gelistirme-modeli–lojistik_631510,0.cwx
- https://project-management.com/xp-fdd-dsdm-and-crystal-methods-of-agile-development/
- https://medium.com/@buraks/%C3%A7evik-proje-y%C3%B6netimi-scrum-nedir-ne-de%C4%9Fildir-ab41d7b2b738 http://www.aspmvcnet.com/tr/m/yazilim
- -muhendisligi/cevik-yazilim-muhendisligiagile.html
- Comparing PMBOK and Agile Project Management Software Development Processes – P. Fitsilis
- Kamu Projelerinin ve BT Proje Standartlarının İrdelenmesi ve İlişkilendirilmesi Çalışma Raporu, Türkiye Bilişim Derneği , 2002
- Yazılım Geliştirme Sürecinin İyileştirilmesi ve Türkiye Uygulamaları, Zuhal Gül, İTÜ FBE, 2006
- Yazılım Projelerine Scrum Yazılım Geliştirme Modelinin Uygulanması ve Scrum Yazılım Aracı , Cenk Derinözlü ,Havelsan
- Yazılım Proje Yönetimi: Şelale Modeli ve Çevik Yöntemlerin Karşılaştırılması, Cevriye GENCER , Ali KAYACAN, 2017
- Extreme Programming ve Yazılım Mühendisliği, Ferhat SARIKAYA, 2014
- Yöntem Çevik Olunca, Selma SÜLOLU, Datasel
- Kruchten, P., “The Rational Unified Process – An Introduction”, Addison Wesley, 2000
- Agile Software Development Models TDD, FDD, DSDM, and Crystal Methods: A Survey, Faiza Anwer , Shabib Aftab , 2017
- A Comparative Study of Agile Methods: Towards a New Model-based Method, 2017
- Geleneksel Yazılım Geliştirme Yöntemlerinde Test problemleri, Ahmet BARAN, Fulya ASLAY, Funda AKAR, 2016
- Comparison of Secured Software Development Process Models Applications, Şeyda Ocak, Fırat Üniversitesi
- https://www.freepik.com/