Syllabus

290G - Topics in Software Engineering - Winter 2007

Software Evolution

Week 0: Software Evolution Introduction

January 4:
Course overview, introduction to Kenyon software evolution infrastructure

Week 1: Overview of Software Evolution

Janauary 9: Does Code Decay?
Due: Software Aging
Due: Does Code Decay? Assessing the Evidence from Change Management Data

January 11: SPE Classification of Evolution
Due: Software Evolution
Due: Facets of Software Evolution

Week 2 - Open Source Software Evolution, Refactoring

January 16: Open Source Software Evolution
Due: Two Case Studies of Open Source Software Development: Apache and Mozilla
Due: Understanding Open Source Software Evolution

January 18: Refactoring
Due: A Survey of Software Refactoring
Due: Refactoring Practice: How it is and How it Should be Supported - An Eclipse Case Study

Week 3 - Evolution Research Infrastructure

January 23: Repository Extraction
Due: Populating a Release History Database from Version Control and Bug Tracking Systems
Due: Preprocessing CVS Data for Fine-Grained Analysis
Due: Facilitating Software Evolution Research with Kenyon
Due: Term project description (1 page)

January 25: Analytic Techniques
Due: Automatic Identification of Bug-Introducing Changes
Due: When Functions Change Their Names: Automatic Detection of Origin Relationships

Week 4 - Code Clones, Metrics

January 30: Code Clones and their Detection
Due: An Ethnographic Study of Copy and Paste Programming Practices in OOPL
Due: Assessing the Benefits of Incorporating Function Clone Detection in a Development Process

February 1: Metrics
Due: Future Trends in Software Evolution Metrics
Due: Visualizing Multiple Evolution Metrics
Due: Finding Refactorings via Change Metrics

Week 5 - Co-Change Analysis

Feburary 6:
Due: CVS Release History Data for Detecting Logical Couplings
Due: Yesterday's Weather: Guiding Early Reverse Engineering Efforts by Summarizing the Evolution of Changes

February 8:
Due: Improving Evolvability through Refactoring
Due: Fine-Grained Analysis of Change Couplings

Week 6 - Recovery and Evolution of Architecture and Design

February 13: Architecture
Due: An Integrated Approach for Studying Architectural Evolution
Due: Tracking Concerns in Evolving Source Code: An Empirical Study
Due: An Orchestrated Multi-view Software Architecture Reconstruction Environment

Feburary 15: Design
Due: A Study of Design Characteristics in Evolving Software Using Stability as a Criterion
Due: Refactoring Detection based on UMLDiff Change-Facts Queries
Due: Micro Pattern Evolution

Week 7 - Recommendation Systems

February 20:
Due: Mining Version Histories to Guide Software Changes
Due: Hipikat: Recommending Pertinent Software Development Artifacts
Due: Rough draft of final project report

Feburary 22:
No class.

Week 8 - Visualization, Software Instabilities

February 27: Visualization
Due: Unifying Artifacts and Activities in a Visual Tool for Distributed Software Development Teams
Due: Visualizing Software Changes
Due: Visualization of CVS Repository Information

March 1: Software Instabilities
Due: Software Instability Analysis: Co-Change Analysis Across Configuration-Based Dependence Relationships, pp. 21-39, and pp. 50-80.

Week 9 - Bug Localization and Prediction

March 6:
No class.

March 8:
No class.

March 9:
Class meets in E2 392, 3PM.
Due: Memories of Bug Fixes
Due: Predicting Faults from Cached History

Week 10 - Social Network Evolution

March 13: Social Network Evolution
Due: Mining Email Social Networks

March 15:
Due: In-class presentation of term research project

March 20:
Due: Final project report

Last modified: 3/5/2007