CSCI 4980/8920: Special Topics: Software Maintenance and Evolution

Fall 2008
Meeting time: MW 7:00-8:15
Classroom: PKI 270
Instructors: Dr. Harvey Siy, PKI 281B, 402-554-2834, hsiy at unomaha dot edu, Office hours: By appointment
Dr. Parvathi Chundi, PKI 281A, 402-554-4987, pchundi at unomaha dot edu, Office hours:
Dr. Mahadevan Subramaniam, PKI 173C, 402-554-4984, msubramaniam at unomaha dot edu, Office hours:
Recommended textbook: Software Evolution, Tom Mens and Serge Demeyer, editors, Springer, 2008
Optional textbook: Software Visualization, Stephan Diehl, Springer, 2007
Prerequisites: CSCI 4830 (Introduction to Software Engineering) or equivalent

Course Description:

Organizations across all industries have huge investments in their software systems. These systems must be continually adapted to the changing needs of the organizations. Software maintenance and evolution refers to the process of modifying existing software systems to maintain their usefulness. Some studies have estimated that up to 75% of all technical software professionals are involved in some form of software maintenance activity.

This course builds on basic software engineering concepts by expanding the discussion of the issues involved in maintaining and evolving software systems. It covers advanced technical aspects of the software maintenance and evolution process including reverse engineering, reengineering, change management, mining software repositories, and semantic analysis of changes.

It is intended for students looking for practical instruction on dealing with issues of maintaining legacy software systems. Also intended for students wishing to do fundamental research in software evolution.

Course content:

  1. Overview of Software Maintenance and Evolution
    • Introduction
    • Change management
    • Version control systems
    • Release planning
    • Regression testing
  2. Analysis of Software Artifacts
    • Program slicing
    • Change impact analysis
    • Refactoring
  3. Introduction to Mining Techniques
    • Data mining
    • Machine learning
    • Text mining
    • Temporal mining
  4. Mining Software Repositories
    • Statistical background and metrics
    • Visualization
    • Defect prediction
    • Mining process and social data
  5. Research directions
    • Empirical Studies of Software Evolution
    • Semantic Change Analysis
    • Time Series Segmentation
Most of the course materials will be presented by lectures in a team teaching format.

Lecture slides

8/25/2008 Introduction to Software Evolution and Maintenance
8/27/2008 Software Configuration Management
9/03/2008 Program Comprehension
9/10/2008 Regression Testing
9/17/2008 Discussion: Survey of Program Slicing Techniques
9/24/2008 Discussion: Change Impact Analysis for Object-Oriented Programs
10/1/2008 Mining Software Repositories
10/6/2008 Laws of Software Evolution
10/8/2008 Visualizing Evolving Systems
10/13/2008 Predicting Bugs from History
10/15/2008 Processes and Software Evolution


Students will be evaluated as follows:
Projects and exercises 50%
Paper presentations 30%
Term paper 10%
Class participation 10%

Projects and exercises

There will be several projects and exercises to practice the principles and techniques learned from the lectures. These may include exerices with version control systems (e.g., Subversion), software analysis tools (e.g., BLAST), data mining tools, etc.

Paper presentations

Students will be required to present papers from a pool of selected research papers in software evolution.

Term paper

Graduate students will also write a term paper in an area of research relevant to software evolution.

Academic Integrity

Cheating will not be tolerated for project assignments, exams and other assignments. Consult the UNO Student Handbook and Department of Computer Science Policies and Procedures for formal policies about plagiarism.