Bir uzay aracı gibi büyük donanım veya yazılım sistemlerinin karmaşık gereksinimleri vardır. Gereklilikler neyin inşa edilmesi, sistemin nasıl davranması gerektiğinin veya sistemin inşa sürecindeki kısıtlamaların bir belirtimidir. Gereksinim mühendisliği, bir sistem kurulmadan önce gereksinimleri anlamak için iyi mühendislik uygulamalarının kullanılmasıdır. Sistem paydaşlarının ihtiyaçları hakkında net olmadıkları ve farklı ihtiyaçları olduğu için önem taşıyor.
Karmaşık bir sistemde, sistemi devreye alan kişiler, sistemin bir veya daha fazla özelliğini kullanan kullanıcılar ve sistemden yararlananlar gibi birçok paydaş bulunabilir. Ayrıca, paydaşların, sistemin belirli özelliklerinden etkilenen halk üyelerini içermesi de mümkündür. Paydaşların kendi özel ihtiyaçları vardır. Öte yandan, sistemi geliştiren kişiler teknik olarak yetenekli olabilirler ancak paydaşların bakış açısını tam olarak anlayamayabilirler. Gereksinim mühendisliği, bu tarafları birbirine bağlayan temel özelliktir.
Resmi olarak, gereksinim mühendisliği faaliyeti gereksinim geliştirme ve gereksinim yönetimi bölümlerine ayrılmıştır. Gereksinim geliştirme, çıkarma, analiz, şartname ve doğrulamadan oluşur. Gereksinim yönetimi, tüm gereksinimler sürecinin kontrolüdür, özellikle de gereksinimlerdeki herhangi bir değişikliğin ele alınması. Bazı uygulayıcılar, aksine, sadece tüm etkinliği ihtiyaç analizi olarak adlandırıyorlar.
Gereklililerin paydaşlardan çıkarılması gerekli olur çünkü paydaşlar çoğu zaman ihtiyaçlarını tam olarak belirtmezler ve yeni sistemin etkilerini anlamadılar. Mevcut işlerini etkilemesinden korkabilecekleri için, paydaşlar açılmayabilir. Dolayısıyla ortaya çıkarmak, empati ve incelikli psikolojiye ihtiyaç duyulan dikkatli ve muhtemelen uzun bir süreçtir. Geliştiricilerin yanı sıra farklı paydaşlar arasındaki kültürel farklılıkların köprülendiğine dikkat edilmelidir.
Gereklilikleri ortaya çıkarmak için çeşitli teknikler kullanılır. Bireysel görüşmeler, grup toplantıları ve kişilerin görevlerini gözlemleyerek gereksinimler karşılanabilir. Gereksinimleri ortaya çıkarabilen teknikler arasında odak grupları, öncelikli listeler oluşturma, prototip oluşturma ve çalışan diğer sistemlerle karşılaştırma yer alır. Ortaya çıkarılması gerekenler, sistemin iş ihtiyaçlarını, kullanıcıların sistemi kullandıkça iş süreçlerini ve sistemin işlevsel özelliklerini içerir. Ek olarak, yanıt süresi, sistem kullanılabilirliği ve kullanım kolaylığı gibi işlevsel olmayan gereksinimlerin karşılanması gerekir.
Gereksinim mühendisliğindeki analiz basamağı, orijinal üst düzey gereklilikleri karşılayacak düşük düzeyli gereksinimler oluşturur. Bu, gereksinimlerin eksiksiz olduğunu tespit etmek için kavramsal modeller ve prototipler oluşturulmasını içerir. Farklı paydaşların ihtiyaçlarındaki çatışmalar, sadece bir ihtiyaç listesinden ziyade, modeller ve prototipler tarafından daha sık görülür. Güvenlik, esneklik ve bakım kolaylığı gibi arzu edilen sistem özelliklerinin, analistler tarafından gereksinimlere eklenmesi gerekir.
Gereklilikler tüm paydaşların anlaşılmasını kolaylaştırmak için bir belgede belirtilmiştir. Yazılım alanında, belge, Yazılım Gereksinimleri Belirtimi anlamına gelen SRS olarak adlandırılır. Gereksinimler kilit paydaşlar tarafından doğrulanmıştır. Bu, esasen sunumlar ve şartname belgesi yoluyla olmakla birlikte, bazen de gereksinimlere karşılık gelen test durumlarıyla olmaktadır.
Gereksinim mühendisliği temel olarak bir teknik değil, bir iletişimdir. Çok disiplinli becerilere ihtiyacı var. Gereksinim mühendisliği, paydaşların ve geliştiricilerin çatışmaları çözmesine yardımcı olur ve onları hedeflerinde birleştirir; Bu sağlam bir sisteme yol açar.


