Change is an inherent property of all software systems and software development life-cycles. Systems that have long passed the life expectancy envisioned by their initial developers have accumulated many changes as a result of the maintenance of defects, advancements in technology, and new business needs. The goal of this course is to introduce the challenges presented by existing systems and examine various reverse engineering and forward engineering techniques for evolving systems.
This course explores the concepts of software evolution and reengineering and introduces approaches and support tools used to extract the information from existing software systems. The course introduces various principles of software reuse and reverse engineering techniques are presented and researched through research papers.
Week | Session 1 |
Session 2 |
Notes |
01 (Mar 4) | Course admin |
Software Evolution and Re-engineering: an overview | |
02 (Mar 11) | Architectural styles | Architecture reconstruction |
Dr. Hawker will be covering the class |
03 (Mar 18) | Architecture recovery | Reflexion models and source sticky notes |
Student paper presentations begin |
04 (Mar 25) | Software aging and code decay |
Project topic presentations |
|
05 (Apr 1) | Empirical studies |
Empirical studies | Project proposals due (midnight, April 7) |
06 (Apr 8) | Software changes |
Software changes |
|
07 (Apr 15) | Project updates |
Project updates |
|
08 (Apr 22) | Emerging topics |
Emerging topics |
Code ownership |
09 (Apr 29) | Emerging topics | Project presentations | |
10 (May 6) | Project presentations |
Wrap up Course evaluations |
Project due (midnight, May 12) |
Students are expected to read all papers covered in a week, come to class prepared to discuss their thoughts and take part of the classroom discussions.
Every student will select or be assigned at least two papers on a course-related topic. In this assignment, the student is to gain a detailed understand of the paper, and present it to the class. You should not simply repeat the paper’s content, rather you should focus on the main findings of the paper. You should highlight the motivation of the work, the novel contributions of the work, any surprising findings and possible applications of the work. You should also place the work relative to other papers that cite the work, the author’s follow on work and papers that are being presented in our course in the same week.
Every week that we have student paper presentations, each student is expected to send a critique of one of the papers that are being presented. The critique should include a brief summary of the paper, at least three strengths of the paper and at least three weaknesses of the paper. For the other paper, each student is required to submit a summary of the paper. The critiques and paper summaries are due at noon on the day the papers are to be presented.
The first deliverable of the course project is a project proposal. The project proposal should be 3 pages in length (plus references). The project proposal should be submitted by the end of week 5.
A large portion of the course deliverables is a course research project. You are expected to work on the course project in pairs (or in rare occasions groups of three students). Each group is expected to write a research paper by the end of the quarter. The topic is to be negotiated with the instructor. Examples include a new contribution on a specific reengineering topic, a survey paper of a software evolution related topic (typically involves surveying 30 – 60 papers), or building a tool to support software evolution and reengineering.
The final report (10 pages in length) should be submitted by the end of week 10. The final submission is expected to be of publishable quality. All project-related documents (i.e., project proposal and project report) should use the IEEE conference publication format. If the paper is deemed publishable, the instructor will work with the student to make appropriate changes to the final report and submit the paper for publication.
Week | Papers |
3 - Monday |
|
3 - Wednesday |
|
4 - Monday |
|
4 - Wednesday |
|
5 - Monday |
|
5 - Wednesday |
|
6 - Monday |
|
6 - Wednesday |
|
7 - Monday |
|
7 - Wednesday |
|
8 - Monday |
|
8 - Wednesday |
|
9 - Monday |
|
9 - Wednesday |
|
10 - Monday |
|
10 - Wednesday |
|