|[9 September 2008]||Reading list and project dates finalized.|
|[27 June 2008]||Course schedule posted.|
|Time, etc:||Mondays and Wednesdays 2:35-3:55 In MC 320.|
|Office hours:||Monday and Wednesdays after class or by appointment.|
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
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
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
The grading scheme for the course is as follows (subject
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%|
Intangibles may be considered in assigning grades.
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 http://www.mcgill.ca/integrity
for more information).
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 Sep||Introduction to Software Evolution|| T. Mens. Introduction and
Roadmap: History and Challenges of Software Evolution. Textbook
 D.L. Parnas. Software Aging. In Proceedings of the 16th International Conference on Software Engineering, 1994.
|Mon 8 Sep||Modularity||
D.L. Parnas. Some Software Engineering Principles. Infotech
State of the Art Report on Structured Analysis and Design,
Infotech International, 1978.|
 D.L. Parnas. D.L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12), 1972.
* 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 Sep||Empirical Studies of Software Evolution||
J. Fernandez-Ramil et al. Empirical Studies of Open Source
Evolution. Textbook Chapter 11.|
* 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 Sep||Clone Detection and Analysis|| R. Koschke. Identifying and Removing Software Clones. Textbook Chapter 2.|
|Wed 17 Sep||Clone Management (A)|| 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 Sep||Aspect-Oriented Programming (R)|| T. Elrad et al. Introduction to
AOP. Communications of the ACM, 44(10), 2001.|
 K. Mens and T. Tourwé. Evolution Issues in Aspect-Oriented Programming. Textbook Chapter 9.
|Wed 24 Sep||Static and Dynamic Analysis for Software Engineering||
F. Tip. A
survey of program slicing techniques. Journal of programming
languages, 3:121-189, 1995. [Chapters 1-3]|
 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 Sep||Fault Detection (O)|| 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)|| 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 Oct||Validation in Software Engineering Research|| 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 Oct||Project Meetings|
|Mon 13 Oct||No class (Thanksgiving)|
|Wed 15 Oct||Mining Software Repositories|| Zimmermann et al. Predicting Bugs from History. Textbook Chapter 4.|
|Mon 20 Oct||Software Visualization (O)|| D'Ambros et al., Analyzing Software Repositories to Understand Software Evolution. Textbook Chapter 3.|
|Wed 22 Oct||Programming Environments|| 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 Oct||Recommendation Systems (C)|| M.P. Robillard. Topology Analysis of Software Dependencies. ACM Transactions on Software Engineering and Methodology, 17(4):Article 18, August 2008|
|Wed 29 Oct||Recommendation Systems (O)|| 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 Nov||Feature Location (R)|| 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 Nov||Object-Oriented Reengineering (A)|| S. Demeyer. Object-Oriented Reengineering. Textbook Chapter 5.|
|Mon 10 Nov||Evolution and Testing|| Moonen et al. On the Interplay Between Software Testing and Evolution and its Effect on Program Comprehension. Textbook Chapter 8.|
|Wed 12 Nov||No class (Projects)|
|Mon 17 Nov||Refactoring (C)|| 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 Nov||API Evolution (R)|| 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 Nov||Migration of Legacy Systems (A)|| Hainaut et al. Migration of Legacy Information Systems. Textbook Chapter 6.|
|Wed 26 Nov||Architecture Evolution (R)|| Barais et al. Software Architecture Evolution. Textbook Chapter 10.|
|Mon 1 Dec||Workshop|
|Wed 2 Dec||Workshop|
|Deliverable||Date 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: released||8 Dec, 11:00am|
|Final exam: due||9 Dec, 11:00am|