CS 245 - Software Evolution
Fall 2008



Instructor: Iulian Neamtiu

Lectures: MWF 01:10 p.m. - 02:00 p.m., HMNSS 1502

Office hours: MWF 02:10 p.m. - 03:10 p.m.

Grading: Project (50%) + Final Exam (35%) + Class participation (15%). Homeworks count toward class participation.

Final exam: Take-home, due Dec. 13

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.


Date Topic Reading Notes
Sep 26 Introduction    
Sep 29 Software processes Sommerville, Ch. 4, pp 64--82 (up to sec. 4.4)  
Oct 1 Process activities    
Oct 3 Software evolution overview Sommerville, Ch. 21  
Oct 6 No silver bullet No Silver Bullet: Essence and Accidents of Software Engineering Homework 1 posted
Oct 8 "No silver bullet" reloaded: retrospective on "essence and accidents of software engineering"
"No silver bullet" refired (Brooks, Ch. 17)
Oct 10 Rapid software development Sommerville, Ch. 17, pp 391--405 (up to sec. 17.3)  
Oct 13 XP continued, Agile vs plan-driven methods Get Ready for Agile Methods, with Care  
Oct 15 Mythical man-month Brooks: Ch. 2 (full), Ch. 11 (full), Ch. 19 (pp 265--271, 273--275)  
Oct 17 Recent topics in SE Mens, Wermelinger, Ducasse, Demeyer, Hirschfeld, and Jazayeri, Challenges in Software Evolution
Homework 1 due (at the beginning of class)
Oct 20 Fault localization No reading. Guest lecture by Dennis Jeffrey  
Oct 22 Software Aging Parnas, Software Aging Pick project topic
Oct 24 SE for C programs Neamtiu, Foster and Hicks, Understanding Source Code Evolution Using Abstract Syntax Tree Matching
Raghavan, Rohana, Leon, Podgurski, and Augustine, Dex: A Semantic-Graph Differencing Tool for Studying Changes in Large Code Bases
Oct 27 SE for Java programs Dig and Johnson, The Role of Refactorings in API Evolution Homework 2 due (at the beginning of class)
Oct 29 Ren, Shah, Tip, Ryder and Chesley, Chianti: a tool for change impact analysis of java programs  
Oct 31 Apiwattanapong, Orso, and Harrold, A Differencing Algorithm for Object-Oriented Programs  
Nov 3 Open source Mockus, Fielding, and Herbsleb, Two case studies of open source software development: Apache and Mozilla  
Nov 5 SE for OS kernels Spinellis, A tale of four kernels Project outline due
Nov 7 Padioleau, Lawall, Hansen and Muller, Documenting and automating collateral evolutions in linux device drivers  
Nov 10 Fault prediction Kim, Zimmermann, Whitehead, and Zeller, Predicting Faults from Cached History  
Nov 12 Dynamic updating Neamtiu, Hicks, Stoyle and Oriol, Practical Dynamic Software Updating for C  
Nov 14 Arnold and Kaashoek, Ksplice: Automatic rebootless kernel updates  
Nov 17 Architectural evolution van der Hoek, Rakic, Roshandel, and Medvidovic, Taming Architectural Evolution  
Nov 19 Schema evolution Ferrandina, Meyer, Zicari, Ferran, and Madec, Schema and Database Evolution in the 02 Object Database System  
Nov 21 Reengineering Sneed, Planning the reengineering of legacy systems  
Nov 24 Lehman's laws Lehman, Rules and Tools for Software Evolution Planning and Management  
Nov 26      
Nov 28 No class-Thanksgiving
Dec 1 Project presentations: Kamal, Tony and Jorge, Ben and Nathan  
Dec 3 Project presentations: Jude, Jack and Danny, Guowu and Jianbo  
Dec 5 Project presentations: Glenn, Reaz and Asif Project due


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 three classes in December). 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.