Software Evolution (COMP 762) - Fall 2008

[News] [Basic Information] [Overview] [Prerequisites] [Course Work and Evaluation] [Schedule] [Links and Documents]


[9 September 2008]Reading list and project dates finalized.
[27 June 2008]Course schedule posted.

Basic Information

Instructor:Martin Robillard
Time, etc:Mondays and Wednesdays 2:35-3:55 In MC 320.
Office hours:Monday and Wednesdays after class or by appointment.


Much more effort is spent modifying existing software systems than creating new ones. In general, the process of evolving a software system to ensure its continued usefulness and relevance is a complex, costly, and risky business.

This course will explore issues related to software evolution: why it is difficult, and how we can cope with this difficulty. Specifically, the course will look at advanced tools and techniques proposed by the research community to ease, simplify, and automate software evolution, with a special focus on three major themes: software modularity, reverse engineering, and fault detection. An overarching theme underlying most of the course will be the question of validity in software engineering research and the methodologies used to achieve it.

In this course, you will have a chance to read and discuss research papers and a carry out a mini software engineering research project. After completing this course, you should have a very good idea of the important challenges associated with software evolution, of concrete techniques for easing software evolution, and of the methods for doing research in software evolution.


Please contact the instructor for an assessment meeting if you are interested in taking the course but do not have all the prerequisites.

Reference Material

Required Textbook: Mens, Demeyer (eds.).
Software Evolution, Springer, 2008.

Clicking the link above from the McGill domain will give you access to the McGill Library's electronic version of the book. Hard copies of the book are available for purchase at the Paragraph Bookstore

Course Work and Evaluation

Most of the lectures will be organized around the discussion of one or more research papers taken from software engineering journals and conference proceedings. You will be expected to read each paper covered and be prepared to discuss it in class. In addition, you will be required to lead one or more in-class discussion(s). There will also be a take-home final exam consisting of essay questions requiring a synthesis of some or all of the papers covered in the course.

The practical component of the course will consist of a two-part project. In the first part, you will analyze an existing software system to assess its evolvability in the context of a specific enhancement. In the second part, you will design and implement a software evolution tool or technique, and use the system analyzed in the first part to validate your work. Your results and experiences will be presented to the class during a workshop.

The grading scheme for the course is as follows (subject to change):

Project 1: Software Assessment  20%
Project 2: Software Evolution Technique 40%
Discussion  15%
Final exam:  15%
Class participation  10%

Intangibles may be considered in assigning grades.

Academic Integrity

McGill University values academic integrity. Therefore all students must understand the meaning and consequences of cheating, plagiarism and other academic offenses under the Code of Student Conduct and Disciplinary Procedures (see for more information).

Reading Schedule

This schedule is subject to change. Topics in italics indicate interactive lectures led by the instructor. All other classes consist of student-led discussions. Starred references are complementary, but strongly recommended, readings.


