Week 4 Flashcards
Requirements Engineering Processes?
- Validity
- Verifiability
- Consistency
- Completeness
- Realism
Requirements validation?
• Concerned with demonstrating that the requirements define the system that the customer really wants.
• Requirements error costs are high so validation is very important
– Fixing a requirements error after delivery may cost up to 100 times
the cost of fixing an implementation error.
Requirements verification?
Can the requirements be checked?
All functional and non-functional requirements should be verifiable (measurable) !!!
Requirements consistency?
No requirement conflicts.
Requirements completeness?
Requirements completeness:
– Are all functions required by the customer included?
Requirements realism?
Can the requirements be implemented given available budget
and technology?
Requirements management?
• Requirements management is the process of managing changing requirements during the requirements engineering process and system development.
• New requirements emerge as a system is being developed and after it has gone into use.
• You need to keep track of individual requirements and maintain links between dependent requirements so that you can assess the impact
of requirements changes. You need to establish a formal process for making change proposals and linking these to system requirements.
Traceability in requirements?
Maintaining the details of the relationships between requirements, their sources, system design, implementation and testing
Requirements management decisions?
Requirements identification: each requirement must be uniquely identified so that it can be cross-referenced with other requirements.
Change management process: this is the set of activities that assess the impact and cost of changes.
Traceability policies: These policies define the relationships between each requirement and between the requirements and the system design that should be recorded.
Tool support: Tools used can range from specialist requirements management systems to spreadsheets and simple database systems.
Requirements change management process?
Identified problem -> problem analysis and change specification -> change analysis and costing -> change implementation -> revised requirements.
Reducing the cost of rework?
Change anticipation: where the software process includes activities that can anticipate possible changes before significant rework is required.
Change tolerance: where the process is designed so that changes can be accommodated at relatively low cost.
- normally involves some form of incremental development: proposed changes may be implemented in increments that have not yet been developed.
Software prototyping?
This is where a version of the system or part of the system is developed quickly to check the customer’s requirements and the feasibility of design decisions. This approach supports change anticipation.
A prototype can be used in the requirements engineering process to help with requirements elicitation and validation.
Benefits:
Improved usability,
Improved design quality,
Improved maintainability,
Reduced development offer.
Prototype development?
May be based on rapid prototyping languages or tools.
May involve leaving out functionality.
- should focus on areas of the product that are not well-understood.
- error checking and recovery may not be included in the prototype.
- focus on functional rather than non-functional requirements.
Incremental delivery?
Where system increments are delivered to the customer for comment and experimentations.
Supports both change avoidance and change tolderance.
User requirements are priorities and the highest priority requirements are included in early increments.
System modeling?
The process of developing abstract models of a system, with each model presenting a different view or perspective of that system.
System modelling has now come to mean representing a system using some kind of graphical notation, which is now almost always based on notations in the Unified Modeling Language (UML).
It’s used:
- during requirements engineering to understand the functionality of the system and to communicate with customers.
- during design to describe the system to engineers implementing the system.