Software Evolution (COMP 762) - Winter 2007


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


News

[29 November 2006]The reading and project schedules have been finalized.

Basic Information

Instructor:Martin Robillard
Time, etc:Mondays and Wednesdays 2:35-3:55 In MC 320.
Office hours:By appointment.

Overview

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 aspect-oriented software development. 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 and of the methods for doing research in this area.

Prerequisites

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

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, write a short summary of each paper, 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 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 Analysis  20%
Project 2: Prototype Development 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 http://www.mcgill.ca/integrity for more information).

Reading Schedule

This schedule is subject to minor changes. Topics in italics indicate interactive lectures led by the instructor. All other classes consist of student-led discussions.

DateTopicReading

Wed 3 JanNo classThe first class is scheduled for Mon, Jan 8th
Mon 8 JanIntroduction to Software Evolution[1] 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.
Wed 10 JanParnas on Modularity and Evolution[2] D.L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12), 1972.
[3] D.L. Parnas. Software Aging. In Proceedings of the 16th International Conference on Software Engineering, 1994.
Mon 15 JanMixins[4] 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 17 JanTraits[5] N. Schärli, S. Ducasse, O. Nierstrasz, A.P. Black. Traits: Composable Units of Behavior. In Proceedings of the European Conference on Object-Oriented Programming, 2003.
Mon 22 JanSubject-Oriented Programming[6] W. Harrison and H. Ossher. Subject-oriented programming: a critique of pure objects. In Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications, 1993.
Wed 24 JanVirtual Modules[7] E.L.A. Baniassad and G.C. Murphy. Conceptual module querying for software reengineering. In Proceedings of the 20th International Conference on Software Engineering, 1998.
[8] Martin P. Robillard. Tracking Concerns in Evolving Source Code: An Empirical Study. In Proceedings of the 22nd IEEE International Conference on Software Maintenance, pages 479-482, September 2006
Mon 29 JanValidating Software Engineering Research[9] M. Zelkowitz and D.R. Wallace. Experimental models for validating computer technology. IEEE Computer, 31(5), 1998.
Wed 31 JanBug Finding[10] Y. Xie and D. Engler. Using redundancies to find errors. In Proceedings of the 10th ACM SIGSOFT Symposium on the Foundations of Software Engineering, 2002.
Mon 5 FebBug Finding[11] M. Bruntink, A. van Deursen, and T. Tourwé. Discovering faults in idiom-based exception handling. In Proceedings of the 28th International Conference on Software Engineering, 2006.
Wed 7 FebSlicing[12] F. Tip. A survey of program slicing techniques. Journal of programming languages, 3:121-189, 1995.
Mon 12 FebStatic Checking[13] C. Flanagan et al. Extended static checking for Java. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 2002.
Wed 14 FebInvariant Detection[14] M.D. Ernst et al. Dynamically discovering likely program invariants to support program evolution. In Proceedings of the 21st International Conference on Software Engineering, 1999.
Mon 19 FebNo class (Study break)
Wed 21 FebNo class (Study break)
Mon 26 FebImpact Analysis[15] A. Orso et al. An Empirical Comparison of Dynamic Impact Analysis Algorithms. In Proceedings of the 26th International Conference on Software Engineering, 2004.
Wed 28 FebDynamic Feature Location[16] A.D. Eisenberg and K. De Volder. Dynamic Feature Traces: Finding Features in Unfamiliar Code. In Proceedings of the 21st International Conference on Software Maintenance, 2005.
Mon 5 MarStatic Feature Location[17] W. Zhao et al. SNIAFL: Towards a static non-interactive approach to feature location. In Proceedings of the 26th International Conference on Software Engineering, 2004.
Wed 7 MarFeature Coupling[18] O. Giroux and M.P. Robillard. Detecting Increases in Feature Coupling using Regression Tests. In Proceedings of the 14th ACM SIGSOFT International Symposium on the Foundations of Software Engineering, 2006.
Mon 12 MarNo class (Projects)
Wed 14 MarNo class (Projects)
Mon 19 MarRepository Mining[19] T. Zimmermann et al. Mining version histories to guide software changes. In Proceedings of the 26th International Conference on Software Engineering, 2004
Wed 21 MarCode Clone Analysis[20] M. Kim et al. An Empirical Study of Code Clone Genealogies. In Proceedings of the 10th European Software Engineering Conference and 13th International Symposium on the Foundations of Foundations of Software Engineering, 2005
Mon 26 MarSoftware Navigation Support[21] M.P. Robillard. Automatic Generation of Suggestions for Program Investigation. In Proceedings of the Joint European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering, 2005
Wed 28 MarSoftware Navigation Analysis[22] M. Kersten and G.C. Murphy. Using task context to improve programmer productivity. In Proceedings of the 14th ACM SIGSOFT International Symposium on the Foundations of Software Engineering, 2006.
Mon 2 AprFramework Understanding[23] 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.
Wed 4 AprRecommendation Systems[24] D. Cubranic and G.C. Murphy. Hipikat: recommending pertinent software development artifacts. In Proceedings of the 25th International Conference on Software Engineering, 2003.
Mon 9 AprNo class (Easter Monday)
Wed 11 AprProject Workshop

Project Schedule

DeliverableDate and Time

Project 1: System description email due.18 Jan, 11:59pm
Project 1: Report due.16 Feb, 11:59pm
Project 2: Project description email due.23 Feb, 11:59pm
Project 2: Report due.12 Apr 11:59pm
Project 2: Presentations Part 1.11 Apr, 2:30-4:00pm
Project 2: Presentations Part 2.12 Apr, 10:00-11:30am
Project 2: Demo.Any time after Apr 12
Final exam: releasedApr 16, 11:00am
Final exam: dueApr 17, 11:00am

Links and Documents