News
- Final exam will be posted on Thursday May 9 at noon, due Friday May 10 at noon
- Assignment 3 posted on iLearn, due May 24 at 11:59 p.m.
- Assignment 2 posted on iLearn, due April 19 at 11:59 p.m.
- Assignment 1 posted on iLearn, due April 12 at 11:59 p.m.
- The first lecture will be on Tuesday, March 29
Overview
Instructor: Iulian Neamtiu
Lectures: Tuesdays 05:10 p.m. - 08:00 p.m., MSE 0011
Office hours: Tuesdays 02:00 p.m. - 04:00 p.m. or by appointment
Grading: Project (45%) + Final Exam (25%) + Class participation (15%) + Homeworks (15%).
Final exam: Take-home, June 9
Synopsis: Covers the principles, tools, and techniques for disciplined software evolution. Includes migration strategies, change patterns, software maintenance, legacy system reengineering, reverse engineering for program understanding, middleware, source code analysis, software visualization, and program transformation tools.
Schedule
Date | Topic | Reading | Notes |
March 29 | Introduction Software processes Process activities |
Sommerville: Ch.1 (optional) Ch. 2 (excluding 2.4), Ch. 3 Mens and Demeyer: Ch.1 |   |
April 5 | Software Evolution Mythical man-month No silver bullet |
Sommerville: Ch. 9 Brooks: Ch. 2, 11, 16, 17 (full) Ch. 19 (pp 265--271, 273--275) "No silver bullet" reloaded: retrospective on "essence and accidents of software engineering" |   |
April 12 | Software Aging Lehman's laws |
Parnas, Software
Aging Lehman, Rules and Tools for Software Evolution Planning and Management Xie, Chen, and Neamtiu, Towards a Better Understanding of Software Evolution: An Empirical Study on Open Source Software | Assignment 1 due |
April 19 | SE research Analyzing software repositories Emprirical studies |
Mens, Wermelinger, Ducasse, Demeyer, Hirschfeld, and Jazayeri, Challenges in Software Evolution Mens and Demeyer: Ch. 3, Ch. 11 | Assignment 2 due |
April 26 | Bug tossing Programming language impact on evolution |
Bhattacharya and Neamtiu, Fine-grained Incremental Learning and Multi-feature
Tossing Graphs to Improve Bug Triaging Bhattacharya and Neamtiu, Assessing Programming Language Impact on Development and Maintenance: A Study on C and C++ |   |
May 3 | Change impact analysis API evolution |
Raghavan, Rohana, Leon, Podgurski, and Augustine,
Dex: A Semantic-Graph Differencing Tool for Studying Changes
in Large Code Bases Dig and Johnson, The Role of Refactorings in API Evolution Ren, Shah, Tip, Ryder and Chesley, Chianti: a tool for change impact analysis of java programs Apiwattanapong, Orso, and Harrold, A Differencing Algorithm for Object-Oriented Programs | Project stage 1 due |
May 10 | Open source SE for OS kernels |
Mockus, Fielding, and Herbsleb, Two case studies of open source software development: Apache and Mozilla Spinellis, A tale of four kernels Padioleau, Lawall, Hansen and Muller, Documenting and automating collateral evolutions in Linux device drivers |   |
May 17 | Runtime Evolution (Dynamic updating) |
Neamtiu, Hicks, Stoyle and Oriol, Practical Dynamic Software Updating for C Arnold and Kaashoek, Ksplice: Automatic rebootless kernel updates Gupta, Jalote and Barua, A formal framework for on-line software version change | Project stage 2 due |
May 31 | Evolution support tools Schema evolution |
Begel, Khoo, and Zimmermann,
Codebook:
discovering and exploiting relationships in software repositories
Curino, Moon, and Zaniolo, Graceful Database Schema Evolution: the PRISM Workbench |   |
May 31 | Project presentations |   | Project due |
Projects
Each student is expected to complete a research project, write up the material describing the project in a similar manner to research papers, and present the project in class (in one of the last classes in May). The project can have an implementation or theoretical flavor (or both).
The instructor has suggested possible project topics, but the students are encouraged to choose their own topics (as long as they are relevant to this class).
The projects can be completed individually or in teams, with the expectation for team projects being commensurately higher than for individual projects.
Resources
- Conferences/Workshops: ICSM, ICSE, ASE, IWPSE.
- Books:
- Software Evolution by Tom Mens and Serge Demeyer
- The Mythical Man-Month by Frederick P. Brooks.
- Software Engineering by Ian Sommerville.