Architectural and Design Patterns
| Code | Completion | Credits | Range | Language |
|---|---|---|---|---|
| ANI-ADP | Z,ZK | 5 | 2P+1C | Czech |
- Course guarantor:
- Lecturer:
- Tutor:
- Supervisor:
- Department of Software Engineering
- Synopsis:
-
The objective of this course is to provide students with both work knowledge about the underlying foundations of object-oriented design and analysis as well as with understanding of the challenges, issues, and tradeoffs of advanced software design.
In the first part of the course, the students will refresh and deepen their knowledge of object-oriented programming and get familiar with the commonly used object-oriented design patterns that represent the best practices for solving common software design problems. In the second part the students will be introduced to the principles of software architecture design and analysis. This includes the classical architectural styles, component based systems, and some advanced software architectures used in large-scale distributed systems.
- Requirements:
-
Pro získání zápočtu je třeba dostatek bodů ze semestrální práce. Zkouška má povinnou písemnou a ústní část.
- Syllabus of lectures:
-
1. Increasing complexity of problems in an OO paradigm, recapitulation of OOP and UML.
2. Good and bad design. Basic principles of object design (DRY, KIS, SoC, YAGNI, LoD, ZOI, SOLID).
3. Classification of design patterns. Patterns necessary for implementation of a semester project.
4. Presentation of patterns for creating objects.
5. Presentation of structural patterns.
6. Presentation of patterns for object behavior.
7. Patterns for functional programming.
8. Patterns for concurent programming.
9. Principles of software architectures and component systems. Languages for describing architectures.
10. Basic architectural patterns.
11. Advanced architectural patterns.
12. Map-Reduce and autonomous systems.
13. Reactive programming and actor model.
- Syllabus of tutorials:
- Study Objective:
-
The objective of this course is to provide students with both work knowledge about the underlying foundations of object-oriented design and analysis as well as with understanding of the challenges, issues, and tradeoffs of advanced software design.
In the first part of the course, the students will refresh and deepen their knowledge of object-oriented programming and get familiar with the commonly used object-oriented design patterns that represent the best practices for solving common software design problems. In the second part the students will be introduced to the principles of software architecture design and analysis. This includes the classical architectural styles, component based systems, and some advanced software architectures used in large-scale distributed systems.
- Study materials:
-
1. Robert Martin: Clean Architecture: A Craftsman's Guide to Software Structure and Design. Pearson, 2017. ISBN 978-0134494166.
2. Suyanarayana, G. - Smarthyam, G. - Sharma, T.: Refactoring for Software Design Smells: Managing Technical Debt. Elsevier, 2014. ISBN 13: 978-9351073055.
3. Bass, L. - Clements, P. - Kazman, R.: Software Architecture in Practice (3rd Edition). Addison-Wesley, 2012. ISBN 978-0321815736.
4. Buschmann, F. - Meunier, R. - Rohnert, H. - Sommerlad, P. - Stal, M.: Pattern-Oriented Software Architecture: A System of Patterns. Wiley, 1996. ISBN 978-0-471-95869-7.
- Note:
-
Information about the subject and teaching materials can be found at https://courses.fit.cvut.cz/MI-ADP/ Range: 2p + 1c This course is presented in Czech.
- Further information:
- https://courses.fit.cvut.cz/MI-ADP
- No time-table has been prepared for this course
- The course is a part of the following study plans: