Engineering 2: Automated Software Engineering - COM00187M
Related modules
Prerequisite knowledge: includes understanding of Object Oriented Data Structures & Algorithms. For undergraduate students this knowledge is taught in SOF2 (COM00016C).
Module will run
Occurrence | Teaching period |
---|---|
A | Semester 2 2025-26 |
Module aims
This module builds on ENG1 and introduces advanced techniques for engineering large, data-intensive software systems that consist of components written in different programming languages and operating on a variety of platforms. In order to manage the complexity of engineering such data-intensive systems, ENG2 will introduce the theory, principles and practices of model-driven engineering (MDE), focusing on technical topics. These include modelling, metamodelling, model management, model transformation, model-driven traceability, workflows, model validation, and model evolution. Non-technical issues including standards, domain-specific MDE versus general-purpose MDE and MDE processes will also be considered. The discussion of concepts and technologies for engineering modern data-intensive software systems will start from a general discussion about architectural concerns, then move on to discuss their design, implementation as a collaboration of microservices, and using containers for reproducible and scalable deployment. ENG2 will discuss assurance practices around data-intensive software systems, such as testing and hardening.
Module learning outcomes
-
Demonstrate the principles and practices of modelling and metamodelling.
-
Implement and orchestrate domain-specific models, metamodels and model management operations.
-
Demonstrate the design principles for data-intensive software systems, including their architecture characteristics like availability, scalability, reliability and security, and the characteristics of the organisation.
-
Structure data-intensive systems as combinations of independently maintained microservices, and argue about their benefits and challenges in terms of complexity management, organisational scalability, and resource usage.
-
Deploy the components of data-intensive systems in a scalable and reproducible manner, by packaging them as containers and orchestrating these containers to work with each other.
-
Appreciate assurance practices in the development and deployment of large data-intensive systems, including testing and hardening.
-
Articulate how Model-Driven Engineering integrates with wider system engineering processes and policies, including those of a data-intensive software system.
Indicative assessment
Task | % of module mark |
---|---|
Essay/coursework | 100 |
Special assessment rules
None
Indicative reassessment
Task | % of module mark |
---|---|
Essay/coursework | 100 |
Module feedback
Feedback is provided throughout the sessions, and after the assessment as per normal University guidelines.
Indicative reading
- Newman, Sam. Building Microservices, O'Reilly Media, 2021.
- Kleppmann, Martin. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems, O'Reilly Media, 2017.
- Wasowski A. Domain-Specific Languages: Effective Modeling, Automation, and Reuse. 1st ed. 2023. (Berger T, ed.). Springer International Publishing; Imprint Springer; 2023.