[29 November 2006] | The reading and project schedules have been finalized. |
Instructor: | Martin Robillard |
Time, etc: | Mondays and Wednesdays 2:35-3:55 In MC 320. |
Office hours: | 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 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.
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):
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.
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.
Date | Topic | Reading | |
Wed 3 Jan | No class | The first class is scheduled for Mon, Jan 8th | |
Mon 8 Jan | Introduction 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 Jan | Parnas 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 Jan | Mixins | [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 Jan | Traits | [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 Jan | Subject-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 Jan | Virtual 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 Jan | Validating Software Engineering Research | [9] M. Zelkowitz and D.R. Wallace. Experimental models for validating computer technology. IEEE Computer, 31(5), 1998. | |
Wed 31 Jan | Bug 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 Feb | Bug 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 Feb | Slicing | [12] F. Tip. A survey of program slicing techniques. Journal of programming languages, 3:121-189, 1995. | |
Mon 12 Feb | Static 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 Feb | Invariant 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 Feb | No class (Study break) | ||
Wed 21 Feb | No class (Study break) | ||
Mon 26 Feb | Impact 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 Feb | Dynamic 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 Mar | Static 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 Mar | Feature 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 Mar | No class (Projects) | ||
Wed 14 Mar | No class (Projects) | ||
Mon 19 Mar | Repository 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 Mar | Code 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 Mar | Software 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 Mar | Software 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 Apr | Framework 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 Apr | Recommendation 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 Apr | No class (Easter Monday) | ||
Wed 11 Apr | Project Workshop |
Deliverable | Date 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: released | Apr 16, 11:00am | |
Final exam: due | Apr 17, 11:00am |