Salı, Mayıs 08, 2007

JIRA Nedir - III


JIRA ile ilgili önceki bloglarımda daha çok uygulamanın altyapısına değinmiş, esas son kullanıcıyı ilgilendiren özelliklerinden pek bahsetmemiştim. Bu blog'da JIRA'nın muhteşem özelliklerini madde madde anlatmaya çalışacağım.
a) Issue : JIRA'nın en temel yapı taşıdır. JIRA'daki tüm işler birer issue olarak açılır ve tüm sistem bu issue kavramı üzerinde çalışır. JIRA'nın en kuvvetli özelliklerinden biri de issue'ların projelere ve tiplerine göre özelleştirilebilir olmasıdır. Issue'lara standart özelliklerinin yanında başka fonksiyonalite de yükleyebilirsiniz. (What is an Issue?)
b) Project : JIRA'da iş akışlarınızı sınıflandırmanın en iyi yolu proje kullanmaktan geçer. Farklı konular, farklı ekranlar, farklı iş akışları, farklı haklar, farklı kullanıcılar vs. için her seferinde yeni bir proje kullanabilirsiniz. Örneğin bir Yazılım Projesi, Yardım Masası, Gereksinim Yönetimi, Ürün Satışı, vs. JIRA projesi olabilir. Projelerinize alt gruplar tanımlayabilir, Sürüm Yönetimi için bir versiyonlama sistemi kullanabilirsiniz. Ayrıca her proje için ayrı bir iş akışı, ayrı bir ekran, ayrı bir güvenlik tanımı, ayrı bir bilgilendirme sistemi vs. tanımlayabilirsiniz. (What is a project?)

c) Workflow : JIRA'nın standart iş akışı bir çok projeniz için yeterli gelse de, eğer isterseniz mevcut workflow'u değiştirerek veya sıfırdan bir workflow yaratarak
çok kompleks bir iş akışı tanımlayabilirsiniz. Web arayüzlü harika workflow editörü, çok rahat ve basit bir kullanım kolaylığı sağlar. (Understanding Workflow)


d) Dashboard : JIRA'nın en güzel yanlarından biri de kişiselleştirilebilir bir giriş sayfasının bulunmasıdır. Giriş ekranını, farklı projeler için farklı portlet'ler, filter'lar, raporlar, vs. ile donatabilirsiniz. Bunlar için de hiç bir Admin'e ihtiyaç duymazsınız. (Configuring the Dashboard)

e) Search : JIRA'nın çok gelişmiş bir arama motoru vardır. Bu iş için altyapısında, meşhur bir açık kaynak kütüphane olan Apache Lucene'i kullanır. Arama kriterleri arasında, sonradan eklediğiniz özelleştirilmiş alanlar dahi otomatikman yer alır. Çok sık yaptığınız arama filtrelerini kaydedebilir hatta diğer kullanıcılar ile paylaşabilirsiniz. (Saving Searches 'Issue Filters')

f) Reporting : JIRA'da standart olarak çok kullanışlı rapor şablonları mevcuttur. Ama isterseniz JIRA Plugin Development desteği sayesinde kendi detaylı raporlarınızı hazırlayabilir ya da diğer JIRA severlerin hazırlayıp tüm dünya ile ücrestiz olarak paylaştığı raporları kullanabilirsiniz. (Multi-dimensional reporting)


g) Sub-Task : Farzedin takip etmeniz gereken bir konu var ama alt detayları henüz tam kesinleşmemiş. Kesinleşen kısımlarını da başkalarının takip etmesi gerekiyor. Fakat üst yönetim işin bitişini sizden bekliyor. İşte bu tip durumlarda JIRA'daki sub-task özelliği çok işe yarıyor. Size atanmış bir issue'nun alt issue'larını da siz başkalarına atayıp, işin tamamını tek bir noktadan takip edebiliyorsunuz. (Creating a sub-task)



h) Issue Linking : JIRA'da biribirileriyle alakalı işler link özelliği sayesinde çok rahat takip edilebilirler. İstediğiniz sayıda farklı bağımlılık tipi (depends, duplicates, etc.) oluşturabilirsiniz. Issue linkleme sayesinde sizden iş bekleyen birisinin, elinizdeki işi neden yapamadığınızı ifade etmeniz kolaylaşır. (Linking Issues)

i) Watching : JIRA'daki Watcher kavramı sayesinde hakkı olan herkes bir issue'ya kendisini veya başkasını herhangi bir anda ekleyebilir. (Kimin eklediği bilinmez) Bir issue'daki tüm gelişmeler Watcher listesindeki herkese anında ulaştırılır. Bu sayede konuyla alakalı olmak isteyen herkesin tüm gelişmelerden anında haberdar olması garantiye alınmış olur. (Voter and Watcher Lists)

