Software Requirement Engineering

Software Requirement Engineering

Software requirements are detailed descriptions of the functions, features, constraints, and qualities that a software system must possess to fulfil its intended purpose and meet the needs of its users and stakeholders. These requirements serve as a bridge between the expectations of the users and the technical specifications that software developers use to design, build, and test the software.

Jones defines software requirements as a statement of needs by a user that triggers the development of a program or system.

Jones

Alan Davis defines software requirements as a user need or necessary feature, function, or attribute of a system that can be sensed from a position external to that system.

Alan Davis

According to Ian Summerville, requirements are a specification of what should be
implemented. They are descriptions of how the system should behave, or of a system
property or attribute. They may be a constraint on the development process of the system.

Summerville

According to IEEE: A condition or capability needed by user to solve a problem or achieve an objective.

IEEE

Importance of Software Requirement

The importance of software requirements in the software development process cannot be overstated. Software requirements serve as a foundational element, guiding the entire development cycle and significantly impacting the success of a software project. Here are some key reasons highlighting their importance:

  1. Alignment with Stakeholder Needs: Requirements capture the expectations and needs of stakeholders, including end-users, clients, and business owners. Ensuring that software aligns with these needs is essential for user satisfaction and business success.
  2. Blueprint for Development: Requirements serve as a blueprint for software development. They provide developers with a clear understanding of what needs to be built, reducing ambiguity and guiding coding efforts.
  3. Scope Management: Well-defined requirements help establish project scope. By defining what’s in and out of scope, they prevent scope creep, which can lead to project delays and budget overruns.
  4. Communication: Requirements facilitate effective communication among team members, stakeholders, and different project teams. They provide a common language for discussing the software’s features and functionalities.
  5. Risk Mitigation: Identifying potential issues and challenges early through requirements analysis allows for proactive risk mitigation. By addressing risks in the early stages, projects can avoid costly late-stage rework.
  6. Resource Allocation: Clear requirements enable accurate resource allocation, helping project managers plan for staffing, budgeting, and scheduling more effectively.
  7. Quality Assurance: Requirements form the basis for testing plans and validation efforts. They help ensure that the software meets its intended purpose and functions correctly.
  8. Traceability: Traceable requirements enable tracking of each feature from its origin through development, testing, and deployment. This traceability aids in change management and helps ensure that every requirement is addressed.
  9. Customer Satisfaction: Meeting user expectations and delivering software that aligns with requirements leads to higher customer satisfaction. Satisfied customers are more likely to use the software and provide positive feedback.
  10. Legal and Regulatory Compliance: In many industries, software must adhere to legal and regulatory standards. Clearly defined requirements help ensure compliance, reducing legal risks.
  11. Maintenance and Upgrades: Requirements documentation aids in the maintenance and future upgrades of the software. Developers and maintainers can refer to the original requirements to understand the software’s intended behavior.
  12. Cost Control: Effective requirement management can prevent costly changes late in the development process, controlling overall project costs.

Software Requirement Process

The Requirement Engineering Process, often referred to as the Requirements Engineering (RE) process, is a systematic approach to gathering, documenting, analyzing, validating, and managing software requirements throughout the software development life cycle. It ensures that the software meets the needs and expectations of users and stakeholders. The process typically consists of the following key phases:

  • Feasibility Study
  • Requirement Gathering
  • Software Requirement Specification
  • Software Requirement Validation

1. Feasibility Study:

  • Description: The feasibility study is the initial phase of requirement engineering. It aims to determine whether it is feasible and worthwhile to proceed with the software project. This phase involves assessing various aspects, including technical, economic, operational, legal, and scheduling feasibility.
  • Key Activities:
    • Evaluating technical feasibility by assessing whether the required technology and skills are available.
    • Conducting a cost-benefit analysis to determine if the project is financially viable.
    • Analyzing operational feasibility by assessing how the proposed software will fit within existing processes.
    • Identifying potential legal and regulatory constraints.
  • Outcome: The feasibility study results in a clear understanding of the project’s viability. It helps stakeholders decide whether to proceed with the project or not.

