Lecture (3V) and Exercise (2Ü)
Module level: Master
Total number of hours: 161,25
Self-study hours: 105
Contact hours: 5
* The number of credits can vary depending on the corresponding SPO version. The valid number is always indicated on the Transcript of Records or the Preformance Record.
This module introduces central methods, techniques and processes of systematic software construction based on object oriented concepts.
The lecture covers the following topics:
– Foundations of object orientation
– Software reuse
– Design by Contract
– Inheritance, polymorphism and generics
– Software design principles
– Domain modelling, domain driven design
– Component Technology
– Advanced patterns and frameworks
– Smells and Refactoring
After completing the module the students have the following knowledge and competencies. They …
– know how to apply important object oriented modeling concepts
– are able to perform use case based and domain driven design
– know the concepts of framework based development
– know important design patterns and are able to apply patterns in architectural design
– know how to improve code and architecture based on smells and refactoring
– know the architecture of Java based component models
Benefits for future professional life / soft skills:
All competencies are trained in the exercises, where small teams of students have to create typical analysis, design and implementation artifacts. They have to present and discuss their solutions and ideas in front of the class. As professional knowledge on software construction is provided, students gain personal and professional competencies that enable to work as software architects.
- Meyer, B. (1997) : Object Oriented Software Construction, 2nd edition, Prentice Hall.
- Züllighoven, H. (2005): Object-Oriented Construction Handbook – Developing Application-Oriented Software with the Tools and Materials Approach. dpunkt.verlag, Heidelberg.
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1995): Design Patterns, Addison-Wesley
- Fowler Martin (1999): Refactoring – Improving the design of existing code, Addison Wesley.