Carnegie Mellon University

Electrical and Computer Engineering

College of Engineering

Course Information

18-664: Software Refactoring

Units:

12

Description:

Refactoring aims to improve the system's structural quality without changing its behavior. It is essential practice to guarantee programs' longevity since maintenance activities often degrade the system structure. Thus, it is in the software companies' best interests to ensure that developers know how to refactor their systems. Unfortunately, refactoring is not a trivial task; it can change the entire system structure! Undesirable effects can occur if developers do not know how to carry on these changes. They can degrade the structural quality and even introduce defects.

The focus of the course is to learn how to confidently apply refactoring operations. Students will learn to apply refactoring for different granularity levels in a software system and additional resources such as APIs, databases, and test code. By the end of the course, students are expected to (i) recognize symptoms in the source code that warrant refactoring; (ii) apply refactoring at the architectural level and code level; (iii) evaluate the impact of the applied refactoring operations, (iv) design, implement, and deploy a tool to support software refactoring.

This course is especially intended for ECE students pursuing a Master of Science degree in Software Engineering.


Last Modified: 2022-11-16 2:17PM

Semesters offered:

  • Spring 2023
  • Spring 2022