Aslında JIRA'nın güzellikleri ve faydaları anlatmakla bitmez ama bu blog'un artık bitmesi gerekiyor. Sanırım JIRA'yı yeterince tanıttım. Bundan sonraki bloglarımda JIRA'nın diğer güzel kardeşi Confluence'u tanıtmaya çalışacağım. Tabii vakit bulabilirsem :)

Etiketler: ,

Salı, Mart 27, 2007

Sürüm Yönetimi Pratikleri - III

Sürüm Yönetiminde en önemli konulardan biri de Hata ve İstek Takip araçlarıdır. (Issue Tracking Tools) Maalesef ülkemizde hala birçok yazılım evi ve departmanı bu takip işini e-mail veya telefonla yapmaktadır.

Doğal olarak bu firmalar yazılım yaşam döngüsü boyunca ortaya çıkan işleri düzgünce kayıt altına alamadıkları için takip edememekte, takip edemedikleri bir ürünün de Sürüm Yönetimini yapamamaktadırlar.

Bazı firmaların yaptığı diğer bir yanlış iş ise farklı talep tipleri için farklı araçlar kullanmalarıdır. Eğer hataların (bugs) takibi için ayrı bir araç, yeni iş istekleri için ayrı bir araç kullanılırsa sağlıklı bir Sürüm Yönetimi yapmak zorlaşır.


Bu yazımda Sürüm Yönetimi için nasıl bir İş Takip Sistemi'ne ihtiyacımız olduğundan ve bu iş için kullanacağımız araçtan beklentilerimizi ortaya koymaya çalışacağım.

a) Release Notes (
Sürüm Notları)

Sürüm Yönetiminin aslında esas hedefi ve çıktısı sağlıklı Sürüm Notlarıdır. Sürüm Notları bir yazılıma ait işlerin (new feature & bug fix) ne zaman ve hangi sürümde devreye alınacağını veya alındığını gösterir.

1) Issue Tracking Tool : Sağlıklı bir Sürüm Notu hazırlamak için öncelikle JIRA gibi güzel bir araca ihtiyacımız var. (Neden JIRA? sorusu için ayrı bir blog hazırlıyorum)

2) Issues : Geliştirdiğimiz proje, ürün, uygulama vs. ile ilgili her türlü konuyu (bug, task, new feature, improvement, problem, support request, etc.) İş Takip Arac'ı üzerinden takip etmemiz gerekiyor. (Örnek-I)

3) Affect Version(s) : Herhangi bir ortamda (DEV, TEST, PROD) uygulama kullanılırken tespit edilen hatalar takip sistemine girilirken mutlaka Sürüm Yönetimi Pratikleri - I başlıklı bloğumda bahsi geçen sürüm/versiyon numarası da (affect version) kullanılmalıdır. Bu sayede hatanın hangi versiyonda ortaya çıktığı belli olacak ve Sürüm Notlarında gözükecektir.




4) Fix Version(s) : Bir hata çözüldüğünde veya bir istek tamamlandığında bu işin hangi sürümle (fix version ??? link) devreye alınacağı mutlaka İş Takip Aracı'nda belirtilmelidir. Bu bilgi Sürüm Notlarının hazırlanabilmesi için çok önemlidir.

Bu bilgileri kullanarak örnek linkteki gibi Sürüm Notlarını online olarak takip edebiliriz: (JBoss Application Server Release Notes)

5) SCM and Issue Integration : Sürüm Yönetimi açısından en önemli konulardan biri de kodlar'daki değişikliklerin sürüm kapsamında yapılıp yapılmadığının kontrolüdür. Hiç kimse kapsam dışındaki bir değişikliğin production ortamına alınmasını istemez. Bunun önlemenin en iyi yolu Versiyon Kontrol Araçlarındaki (CVS, SVN, ClearCase, vs.) değişikliklerin, İş Takip Araçlarındaki konularla ilişkilendirilmesidir.

Eğer developer'lar her check-in yaptıklarında, kod'un içerisinde ilgili yere bu değişikliğin nedeni olan IssueKey'i comment olarak yazarlarsa, JIRA ve CVS'in entegre olduğu durumlarda bu değişiklik JIRA'daki ilgili issue ile ilişkilendirilir ve raporlanır.



6) Issue Linking : Bir sürüm kapsamındaki işlerin bağımlılıklarının takip edilmesi çok önemlidir. Örneğin 2.1.7 sürümünde çıkartacağınız bir iyileştirmenin bir parçası 2.2.0 sürümde çıkartmayı planladığınız bir iyileştirmeye bağımlı ise Sürüm Planını tekrardan yapmanız gerekecektir. Burada esas sorun planın tekrar yapılması değil bu bağımlılığın önceden ve kolayca tespit edilebilmesidir.



Bu konu ile ilgili diğer bloglar:

Sürüm Yönetimi Pratikleri - I

Sürüm Yönetimi Pratikleri - II

Etiketler: , , , ,