Gereksinim Mühendisliği
Gereksinim mühendisliği, bir yazılım sisteminin ne yapması gerektiğini ve hangi kısıtlamalar altında çalışması gerektiğini keşfetme, analiz etme, belgeleme, doğrulama ve yönetme disiplinidir.
Tanım
Gereksinim mühendisliği, bir yazılım sisteminin sağlaması gereken hizmetleri ve operasyonu ile geliştirilmesine ilişkin kısıtlamaları ortaya çıkarma, analiz etme, belirleme, doğrulama ve yönetme sistematik sürecidir.
Kapsam
Bu alan, paydaş ihtiyaçlarının ortaya çıkarılmasını; çelişkili hedeflerin analizini ve müzakeresini; işlevsel ve işlevsel olmayan (kalite) gereksinimler arasındaki ayrımı; doğal dil ifadelerinden resmi modellere kadar uzanan spesifikasyon tekniklerini; gözden geçirme ve prototipleme yoluyla doğrulamayı; ve gereksinim değişikliklerinin ve izlenebilirliğinin yaşam döngüsü boyunca yönetimini kapsamaktadır.
Alt konular
Temel sorular
- Paydaşların gerçek ihtiyaçları nasıl keşfedilir ve belirsizlikleri giderilir?
- İşlevsel ve işlevsel olmayan gereksinimler hem hassas hem de anlaşılır bir şekilde nasıl belirtilmelidir?
- Çelişkili gereksinimler nasıl tespit edilir, müzakere edilir ve çözülür?
- Gereksinimler değiştikçe nasıl doğrulanır ve tutarlı tutulur?
Temel kuramlar
- İşlevsel ve işlevsel olmayan gereksinimler
- Gereksinimler, sistemin ne yapması gerektiğini belirten işlevsel ifadeler ile performans, güvenlik ve kullanılabilirlik gibi genellikle tüm sistemi etkileyen ve mimariyi yönlendiren işlevsel olmayan (kalite) kısıtlamalar olarak ayrılmaktadır.
- Hedef odaklı gereksinim mühendisliği
- Sistemler, paydaş hedefleri açısından analiz edilmekte ve bu hedefler alt hedeflere ayrıştırılarak gereksinimlere dönüştürülmektedir; bu yaklaşım, yüksek seviyeli niyeti sistem işlevlerine bağlayan gerekçe, çelişki tespiti ve izlenebilirlik sağlamaktadır.
Klinik önem
Gereksinim hataları, tasarıma ve koda yayıldıkları için en maliyetli kusurlar arasında yer almaktadır; titiz gereksinim mühendisliği, yeniden işleme ihtiyacını azaltmakta, teslim edilen yazılımı paydaş ihtiyaçlarıyla uyumlu hale getirmekte ve kabul testi ile sözleşmesel anlaşma için temel sağlamaktadır.
Kanıt ve kılavuzlar
ISO/IEC/IEEE 29148, gereksinim mühendisliği süreçlerini ve gereksinim spesifikasyonlarının içeriğini belirtmekte olup, SWEBOK Yazılım Gereksinimleri bilgi alanı bir fikir birliği referansı sunmaktadır.
Tarihçe
Gereksinim mühendisliği, 1970'lerin yapısal analiz yöntemlerinden gelişerek 1990'larda tanınmış bir alt disiplin haline gelmiştir; bu dönemde özel konferanslar (RE) ve dergiler ortaya çıkmış, hedef ve senaryo tabanlı modelleme yükselmiş ve işlevsel olmayan gereksinimlere ve paydaş müzakerelerine artan bir ilgi gösterilmiştir.
Tartışmalar
- Önceden belirlenmiş gereksinimler ile ortaya çıkan gereksinimler
- Plan odaklı uygulamalar, gereksinimlerin inşaattan önce kapsamlı bir şekilde belirtilmesini tercih ederken, çevik uygulamalar gereksinimleri ortaya çıkan ve yinelemeler yoluyla geliştirilen unsurlar olarak ele almaktadır; bu takas, oynaklık, sözleşmesel kısıtlamalar ve geç yapılan değişikliklerin maliyetine bağlı olarak değişmektedir.
Öne çıkan isimler
- Axel van Lamsweerde
- Bashar Nuseibeh
- Steve Easterbrook
- Michael Jackson
İlgili konular
Temel eserler
- vanlamsweerde2009
- nuseibeh2000
- sommerville2015
Sıkça sorulan sorular
- Gereksinim hataları neden bu kadar maliyetlidir?
- Yanlış anlaşılan veya eksik bir gereksinim genellikle ancak tasarım ve kodun üzerine inşa edildikten sonra, yani geç keşfedilmektedir; bu nedenle, hatayı düzeltmek, sonraki aşamalardaki işlerin geri alınmasını gerektirmektedir. Ampirik çalışmalar, bir kusuru düzeltme maliyetinin, ne kadar geç bulunursa o kadar keskin bir şekilde arttığını tutarlı bir şekilde göstermektedir.
- Çevik projeler gereksinim mühendisliği yapar mı?
- Evet, ancak farklı bir şekilde. Çevik projeler, baştan büyük bir spesifikasyon belgesi üretmek yerine, kullanıcı hikayeleri, birikim listesi (backlog) iyileştirmesi ve sık geri bildirim yoluyla gereksinimleri sürekli olarak ortaya çıkarmakta, analiz etmekte ve doğrulamaktadır.