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.

İhtiyaçların ortaya çıkarılması: İş süreci dokümantasyonu ve grup görüşmeleri sağlanarak ihtiyaçları belirlemektir. Buna bazen ihtiyaç toplama veya gereksinim keşfi de denir.

Kayıt gereksinimleri: Gereksinimler, genellikle bir özet listesi içeren çeşitli formlarda belgelenebilir.Doğal dil belgeleri, kullanım örnekleri, kullanıcı hikâyeleri, süreç özellikleri ve veri modelleri de dahil olmak üzere çeşitli modeller oluşturulabilir.

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.

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.

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.

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.

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.

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.

1990'larda prototiplendirme, birleşik modelleme dili(UML), şablon kullanma ve çevik yazılım geliştirme gibi teknikler, önceki yöntemlerde sık karşılaşılan sorunların çözümleri olarak düşünülmüş ve buna paralel olarak geliştirilmiştir.