Use the following to guide your reading from Chapter 4: Requirements engineering in Software Engineering (Sommerville 2016):

  1. What is the distinction between user requirements and system requirements?
    • Who generates user requirements?
    • What is the purpose of user requirements?
    • Why is it important that user requirements provide the “what” but not the “how”?
    • Who generates system requirements?
    • What is the purpose of system requirements?
  2. What is the purpose of a feasibility study?
  3. What is the distinction between functional requirements and non-functional requirements?
    • What is the purpose of a functional requirement?
    • What types of things do functional requirements describe?
    • What is the purpose of a non-functional requirement?
    • What types of things do non-functional requirements describe?
  4. When should requirements be high-level and abstract versus low-level and very precise?
  5. What is the content, purpose, and use of a requirements specification document?
    • List typical contents of a requirements specification.
    • What groups use a requirements specification and for what purposes?
  6. How is the level of detail and formality needed for a requirements specification dependent upon the domain, type of software, development team, size of the system, contracts, and the software process being used?
  7. Define the following terms in the context of a requirements document:
    • validity
    • consistency
    • completeness
    • realism
    • verifiability
  8. What are techniques used for requirements validation?
  9. Devise Requirements Management processes to support identification, change, and traceability with appropriate tool support.
  10. Why do requirements for a software system change?
  11. What is traceability?