Software Design Patterns

Florian Rappl, Fakultät für Physik, Universität Regensburg

Software Design Patterns

Introduction to modern software architecture

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)

110614<em>design</em>pattern<em>elements</em>of_reusable.jpg

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