Scrum,  Agile proje yönetimi metodolojilerinden biridir. Klasik bir proje yönetiminde SDLC süreci, “Analiz – Geliştirme – Test – UAT – Ürün” şeklinde işliyordu. İhtiyaçların büyük oranda belirli olduğu ve ürünün sonradan çok fazla değişime uğramayacağının öngörülebildiği projelerde  bu yöntem başarı ile uygulanabilir. Ancak ihtiyaçların ve proje kapsamının belirsizlik arzettiği projelerde böyle bir yöntem izlemek birçok sorunu da beraberinde getirecektir. Analiz – Geliştirme – Test tamamlandığında UAT’de müşteri ürünü kullandıkça neyi isteyip neyi istemediğini daha belirgin bir şekilde görecek ve UAT’de değişiklik taleplerinde bulunacaktır. Bu durum proje maliyetini artıracak ve ortaya stabil olmayan bir ürün çıkmasına neden olacaktır. İşte bu noktada, proje yönetiminde Scrum metodolojisi izlenebilir.Scrum metodolojisi, proje kapsamının proje boyunca değişiklik gösterebileceğini göz önünde bulundurur. Belirli fazlarla ürün müşteriye gösterilir ve müşteriden alınacak feedbacklerle projeye devam edilir.

Product Owner, ihtiyaçları ve istekleri önem derecesine göre tasklar(User Stories) halinde listeler(Product Backlog). Veya bir analist product owner ile yaptığı toplantılar ile product backlog listesini hazırlar. Sonra Sprint Planning yapılır. Projeyi geliştirecek ekip(Scrum Team) belirlenir. Scrum Team en fazla 20 kişi olmalıdır. 20 kişiden fazla bir ekip söz konusu ise ekibi rahat organize etmek ve scrum toplantılarını  rahat hale getirmek için  ekip, 5-10 kişilik daha küçük takımlara bölünür.  En fazla bir ay sürecek şekilde sprintler oluşturulur. Sprint toplantısı yapılarak, önem derecesine göre product backlog listesinden tasklar seçilip Sprint Backlog listesi oluşturulur. Geliştirme gereksinimleri tespit edilir. Task-kaynak dağılımı yapılır. Ekip sprint süresince sprint backlog listesindeki bu taskları geliştirir. Her task için en fazla 3 gün verilir. Scrum Master her sabah en fazla 15 dakika sürecek scrum toplantıları(Daily Scrum Meeting) yapar. Scrum Master team leader veya project manager konumundaki birisi olabilir. Günlük scrum toplantılarında scrum master, takım üyelerinden önceki gün ne yaptığı, bugün ne yapmayı planladığı hakkında bilgi alarak sprint backlog’da taskları günceller. Böylece sprint boyunca tamamlanmış/tamamlanmamış tasklar izlenir. Yine bu toplantıda takım üyeleri karşılaştıkları sorunları belirtir. Yalnız takım üyeleri gerek yapılan/yapılacak işleri gerek karşılaştığı sorunları belirtirken detaya girmemelidir. Bu toplantıların amacı kimin ne yaptığını takip etmek ve karşılaşılan sorunları erken tespit etmektir. Mutlaka detayın konuşulması gerekiyor ise scrum master ile toplantı haricinde konuşulmalıdır.

Sprint bittiği zaman sprint review yapılır. Sprint boyunca karşılaşılaşılan sorunlar belirlenir. Biten/bitmeyen tasklar analiz edilir. Sprint bittiğinde ürün müşteriye gösterilir. Müşteriden alınan feedbacklere göre product backlog listesi güncellenebilir. Sonrasında product backlog listesinden yeni tasklar seçilirek yeni bir sprint döngüsü başlatılır.

SCRUM
Scrum (MSDN)

Scrum ve Team Foundation Server

Scrum sürecini takip etmek için Microsoft’un çıkardığı Microsoft Visual Studio Scrum 1.0 kullanılabilir. Bu toolu aşağıdaki linkten indirebilirsiniz:

http://visualstudiogallery.msdn.microsoft.com/59ac03e3-df99-4776-be39-1917cbfc5d8e

Setup dosyasını indirip kurduğunuzda  scrum template için gerekli dosyalar “C:\Program Files (x86)\Microsoft\Microsoft Visual Studio Scrum 1.0” lokasyonunda oluşturulur. Visual Studio’da Team Explorer penceresini açın. Team Explorer’da ilgili collectiona sağ tıklayıp “Team Project Collection Settings–>Process Template Manager” seçeneğini seçin. Açılan ekranda Upload butonuna tıklayarak “C:\Program Files (x86)\Microsoft\Microsoft Visual Studio Scrum 1.0\Process Template” lokasyonuna gidip scrum template’i upload edin. TFS’de yeni bir proje oluştururken seçim yapılan process template listesine Microsoft Visual Studio Scrum 1.0 seçeneği eklenmiş olacaktır. Visual Studio’da Team Explorer’da, Microsoft Visual Studio Scrum 1.0 process template’ini seçerek yeni bir proje oluşturun. Team Explorer’da aşağıdaki gibi bir scrum tempalate  oluşturulacaktır:

