4011-720 Software Evolution and Re-Engineering

Table of Contents

Schedule of Topics
Grading and Deliverables
Paper List


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.

Tentative Schedule of Topics

Week Session 1
Session 2
01 (Mar 4)

Course admin
Intro and motivation

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
Security and privacy
Continous release
Deploying to the cloud

09 (Apr 29) Emerging topics Project presentations
10 (May 6) Project presentations
Wrap up
Course evaluations
Project due (midnight, May 12)

Grading and Deliverables

Class participation (10%)

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.

Paper presentations (25%)

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.

Paper critques (15%)

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.

Project proposal (10%)

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.

Project paper (40%)

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.

Paper List

Week Papers
3 - Monday
3 - Wednesday
4 - Monday
4 - Wednesday
  • Project topic presentations
5 - Monday
5 - Wednesday
6 - Monday
6 - Wednesday
7 - Monday
  • Project update presentations
7 - Wednesday
  • Project update presentations
8 - Monday
8 - Wednesday
9 - Monday
9 - Wednesday
  • Project presentations
10 - Monday
  • Project presentations
10 - Wednesday