Projelerin başarısı için iş ihtiyaçlarını doğru belirlemek ne kadar önemli ise bu iş ihtiyaçlarını karşılamak için tanımlayacağımız iş, kullanıcı ve çözüm gereksinimlerini analiz dokümanlarında herkesin anlayacağı netlikte, tutarlı, doğrulanabilir, kısa ve öz olarak tanımlamak da bir o kadar önemlidir. IIBA® (International Institute of Business Analysis) iş analizi dokümanlarında tanımlanacak olan iyi bir gereksinimin sahip olması gereken özelliklerini şu şekilde belirtir;
İyi Bir Gereksinim Tanımlamasının Özellikleri Nelerdir?
Atomic (Atomik)
Gereksinimler daha küçük parçaya bölünemeyecek kadar atomik seviyede tanımlanmalı. Tanımlanan bir gereksinim kendi içerisinde farklı gereksinimleri içeriyorsa anlamlı olabilecek şekilde parçalara ayrılmalı ve ayrı şekilde tanımlanmalı.
Örneğin; ‘Gereksinim1: Kullanıcı ürün listesinden incelemek istediği bir ürünü seçerek ürün detaylarını görüntüleyebilmeli ve sipariş verebilmeli’ şeklinde tanımlanan bir gereksinim kendi içerisinde farklı gereksinimleri de içerdiği için doğru bir tanımlama değildir. User-centered bir gereksinim analizinde incelemek istenen ürünün seçilerek detayının görüntülenmesi ve sipariş verme 2 ayrı gereksinim olarak tanımlanmalıdır.
Unambiguous (Açık, Kesin)
Gereksinimler tüm paydaşlar tarafından anlaşılacak derecede açık bir şekilde tanımlanmalı, okuyucunun tartışmasına açık olmamalı ve muğlak ifadeler içermemelidir. Verilen örnekte ürünün detayının görüntülenmesi kısmı net değildir. Ürün detayı olarak hangi bilgilerin görüntüleneceği bu gereksinimde açık bir şekilde ifade edilmelidir.
Örneğin; ‘Kullanıcı ürün listesinden incelemek istediği ürünü seçerek ürünün ismini, model numarasını, ürün tanımını, teknik özelliklerini, resmini ve fiyatını görüntüleyebilmeli’ şeklinde daha net bir şekilde tanımlanmalıdır. Yine bu örnekte, ‘Ürün detay bilgisi olarak ürünün stokta olup olmadığı bilgisi ya da stokta kaç adet olduğu bilgisi görüntülenmeli’ şeklinde tanımlanacak bir gereksinimde belirsizlik vardır. Gereksinimleri tanımlarken ‘ya da’, ‘veya’ gibi ifadeler kullanılmamalıdır.
Complete (Bütün, Tam)
Gereksinimler tüm paydaşlar için yeterli seviyede detay içerecek şekilde tanımlanmalıdır. ‘Kullanıcı sipariş verebilmeli’ şeklinde tanımlanan bir gereksinim eksik bir gereksinimdir, tam değildir. Sipariş verme sürecinin tamamının nasıl gerçekleşeceği, ürünün sepet üzerinden mi sipariş verileceği, sipariş verirken teslimat adresi oluşturma ve ödeme aşamalarının da tanımlanması gerekir. Hatta atomik seviyede tanımlayabilmek için gerekirse sipariş verme süreci de parçalanarak sepet oluşturma, adres oluşturma, ödeme süreci, sipariş onayı gibi kısımlar da ayrı birer gereksinim olarak tanımlanabilir.
Consistent (Tutarlı)
Gereksinimler birbirleri ile tutarlı ve iş ihtiyacını karşılıyor olmalı. Farklı paydaşlar ile yapılan görüşmeler sonucunda ortaya çıkan, birbirleri ile çelişen gereksinimlerin netleştirilmesi gerekir.
Concise (Kısa, Öz)
Gereksinimler tanımlanırken fazladan olabilecek gereksiz bilgiler verilmemeli, kısa ve basit bir şekilde tanımlanmalı. Uzun cümleler ve bağlaçlar kullanılması analiz dokümanlarının okunmasını ve kolay anlaşılmasını olumsuz yönde etkilemektedir.
Testable (Doğrulanabilir)
Tanımlanan gereksinimler doğrulanabilecek şekilde kabul kriterleri içermeli. “Kullanıcı kolay bir şekilde siparişini verebilmeli” ya da “Sipariş hızlı bir şekilde gerçekleştirilebilmeli” şeklinde tanımlanacak gereksinimler doğrulanabilir değildir. “Kime göre kolay olacak?”, “Kolay olup olmadığına nasıl karar vereceğim?” ya da “Ne kadar hızlı olmalı?” gibi sorulara yanıt verecek şekilde ölçülebilir kabul kriterleri ile gereksinimler tanımlanmalıdır. Böylelikle test aşamasında test yapan kişinin inisiyatifine göre değil tanımlanan kriterlere göre testin başarılı ya da başarısız olduğu kararı verilir.
Feasible (Uygulanabilir)
Gereksinimler öngörülen sürede, teknik açıdan, iş kuralları, kısıtlar ya da yasal zorunluluklar açısından sorunsuz bir şekilde, belirlenen bütçe ve kaynak ile uygulanabilecek şekilde tanımlanmalı. Sistemsel olarak kolayca uygulanamayacak, ekstra donanım ihtiyacı ve maliyet gerektirecek gereksinimler yerine uygulanabilir çözümler üretilmeli ve gereksinim tanımlaması yapılmalıdır. Sipariş verme örneğinde, ‘Kullanıcı siparişini aynı gün kargo opsiyonu ile verebilmeli’ şeklinde tanımlayacağımız bir gereksinim, eğer siparişi aynı gün tedarik edebilecek yeterli alt yapımız yok ise her ne kadar kolayca sürece dahil edilebilecek bir seçim gibi görünse de uygulanabilir bir gereksinim olmayacaktır.
Prioritized (Önceliklendirme)
Gereksinimler tanımlanırken mutlaka önceliklendirme yapılmalı, hangi gereksinimin daha öncelikli olduğu tanımlanmalıdır. Ayrıca gereksinimler arası ilişkiler de belirlenmeli, gerçekleşmesi birbirine bağlı gereksinimler varsa açıkça belirtilmelidir.
Understandable (Anlaşılır)
Analiz dokümanlarında çoğu zaman kısaltmalar ya da teknik terimler ile gereksinimler tanımlanır. Analiz dokümanlarını farklı bilgi seviyesindeki paydaşlar da okuyacağı için herkesin anlayacağı şekilde gereksinimler tanımlanmalı, çok fazla kısaltma kullanılıyorsa dokümanda bu kısaltmalar ayrı bir bölümde açıklanmalı.