Engineering 2: Automated Software Engineering - COM00055H

«Back to module search

  • Department: Computer Science
  • Credit value: 20 credits
  • Credit level: H
  • Academic year of delivery: 2025-26

Related modules


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

  1. Demonstrate the principles and practices of modelling and metamodelling.

  2. Implement and orchestrate domain-specific models, metamodels and model management operations.

  3. 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.

  4. Structure data-intensive systems as combinations of independently maintained microservices, and propose benefits and challenges in terms of complexity management, organisational scalability, and resource usage.

  5. 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.

  6. Describe assurance practices in the development and deployment of large data-intensive systems, including testing and hardening.

  7. 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.