This repo contains the material for the course Advanced Software Design (5 cr.) imparted at Uppsala University.
Principles and methods for software design with a special focus on object-oriented analysis and design, including topics such as domain modelling, software architecture, class and object modelling, behavioural modelling, design patterns, General Responsibility Assignment Software Principles (GRASP) design principles, design evaluation and improvement, and refactoring. Practice by designing a larger program.
On completion of the course, the student should be able to:
-
summarise and explain relevant design principles.
-
use object-oriented programming methodology to design and implement larger programs.
-
use a modelling language as a means to communicate realistic problems and their solutions.
-
demonstrate understanding of the connection between modelling languages and programming languages, for example by implementing design models.
-
use design patterns and other known solutions to design problems.
-
evaluate the suitability of different design alternatives based on object oriented design principles, and identify design flaws in programs.
-
Introdution
-
Domain Modelling
-
Structural Modelling
- class diagrams
-
Behavioral Modelling
- sequence and,
- communication diagrams (among others)
- Exercise and Solution
-
GRASP Principles
- GRASP principles with examples
-
Software Architecture
- Non-functional requirements
- Component, package, and deployment diagrams
- Achitectural styles: OO, Peer, Client-Server, Broker, Microservice, ...
-
Design Patterns 1
- Abstract Factory,
- Factory Method,
- Builder,
- Dependency Injection,
- Adapter,
- Proxy,
- Object Pool,
- Null Object,
- Singleton,
- Observer,
- Strategy,
- Template Method
-
Design Patterns 2
- Decorator,
- Chain of Responsibility,
- Memento,
- Iterator,
- Composite,
- Interpreter,
- Visitor,
- Facade,
- Plenty of code and examples,
- Seminar 1 and 2
-
README
, this document -
Instructions
, contains the 1-Goals.pdf (exercises that students need to do) which must be applied to the project described in 2-Project.pdf -
slides
, contains lecture folders and each lecture may contain additional material. The slides usually contain examples and code.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.