The course will take place in week 4 of Trinity term 2022, Monday 16th May - Friday 20th May, 2022.
Many software and hardware development projects go through a phase called 'Requirements Capture and Analysis' which tries to determine the properties a system should have in order to succeed in the environment in which it will be used. This can be a very difficult task, and typical requirements documents contain errors, some of which are very difficult to detect, as well as very expensive to correct later on. Experience shows that many errors arise from social, political and cultural factors and recent research has focused on the problem of reconciling such factors with traditional concerns about the more technical aspects of system development.
This course takes a unique stance to the discussion of requirements in that it acknowledges the involvement of both the social and technical concerns. The course surveys a wide range of different approaches to the problem of determining requirements and aims to provide students with a set of techniques and skills that may be tailored to address a wide range of requirements problems.
The programme of study starts by considering conventional software engineering approaches to requirements engineering, including Use Cases, and progresses through a range of approaches, focussing on those which consider both technical and social concerns. Practical guidance is also included. Current methods for requirements capture often make implicit assumptions about the nature of social life and conduct and these will be discussed on the course and alternatives presented. The course itself has been designed to challenge many existing conceptions of the design process and there will be plenty of time to discuss the critical issues.
Course presentation combines lectures, classes and student presentations of a pre-study exercise. The course is illustrated with a number of case studies, and students are encouraged to select appropriate methods, tools and techniques to address the issues raised by case studies.
The course is designed to enable participants to:
- Appreciate how requirements fit into the overall software development lifecycle.
- Be aware of a variety of methods tools and techniques for requirements capture and analysis.
- Become aware of some of the typical issues and problems facing practical requirements engineering.
- Identify methods tools and techniques for understanding user, work practice and organisational requirements.
The material from the lectures and classes will be assessed by a take-home assignment consisting of a report based on a case study. Individual student class presentation of pre-study material contributes to the assessment.
Learning outcomesAt the end of the course the student will have a breadth of knowledge about the range of requirements methods, tools, and techniques. They will gain an appreciation of at least two methods, and obtain practical guidance on elicitation techniques.
Students will not be required to have previous knowledge of requirements engineering though practical experience is useful. There will be a pre-study exercise that must be completed before the course begins.
The course is structured as follows, for a total of 12 lectures
- Course overview
- Introduction to requirements engineering
- Requirements Elicitation: various techniques; strengths and weaknesses
- Video-based Requirements Capture
- Scenarios and Agile Approaches
- Specifying Requirements: functional and non-functional requirements; UML specification exercise
- Participatory Design
- Prototyping: the role of prototyping in requirements techniques for prototyping.
- Ethics and responsible innovations: Value-Sensitive Design
The course takes palce over one week course incorporates seminar style teaching, interactive group work, and a real-world mini-research project at the end of the course. Ther are 12 lectures and 12 tutorials
The material from the lectures and classes will be assessed by take-home examination consisting of a real world case study report and a piece of group work and presentation at the end of the course. The group work will be released at 5pm Thursday and the assignment will be released on Friday midday.
There is no set textbook for this course. References that describe some of the aspects of the course are:
- Jirotka, M. and Goguen, J. Requirements Engineering: Social and Technical Issues. Academic Press. 1994.
- Sommerville, I. and Sawyer, P. Requirements Engineering: A Good Practice Guide. John Wiley and Sons. 1997.
- Alexander, I and Beus-Dukic, L. Discovering Requirements. Wiley, 2009.
- Fernandes, J. and Machado, R. Requirements in Engineering Projects. Springer, 2016.
Other useful reading:
- Requirements Elicitation: A Survey of Technique, Approaches and Tools - Zowghi and Coulin, 2005
- Asking Questions – Sudman and Bradburn 1982
- Qualitative Research Practice - Ritchie and Lewis, 2003
- Using thematic analysis in psychology - Braun & Clarke 2006
- Video in Qualitative Research: Analysing social interaction in everyday life. Heath, C., Hindmarsh, J., Luff, P. (2010).
- Making use: scenario-based design of human-computer interactions. Carroll, J. 2000.
- User Stories Applied for Agile Software Development. Cohn, M. 2004
- Writing Effective Use Cases. Cockburn, A. (2000). London: Addison-Wesley.
- Agile software development: the cooperative game, 2nd Edition. Cockburn, A. (2007). London: Addison-Wesley.
- Use Case Driven Object Modelling with UML. Doug Rosenberg and Kendall Scott.
Further readings will also be made available to you during the course.
Students are formally asked for feedback at the end of the course. Students can also submit feedback at any point here. Feedback received here will go to the Head of Academic Administration, and will be dealt with confidentially when being passed on further. All feedback is welcome.