Loading

Gereksinim Çıkarma Süreci ve Sürecin Zorlukları || (OOA&D)

Tecrübeli geliştiriciler yazılım geliştirme ve idame süresi boyunca kendilerini en fazla zorlayan işlem değişen gereksinimleri sisteme entegre etmek olduğunu söylemektedirler. Madem böyle bir zorluk var bunu en aza indirmek için ne yapılmalıdır ? Geleneksel geliştirme süreçlerinin bu sorunun temel kaynağı olduğunu düşünen çevreler OO analiz ve tasarım sürecini başlatmışlardır. Bu yazımda gereksinim nedir sorusuna cavap vermeyi ve gereksinim çıkarma sürecindeki zorluklardan bahsetmeyi amaçladım.

Değişen gereksinimler dedik. Peki nedir bu gereksinim olayı ? Gereksinim çıkarma; analiz fazında yer alan sistem servislerinin ve kısıtlarının bir tanımını yapma işlemidir. Başka bir ifade ile sistemin bir iş ihtiyacını karsılaması için göstermesi gereken özellikler, yetenekler nelerdir, bunları tanımlama sürecidir. İşlevsel gereksinimler ve işlevsel olmayan gereksinimler olmak üzere ikiye ayrılır.

İşlevsel gereksinimler; kullanıcıların sistem ile gerçeklestirmek istediği işlemlerin tanımıdır. Yani “sistem ne yapacak ?” sorusunun cevabı verilmeye çalışılır.

İşlevsel olmayan gereksinimler; ürün kalite kriterlerini içerir. Performans güvenilirlik , kullanılabilirlik gibi.

Örneğin E-Gaz isimli bir proje geliştirdiğinizi varsayalım. Projenin genel tanımı şu olsun ; Türkiye’nin gaz kurumuna kapsamlı hizmetler sağlayarak, şirketin hizmet verdiği müşterilere, geniş bir alanda avantaj sunma ve LPG Gaz Bağlantısı ve diğer hizmetlerin sorunsuz bir şekilde alınmasına yardımcı olma. Bu projenin işlevsel ihtiyaçlarını:

  • Ayrılan LPG Gazı İçin Teslim Durumunu Görüntüleme
  • İnternetten Ayrılan LPG Gazın İptali
  • Yeni LPG Gaz Bağlantısı için internet üzerinden başvuru işlemi

Gibi sıralayabiliriz. İşlevsel olmayan ihtiyaçlarını ise :

  • 7 gün 24 saat kullanılabilirlik
  • Eş zamanlı olarak 10.000 kişiye hizmet verebilme

Gibi maddeler olabilir.

Örneklerde de görüldüğü gibi gereksinim çıkarma işlemi sonraki işlem olan tasarım sürecinin nasıl gelişeceğini belirleyen geliştirme sürecinin en kritik adımıdır. Yazılım kalitesinde belirleyici etmendir. Peki bu kadar önemli olan bir adımda neden yazılımcılar zorlanmaktadır ? Ne gibi zorluklar vardır ?

  • Gereksinimler tam yani yazılımın tüm ihtiyaçlarını belirleyen şekilde çıkartılamıyor. Ne kadar zaman harcarsak harcayalım insani özelliklerimizden dolayı tüm gereksinimleri belirlememiz imkansızdır.
  • Gereksinimler yanlış belirlenebilir. Buda yazılım tasarım ve gerçekleştirmede  yanlış adımlar atılmasına sebep olabilir.
  • Kullanıcılar ne istediklerini tam ifade edemeyebilir. Kendi terimlerini kullanabilir ve yazılımcı bunları yanlış anlayabilir.
  •  Kullanıcının gereksinimleri geliştirme süreci boyunca değişmektedir. Sürekli yeni gereksinim eklenir ve ya çıkarılır
  • Geliştirici problem alanı hakkında bilgi seviyesini artırdıkça yeni gereksinimler çıkartabilir.
  •  Sistemin ortamı değişebilir. Yeni bir donanım eklenebilir ve ya yen bir teknik uygulanmak zorunda kalınabilinir.

Yazılımcılar olarak gereksinim değişikliğini pek hoş görmeyiz ve korkarız. Bunun altında yatan sebep maalesef sistem tasarımımızın olası değişikliklere karşı esnek olmamasıdır. Bu duruma çözüm olarak;

  • Çevik geliştirme süreci geliştiriciler olarak bizlere değişikliklere olan korkumuzu yenmek için bir takım teknikler, pratikler ve teknolojiler önermektedir.
  • Aynı şekilde nesneye yönelik analiz ve tasarım bizlere sistemdeki değişiklikleri ele almamızı kolaylaştıracak teknikler sağlamaktadır.

Leave a Reply

Your email address will not be published. Required fields are marked *