Software Design and Evolution

Professor: Michele Lanza
Assistant: Roberto Minelli

Course type: Lecture
Value in ECTS: 6
Bibliographic references available on the University Library website


Academic year 2012/2013 - Fall semester


Pre-requisites: Software Engineering


Objectives
This course provides students with an overview of design heuristics and puts them in an evolutionary context. It teaches students to design systems to withstand the inevitable decay and using reverse engineering and reengineering techniques, it lets students "see" software as more than just source code.


Contents
The Software Life-Cycle; Object-Oriented Design; Responsibility-driven Design; Designing Classes; Encapsulation; Design Patterns; Software Quality; The Law of Demeter; Software Performance; Software Metrics; Design Heuristics and Style Guidelines; Detection Strategies & Design Disharmonies; User Interface Design; Software Evolution; Reverse Engineering; Reengineering Patterns; Visualization.


Teaching mode
Lectures & Exercises


References
Object-Oriented Reengineering Patterns by Serge Demyer, Stéphane Ducasse, Oscar Nierstrasz. Available for free at http://www.iam.unibe.ch/~scg/OORP/.
Object-Oriented Metrics in Practice: Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems by Michele Lanza and Radu Marinescu. Springer, 2006. ISBN-13: 978-3540244295.
Object-Oriented Design Heuristics by Arthur J. Riel. Addison-Wesley Professional, 1996. ISBN-13: 978-0201633856