Skip to content

kikofernandez/AdvancedSoftwareDesign

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Advanced Software Design

This repo contains the material for the course Advanced Software Design (5 cr.) imparted at Uppsala University.

CONTENT

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.

LEARNING OUTCOMES

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.

LECTURES

  1. Introdution

  2. Domain Modelling

  3. Structural Modelling

    • class diagrams
  4. Behavioral Modelling

    • sequence and,
    • communication diagrams (among others)
    • Exercise and Solution
  5. GRASP Principles

    • GRASP principles with examples
  6. Software Architecture

    • Non-functional requirements
    • Component, package, and deployment diagrams
    • Achitectural styles: OO, Peer, Client-Server, Broker, Microservice, ...
  7. Design Patterns 1

    • Abstract Factory,
    • Factory Method,
    • Builder,
    • Dependency Injection,
    • Adapter,
    • Proxy,
    • Object Pool,
    • Null Object,
    • Singleton,
    • Observer,
    • Strategy,
    • Template Method
  8. Design Patterns 2

    • Decorator,
    • Chain of Responsibility,
    • Memento,
    • Iterator,
    • Composite,
    • Interpreter,
    • Visitor,
    • Facade,
    • Plenty of code and examples,
    • Seminar 1 and 2

FOLDER STRUCTURE

  • 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.

Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

About

Advanced Software Design material (slides and exercises)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published