gereksinimler etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
gereksinimler etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

29 Ocak 2017 Pazar

GEREKSİNİM MÜHENDİSLİĞİ ( REQUIREMENTS ENGINEERING )

Gereksinim mühendisliği, bilgisayar tabanlı bir sistem için gereksinimlerin araştırılması, dokümantasyonunun yapılması ve kontrol edilebilir bir hale getirilmesini kapsamaktadır. Gereksinimlerin ortaya çıkarılması, toplanması, anlaşılması, analiz edilmesi ve doğrulanması gereksinim mühendisliğinin alanına girmektedir.
Bu alanın mühendislik olarak anılmasının sebebi; gereksinimlerin, tutarlı, eksiksiz ve birbirleri ile ilişkilendirilerek sistematik ve tekrarlanabilir teknikler yardımıyla ortaya çıkarılması gereksinimidir. Ancak bu şekilde sistem gereksinimleri kontrol edilebilir ve takip edilebilir olmaktadır.

Gereksinimler Önemli midir?

Yazılım geliştirme ve üretim aşamasında başlıca problem gereksinimlerin belirlenmesi ve müşteri gereksinimlerinin yönetilmesidir. Gereksinimlerin doğru belirlenememesi durumunda çoğu proje başarısızlıkla sonuçlanmaktadır. Gereksinimleri doğru belirlenememiş bir proje sonunda,
  • Projenin  geç teslim edilmesi ya da öngörülen bütçenin aşılması,
  • Müşterinin ya da son kullanıcıların tatmin edilememesi,
  • Sistemin kullanılamaz ya da içinden çıkılamaz bir hale gelmesi,
  • Periyodik ya da kronikleşmiş hatalar sebebiyle kullanılamaz ve güvenilemez bir sistemin ortaya çıkması,
  • Sistem hataları sebebiyle bakım ve idame hizmetlerinin öngürülenden daha fazla zaman ve kaynak harcanmasına sebep olması, gibi sonuçlar ortaya çıkabilir.


Gereksinimlerin Belirlenmesinde Yaşanılan Zorluklar

Sistem gereksinimleri belirlenirken karşılaşılabilecek başlıca sorunlar;
  • Paydaşların yeni bir sistemden tam olarak ne beklediklerini bilmemeleri,
  • Yapılacak sistemin nasıl çalışacağının müşteriye anlatılması konusunda zorlanılması,
  • Sistem gereksinimlerinin sürekli değişmesi,
  • Farklı amaçlar için sistemi kullanacak paydaşların kendi isteklerinin ya da gereksinimlerinin daha önemli olduğunu öne sürmeleri,
  • Paydaşların tam olarak neye ihtiyaçları olduğunu bilmemeleri,
  • Farklı amaçlar için sistemi kullanacak paydaşların sadece kendi istedikleri gereksinimleri dile getirmeleri, 
  • Gereksinimler belirlenirken paydaşların siyasal ya da organizasyonel etkiler altında kalabilmeleridir.


GEREKSİNİM MÜHENDİSLİĞİ SÜREÇLERİ

Gereksinim mühendisliğine farklı açılardan bakılabilir. Bir sistem içerisinde sadece yazılımın bulunmadığı düşünülür ise gereksinim mühendisliği bu gibi durumlarda sistem mühendisliği ile yakından ilişkilendirilebilir. Yüksek seviye bir sistemde gereksinim mühendisliği farklı alanlara ilişkin gereksinimleri birbirinden ayırarak birim gereksinimlerini ortaya çıkartır.

Gereksinim mühendisliği yazılım geliştirme yaşam sürecinden ayrı tutulamaz çünkü yazılım geliştirme süreci içerisinde yeni gereksinimler ya da sınırlamalar ortaya çıkabilir. Gereksinim mühendisliği süreci gereksinimlerin toplanması ile başlar. Gereksinimler toplandıktan sonra bu gereksinimlerin analiz edilmesi ve müşteri ile gereksinimler konusunda anlaşılmasını sağladıktan sonra ilgili gereksinimlerin dokümante edilmesi ve müşteriye onaylatılması işlemlerini içerir. Sistem tasarım ve entegrasyon aşamalarında ortaya çıkacak yeni gereksinimler için süreç baştan işletilir.

YAZILIM MÜHENDİSLİĞİNDE GEREKSİNİMLER ( REQUIREMENTS )

Gereksinimler, yazılım sistemleri ve gerçek dünya arasındaki köprüdür ve bu sebepten bir projenin başarılı olabilmesi için oldukça önemlidir. Gereksinimleri; bir sistemin hazırlanabilmesi için çözülmesi gereken problemlerin, ortam şartlarının ya da kullanıcı isteklerinin belirli bir kalıp içerisinde yazılım geliştiriciler için anlaşılabilir duruma getirilmiş hali olarak tanımlayabiliriz.

Kısaca gereksinimler geliştiricilere gerçek dünyanın problemlerini yansıtmaktadır. Gereksinimler, geliştirme aşamasından önce sistemin yapması gerekenleri ve sistem ile ilgili sınırlamaları tanımlar.

Gereksinim Tipleri


Gereksinim tipleri kısaca; 
  • Kullanıcı seviyesi ve olanaklarının tanımlanması,
  • Beklenen sistem davranış özelliklerinin detaylandırılması,
  • Genel sistem özelliklerinin belirlenmesi,
  • Sisteme özel sınırlamaların belirlenmesi,
  • Belirli sistem çıktılarının formatlarının belirlenmesi, 
  • Sistemin geliştirilmesi ile ilgili sınırlamalar olarak özetlenebilir. 

Gereksinim tiplerinin yapısal olarak sınıflandırmak istersek;
  • İşlevsel Gereksinimler (Functional Requirements),
  • İşlevsel Olmayan Gereksinimler(Non-functional Requirements), 
  • Ortam Gereksinimleri (Domain Requirements) olarak sınıflandırabiliriz.


İşlevsel Gereksinimler ( Functional Requirements )

Sistemin bir işlevini ya da özelliğini belirleyen gereksinimlerdir. Örneğin bir girdiye göre sistemin nasıl bir cevap vermesi gerektiği gibi işlevler bu sınıfta değerlendirilebilir.


İşlevsel Olmayan Gereksinimler ( Non-functional Requirements )

Sistem ile ilgili gözlemlenebilir bazı tipik özelliklerin ya da sistemin kalitesi, kullanılabilirliği, güvenilirliği, esnekliği vb. ile ilgili özellikler bu sınıfta değerlendirilebilir.


Ortam Gereksinimleri ( Environmental Requirements )

Sistem ile ilgili standartlar, kurallar ve sistemin üzerinde çalışacağı ortam ya da birlikte çalışacağı başka bir sistem tarafından getirilen sınırlamalar bu sınıfta değerlendirilebilir.