İş analistleri, sistem analistleri, teknik analist, kartvizitinizde ne yazarsa yazsın yaptığınız iş analizse muhakkak gereksinimlerle çalışıyorsunuz demektir. Ben de bir analist olarak üzerinde çalıştığımız en temel öğe olan “yazılım gereksinimi (software requirement)” kavramının literatürdeki tanımını birkaç kaynaktan araştırarak bir derleme yaptım.
İlk olarak International Institute of Business Analysis’in (IIBA) Business Analysis Body of Knowledge (BABOK) kitabı içerisinde yer alan tanımla başlayalım. Tanımın asıl kaynağı IEEE Computer Society’nin “IEEE Standard Glossary of Software
Engineering Terminology”si. Kaynakta yazılım gereksinimi şöyle ifade edilmiş:- Bir paydaş tarafından, belirli bir problemi çözmek ya da belirli bir amacı gerçekleştirmek üzere ihtiyaç duyulan durum ya da yetenek. (A condition or capability needed by a stakeholder to solve a problem or achieve an objective.)
- Bir sözleşme, standart, şartname ya da benzeri “hükmedici” dokümanda empoze edilenleri karşılamak üzere yazılım ürünü ya da bileşeni tarafından sağlanması gereken durum ya da yetenek. (A condition or capability that must be met or possessed by a solution or solution component to satisfy a contract, standard, specification, or other formally imposed documents.)
- Yukarıdaki iki maddede ifade edilen durum ya da yeteneklerin belge üzerinde ifade edilmesi. (A documented representation of a condition or capability as in (1) or (2)).
İlk bakışta ilk iki madde birbirinden farklı şeyler ifade ediyormuş gibi dursa da, BABOK v3’nin tanımlamış olduğu paydaş listesinde yer alan düzenleyici (regulator), ikinci maddede ifade edilen sözleşme, standart, şartnamenin kaynağı olarak düşünüldüğünde aslında tanımı aşağıdaki gibi tek bir cümleye indirebiliriz:
“Bir paydaş tarafından (buna düzenleyici de dahil, böylece sözleşme, şartname, standart gibi dokümanlar da tanıma dahil edilmiş oluyor) belirli bir problemi çözmek ya da belirli bir amacı gerçekleştirmek üzere ihtiyaç duyulan durum ya da yetenek.”
BABOK ve IEEE yazılım gereksinimini bu şekilde ifade ediyorken Ian Sommerville ve Pete Sawyer, Requirements Engineering: A Good Practice Guide isimli kitaplarında şöyle bir ifade kullanıyorlar:
- Gereksinim, geliştirilmesi gerekenin ne olduğunun belirtimidir. (A specification of what should be implemented.)
- Sistemin nasıl davranması gerektiğiyle ilgili açıklamalardır. (They are descriptions of how the system should behave…)
- Sistem özelliği ya da niteliğidir. ( … or of a system property or attribute.)
- Sistemin geliştirme süreciyle ilgili kısıtlar olarak karşımıza çıkabilir. (They may be a constraint on the development process of the system.)
Diğer taraftan Stephen Withall, Software Requirement Patterns kitabında gereksinimin sistemin ne yapacağını tanımladığını, nasıl yapacağını tanımlamadığını vurguluyor. Ardından şöyle diyor:
“Gereksinim, çözülmesi gereken problemi ortaya koyar, sistemin ne için var olduğu ve amacına ulaşmak için ihtiyaç duyduğu her şeyi tanımlar.”
SWEBOK v3’e göreyse:
“Bir gerçek yaşam probleminin çözümüne katkıda bulunacak bir yazılımda yer alan ihtiyaçlar ve kısıtlardır.”
Kruchten ise şöyle tanımlıyor:
“Gereksinim, bir sistemin sahip olması gereken durum ya da yetenektir.”
Yukarıda paylaştığım bu 5 ayrı tanımı bir potada erittiğimde şu bulgulara ulaşıyorum:
- Gereksinimlerin kaynağı paydaşlardır. Paydaşlar sistemin kullanıcıları olabileceği gibi, aktif kullanıcı olmayan diğer bireyler ve birey olmayan kanun, standart, sözleşme gibi hükmedici şeyler de paydaş olarak veya gereksinim kaynağı olarak düşünülebilir.
- Belirli bir problemi çözmek ya da belirli bir amacı gerçekleştirmek üzere ihtiyaç duyulan durum ya da yetenektir.
- Yazılımın nasıl davranması gerektiğiyle ilgilidir.
- Yazılımın sahip olması gereken özellik ve niteliklerdir.
- Yazılımın geliştirme sürecini ilgilendiren kısıtlardır.
- Çözülmesi gereken problemi ortaya koyar.
- Yazılımın ne için var olduğu tanımlar.
- Yazılımın sahip olması gereken kalitedir.
- Yazılımın, kullanıcıları için yapması, yerine getirmesi gereken şeydir.
- Yazılımda yer alan ihtiyaçlar ve kısıtlardır.
- Gereksinimin, çözüm tasarımından bağımsız olması idealdir.
Özetlemem gerekirse, literatürde gereksinimin ne olduğunu ifade etmek üzere herkesçe kabul edilmiş tek bir tanım yok. Ancak ağırlıklı olarak üzerinde anlaşılan bazı noktalar var:
- En temel amacımız, bir problemi çözmek ya da bir amacı gerçekleştirmektir. Bunu “iş ihtiyacı” kavramıyla ifade edebiliriz.
- Gereksinimlerin kaynağı, paydaşlardır.
- Gereksinim; ihtiyaç duyulan yetenekler, durumlar, şartlar, özellikler, nitelikler, işlevselliktir.
Bu noktada tüm bu çalışmanın sonucunda benim önereceğim tanımsa şu olacaktır:
“Gereksinim, bir iş ihtiyacını karşılamak üzere paydaşların ihtiyaç duyduğu yetenekler ve özelliklerdir.”
Computer - Internet Technology Design World -------Yazılım Gereksinimi Tanımı - Yazılım Gereksinimi Nedir?-------- Bilim ve Toplum - Bilim ve Teknik -- --------sosyal medya, ------facebook, Instagram, internet, Pinterest, sosyal medya, Twitter, vine------ internet,oyun,bilgisayar,bilişim,Programlama, Network,Msn,Yahoo,messenger,Gmail,Hotmail,Cep, İPhone,Android
Hiç yorum yok:
Yorum Gönder
Computer - Internet Technology Design World -----------Bilim ve Teknik -----------internet,oyun,bilgisayar,bilişim,Programlama,Bilim Network,Msn,Yahoo,messenger,Gmail,Hotmail