2. Requirement Gathering:

  • Description: Requirement gathering, also known as requirement elicitation, is the process of collecting, understanding, and documenting software requirements from various stakeholders. It involves interactions with users, clients, domain experts, and other relevant parties to capture their needs and expectations.
  • Key Activities:
    • Conducting interviews with stakeholders to understand their requirements.
    • Organizing workshops and brainstorming sessions to gather input.
    • Analyzing existing documentation and systems.
    • Using techniques like surveys and questionnaires to collect data.
  • Outcome: The output of this phase is a comprehensive list of requirements, which may include functional, non-functional, and other specific requirements. These requirements serve as the foundation for the software project.

3. Software Requirement Specification:

  • Description: Software Requirement Specification (SRS) is the process of formally documenting the gathered requirements. It involves creating detailed and unambiguous descriptions of what the software should do, how it should behave, and what constraints it must adhere to.
  • Key Activities:
    • Structuring and organizing requirements into a clear and coherent document.
    • Defining system boundaries and interfaces with external components.
    • Describing user interfaces, data structures, and algorithms.
    • Specifying performance, security, and usability requirements.
  • Outcome: The SRS document is a comprehensive, unambiguous, and well-structured document that serves as a reference for both developers and stakeholders. It guides the development process and ensures that the software aligns with user expectations.

4. Software Requirement Validation:

  • Description: Requirement validation is the process of evaluating the software requirements to ensure their correctness, completeness, and feasibility. It verifies that the documented requirements accurately reflect the stakeholders’ needs and that they can be implemented effectively.
  • Key Activities:
    • Reviewing the SRS document to identify inconsistencies, ambiguities, and contradictions.
    • Conducting inspections, walkthroughs, and peer reviews to validate the requirements.
    • Engaging stakeholders in the validation process to gather their feedback and confirm the requirements’ accuracy.
  • Outcome: The result of requirement validation is a refined and validated set of requirements. This ensures that the software development effort is based on a solid foundation, reducing the likelihood of misunderstandings, errors, and project delays.

These phases in the software requirement engineering process collectively ensure that software projects start with a clear understanding of feasibility, gather accurate and comprehensive requirements, document them effectively, and validate their correctness and completeness. This systematic approach contributes to the successful development and delivery of software that meets user needs and expectations.

Requirement Elicitation Process


The Requirement Elicitation Process, also known as Requirement Gathering or Requirement Discovery, is a crucial phase in software engineering that focuses on gathering, understanding, and documenting the needs and expectations of stakeholders and end-users. This process lays the foundation for creating software requirements.


Requirement Collection: Developers engage in discussions with clients and end-users to understand their software expectations thoroughly.
Requirements Organization: Developers assess and arrange requirements based on criteria such as importance, urgency, and practicality.
Negotiation and Clarification: In cases of ambiguity or conflicts among stakeholder requirements, negotiation and discussion are employed to reach consensus. This process often involves prioritizing and making reasonable compromises to ensure clarity and feasibility.
Comprehensive Documentation: All types of requirements, including both formal and informal, functional, and non-functional, are meticulously documented, ready for further processing in the next phase.

Software Requirement Elicitation Techniques

Requirement elicitation techniques are methods and approaches used by software engineers and analysts to gather information and requirements from stakeholders, clients, and end-users. These techniques facilitate effective communication and the collection of accurate and comprehensive requirements. Here is a list of common requirement elicitation techniques:

  1. Interviews: One-on-one or group discussions with stakeholders to gather detailed information about their needs, expectations, and constraints.
  2. Surveys and Questionnaires: Distributed to a large number of stakeholders to collect structured data and opinions. Useful for collecting data from a broad audience.
  3. Workshops and Brainstorming: Collaborative sessions involving stakeholders to generate ideas, identify requirements, and discuss potential solutions.
  4. Observations: Directly observing how users interact with existing systems or processes to identify pain points, bottlenecks, and user behaviors.
  5. Prototyping: Creating working models or mockups of the software to gather feedback and refine requirements based on user interaction.
  6. Use Cases and Scenarios: Describing specific situations and interactions to capture user stories and their corresponding requirements.
  7. Document Analysis: Reviewing existing documents, manuals, and reports related to the project to extract relevant requirements.

