| 
 Software & Data EvolutionCourse Description|  | The
course Software and Data Evolution offers an in-depth coverage of a
core topic within the broader field of information systems engineering
-- specifically, the evolution and re-engineering  of software and
data. The course starts by reviewing software evolution in general.
Then, it proceeds to cover in an in-depth analysis, the area of
re-engineering a legacy software. The course presents the general
method of re-engineering a legacy system into a new, well-designed and
maintainable object-oriented system. Following, the particular steps of
the method, along with patterns and anti-patterns are covered: reverse
engineering, abstract modeling of an OO system, identification of bad
design symptoms, re-engineering patterns and forces. The cource moves
on to cover the evolution of data, and presents typical patterns by
which database schemata evolve, and techniques to handle schema
evolution. 
 A team project where a large complex software system is re-engineered accompanies the theoritical lecturing.
 | 
 InstructorsLearning Objectives & Expected OutcomesUnderstand the state-of-the-art and the historical evolution of research in the area under study.
 Understand in depth the critical steps in the process of re-engineering.
 Reverse
engineer an existing system and produce (a) an abstract model of the
system and (b) the appropriate documentation that goes along with the
abstract model.
 Identify symptoms of bad design and rigidity and prioritize them in terms of re-engineering.
 Understand the role of re-engineering patterns in the process of software maintenance, their interrelationships and tradeoffs.
 Design
specific solutions for the identified problems and assess both the
“forces” that constrain the solution space as well as the trade-offs
that each candidate solution incurs.
 Acquire hands-on
experience by developing a complete project wherein they apply the
design and algorithmic knowledge obtained from the course in order to
re-engineer an existing complex software system.
 Literature and Study MaterialObject-Oriented Reengineering Patterns, S. Demeyer, S. Ducasse, O. Nierstrasz, ISBN 978-3-9523341-2-6.
 Working Effectively with Legacy Code, M. Feathers, Prentice Hall, ISBN-13: 978-0131177055.
 
 Refactoring. Improving the Design of Existing Code, Fowler, Addison-Wesley, ISBN 0-201-48567-2.
 
 Refactoring To Patterns, J. Kerievsky. Addison-Wesley, ISBN 0-321-21335-1.
 
 Design Patterns: Elements of Reusable Object-Oriented Software, E.
Gamma,R. Helm, Richard, R. Johnson, Ralph, J. Vlissides, 
Addison-Wesley, ISBN 0-201-63361-2.
 
 You can download related readings from Prof. Vassiliadis' page.
 
 ScoringThe score is based on two factors (1) a team project and (2) an atomic project.
 (Team) Project: 50%(Atomic) Participation to the course lectures, discussions, and individual activities, quiz:  50%
 You can download the lectures' slides here  (contents updated after each lecture).ProjectsThe
project of the course involves the re-engineering of a fairly sizeable
object-oriented project. Specifically, the process of bringing the
project to successful end involves the following steps.
 You
can find all the neccessary material (requirements on what to do in
this phase, source code of legacy application, deliverable template,
etc.) here.
 Students form groups of 2 or 3 personsIntermediate deliverables will be prescribed in the project description. The ultimate deadline and the presentation of the project is 23/12/2025.
 AnnouncementsNOTICE !! The lecture on 13/10 is cancelled. 
 
 
        NEW !! You can download the catalog of the patterns that we will discuss from the Files tab of the course's teams group.  
NEW !! Join the MS team group of the course 9z1w1r5. Useful Links |