- Department: Computer Science
- Credit value: 20 credits
- Credit level: M
- Academic year of delivery: 2024-25
- See module specification for other years: 2023-24
Prerequisite knowledge: includes understanding of Object Oriented Data Structures & Algorithms. For undergraduate students this knowledge is taught in SOF2 (COM00016C).
Occurrence | Teaching period |
---|---|
A | Semester 2 2024-25 |
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.
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.
Task | % of module mark |
---|---|
Essay/coursework | 100 |
None
Task | % of module mark |
---|---|
Essay/coursework | 100 |
Feedback is provided throughout the sessions, and after the assessment as per normal University guidelines.