Requirements naturally precede all development activities: without business needs, goals, or objectives there would be no incentive to develop a system solution. Hence, requirements are in many ways the foundation of our systems development. Without clear, well defined and unambiguous requirements our architectural and design decisions will be ill-informed at best, guesswork at the worst!AM2D requirements management process:
1. Elicitation and Gathering
2. Analysis, Modelling and Development
- Enumerate all requirements
- Produce a requirement model (UML or BPMN)
- Ensure requirements completeness
- Segregate requirements into core functional and ancillary-functional requirements: at AM2D we adopt the classification of requirements as defined by Murali Chemuturi [ref:] in his book "Requirements Engineering and Management for Software Development Projects" where what is commonaly referred to as functional requirements are defined as "core functionality requirements" (CFR), and non-functional requirements are defined as "ancillary functionality requirements (AFR).
- Group CFR's and AFR's into their respective logical groups.
- Remove duplications and modify or eliminate contradictory requirements.
- Prioritize requirements.
and verification (are we building the system correctly?):
- Create formal documentation: User Requirements Specification (URS) and Software Requirements Specification (SRS): formalise requirements models and documents.
- Qualty Assurance (QA): Validation (are we building the right system?):
- scenario testing
- expert reviews
- end user reviews
- peer reviews
- Independent reviews
- Executive and managerial reviews
- Approvals Acceptance: approval sign-off from all relevant stakeholders.
- Configuration Management: place all approved documents, models etc. under configuration management.
- Links are established (usually as part of the model creation process) for all requirements to all other related requirement elements.
- In a fully integrated solution links are also established to architectural design modules (objects, classes etc).