Software Evolution (COMP 762) - Fall 2005


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


News

[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).

Basic Information

Instructor:Martin Robillard
Time, etc:Mondays and Wednesdays 2:35-3:55 In MC 103.
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 should look like this (subject to change):

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.

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, deadlines, etc.
Mon Sep 5No class (Labor day)
Wed Sep 7No 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 12Introduction to Software Evolution
  • L.A. Belady and M.M. Lehman. A Model of Large Program Development. IBM Systems Journal, 15(3), 1976 (except "Formal modeling...", pages 239-248)
  • D.L. Parnas. Software Aging. In Proceedings of the 16th International Conference on Software Engineering, 1994.
  • 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 Sep 14Separation of Concerns and Modularity
  • D.L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12), 1972.
  • T. Elrad, R.E. Filman, and A. Bader. Introduction to AOP. Communications of the ACM, 44(10), 2001.
  • G. Kiczales et al. Getting started with AspectJ. Communications of the ACM, 44(10), 2001.
  • Mon Sep 19Fine-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 21Aspect-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 26Aspect 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 28Introduction to Reverse Engineering
  • E.J. Chikofsky and J.H. Cross II. Reverse engineering and design recovery: a taxonomy. IEEE Software, 7(1), 1990.
  • Mon Oct 3Program Slicing
  • F. Tip. A survey of program slicing techniques. Journal of programming languages, 3:121-189, 1995.
  • Wed Oct 5Dynamic 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 10No class (Thanksgiving)
    Wed Oct 12Program 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 17No class (reading only)
  • M. Zelkowitz and D.R. Wallace. Experimental models for validating computer technology. IEEE Computer, 31(5), 1998.
  • B.A. Kitchenham et al. Preliminary guidelines for empirical research in software engineering. IEEE Transactions on Software Engineering, 28(8), 2002.[only sections 1,2, 3.1, 4.1, 5.1, 6.1, 7.1, 8 and all the guidelines (in italics in the text)]
  • Wed Oct 19Validating Research in Software Engineering
  • C.B. Seaman. Qualitative methods in empirical studies of software engineering. IEEE Transactions on Software Engineering, 25(4), 1999 [except 2.2 and 4].
  • Mon Oct 24Dynamic 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 26Software 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 31Project 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 2Project Consultation IINo reading this week. This class time will be reserved for one-on-one meetings with the instructor to review the project proposal.
    Wed Nov 7Virtual 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 9Recommendation 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 14Information 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 16Program 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 21Presenting 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 23ConformanceChecking[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 28Workshop 1Project presentations
    Wed Nov 30Workshop 2Project presentations
    Thu Dec 1Review for the Final
    Mon Dec 5Course wrap-upEmail your project 2 report to the instructor (by 11:59am)
    LaterCourse wrap-upProject 2 demonstrations (schedule time with instructor)

    Links and Documents

    The links below are all displayed in a new window.