CSCI 680 - Software Maintenance and Evolution

Hours and Location

  • Fall 2020: Tuesdays/Thursdays, 9:30am - 10:50am via Zoom
  • Fall 2019: Tuesdays/Thursdays, 3:30pm - 4:50pm at Tyler Hall 132


Software maintenance and evolution are essential activities in the development of a software system. They account for more than half of the resources invested in a project. To reduce such costs, software stakeholders can adopt different strategies.

In this course, students will be introduced to principles and techniques of software maintenance and evolution. The course will cover well-established techniques and recent advances in the following topics:

  • Software change management
  • Software quality measurement
  • Software quality assurance
  • Mining of software repositories
  • Software refactoring
  • Defect prediction
  • Defect management

The course will mainly include lectures given by the instructor. The students will complete assignments related to the course topics, read and make presentations of a few research papers, and complete a term project. The students are expected to actively participate in class discussions.

Reference books

  • Software Evolution and Maintenance – A Practitioner’s Approach - By Pruyadarshi Tripathy and Kshirasagar Naik (ISBN 978-0-470-60341-3)
  • Effective Software Maintenance and Evolution: A Reuse-Based Approach - by Stanislaw Jarzabek (ISBN 0-8493-3592-2)
  • Software Evolution - by Tom Mens & Serge Demeyer (ISBN 978-3-642-09529-0)
  • Refactoring: Improving the Design of Existing Code - by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts (ISBN: 978-0201485677)