Aarhus Universitets segl

Software architecture

Theme focus

Software architecture is the foundation on which all product are built. It is the art of identifying and describing the structure of software.

Architectural concepts for software development are in constant flux, where both technological and organizational changes impact the way software is built and utilized. There are many paradigms: Component-based, monolithic and distributed approaches are being used to implement software solutions.

Our interest is how these approaches are applied when building and deploying solutions. We study how design patterns and other architectural concepts are implemented to gain an insight into how trends and other best-practice guidelines helps to create reliable, optimized and maintainable products.

We work with systems that goes beyond proof-of-concept in projects with external collaborators, and in our own laboratories. We try to identify how architectures in projects and products evolves over time, and study how choices made in the past, has an impact in the present, and how it dictates the direction for future development.

Security has always been an important area an important area when building software and has in recent time become a major focus point in the industry due to a rise in cyber-related crimes, such as industrial espionage and ransomware attacks. We analyze security models with formal methods to proof that requirements are met and implemented correctly as a part of the architecture.

Theme lead

Brian Danielsen

Undervisningsassistent/Timelærer

Teaching activities

We offer a range of software architecture and software design courses on our software and Bachelor of Engineering and Master of Science in Engineering programmes.

Here are some of the courses offered by our department:

- Software Architecture (https://kursuskatalog.au.dk/en/course/103932/Software-Architecture) (Bachelor's Degree programme in Computer Engineering) – A course that gives an introduction to different software architectures and the knowledge needed to analyse and describe the properties of software architectures

- Software Design (https://kursuskatalog.au.dk/en/course/103677/I4SWD-01-Software-Design) (Bachelor's Degree Programme in Software Technology) – A course focused on using tools like Unified Modelling Language (UML) to document systems and explaining how to select, combine and implement design patterns to construct a software system.

- Distributed Systems in Practice (https://kursuskatalog.au.dk/en/course/104441/SWTDISP-01%C2%A0Distributed-Systems-in-Practice) – A course focused on how to utilize container technology to build distributed scalable applications.

- Software Engineering Principles (https://kursuskatalog.au.dk/da/course/107818/Software-Engineering-Principles) – A course focused on how to build quality software and how to manage requirements and software projects as well how to build systems that can be verified and validated.

Technologies/tools

We use SystemML, Unified Modelling Language (UML) and the C4 model to describe and visualize our work.

We use well-known infrastructure, cloud and framework technologies to implement and deploy our solutions.

Infrastructure:
- Kubernetes
- Docker
- VMware Hypervisor

Cloud Providers:
- Amazon Web Services
- Google Cloud
- Microsoft Azure

Frameworks: 
- Firebase
- .NET Framework
- Node.js
- Angular
- React