my_digital_garden/4a1s/RAS/T - Aula 3.md

3 KiB

26 de Setembro 2023 - #RAS

Definition of Requirements Engineering

  • Requirements engineering designates all the activities related to requirements discovery, negotiation, documentation, and maintenance.
  • Alternative designation: analysis

[!hint]+ Zave, 1997 Requirements engineering, in the scope of software engineering, is focused on the real-world objectives established for the functionalities and the restrictions of software systems.

Requirements engineering seeks to ensure the three following objectives:

  1. all the relevant requirements are explicitly known and comprehended at the intended level of detail;
  2. a reasonable and wide agreement about the requirements is obtained among the stakeholders;
  3. all the requirements are duly documented, in conformity with the established formats and templates.

[!info] Requirements engineering determines what the system must do to meet the necessities of users and not how it should be built.

[!info] It is desirable keeping the requirements strictly separated from their own solutions.

[!hint] The requirements of a given system are necessary, clear, correct, complete, viable, traceable, verifiable and negotiable.

Activities

Process Scheme: process.excalidraw

1. Inception

  • Initiation of the process, based on some necessity or business expectation.
  • At the end, the requirements engineer should be able to describe what is the client vision and return on investment.
  • One must also evaluate if what the client needs is already available in the market.

2. Elicitation

  • This activity handles how requirements should be captured.
  • The requirements elicitation techniques must:
    1. identify the sources of requirements;
    2. aid the various stakeholders to correctly describe the requirements;
  • This activity is inherently communicational, since it requires an in-depth interaction with the stakeholders.
  • Requirements elicitation techniques:
    1. Interview
    2. Survey
    3. Introspection
    4. Ethnography
    5. focus group
    6. cooperative work
    7. domain analysis
    8. object-orientation
    9. prototyping
    10. scenario
    11. goal modelling
    12. persona

3. Elaboration

  • This activity aims to analyse and classify the elicited, but not yet handled, requirements.
  • Organises the requirements in cohesive groups.
  • The analyst must intervene, whenever the requirements: do not make sense; are in contradiction among them; are incoherent; are incomplete; are vague.

4. Negotiation

  • Requirements engineering involves communication and negotiation among various stakeholders.
  • It is inevitable that conflict situations arise among the requirements. One needs to promote negotiation mechanisms among the stakeholders. Its result can have a significant impact on the acceptance of the final system.
  • Another form of handling conflicts consists in adopting prioritisation techniques, to sustain the choice of the requirements subset to be implemented at each instant.

5. Documentation

  • Requirements documents serve as the principal reference to the subsequent phases of the development process.