Feasibility Study
In developing any software as per requirement engineering, we must create enough reasons for developing the software and take care of some conditions. The conditions of the to be developed software are that it must be acceptable to users, be flexible if subjected to any change, and conformable to established standards.
Types of Feasibility
Technical Feasibility
Technical Feasibility evaluates the use of current technology that can precisely fulfill customers' requirements effectively under a given budget and deadline.
Operational Feasibility
For Operational Feasibility, the required software performs a sequence of levels to solve customer requirements and business problems. Later on, any change is done by assessing the range of results of operations portrayed.
Economical Feasibility
Under this, an organization analyzes and decides whether the required software could generate financial profit for the organization or not.
Also read, V Model in Software Engineering
Requirement Elicitation and Analysis
It's a process of interaction with customers and end-users to observe the domain requirements and thus decide what services the system should provide and the other constraints. Requirement Elicitation is also known as the gathering of requirements.
The various sources of knowledge of domain requirements involve business manuals, the existing software of similar function, customers, current software, and other project stakeholders.
We have to use some techniques for requirement elicitation like
- Interviews
- Brainstorming
- Delphi Technique
- Task Analysis
- Prototyping, etc.
Requirement elicitation and analysis
Source- https://collegenote.pythonanywhere.com/
Problems of Elicitation and analysis
- Getting the right people(productive and having domain knowledge) involved. It can be a challenging task.
- Stakeholders often don't know what they want, complicating the whole process.
- Stakeholders express requirements in their terms, which can be conflicting in nature.
- Conditions may change during the analysis process.
- Organizational and political factors may cause issues in system requirements.
We often misunderstood Elicitation as a process to produce formal models of the understood Requirement. But exactly, instead, it widens the domain knowledge of analysts, and it turns out to be very helpful in providing input to the next stage.
Requirement Specification
It's the process of writing down the system's requirements and user's requirements into a document. The conditions should be clear, understandable, complete, and consistent. It is the analyst's work to write the requirements for the development team in technical language so they can be understood easily and beneficial. Practically, this is difficult to achieve as stakeholders interpret the requirements differently, and there are often inherent conflicts and inconsistencies in the conditions.
In other words, This step in requirement engineering involves the production of formal software requirement models with all the functional non-functional requirements and the constraints specified in these models in full description.
The models used at this stage include Entity-Relationship(E-R) diagrams, data flow diagrams (DFDs), function decomposition diagrams (FDDs), data dictionaries, etc.
- Data Flow Diagrams: DFDs are generally used for modeling the requirements. They show the flow of data through a system. It is also known as a bubble chart or a data flow diagram.
- Data Dictionaries: Data Dictionaries are simple repositories that store all the information about data items defined in DFDs. At the requirements stage, the data dictionary must contain at least customer data items so that the customer and developers apply the matching definitions.
- Entity-Relationship (ER) Diagrams: It is a comprehensive logical representation of the data for the organization. Mainly, It uses three primary constructs, i.e., data entities, relationships, and their associated attributes.
Check out the Software requirement specifications to learn more about Requirement specifications.
Requirement Verification and Validation
Requirement Verification refers to the set of tasks performed on the software to ensure that the specific function is correctly implemented in it.
Requirement Validation is a process that makes sure the specified requirements meet customers' needs. It is concerning if there are any problems with the requirements.
The user may want an impossible, illegal solution, or experts might have misinterpreted their needs. And, if requirements are not validated, its errors would propagate to later stages resulting in a lot of modification and rework cost. That's why Requirement validation is done.
Requirements can be checked against the following settings:
- If they are complete in every sense.
- If they are practically achievable
- If they are consistent with all the other requirements, no two requirements should conflict.
- If they are precise and as per the functionality and especially of software.
Requirements reviews, prototyping, test-case generation, automated consistency analysis, buddy checks, etc., are some of the techniques for requirement validation.
Check out software requirement verification and validation to learn more about Requirement verification and validation.
Requirement Management
Requirement management is the management process of changing requirements during the requirements engineering process and system development. It involves analyzing, documenting, keeping track, prioritizing, agreeing upon requirements, and controlling regular communication to relevant stakeholders.
New requirements can come out during the process as business needs a change, and in this way, a better understanding of the system got developed by the developer.
The priority of requirements from contrasting viewpoints may change during the process of development. The technological and business environment of the system may also change during the development. We must take care of the changing nature of requirements in this stage.
We must ensure that the software requirement specification(SRS) format remains as formidable as possible so that requirements can be easily incorporated into the system later. Because being able to modify the software quickly whenever a new requirement turns up effectively in a systematic and controlled manner is an integral part of the requirements engineering process.
Also see, Adhoc testing
Check this out, human computer interaction
FAQs
-
What are the steps of requirement engineering?
Steps of Requirement Engineering are Feasibility study, Requirement elicitation, Requirement Specification, Requirement Validation, and Requirement Management.
-
What is SDLC(Software Development Life Cycle)?
It gives the step-by-step approach to software development. It involves phases like requirement gathering, system analysis, testing, coding, maintenance, and documentation.
-
What is Prototyping?
In Requirement Validation, when we use an executable part of the system to check requirements, this technique is called Prototyping.
-
What are Qualities of Requirements?
Requirements collected from the client should be precise and convey the client's needs to the software developer. Quality requirements have the following features:
a. Complete: The specified requirements must be complete, there must be no deficiencies in the software development.
b. Consistent: If more than one customer provides software requirements. After that, the software developer must ensure that the services offered by the person do not conflict with the requirements provided by the other customer.
c. Unambiguous: Each stated requirement must be clear, i.e., specify one meaning.
d. Functions: The requirement must specify what functions or calculations should be performed by the software and not how they should be used.
e. Concise: Each requirement must be specified only once, and there must be no duplication of any requirement statement.
f. Minimum: The requirements mentioned should not carry unnecessary information.
g. Understandable: The customer and the software developer must understand the stated requirements.
h. Achievable: The requirement must be technically feasible.
i. Testable: It can be ensured that the requirements are fully collected.
-
What are the advantages of Requirement Engineering?
The advantages of requirement engineering are:-
a. Requirement engineering provides an overview of the final software, i.e., what the software would do? This creates a sense of interaction between the customer and the software developer.
b. The required engineering also helps define the scope of the software, which means what would be the performance of the final software.
c. It helps to identify the cost of the final software.
d. It helps to identify the schedule where the software will be delivered to the customer.
Key Takeaways
In this article, we have extensively discussed the concepts of the requirement engineering process and its steps like Feasibility study, Requirement Elicitation, Specification, Validation, and Management and frequently asked questions.
We hope that this blog has helped you enhance your knowledge regarding requirement engineering and if you would like to learn more, check out our articles on the software development life-cycle. Do upvote our blog to help other ninjas grow. Happy Coding!
Read more, Software Engineering