Course Content
This 1-year course gives students the opportunity to develop a considerable software system following a rigorous software development process. Over two semesters, students develop a strategic, turn-based, distributed, 2D game following a model-driven engineering approach. The project takes the students through all the phases of a software’s life‐cycle, from requirements elicitation and specification, to architecture design and detailed design, to implementation, deployment and maintenance. Throughout the project, students follow a model-driven engineering approach, where models of the software that is being developed are built at different levels of abstraction using different modelling formalisms. The final implementation is done by the students using an object-oriented programming language of their choice.
During the first semester, lectures are held regularly to teach the foundations of software engineering and modelling. In the second semester, lectures are gradually replaced by group meetings, where the students discuss their problems, design decisions and implementation issues with the instructor.
Specific Objectives
At the end of the project, the students of this class have gained experience in several areas related to software engineering:
• Development Skills
– Understanding a (reasonably complicated) problem statement
– Analyzing the needs that an application must fulfill
– Specifying the requirements
– Designing a solution that fulfills the requirements
– Implementing the solution with an object-oriented programming language
– Delivering the application in time
• Modelling Skills
– Elaborating domain models with class diagrams
– Specifying behavioural requirements with use case models and object interaction diagrams
– Specifying system protocols with state diagrams
– Specifying software design structure with class diagrams
– Specifying software behaviour with sequence diagrams
• Team Skills
– Contributing to the constitution and the growth of a small group of developers
– Communicating efficiently within the group
– Organizing work / programming within a group
• Tool Skills
– Modelling tools
– Compilers
– Debuggers
– Profilers
– Version control software
Last modified: November 23, 2015, Jörg Kienzle