Software Design Patterns
Florian Rappl, Fakultät für Physik, Universität Regensburg
Software Design Patterns
Introduction to modern software architecture
General
Structure
- We'll have around 12 lectures (90 min. each)
- There will be around 6 exercises (every 2nd week, starting in November)
- The final exam will be given in form of a project
- Here principles from the lecture should be applied
- This lecture represents a complete module
- Classification is given by M 32
Exercises
- Exercises are mostly practical
- Nevertheless some (mostly in the beginning) of the exercises are of theoretical nature
- Practical exercises will be solved on the computer
- Theoretical exercises should be solved on paper
- The exercises will take place on some CIP pool
Exercises appointment?
- We still need a point in time and space
- The time coordinate will have an influence on the possible choices for the location
- Hence an agreement has to be found
- Possible to do a short Doodle-like survey to have a majority vote
Are you right here?
- The next couple of slides will discuss what
- will not be discussed
- will be presented in the lecture
- It is worth noting that programming knowledge is actually required
- The language constraint is soft with C++, C# or Java being preferred
- OOP (what's that?!) knowledge is not required, but basic understanding is helpful (what is a class, what is an object, ...)
It's not about ...
- A pure lecture on UML (however, this is an important part of the lecture)
- Programming language dependent patterns
- Scripting and dynamic languages
- Learning how to become a programming rockstar
- Features of some languages (attributes, templates, generics, LINQ, dynamics, ...)
Covered
- UML
- OOP (introduction of C++, C#, Java)
- Design Patterns (creational, structural, behavioral, concurrency and representational)
- Separation of Concerns
- SOLID
- Clean Code
- Refactoring
A book (covered, not required)
And finally...
- The lecture should be dynamic enough to cover topics interesting for you
- If something is unclear, not detailed enough or too theoretical then just interrupt
- The idea is to adapt the content to your needs
- Currently planned is about one third theory like UML and two thirds patterns and practices
Software architecture
- The title of the lecture is "Software Design Patterns", but in fact we are looking at software engineering in general
- This consists of the following parts:
- Software architecture describes how overall projects are going to be structured
- Design patterns allow us to reuse existing solutions and experiences
- Principles tell us how to achieve a maintainable, extensible yet lightweight coding style