Implementing a software system will fail if the requirements of that system are not met properly. Along with the increasing complexity of software systems, accurately identifying their requirements has become a complex process. Therefore, it is necessary to use methods and techniques to identify, specify and document, model, and validate the requirements of software systems. The purpose of this course is to acquaint graduate students with these methods and techniques. In particular, the topics that will be discussed in this course are: (i) elicitation and identification of functional and non-functional requirements, (ii) organization and prioritization of requirements, (iii) techniques for documenting requirements, (iv) techniques for modelling requirements, and (v) techniques for analysis, verification, and validation of requirements.

Topics and Schedule

  • Basics of Requirements Engineering (2 sessions)
  • Domain Understanding & Requirements Elicitation (2 sessions)
  • Requirements Evaluation (2 sessions)
  • Requirements Specification and Documentation (2 sessions)
  • Requirements Quality Assurance (1 session)
  • Requirements Evolution and Traceability (1 session)
  • Goal Orientation in Requirements Engineering  (2 sessions)
  • Modeling System Objectives with Goal Diagrams (3 sessions)
  • Risk Analysis on Goal Models (2 sessions)
  • Modeling Requirements with Scenario-Oriented Modeling  (2 sessions)
  • Modeling System Requirements with UML Diagrams (2 sessions)
  • Modeling System Operations (1 session)
  • Modeling System Behaviors  (2 sessions)
  • Requirements Verification and Validation  (2 sessions)
  • Requirements Management  (1 session)


  • Two exams (Midterm and Final) – Comprising 60% of the total grade.
  • Paper presentation: Each student should present at least one paper from the most recent top-tier software engineering journals and conferences – Comprising 10% of the total grade.
  • Assignments and course project: Comprising 30% of the total grade.

Main References

  • van Lamsweerde. Requirements Engineering: From System Goals to UML Models to Software Specifications, Wiley, 2009.
  • Pohl. Requirements Engineering: Fundamentals, Principles, and Techniques, Springer, 2010.

Additional References

  • Kotonya and I. Sommerville. Requirements Engineering: Processes and Techniques, Wiley, 1998.
  • Robertson and J. C. Robertson. Mastering the Requirements Process, 2nd ed., Addison-Wesley, 2006.
  • Berenbach, D. Paulish, J. Kazmeier, and A. Rudorfer. Software & Systems Requirements Engineering: In Practice, McGraw-Hill, 2009.
  • Hull, K. Jackson, and J. Dick. Requirements Engineering, 3rd ed., Springer, 2010.
  • Holt, S. Perry, and M. Brownsword. Model-Based Requirements Engineering, The Institution of Engineering and Technology (IET), 2011.
  • Leffingwell. Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, Addison-Wesley, 2011.
  • Chemuturi. Requirements Engineering and Management for Software Development Projects, Springer, 2012.