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
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.
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.
Lectures & Exercises
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