Software & Data Evolution
Course 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 Outcomes- Understand 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 persons
- Intermediate deliverables will be prescribed in the project description.
- The ultimate deadline and the presentation of the project is 23/12/2024.
Announcements- 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
|