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, Spring
- Semester Approved: Spring 2026
- Five-Year Review Semester: Fall 2030
- End Semester: Fall 2031
- Optimum Class Size: 18
- Maximum Class Size: 24
Course Description
Students taking this course will develop the skills necessary to work with existing codebases and to bring legacy code under test, enabling the development of new features on top of mature code. Most professional development work is not done on new projects; it is done on existing codebases, which require unique skills. Students will understand the mechanics of software change: adding features, fixing bugs, improving design, optimizing performance.
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
- Upon successful completion of this course, students will be able to organize and write code with a primary focus of readability and ease of understanding.
- Upon successful completion of this course, students will be able to safely isolate areas of existing code to bring them under test.
- Upon successful completion of this course, students will be able to refactor existing code to apply proven application architectures.
- Upon successful completion of this course, students will be able to extract dependencies from existing code to enable testing and separation of concerns.
- Upon successful completion of this course, students will be able to students will demonstrate an ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives. (ABET-SLO5)
Course Content
Topics in this course may include the following: getting legacy code into a test harness, writing tests that protect against introducing new problems, techniques that can be used with any language, accurately identifying where code changes are needed, and handling applications that don't seem to have any structure.
Key Performance Indicators: Homework 20 to 40%Quizzes 0 to 45%Exams 0 to 55%In-class participation 0 to 25%Final project 10 to 75%Representative Text and/or Supplies: Working Effectively with Legacy Code (Current edition) Refactoring: Improving the Design of Existing Code (Current edition) Pedagogy Statement: This course will be delivered through in class discussions, lecture and project mentoring.Instructional Mediums: Lecture