Software Design & Modeling
Persone
Docente titolare del corso
Assistente
Descrizione
The main focus of the course are object-oriented design mechanisms, but with some topics targeting functional programming. After an introductory recap of object-oriented programming, the course discusses how to assess the design quality of object-oriented systems, how to identify and use so-called design patterns, how to avoid common design flaws, and how to introduce rigorous yet practical means of documenting design and functionality.
Obiettivi
Software is built on abstractions, and the quality of those abstractions determines usability and maintainability of software. This course presents techniques and methods to understand the design of existing software, to improve it, and to write programs using the right abstractions.
Modalità di insegnamento
In presenza
Impostazione pedagogico-didattica
The course mainly follows a hands-on, learning-by-doing approach with assignments to be performed on open-source systems. For example, students assess the design of an open-source application, identifying shortcomings, & suggesting ways of fixing them. Java is the reference programming language, but other languages will be sometimes used too.
Modalità d’esame
The course's grade is determined by a combination of take-home assignments introduced during the course (corresponding to the main topics of the course) and in-class exams (such as midterm and/or final).
Bibliografia
- Bruegge, Bernard, Dutoit, Allen H.. Object-Oriented Software Engineering Using UML, Patterns, and Java. Pearson, 2011.
- Fenton, Norman, Bieman, James. Software Metrics: A Rigorous and Practical Approach. 3rd edition. Routledge, 2020.
- Fowler, Martin, Beck, Kent., Brant, John, Opdyke, William, Roberts, Don. Refactoring: improving the design of existing code. Reading, MA :: Addison-Wesley, 1999.
- Meyer, Bertrand. Object-oriented software construction. 2nd ed.. Upper Saddle River, N.J.: Prentice Hall, 1997.
- Robillard, Martin P.. Introduction to software design with Java. Cham, Switzerland: Springer, 2019.
Offerta formativa
- Master of Science in Informatics, Lezione, 1° anno
- Master of Science in Informatics, Lezione, 2° anno
- Master of Science in Software & Data Engineering, Lezione, 1° anno