These elicitation techniques can be used individually or in combination, depending on the nature of the project, the availability of stakeholders, and the complexity of the requirements. The choice of technique should be tailored to the specific needs and goals of the software development project.

Software Requirement Characteristics

Here are some key characteristics of software requirements:

  1. Clear and Unambiguous: Requirements should be expressed in a way that leaves no room for interpretation or misunderstanding. They should convey their meaning clearly to all stakeholders.
  2. Complete: Requirements should encompass all necessary functionalities, constraints, and expectations of the software system. They should not omit critical aspects of the system’s behavior.
  3. Consistent: Requirements should not contradict each other or create conflicts within the set of requirements. They should be harmonious and compatible with one another.
  4. Correct: Requirements should accurately represent the needs and intentions of stakeholders. They should reflect the true objectives of the software project.
  5. Feasible: Requirements should be realistically attainable within the constraints of available resources, technology, and budget. They should not propose tasks that are beyond practical implementation.
  6. Testable: Requirements should be structured in a way that allows for objective testing and validation. They should have criteria that can be used to determine whether they have been successfully implemented.
  7. Prioritized: Requirements should be ranked or assigned priorities based on their relative importance to the project’s goals. This helps in resource allocation and project planning.
  8. Traceable: Each requirement should be traceable to its source (e.g., stakeholder needs or business objectives) and to the design, code, and test cases that implement and validate it.
  9. Verifiable: Requirements should be verifiable, meaning that there should be a method or process in place to confirm that they have been met and are functioning as intended.
  10. Uniquely Identifiable: Each requirement should have a unique identifier or label, making it easy to reference and track throughout the software development process.

These characteristics collectively ensure that software requirements are of high quality, reducing the risk of misunderstandings, errors, and project failures. They serve as a foundation for successful software development by providing clarity and a common understanding among all stakeholders.

Software Requirement Catagories

Here are some key aspects of software requirements:

  1. Functional Requirements: These describe what the software should do. They specify the system’s behavior in response to various inputs and actions. For example, in a banking application, a functional requirement might state that the system should allow users to create new accounts.
  2. Non-Functional Requirements: These specify how the software should perform. They address qualities such as performance, security, usability, reliability, and scalability. For instance, a non-functional requirement could state that the system must be able to handle 1000 simultaneous users without a noticeable decrease in performance.
  3. Business Requirements: These are high-level statements of goals and objectives that the software should help achieve. They provide context and rationale for the project. An example could be improving customer retention by streamlining the order processing system.
  4. User Requirements: These are statements of what the end users need or expect from the software. User requirements are often expressed in plain language and focus on the user’s perspective. For instance, a user requirement might state that the software should provide an easy and intuitive interface for novice users.
  5. System Requirements: These describe the technical specifications and constraints that the software must adhere to. System requirements include details about hardware, software, databases, and network configurations needed for the system to operate effectively.

Clear and well-documented software requirements are essential for successful software development. They serve as a foundation for making design decisions, coding, testing, and validation. They also provide a basis for managing changes and assessing whether the final software product meets its intended goals.

Self Evaluation

  • What is Software Requirement Engineering?
  • Why SRE is important?
  • What is the process of SRE?
  • What is the Requirement Elicitation Process?
  • What are the Software Elicitation Techniques?
  • What are the Software Requirements Charactristics?
  • What are the Basic Types of Software Requirements?

278 thoughts on “Software Requirement Engineering

Leave a Reply

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

%d bloggers like this:
Verified by MonsterInsights