[9 October 2005] | The Project 2 instructions are available |
[12 September 2005] | The Project 1 instructions are available |
[29 August 2005] | The first lecture is on Monday 12 September. |
[22 June 2005] | The reading list is up (see Schedule). |
Instructor: | Martin Robillard |
Time, etc: | Mondays and Wednesdays 2:35-3:55 In MC 103. |
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 should look like this (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 | 10% | |
Final exam: | 15% | |
Paper Summaries: | 5% | |
Class participation | 10% |
Intangibles may be considered in assigning grades.
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.
Schedule
Date | Topic | Reading, deadlines, etc. |
Mon Sep 5 | No class (Labor day) | |
Wed Sep 7 | No class (FSE Conference) | Class time should be used to get a head start on the reading material. It's a bit heavy at the beginning. Now is your chance. |
Mon Sep 12 | Introduction to Software Evolution | |
Wed Sep 14 | Separation of Concerns and Modularity | |
Mon Sep 19 | Fine-grained Decomposition | [1] M. VanHilst and D. Notkin. Decoupling
change from design. In Proceedings of the 4th ACM SIGSOFT
Symposium on the Foundations of Software Engineering,
1996. [2] A.P. Black and N. Schärli. Traits: Tools and Methodology. In Proceedings of the 26th International Conference on Software Engineering, 2004. Project 1: Email your system description to the instructor (before class). |
Wed Sep 21 | Aspect-oriented Programming | [3] 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. [4] M. Mezini and K. Ostermann. Conquering Aspects with Caesar. Proceedings of the 2nd international conference on Aspect-oriented software development, 2003. |
Mon Sep 26 | Aspect Interfaces | [5] M. Rinard, A. Salcianu, and S. Bugrara.
A Classification system and analysis for aspect-oriented
programs. In Proceedings of the 12th ACM SIGSOFT
International Symposium on the Foundations of Software
Engineering, 2004. [6] G. Kiczales and M. Mezini. Aspect-oriented programming and modular reasoning. In Proceedings of the 27th International Conference on Software Engineering, 2005. |
Wed Sep 28 | Introduction to Reverse Engineering | |
Mon Oct 3 | Program Slicing | |
Wed Oct 5 | Dynamic Analysis | [7]
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. [8] J. Law and G. Rothermel. Whole program path-based dynamic impact analysis. In Proceedings of the 25th International Conference on Software Engineering, 2003. |
Mon Oct 10 | No class (Thanksgiving) | |
Wed Oct 12 | Program Checking | [9] 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. [10] C. Flanagan et al. Extended static checking for Java. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 2002. Project 1 due at 12 noon (by email) |
Mon Oct 17 | No class (reading only) | |
Wed Oct 19 | Validating Research in Software Engineering | |
Mon Oct 24 | Dynamic Feature Location | [11] T. Eisenbarth, R. Koschle,
D. Simon. Locating Features in Source Code. IEEE
Transactions on Software Engineering, 23(3), 2003. Project 2: Email your project description to the instructor (before class) |
Wed Oct 26 | Software Repository Mining | [12] T. Zimmermann et al. Mining version histories to guide software changes. In Proceedings of the 26th International Conference on Software Engineering, 2004. |
Mon Oct 31 | Project Consultation I | No reading this week. This class time will be reserved for one-on-one meetings with the instructor to review the project proposal. |
Wed Nov 2 | Project Consultation II | No reading this week. This class time will be reserved for one-on-one meetings with the instructor to review the project proposal. |
Wed Nov 7 | Virtual Modules | [131]
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. [14] M.P. Robillard and G.C. Murphy. Concern Graphs: finding and describing concerns using structural program dependencies. In Proceedings of the 24th International Conference on Software Engineering, 2002. |
Mon Nov 9 | Recommendation Systems | [15] D. Cubranic and G.C. Murphy. Hipikat:
Recommending Pertinent Software Development Artifacts. In
Proceedings of the 25th International Conference on Software
Engineering, 2003. [15] 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 Nov 14 | Information Retrieval-Based Approaches | [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. [18] A. Marcus, V. Rajlich, J. Buchta, M. Petrenka, A. Sergeyev. Static techniques for concept location in object-oriented code. In Proceedings of the 13th International Workshop on Program Comprehension, 2005. |
Mon Nov 16 | Program Navigation Analysis | [19] M.P. Robillard and G.C. Murphy. Automatically
Inferring Concern Code from Program Investigation
Activities. In Proceedings of the 18th International
Conference on Automated Software Engineering, 2003. [20] J. Singer, R. Elves, and M.-A. Storey. NavTracks: Supporting Navigation in Software Maintenance. In Proceedings of the 21st International Conference on Software Maintenance, 2005. |
Mon Nov 21 | Presenting Scattered Concerns | [21] R. DeLine, A. Khella, M. Czerwinski,
G. Robertson. Towards understanding programs through wear-based
filtering. In Proceedings of the 2005 ACM Symposium on
Software Visualization, 2005. [22] M. Kersten and G.C. Murphy. Mylar: a degree-of-interest model for IDEs. In Proceedings of the 4th International Conference on Aspect-Oriented Software Development, 2005. |
Wed Nov 23 | ConformanceChecking | [23]
G.C. Murphy, D. Notkin, K. Sullivan.
Software reflexion models: bridging the gap between source and
high-level models. In Proceedings of the 3rd ACM SIGSOFT
Symposium on the Foundations of Software Engineering,
1995. [24] J. Aldrich, C. Chambers, and D. Notkin. ArchJava: connecting software architectures to implementation. In Proceedings of the 24th International Conference on Software Engineering, 2002. |
Mon Nov 28 | Workshop 1 | Project presentations |
Wed Nov 30 | Workshop 2 | Project presentations |
Thu Dec 1 | Review for the Final | |
Mon Dec 5 | Course wrap-up | Email your project 2 report to the instructor (by 11:59am) |
Later | Course wrap-up | Project 2 demonstrations (schedule time with instructor) |