Çevik Proje Yönetimi ve Scrum
BTK Akademi “Agile (ÇEVİK) Metodolojiler ve SCRUM Eğitimi” ve “Çevik Proje Yönetimi” kurslarının notlarıdır.
Agile (ÇEVİK) Metodolojiler ve SCRUM Eğitimi Kursu:
Scrum’ın atası extremee programmimng’tir.
Tüm çalışma sürecini parçalara böler ve her zaman kutusunun(parçanın) sonucunda bir ürün ortaya çıkması beklenir.
Her iterasyon işlevsel olarak minik bir yazılım projesi gibidir.
Çevik yöntemin iyi yanı sürekli bir üretim sözkonusudur kötü yanı ise çok yorucudur.
En bilinen çevik yöntmeler: ”Extreme programming, scrum, feature(işlevsel) driven developement, lean(yalın) software development, Kanban”dır.
Yazılım takımları olmalıdır ve bu takımlar değişime hızlı cevap verebilmelidirler.
Müşteri genellikle ne istediğini bilmiyordur ve müşteriyle iletişim çok önemlidir. Ortak metaforlar kullanılmalıdır(iş yalın ve net tanımlanmalıdır). Sistem sürekli iyileştirilmelidir tüm testler bu esnada yinelenmelidir. Müşteri önceliklerini belirtmelidir.
Ekstrem programlama hafif, düşük riskli, esnek, öngörülebilir, bilimsel eğlenceli üretimdir.
Tasarım odaklı değildir kod odaklı geliştirilir.
Test odaklı kalite kontrol edilir. Dökümantasyon daha zayıftır.
Çevik yazılım geliştirme manifestosu:
Süreçler ve araçlardan ziyade bireyler ve etkileşimlere değer verilir.
Kapsamlı dokümantasyondan ziyade çalışan yazılıma değer verilir.
Sözleşme ve pazarlıklardan ziyade değişime karşılığa değer verilir.
Bir plana bağlı kalmaktan ziyade değişime karşılık vermeye değer verilir.
İlkeler:
Erken ve devamlı teslimat en önemli önceliktir. Değişen gereksinimler yazılım sürecinin son aşamalarında bile kabul edilmelidir. Çevik süreçler değişimi müşterinin rekabet avantajı için kullanır.
Yüzyüze iletişim en verimli ve etkin iletişimdir. Projelerin temelinde motive olmuş bireyler olmalıdır. Onlara ihtiyaçları olan ortam ve destek sağlanmalıdır ve işi başaracakları konusunda güven duyulmalıdır.
Extreme Programming:
Kısıtlı imkanlarla yazılım ürünü üretmektir.
Pair(eşli) programming yapılır.
Takımlar 5 veya 10 kişilik olur. 20 kişi bir takımın maksimum kişi sayısıdr.
4 önemli XP değeri:
Basitlik(“en basit çözüm en iyi çalışandır” ve “ihtiyaç değilse üretme” ilkeleri)
Geri besleme(test et, deneyimleştir, teslim et)
İletişim(geliştiriciler, kullanıcılar, müştericiler, Testçiler, kaynak kod iletişim içerisinde olmalıdır)
Cesaret(güven ve birliktelik geçmişine dayanır).
12 XP Pratiği:
Planlama oyunu(planlama aşamasının interaktif ve netleştirilmesi), kısa aralıklı sürümler, basit tasarım, test etme(otomasyon önemli), refactoring(tekrar eden parçalardan kurtulunur), eşli programla(herkes her işi yapmalıdır, sürücü kodu yazar yönlendirici soru sorar, dakikada bir iletişime geçerler, sıklıkla rol değiştirirler), kolektif, mülkiyet, sürekli entegrasyon, müşteri ile üretim, sürdürülebilir hız, metafor(mecaz kullanarak ortak dil sağlanır), kodlama standartları.
Günlük toplantılar olur. Maksimum süre 15 dakika olur. Herkes ayakta daire olur, o gün ne yapacağını, işlerinin hangi durumda olduğunu söyler.
SCRUM:
İş öncelikleri belirlenir. Takımlar en yüksek öncelikli özeliklerini geliştirmenin en uygun yolunu belirlemek için kendi kendini yönetir. Her iki haftada ya da ayda bir çalışan yazılım parçası üretilir. Takımlar ürünü geliştirmeye iterasyonlar ile devam eder.
Scrum en çok kullanılan çevik süreçlerinden biridir.
Sprints(koşu):
Scrum projeleri bir dizi sprint ile ilerleme kaydederler.
Xp iterasyonlarına benzer.
Hedef süre bir aydır(15 güne kadar düşebilmektedir). Sabit süre daha iyi bir ritim sağlar.
Ürün parçacığı sprint sırasında tasarlanmış , kodlanmış test edilmiştir.
Scrum Çerçevesi:
Roller: Product Owner(ürün sahibi), scrum master, takım
Törenler: Sprint planlama, sprint incelemesi, sprint retrospektifi(geriye bakış), günlük scrum toplantısı
Eserler: Ürün istek listesi, sprint backlog ve burndown tablosu
Scrum Takımı:
Genelde 5–10 kişi(ideali 8 kişi)
Çağraz fonskiyonel(kalite güvence, programcılar, tasarımcılar)
Üyeler tam zamanlı olmalı
Takımlar kendini organize ederler
Üyelik sadece sprintler arası değişebilir.
Pre-project/kickoff meeting(proje öncesi/başlangıç toplantısı):
Sprint planlama toplantısının özel bir şekli. Proje başlangıcından önce yapılan toplantıdır.
Daily Scrum(günlük scrum):
Günlük,15dk, ayakta, problem çözmeyi amaçlamaz.
Dün ne yaptın, bugün ne yapacaksın, yolunda engeller var mı soruları cevaplanır.
Agile Lifecycle(çevik yaşam döngüsü):
Product vision->Project/release planning->Iteration Planning->Iteration Execution->Iteration Review->Project/Release Introspection
Scrum Avantaj/Dezavantaj:
Avantaj: Basit,üretken,açık kurallı,kendini düzenleme,her takım üyesi sorumluluk taşır, iyi etkileşim, kısa iterasyonlarda geliştirlmiş ve test edilmiiş özellikler.
Dezavantaj: İyi niyet üstüne kuruludur sorumluluk ihlali olabilir, yazılı doküman azdır.
-SON-
Yazılım projesi geliştirmede kullanılan en popüler modeller ve tercih edilme sebepleri:
Şelale modeli(waterfall model):
Aşamalı olarak geliştirme mantığı kullanılır. Her aşama o aşamanın kalite kontrolü ile sonuçlanır ve diğer aşamaya geçilir. Gereklilik hesabı ve planlama sadece projenin başında yapılır ve proje bittiğinde sadece bakımı yapılır. Proje sonlanana kadar çalışabilir sürüm bulunmaz.
Aşamalı sürüm modeli(phased model):
Bazı ilk üst düzey analizler yapma ve ardından projeyi sürümlere bölme fikrini kullanır. Artımlı geliştirme yapılır. Her aşama müşteriye sunulabilir durumdadır.
Spiral modeli:
Prototipleme ve risk analizini kullanılır. Bakım sürekli yapılır. Prototipleme yapılır ve sürümler için her aşama tekrar edilir. Sürekli gereklilik kontrolü yapılır böylece proje yapım aşamasında başka şeylere dönüşebilir.
Evrimsel(evalutionary) model:
Örtüşen sürümlerle, değişen miktarlarda zaman ve çalışma kavramını birleştirin. Geliştirme işleri teslim süresine kadar artar, hemen öncesinde tepe yapar ve ardından azalır. Bitmeden hemen önce sonraki sürüme başlanır, sürüm çalışmaları üst üste binmiş olur. Her sürüm için farklı efor ve zaman harcanılır.
Eşzamanlı mühendislik(concurrent engineering) modeli:
Sistemi bileşenlere ayırma ve bunları paralel olarak geliştirme fikrini kullanır. Başlangıçta bir plan yapma gereksinimi duyulur. Her aşamada spiral veya evrimsel model kullanılır.
Not: Çevik metadolojileri model değildir. Bir yaklaşım gereği oluşturulmuş geliştirme eylemleri bütünüdür. İstenilen eylem istenilen modele entegre edilebilir.
Ekstrem programlama: En popüler çevik yöntemdir. Çift(pair) programlama, hikaye(stories) yazımı, devamlı bütünleme(continous integration), test-önce geliştirme, yeniden düzenleme(refactoring) gibi eylemlerin bütünüdür.
Çevik Proje Yönetimi Kursu:
Agile bir felsefe ve zihniyettir(mindset). Bir metadoloji değildir.
-DEVAM EDECEK-
Referanslar:
BTK Akademi — Agile (ÇEVİK) Metodolojiler ve SCRUM Eğitim
BTK Akademi- Çevik Proje Yönetimi