Requirement Elicitation and Analysis


Requirement Elicitation and Analysis

I. Introduction

Requirement elicitation and analysis play a crucial role in software engineering. It involves understanding and documenting the needs and expectations of stakeholders to develop a comprehensive set of requirements for a software system. This process helps ensure that the software system meets the desired functionality and quality standards.

II. Functional and Non-functional Requirements

Functional requirements define what the software system should do, while non-functional requirements specify how the system should behave. Functional requirements are typically related to specific tasks or actions that the system must perform, while non-functional requirements focus on qualities such as performance, security, and usability.

III. Requirement Sources and Elicitation Techniques

Requirements can be sourced from various stakeholders, existing systems, and industry standards. To elicit requirements effectively, software engineers use various techniques such as interviews, surveys, and observations. Each technique has its advantages and disadvantages, and the choice depends on the project's context and requirements.

IV. Analysis Modeling

Analysis modeling is a crucial step in requirement analysis. It helps in understanding the system's structure, behavior, and interactions. There are two main approaches to analysis modeling: function-oriented and object-oriented analysis modeling.

A. Function-oriented Analysis Modeling

Function-oriented analysis modeling techniques, such as data flow diagrams and structured analysis, focus on representing the flow of data and the functions performed by the system. These techniques help in identifying the processes, inputs, outputs, and data stores involved in the system. The process of function-oriented analysis modeling involves the following steps:

  1. Identify the system's functions and their relationships.
  2. Create a data flow diagram to represent the flow of data between functions and external entities.
  3. Use structured analysis techniques to refine the data flow diagram and identify the processes, inputs, outputs, and data stores.

Function-oriented analysis modeling provides a clear understanding of the system's functionality and helps in identifying potential improvements. However, it may not capture the dynamic aspects of the system effectively.

B. Object-oriented Analysis Modeling

Object-oriented analysis modeling techniques, such as use case diagrams and class diagrams, focus on identifying the system's objects, their attributes, and their interactions. These techniques help in understanding the system's behavior from the perspective of different actors or users. The process of object-oriented analysis modeling involves the following steps:

  1. Identify the actors or users of the system.
  2. Create a use case diagram to represent the system's functionality and the interactions between actors and use cases.
  3. Use class diagrams to represent the system's objects, their attributes, and their relationships.

Object-oriented analysis modeling provides a visual representation of the system's behavior and helps in identifying the objects and their interactions. However, it may require additional effort to translate the models into code.

V. Use Case Modeling

Use case modeling is a technique used to capture and document the system's functional requirements from the perspective of users or actors. It involves identifying the different use cases and their relationships with actors. The process of use case modeling includes the following steps:

  1. Identify the actors or users of the system.
  2. Identify the main use cases and their relationships with actors.
  3. Define the use case scenarios to describe the interactions between actors and use cases.

Use case modeling provides a clear understanding of the system's functionality and helps in identifying the main interactions between actors and use cases. However, it may not capture all the details of the system's behavior.

VI. Conclusion

Requirement elicitation and analysis are essential activities in software engineering. They help in understanding and documenting the needs and expectations of stakeholders, identifying functional and non-functional requirements, and developing analysis models to represent the system's structure and behavior. By following the appropriate techniques and models, software engineers can ensure that the software system meets the desired functionality and quality standards.

Summary

Requirement elicitation and analysis are essential activities in software engineering. They involve understanding and documenting the needs and expectations of stakeholders, identifying functional and non-functional requirements, and developing analysis models to represent the system's structure and behavior. Functional requirements define what the software system should do, while non-functional requirements specify how the system should behave. Requirement elicitation techniques include interviews, surveys, and observations, while analysis modeling techniques include function-oriented and object-oriented approaches. Use case modeling is a technique used to capture and document the system's functional requirements from the perspective of users or actors.

Analogy

Requirement elicitation and analysis can be compared to building a house. The functional requirements are like the rooms and features of the house, while the non-functional requirements are like the quality standards and regulations that the house must meet. Requirement elicitation techniques are like interviewing potential homeowners to understand their needs and preferences, while analysis modeling techniques are like creating blueprints and 3D models to visualize the house's structure and design. Use case modeling is like creating a floor plan to show how different rooms and spaces are connected and used.

Quizzes
Flashcards
Viva Question and Answers

Quizzes

What is the difference between functional and non-functional requirements?
  • Functional requirements define what the software system should do, while non-functional requirements specify how the system should behave.
  • Functional requirements specify how the software system should behave, while non-functional requirements define what the system should do.
  • Functional requirements focus on qualities such as performance, security, and usability, while non-functional requirements are related to specific tasks or actions that the system must perform.
  • Functional requirements are sourced from stakeholders, while non-functional requirements are sourced from existing systems and industry standards.

Possible Exam Questions

  • Explain the difference between functional and non-functional requirements.

  • Describe two requirement elicitation techniques.

  • Compare and contrast function-oriented and object-oriented analysis modeling.

  • Discuss the purpose and benefits of use case modeling.

  • Define functional requirements and provide an example.