Scrum Template
Scrum Template

Proje ismine(Scrum.Test.Project) sağ tıklayıp, “Team Project Settings–>Areas and Iterations…“a tıkladığınızda template alan ve iterasyonlar oluşturulduğunu göreceksiniz. Alan, proje modullerini ifade eder. Iterations, sprtinleri ifade eder. Areas altına proje modullerini, iterations altına ise sprtint planninge göre sprintleri ekleyebilirsiniz. Iterations altında, default olarak dört release ve her release altında altı sprint bulunur. Projeye göre release ve sprint sayısı değişebilir. Iterations altındaki sprintler, scrum template’deki work itemlarda kullanımda olduğundan doğrudan silinemiyor. Iterations altındaki sprtinleri silmek için witadmin tool’u kullanılır.

Visual Studio Command Prompt’u açıp “witadmin destroywi /collection:collection url  /id:ID” komutu çalıştırılır:

witadmin destroywi /collection:http://ninja:8080/tfs/defaultcollection /id:88,89,90

Sprintlerin ID değerini görmek için scrum template’teki All Sprints query’sine bakılabilir. Bu komutla ID’si verilen work itemlar destroy edilir.

Proje planınıza göre Work Items’a sağ tıklayıp “New Work Item–>Sprint” seçeneğini seçerek release ve sprintlerinizi kendiniz oluşturabilirsiniz.

Scrum metodolojisine göre yapılacak ilk iş product backlog’un oluşturulması idi. Product backlog’a user story’ler girmek için Work Items‘da sağ tıklayıp Product Backlog Item seçeneği seçilmelidir. Her Product Backlog Item bir user story’i ifade etmektedir. Product Backlog Item eklemek için aşağıdaki gibi bir ekran çıkar:

Product Backlog Item
Product Backlog Item

Title: User story’i tanımlayan kısa başlık.

Iteration: Tanımlanan user story’nin yapılacağı sprint. Product backlogdan sprint backloga alınmak istenen işlerin iteration bilgisi dahil edilmesi düşünülen sprint olarak set edilerek sprint backloga alınır.

Assigned To: İşi yapacak kullanıcı (Product backlog tablosunu product owner dolduracağı için Assigned To product owner’dır)

State: Product Backlog Item’ın durumunu belirtir.. Burada yeni bir item girildiği için state değeri New‘dir. User story, product backlog listesinde product owner tarafından onaylanırsa Approved, sprint backlog’da scrum takımı tarafından onaylanırsa Committed, bir user story’nin başka bir user story’i kapsaması, mükerrer veya hatalı user story girilmesi gibi durumlarda Removed, bütün kabul kriterleri gerçkeleştiğinde Done değerlerini alır.

Reason: State değerinin neden bulunduğu değeri aldığını açıklar.

Backlog Priority: User story’nin öncelik derecesini gösterir. Default değeri 1000’dir. Bu alana verilen değer ne kadar küçük ise user story’nin önceliği o kadar yüksektir.  Müşteri için öncelikli case’lerin öncelikle geliştrilmesi için bu alanın doldurulması önemlidir.

Effort: User story’inin gerçekleştirilmesi için planlanan süre.

Business Value: User story’nin müşteri için önemini belirtir. 1-100 arasında değer verilir. Verilen değer ne kadar yüksek ise müşteri için önemi o kadar yüksektir.

Area: Yukarıda da belirttiğimiz gibi projenin modullerini ifade eder. Girilen user story’nin projenin hangi modulünde yapılacağını ifade eder.

Description: User story detaylı olarak bu alanda belirtilir.

Test Cases ve Tasks: User story ile ilgili girilen test case veya task var ise ilgili tablarda görüntülenir. Burada task ifadesi user story’nin gerçekleştirilmesi için yapılacak işleri ifade etmektedir.

Acceptance Criteria: User story’nin kabul alması için mutlaka olması gereken gereksinimler.

History: Product backlog item’ın proje süresince gördüğü işlemlerin tarihçesi. Kim tarafından ne zaman oluşturulmuş, kim tarafından ne zaman hangi sprinte dahil edilmiş, kim tarafından ne zaman yapılmış vs gibi bilgilerinin listesini tutar.

Links: Diğer work itemler ile varsa ilişkileri tutar.

Attachments: User story ile ilgili açıklayıcı doküman eklenmek istenirse attachment olarak bu bölümden eklenir.

İki önceki resimde görüldüğü gibi scrum template bizim için gerekli olabilecek queryleri otomatik olarak oluşturuyor. Current Sprint folderı gibi diğer sprintlere ait bir folder oluşturup benzer queryleri diğer sprintler içinde oluşturabiliriz. Current sprint’teki query şartlarından sadece Iteration path’i ilgili sprint olacak şekilde değiştirmemiz yeterlidir. Günlük yapılan scrum toplantıları buradaki Sprint Backlog listesi üzerinden yapılabilir.

Reklamlar