Requirements

User stories

  • Write down user stories to devise the main personas (user roles) and the activities they will perform via the system to be developed.

Requirements analysis

  • The requirements must explain what (not how) the software being produced should do.
    • You should not focus on the particular problems, but exclusively on what you want the application to do.
  • Requirements must be clearly identified, and possibly numbered.
  • Requirements are divided into:
    • Functional: some functionality the software should provide to the user.
    • Non-functional: requirements that do not directly concern behavioral aspects, such as consistency, availability, security, efficiency, etc.
    • Implementation: constrain the entire phase of system realization, for instance by requiring the use of a specific programming language and/or a specific software dependency.
      • These constraints should be adequately justified by political / economic / administrative reasons (which must be written down)…
      • …otherwise, implementation choices should emerge as a consequence of design (and therefore described in the design section).
  • If there are domain-specific terms, these should be explained in a glossary.
  • Each requirement must have its own acceptance criteria.
    • These will be important for the validation phase.

You may consider adding a use-case diagram here (via PlantUML) to better visualize the requirements and their relationships