Gereksinim çözümleme

Bilgisayar bilimlerinde, gereksinim analizi ya da gereksinim çözümleme; çeşitli sistemlerin gerekliliklerini ve olası çelişkili durumlarını göz önüne alarak, yazılımı analiz etmek, belgelemek, doğrulamak ve yönetmek için yeni veya değiştirilmiş bir ürün üzerinde projenin ihtiyaçlarını, sistem gereksinimlerini ve koşullarını belirleyen görevleri kapsamaktadır.
Gereksinim analizi; bir sistem veya yazılım projesinin başarısı veya başarısızlığı açısından kritik önem taşır. İhtiyaçların belgelenmesi, uygulanabilir olması, ölçülebilir olması, test edilebilir formda olması, izlenebilir olması ve belirlenen işletmenin ihtiyaçlarına uygun olması gerekir.

Gereksinim çözümleme başlıkları

Gereksinim analizi konuları kabaca şöyle listelenebilir:

Kitle ile görüşmeler

Hedef kitle ile görüşmeler, gereksinim analizinde kullanılan yaygın bir tekniktir.Kitlenin bakış açılarına ve belirlenen ihtiyaçlarına odaklanılır.Yazılım geliştirecek ekibin, kitlenin ait olduğu sistemi önceden etraflıca analiz etmesi gerekmektedir.Çünkü bu görüşmelerde, genellikle geliştiricinin ilgili çalışma sahasının yaşam döngüsü hakkındaki bilgi yetersizliğinden ve buna paralel olarak kitlenin de teknik bilgi yetersizliğinden kaynaklı sorunlar çıkmaktadır.Bunu önleyebilmek için etkili iletişim teknikleri kullanılmalıdır.

Müşterek gereksinim geliştirme oturumları

Bu oturumlarda yazılım geliştirme sürecinde iş analisti(business analyst) kullanılır.Böylelikle kolaylıkla kitlenin gereksinimleri ortaya çıkarılır, ayrıntıları analiz edilir ve işlevler arası etkileri ortaya çıkarmak için tartışmalara girilir.Bu analist tarafından kontrollü bir ortamda yürütülür.Böylelikle müşterek gereksinim geliştirme oturumları sağlanabilir.Tartışmayı belgelemek ve oturumun hedefini karşılayan uygun şartları sağlamak için tartışmayı yönetmek üzere iş analistinin düşüncelerinden bağımsız özel bir yazar bulunmalıdır.

Sözleşme tarzı gereksinim listeleri

İhtiyaçların belgelendirilmesinin geleneksel yolu, sözleşme tarzı gereksinim listeleridir. Karmaşık bir sistemde, bu tür gereksinim listeleri yüzlerce sayfaya kadar sürebilir.
İfade yerindeyse, bu liste adeta uzun bir alışveriş listesi gibidir.Modern analiz yöntemlerinde bu tür listeler çok fazla avantajlı değildir.Çünkü amaçlarına ulaşmada başarısız oldukları görülmüştür.Buna rağmen, bu teknik günümüze kadar gelebilmiştir

Prototipler

Bir prototip, başka bir bilgisayar programının özelliklerinin bir bölümünü sergileyen ve henüz oluşturulmamış bir uygulamayı görselleştiren bilgisayar programıdır. Popüler bir prototip biçimi, gelecekteki kullanıcıların ve diğer kitlenin sistemin nasıl görüneceği konusunda fikir sahibi olmalarına yardımcı olan bir taklit uygulamasıdır. Prototipler, tasarım kararlarını kolaylaştırır, çünkü uygulamanın geleceği, uygulama oluşturulmadan önce görülebilir ve paylaşılabilir. Kullanıcılar ve geliştiriciler arasındaki iletişimde büyük gelişmeler genellikle prototiplerin tanıtımından sonra görülmüştür.Geliştirilme aşamasından önce, uygulamalar hakkında belirtilen hedef kitle görüşleri sayesinde verimlilik artmıştır.Bu ise, daha az değişiklik ve dolayısıyla daha düşük maliyet anlamına gelmektedir.

Kullanım örnekleri

Bir kullanım örneği, ister özgün bir çalışma, ister sonradan değiştirilmiş olsun, genellikle yazılım içeren bir sistemin işlevsel gereksinimlerini belgeleyen bir yapıdır. Her kullanım örneği, belirli bir iş hedefine ulaşmak için sistemin bir insan kullanıcısı veya başka bir sistemle nasıl etkileşim kuracağını anlatan bir dizi senaryo sağlar. Kullanım örnekleri genellikle teknik ifade biçiminden uzaktır ve bunun yerine son kullanıcının veya hedef kitlenin anlayacağı dili tercih eder. Kullanım örnekleri, genellikle sistem analisti ve hedef kitle tarafından birlikte incelenir.
Kullanım örnekleri, yazılım veya sistemlerin davranışlarını açıklamak için suni ve basit araçlardır. Kullanım örneği, kullanıcıların yazılım veya sistemin nasıl çalışacağı ile ilgili metinsel bir açıklama içerir. Kullanım örnekleri, sistemin iç işleyişlerini ya da mekanizmalarını içermemelidir.Ve sistemin nasıl uygulanacağını açıklamamalıdır. Bunun yerine, sıralı varsayımlar olmaksızın bir görevi gerçekleştirmek için gerekli adımları açıkça belirtmelidir.(Örneğin bir muhasebe programında yeni bir ürünün nasıl ekleneceği bilgisi paylaşılabilir.)

Mühendis ya da geliştirici sorunları

Gereksinim analizi sırasında mühendislerden ve geliştiricilerden kaynaklı sorunları şunlardır:
Kod yazmaya yönelik doğal bir eğilim vardır,bu durum gereksinim analizi tamamlanmadan önce yazılım geliştirmenin başlamasına yol açabilir ve bunun sonucu da muhtemelen, gerçek gereksinimleri bilinmeden geliştirilen ve öngörülemeyen ya da yeniden yapılandırılamayan yazılımlar doğurabilir.
Geliştiriciler ve hedef kitlenin anlaşmaları bozulabilir.Sonuç olarak, geliştiriciler projeyi teslim edebilmek için çalışırlar.Tamamlanan bir ürünün, geliştirilinceye kadar olan sürecini yönetirler ama buna karşın hedef kitlenin kanaatleri, başlangıçtaki anlaşmanın doğrultusunda olmayabilir yani anlaşmayı bozabilirler.
Mühendisler ve geliştiriciler, gereksinimleri, müşterinin ihtiyaçlarına özel bir sistem geliştirmek yerine mevcut bir sisteme veya modele uydurmaya çalışabilir.
Analiz, müşterinin ihtiyaçlarını doğru bir şekilde anlamak için farklı istihdam alanlarında bilgisi olan personel yerine, mühendisler veya programcılar tarafından sıklıkla uygulanabilir.Bu ise gerçeklik küresine uygun olmayan çözümler üretilmesine sebebiyet verebilir.