Tuesday, January 4, 2011

Requirements Engineering Lecture # 1: Introduction To Software Requirement Engineering

Learning objective
• To know what actually a requirement is?
Learning outcomes
• Detailed knowledge of what requirement is?
• Information of what is not considered part of requirement?
• What are the sources of requirement?
Overview
All softwares are made considering some requirements thus requirements form the foundation of the entire software process. Obviously, if the foundation of certain initiative is not correct then the entire initiative will end up as a failure
Why should we give importance to requirements?
As already mentioned, Requirements are the foundation of any software development initiative and if the requirements are incorrect the entire initiative will possibly lead to a failure.
To understand the importance further, let’s revisit a brief definition of a quality software

Quality software is one that meets the requirements of its end-users

No matter how innovative solution you give to user at lowest price and with promising service, the user will never be satisfied unless his/her requirement is not met

Let’s say, I ordered my tailor to stitch a suit that I can casually wear. I had limited budget and I could afford a single such suit at the moment. But my tailor within the same time frame and cost stitched a suit that was of supreme quality and design such that it was only suitable for very, very special occasions. In such scenario, I, as a customer will never be satisfied as my need did not get fulfilled and I no longer have any resources to acquire a dress that fulfills my need. Thus, the suit stitched by tailor, even after being the best of its kind, was least useful to me.
Therefore it is important that the requirement are correctly obtained and met so that the output satisfies the customer.
What is Engineering?
It is the practical application of scientific knowledge in the design, building and control of machines, roads, bridges etc.
To understand engineering further, lets read the definition of software engineering
The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software
When is engineering done?
Think for a moment, there are a lot of houses in villages or poor localities. Small bridges for pedestrians are also built in villages. But does their development require services of engineer who apply scientific knowledge or who follow systematic, disciplined or quantifiable approach?
The answer is obviously No.
It must be noticed that the above mentioned structures are there to fulfill very simple and primitive needs, however as the needs becomes complex the need of engineering i.e. application of scientific knowledge and adoption of systematic, disciplined and quantifiable approach arises.
Therefore, it must be remembered that as the needs become complex, the need for formal engineering increases.
Requirement Engineering:
When the scientific knowledge is applied or a systematic, disciplined and quantifiable approach to gathering, managing and documenting requirement is adopted, then it is known as requirement engineering
What is Requirement?

Definition 1: It is something wanted or needed.
Requirement Engineers must understand the difference between need and want. And they should have the required knowledge and skills to make customers understand what are their actual needs are

Definition 2: Complete description of what the system does rather than how
It is important to note that requirements must contain what i.e. the real objectives that must be achieved. The detailed design and procedures that must be followed to achieve the objectives are out of the scope of requirement engineers.
But it must be remembered that end users feel more comfortable in explain how rather than what.

Definition 3: It describes the complete specification of desired external behaviors of software system to be built
Complete specification means what system does from the perspective of different stakeholders
External behavior is the outputs that users get after giving certain inputs. It must be remembered that users judge the system based upon the external behavior.

Definition 4: A Condition or capability that must be met or processed by a system to satisfy a contract, standard, specification or other formally imposed document
Condition can also be considered as a constraint and capability is better known as functionality by many
Sources of Requirements
• Stakeholders (Entities that are interested in or are affected by the system)
• Documents
• Existing System
• Domain-Business Area

1 comment: