The development of professional software has gone a long way. Nowadays building (huge) software packages is considered engineering, which gives rise to a new field: the software engineer. The software engineer has to speak UML and sketches relations between classes and objects (instances of these classes).
This lecture gives an introduction to one of the most common units of work of a software engineer: using design patterns to standardize parts of the implementation of software. Using the appropate design pattern boosts the development speed of software and gives the implementing team a shared basis.
Finally the goal of software design patterns is to produce more stable, reliable and (cost-)efficient software. We will learn the diagrammatic language UML, discuss practical examples and learn about the most common design patterns.
(Required) prerequisites
- Programming with the language C
- A very basic knowledge of object-oriented programming (classes, objects, constructor, inheritance, ...)
- Helpful but not required is a working knowledge of C++, C# or Java
The lecture will be quite academic / theoretical, however, a colorful mix of practical (code) examples will be presented. The language of coding will be C++, C# and / or Java. Most of the times examples will be presented in a single language, however, sometimes more or all languages will be used to illustrate important points.
The exercises can be solved in any (object-oriented) programming language, as long as the language is one of the three (C++, C#, Java) or accepted by the lecturer (usually the case unless the language is quite exotic).
Table of contents
- Object-oriented programming
- (Ideal) software development process (waterfall model, agile development, ...)
- The graphical modelling language UML
- Visualize relationships by using UML
- Notations and conventions in UML
- UML diagrams (classes, objects, ...)
- Other UML diagrams (packets, activities, ...)
- Object-oriented programming languages (C++, C#, Java)
- Categories of design patterns
- The most common patterns
- Concurrency patterns (scalability, determination, ...)
- Patterns for graphical user interfaces (MVC, MVP, MVVM)
The final goal of the lecture is to give every participant the ability to detect, use and modify the known design patterns. A quite important skill that should be learned is using UML in an efficient and practical way. This should enable everyone to participate in big software projects, as well as sketch outlines and relations in the software architecture.
Grading
- Exercises alone do not qualify for a certificate.
- One must attend at least 2 exercise appointments on the same track to qualify for the final exam.
- The final exam will be taken in form of a final project.
- The project will be graded and should contain a program that makes use of techniques learned in the lecture.
- This also means that it should sufficiently documented by using UML.
Environment
- The lecture will take place every week in the room PHY 4.1.12.
- The exercises will take place every other week in the Windows CIP pool (facing H36).
- The slides corresponding to the lecture are available online at patterns.florian-rappl.de.
The exercises can be done on every (private) laptop. The only requirement is a working programming environment (a simple text editor and a compiler should be enough).