Search programme

​Use the search function to search amongst programmes at Chalmers. The study programme and the study programme syllabus relating to your studies are generally from the academic year you began your studies.

Syllabus for

Academic year
TDA594 - Software engineering principles for complex systems
Software engineering principles for complex systems
Syllabus adopted 2021-02-17 by Head of Programme (or corresponding)
Owner: TKITE
7,5 Credits
Grading: TH - Pass with distinction (5), Pass with credit (4), Pass (3), Fail
Education cycle: First-cycle
Main field of study: Computer Science and Engineering, Software Engineering

Teaching language: English
Application code: 52130
Open for exchange students: No
Block schedule: B+
Only students with the course round in the programme plan

Module   Credit distribution   Examination dates
Sp1 Sp2 Sp3 Sp4 Summer course No Sp
0119 Project 6,0 c Grading: TH   6,0 c    
0219 Written and oral assignments 1,5 c Grading: TH   1,5 c    

In programs



Gregory Gay

  Go to Course Homepage


General entry requirements for bachelor's level (first cycle)
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Specific entry requirements

The same as for the programme that owns the course.
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Course specific prerequisites

The student must know Java programming and must have taken courses on data structures and algorithms (e.g., TDA416) as well as on object-oriented programming (e.g., TDA552, TDA367). Courses on user-interface development (e.g., DAT216, TDA289), and on testing (e.g., TDA567) are recommended.


Real-world software systems are becoming increasingly complex and pervasive. Consider application domains such as enterprise computing (e.g., data-processing/AI systems), business information systems (e.g., web portals), cyber-physical systems (e.g., automotive software), systems software (e.g., operating system kernels), or mobile software and software ecosystems (e.g., Android apps). All these domains boast software systems of unprecedented complexity, many of which are long-living and exist in many different variants. As such, these software systems require dedicated planning, modeling, design, realization, and advanced analysis techniques presented in this course.

Learning outcomes (after completion of the course the student should be able to)

Identify and reason about recurrent problems of engineering complex systems and being able to apply appropriate solutions. The learning is driven by a concrete example of a software engineering or re-engineering project that will be developed in group work.

1. Knowledge and understanding

    • Explain the challenges of engineering complex software systems
    • Explain industrial practice and examples of complex software systems engineering
    • Explain processes and concepts for engineering complex and variant-rich software systems
    • Explain business-, architecture-, process-, and organization-related aspects of engineering complex software systems

    2. Skills and abilities

    • Model a software system from different perspectives (e.g., using feature models, UML diagrams, architecture description languages)
    • Engineer a variant-rich software system (e.g., variant-rich software system, software product line, software ecosystem)
    • Analyze and re-engineer a complex software system
    • Use and reason about modularization techniques
    • Use modern component or service frameworks

    3. Judgement and approach

    • Analyze existing software systems and discuss potentials for improvement or re-engineering
    • Reason about characteristics software modularity concepts
    • Recognize in which situations which principles for handling of complex software systems are appropriate
    • Read and analyze scientific literature


    Programming expertise is only one of many skills required to engineer complex software systems. In this course we will critically analyse what software-engineering principles support the engineering of complex software systems. We will discuss these principles in the lectures and will apply them in project work.


    There will be weekly lectures covering the theoretical course content. Additionally, there will be project work in groups and, as a part of this, weekly compulsory supervision meetings in the groups. In addition, there will be individual written assignments. 


    Information about literature can be found on the course web-page.

    Examination including compulsory elements

    The examination consists of two parts: an individual written report assignment (1.5 hec) and a group project (6 hec). The project part is graded individually, taking into account the group work as well as the student's individual contribution to the groupwork.

    The course examiner may assess individual students in other ways than what is stated above if there are special reasons for doing so, for example if a student has a decision from Chalmers on educational support due to disability.

    Page manager Published: Mon 28 Nov 2016.