Skip to content

Software Architecture

Software architecture is the design of how different parts of an application work together. You think about which components you need, how they communicate with each other, and how you can build everything so that it is maintainable, scalable, and reliable. It’s like creating a blueprint, but for software.

For this product, you choose a design pattern and describe how you implemented it in your project.

Design Patterns

Design patterns are proven solutions to common programming problems. They are not ready-made code that you copy, but rather a template or blueprint that you adapt to your specific situation. Just as an architect uses standard building methods for doors and windows, programmers use design patterns to keep code organized, maintainable, and reusable.

Design patterns are traditionally divided into three categories:

  • Creational Patterns (how you create objects, such as Factory Pattern, Singleton Pattern, Builder Pattern, Prototype Pattern)
  • Structural Patterns (how you combine different parts of your code, such as Adapter Pattern)
  • Behavioral Patterns (how objects communicate with each other, such as Observer Pattern, Strategy Pattern, Template Method Pattern, Visitor Pattern). For web development, patterns like MVC (Model-View-Controller), Repository Pattern, and Singleton Pattern are particularly useful.

Design patterns are not language-specific; you can use them in different languages.

To learn more about design patterns, you can consult the following resource:

Quality indicators

When assessing this product, the following quality indicators will be considered:

  • The software architecture document is self-contained: it starts with an introduction/context and then describes the different parts of the software architecture.
  • A design pattern is chosen and it is explained why this pattern is suitable for the project.
  • There is a clear description of how the design pattern is implemented in the project.
  • There is a visual overview (for example a diagram) that shows the software architecture.
  • Architectural choices take performance, scalability, and maintainability into account.
  • The document contains code that demonstrates the design pattern. This code is easy to read and follows coding conventions.
  • There are references to the code in GitLab where the design pattern is implemented.
  • There is a list of sources describing the materials you used to design and implement the software architecture.

Template

To create your own software architecture, you can use the following template:

# Software Architecture

In this section, describe in a few sentences what the software architecture is and which problem it solves. This is the main text of your document.

## Design Pattern Choice

Here you describe which design pattern you chose and why this pattern is suitable for your project. Explain which problems this pattern solves and how it contributes to the maintainability, scalability, and reliability of your application.

## Architecture Overview

Here you add a visual overview (for example a diagram) that shows your software architecture. This helps others understand how the different components work together.

## Implementation

Here you describe how you implemented the design pattern in your project. Explain which choices you made and why. Add references to the code in GitLab and use code snippets to describe the implementation.

## Sources

List here the sources you used to design and implement the software architecture. Think of YouTube videos, websites, books, and so on.
Also include sources that helped you write the code.