Wed 3 SepIntroduction to Software Evolution[1] T. Mens. Introduction and Roadmap: History and Challenges of Software Evolution. Textbook Chapter 1.
[2] D.L. Parnas. Software Aging. In Proceedings of the 16th International Conference on Software Engineering, 1994.
Mon 8 SepModularity[3] D.L. Parnas. Some Software Engineering Principles. Infotech State of the Art Report on Structured Analysis and Design, Infotech International, 1978.
[4] D.L. Parnas. D.L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12), 1972.
[5]* D. Ancona, G. Lagorio, E. Zucca. Jam - A Smooth Extension of Java with Mixins. In Proceedings of the European Conference on Object-Oriented Programming, 2000.
Wed 10 SepEmpirical Studies of Software Evolution[6] J. Fernandez-Ramil et al. Empirical Studies of Open Source Evolution. Textbook Chapter 11.
[7]* S.G. Eick, T.L. Graves, A.F. Karr, J.S. Marron, and A. Mockus. Does code decay? assessing the evidence from change management data. IEEE Transactions on Software Engineering, 27(1), 2001.
Mon 15 SepClone Detection and Analysis[8] R. Koschke. Identifying and Removing Software Clones. Textbook Chapter 2.
Wed 17 SepClone Management (A)[9] E. Duala-Ekoko and M.P. Robillard. Tracking Code Clones in Evolving Software. In Proceedings of the 29th International Conference on Software Engineering, pages 158-167, May 2007.
Mon 22 SepAspect-Oriented Programming (R)[10] T. Elrad et al. Introduction to AOP. Communications of the ACM, 44(10), 2001.
[11] K. Mens and T. Tourwé. Evolution Issues in Aspect-Oriented Programming. Textbook Chapter 9.
Wed 24 SepStatic and Dynamic Analysis for Software Engineering[12] F. Tip. A survey of program slicing techniques. Journal of programming languages, 3:121-189, 1995. [Chapters 1-3]
[13] T. Reps et al. The use of program profiling for software maintenance with applications to the year 2000 problem. Software Engineering Notes 22(6):432-449, 1997.
Mon 29 SepFault Detection (O)[14] Z. Li and Y. Zhou. PRMiner: Automatically Extracting Implicit Programming Rules and Detecting Violations in Large Software Code. Software Engineering Notes 30(5):306-315, 2005.
Wed 1 Oct Fault Detection (C)[15] S. Hangal and M.S. Lam. Tracking down software bugs using automatic anomaly detection. In Proceedings of the 24th International Conference on Software Engineering, 2002.
Mon 6 OctValidation in Software Engineering Research[16] D.E. Perry et al.. Empirical Studies of Software Engineering: A Roadmap. In Proceedings of the 22nd International Conference on Software Engineering (The Future of Software Engineering), 2000.
Wed 8 OctProject Meetings
Mon 13 OctNo class (Thanksgiving)
Wed 15 OctMining Software Repositories[17] Zimmermann et al. Predicting Bugs from History. Textbook Chapter 4.
Mon 20 OctSoftware Visualization (O)[18] D'Ambros et al., Analyzing Software Repositories to Understand Software Evolution. Textbook Chapter 3.
Wed 22 OctProgramming Environments[19] A. Zeller. The Future of Programming Environments: Integration, Synergy, and Assistance. In Proceedings of the Future of Software Engineering at the 29th International Conference on Software Engineering, 2007.
Mon 27 OctRecommendation Systems (C)[20] M.P. Robillard. Topology Analysis of Software Dependencies. ACM Transactions on Software Engineering and Methodology, 17(4):Article 18, August 2008
Wed 29 OctRecommendation Systems (O)[21] R.T. Holmes and G.C. Murphy. Using structural context to recommend source code examples. In Proceedings of the 27th International Conference on Software Engineering, 2005.
Mon 3 NovFeature Location (R)[22] Liu et al. Feature location via information retrieval based filtering of a single scenario execution trace. In Proceedings of the 22nd IEEE/ACM International Conference on Automated Software Engineering, 2007.
Wed 5 NovObject-Oriented Reengineering (A)[23] S. Demeyer. Object-Oriented Reengineering. Textbook Chapter 5.
Mon 10 NovEvolution and Testing[24] Moonen et al. On the Interplay Between Software Testing and Evolution and its Effect on Program Comprehension. Textbook Chapter 8.
Wed 12 NovNo class (Projects)
Mon 17 NovRefactoring (C)[25] Dig and Johnson. How do APIs Evolve? A Story of Refactoring. Journal of Software Maintenance and Evolution: Research and Practice. 18(2):83-107, 2006.
Wed 19 NovAPI Evolution (R)[26] B. Dagenais and M.P. Robillard. Recommending Adaptive Changes for Framework Evolution. In Proceedings of the 30th ACM/IEEE International Conference on Software Engineering, pages 481-490, May 2008.
Mon 24 NovMigration of Legacy Systems (A)[27] Hainaut et al. Migration of Legacy Information Systems. Textbook Chapter 6.
Wed 26 NovArchitecture Evolution (R)[28] Barais et al. Software Architecture Evolution. Textbook Chapter 10.
Mon 1 DecWorkshop
Wed 2 DecWorkshop


DeliverableDate and Time

Project 1: System description email due.24 Sep 11:59pm
Project 1: Report due.19 Oct 11:59pm
Project 2: Project description email due.7 Oct, 11:59pm
Project 2: Report due.28 Nov Apr 11:59pm
Project 2: Presentations Part 1.1 Dec, 2:30-4:00pm
Project 2: Presentations Part 2.2 Dec, 10:00-11:30am
Project 2: Demo.Any time after Dec 2
Final exam: released8 Dec, 11:00am
Final exam: due9 Dec, 11:00am

Links and Documents