Software Engineering and Architecture (SEA)

Course content

Software engineering represents the principles, methods, tools, and techniques involved in the design, development, implementation, and maintenance of software systems.

The software architecture of a system defines “the structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them”.

In order to design a software system, we need to structure it in such a way that functional and quality requirements can be fulfilled by an implementation.

The purpose of this course is to provide an overview of the different aspects and stages involved in the engineering of software with a special focus on architectural properties of large systems. Assuming that course participants are acquainted with basic software development principles, this course will provide knowledge on and experience with the wider aspects and stages in the lifecycle of a (large) software system. During this course the students will be introduced to the general principles of software engineering, methods for addressing software engineering problems, common tools and techniques for solving software engineering problems, and methods, tools, and techniques for designing software systems and their architecture.

The course will include lectures and exercises in the following subjects:

  • Project Management
  • Requirements Elicitation
  • Architectural Analysis, Description, Synthesis, Prototyping & Evaluation
  • Software Design and Development
  • Software Implementation
  • Quality Assurance
  • Maintenance and Evolution
  • Software Business

MSc Programme in Computer Science

Learning outcome

Knowledge of

  • How software systems are designed, developed, implemented, and maintained
  • The necessary principles in the engineering of software systems
  • Methods, tools, and techniques to design, develop, implement, and maintain software
  • Quality attributes, including definitions, characterisation, and tactics 

  • Patterns for software design 

  • Software architecture design techniques
  • (Architectural) design description
  • Design and architecture evaluation
  • Fundamental concepts of and techniques in software design 


Skills to

  • Manage the processes of designing, developing, implementing, and maintaining software systems
  • Communicate the design and architecture of a system
  • Control the quality of the produced software 
  • Plan the maintenance of (large) software systems
  • Predict evolution of (large) software systems
  • Elicit functional and quality requirements of software systems
  • Design systems and software architectures so that they satisfy relevant quality constraints
  • Describe existing systems and software architectures with relevant software description techniques
  • Evaluate existing systems and software architectures with respect to relevant qualities
  • Characterise functional and quality requirements while acting as an opponent with respect to fellow students’ workability requirements of software systems 


Competences to

  • Document and communicate their engineering process
  • Critically read and apply existing methods, tools, and techniques
  • Document and communicate the architecture of a system
  • Iteratively and incrementally design a complex software system
  • Analyse complex software systems with respect to their software architecture

Video lectures, workshops, and projects.

See Absalon for a list of course literature.

Substantial experience with object-oriented programming languages is required, in particular, either JAVA, C#, or JavaScript. Students will be expected to understand and work with a large codebase in one of these languages.

Academic qualifications equivalent to a BSc degree is recommended.

The course is identical to NDAK16006U Software Architecture (SA) and NDAK16007U Software Engineering (SE),
It is not allowed to pass both this course and the two other courses.

Continuous feedback during the course of the semester
Type of assessment
Oral examination, 25 minutes (including grading)
Type of assessment details
Oral examination with 25 minutes preparation. Part of the examination can be based on the group-based project report. There will be an individual question component and grades will be based on this.
Exam registration requirements

To qualify for the exam the students must submit a complete and approved project report based on the course project and the student's reflections.

Only certain aids allowed

Only the following materials are allowed at the oral examination:

• The group-based project report

• The presentation slides

• Source code for the project

Marking scale
7-point grading scale
Censorship form
No external censorship
Several internal examiners.

Same as the ordinary exam.

The student report must be submitted no later than two weeks before the re-exam week, and must be approved for the student to qualify for the re-exam.

Criteria for exam assessment

See Learning Outcome.

Single subject courses (day)

  • Category
  • Hours
  • Lectures
  • 48
  • Preparation
  • 112
  • Project work
  • 224
  • Exam Preparation
  • 27
  • Exam
  • 1
  • English
  • 412


Course number
Programme level
Full Degree Master

2 blocks

Block 3 And Block 4
No limit
The number of seats may be reduced in the late registration period
Study Board of Mathematics and Computer Science
Contracting department
  • Department of Computer Science
Contracting faculty
  • Faculty of Science
Course Coordinator
  • Sippo Oskari Teofilus Rossi   (4-8278817e4f73783d7a843d737a)
Saved on the 06-02-2024

Are you BA- or KA-student?

Are you bachelor- or kandidat-student, then find the course in the course catalog for students:

Courseinformation of students