Skip to content

Course Syllabus

SE 4270 Software Maintenance Practices

  • Division: Natural Science and Math
  • Department: Computer Science & Engineering
  • Credit/Time Requirement: Credit: 3; Lecture: 3; Lab: 0
  • Prerequisites: CS 3630 Mobile Application Development
  • Corequisites: SE 4230 SE 4400
  • Semesters Offered: Fall
  • Semester Approved: Spring 2020
  • Five-Year Review Semester: Summer 2025
  • End Semester: Fall 2025
  • Optimum Class Size: 18
  • Maximum Class Size: 24

Course Description

Develop skills necessary to work with existing codebases. Bring legacy code under test to enable the development of new features on top of mature code. Most professional development work is not done on new projects, most work is done on existing codebases which requires unique skills.

Justification

Maintaining an existing codebase (often that you didn't write yourself) is far more common than creating a new project from scratch. This class specifically focuses on those practices that are different in maintaining existing systems. This is a required course as part of the Software Engineering Bachelor's degree.

Student Learning Outcomes

  1. Organize and write code with a primary focus of readability and ease of understanding.
  2. Safely isolate areas of existing code to bring them under test.
  3. Refactor existing code to apply proven application architectures.
  4. Extract dependencies from existing code to enable testing and separation of concerns.

Course Content

Understand the mechanics of software change: adding features, fixing bugs, improving design, optimizing performance.
Getting legacy code into a test harness
Writing tests that protect you against introducing new problems
Techniques that can be used with any language
Accurately identify where code changes need to be made
Handling applications that don't seem to have any structure