Department: MSc in Informatics (Knowledge and Data Management)
Module Description: Establishing firm and precise requirements is an essential component of successful software systems development.
The general aims of this course is to make students understand the ever-increasing importance of requirements in the wider systems engineering process, and to improve systems engineering processes by making them more requirements-oriented. The course describes the role of requirements in the construction and continued maintenance of large, complex and evolving software-intensive systems. It introduces the important concepts and activities in systems requirements engineering, explains how they can knit together to form a through-life requirements engineering process, and demonstrates how such an end-to-end process can be defined and used in practice. The course provides a broad overview of the notations, techniques, methods and tools that can be used to support the various requirements engineering activities, and complements this with the opportunity to gain experience in a selection of these. The course seeks to illustrate the wider applicability of requirements engineering to everyday projects, the breath of skills required and the many contributing disciplines.This course will also demonstrate why traditional approaches to requirements engineering are not adequate for building ultra-large-scale, complex systems-of-systems and Internet of Things-enabled Cyber-Physical Systems such as Smart Cities and Industry 4.0.
Alexander, I. F. and Maiden, N. (2004). Scenarios, stories, use cases: through the systems development life-cycle. Wiley.
Arlow, J. and Neustadt, I. (2005). UML and the unified process. practical object-oriented analysis and design. 2nd edn. Addison Wesley Professional.
Lamsweerde, A. (2009). Requirements engineering: from system goals to UML models to software specifications. Wiley.
Wiegers, K. and Beatty, J. (2013). Software requirements. 3rd edn. Microsoft Press.