Official course description, subject to change:
Preliminary info last published 15/05-23

Analysis, Design and Software Architecture

Course info
ECTS points:
Course code:
Participants max:
Offered to guest students:
Offered to exchange students:
Offered as a single subject:
Price for EU/EEA citizens (Single Subject):
21250 DKK
BSc in Software Development
Course semester
Efterår 2024
26 August 2024
27 December 2024
Exam type
ekstern censur
Grade Scale
Exam Language
The Analysis, Design, and Software Architecture course (BDSA) is part of the Bachelor in Software Development (BSWU). In this course, students will discover software engineering from a theoretical and practical perspective. Students will learn about the history of software engineering, software processes, and will be exposed to concepts, principles, techniques, tools, and technologies related to object-oriented analysis, design, and programming. The course comprises of two lecture blocks and three exercise blocks. Weekly exercises will be given to students to gain hands on practice of the concepts taught in class.

The Analysis, Design, and Software Architecture course (BDSA) is a course in the Bachelors program in Software Development (BSWU). In this course, students will discover and experience software engineering from a practical and theoretical perspective. Students will learn and experience how modern applications can be designed in an object-oriented programming language like C#.

Students will be trained to design, create, and reflect on properties of quality software via practices like agile iterative development with short development cycles and quick feedback loops that are triggered by continuous build, test, deployment of software, etc.

Additionally, students will learn and experience related tools and techniques, e.g., continuous integration, delivery, and deployment chains, deployment of software as applications in the "cloud", distributed version control systems, etc.

 The course comprises of lectures, exercise sessions, and a project that runs over the entire term. Student's capabilities are assessed at the end of the course via an exam that incorporates the results of project work that are reported in a brief report and via a written exam.

 This is a 15ECTS course corresponding to a workload of on average 23.6 hours per week (see

Formal prerequisites

The student must have the following skills to register for this course:

  • Familiarity with at least one object-oriented programming language, such as, Java, C++, C#, Objective-C.
  • Be able to design, implement, and test medium-sized object-oriented programs that includes the use of concepts, such as, classes, encapsulation, inheritance and polymorphism, interfaces, packages, data structures (arrays, collections, lists, etc.), threading, IO operations (files, streams, and serialization), and basic GUI programming.

These background skills are achieved by following the basic programming courses in the first and second semester at the IT University’s bachelor degree programs in Software Development.

Intended learning outcomes

After the course, the student should be able to:

  • Describe and apply methods for agile, iterative, and continuous analysis, design, implementation, testing, build, and deployment of object-oriented software.
  • Explain principles of software architecture, including the variety of common architecture and design patterns and their use.
  • Explain and reflect on software development process, practices, and techniques that are covered in the course.
  • Explain and be able to execute software engineering activities including agile, iterative, and continuous analysis, design, implementation, testing, build, and deployment.
  • Document the analysis, design, and software architecture of systems through the use of common standards for documentation including natural language descriptions, visual languages like UML, or C#'s documentation tools.
  • Design and implement software using the C# programming language, including the use of data structures, generics, LINQ, data access, asynchrounous processing, distributed programming, tests, user interface programming, API programming, and web programming.
  • Apply changes (re-factor) to a software system through adjustments in its architecture or refinements in its configuration and reflect on their implications.
  • Construct useful, coherent, large-scale systems of up to approx. 10 KLOC in size in the C# programming language, including the ability to perform system and domain analysis for a given problem, propose an appropriate software architecture, write aspects of system specification and its implementation, and validate the implementation against its specification.
  • Effectively test large-scale systems. This includes both the understanding of the design implications as well as the ability to write effective tests using test-driven (or test- first) techniques.
Ordinary exam
Exam type:
X: Experimental form, External (7-point scale)
Exam variation:
X: Experimental form