Skip to content

Course Syllabus

Course: SE 4270

Division: Natural Science and Math
Department: Computer Science & Engineering
Title: Software Maintenance Practices

Semester Approved: Spring 2020
Five-Year Review Semester: Summer 2025
End Semester: Fall 2025

Catalog 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.


Semesters Offered: Fall
Credit/Time Requirement: Credit: 3; Lecture: 3; Lab: 0

Prerequisites: CS 3630 Mobile Application Development

Corequisites: SE 4230 SE 4400


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:
Organize and write code with a primary focus of readability and ease of understanding. This will be assessed through homework exercises, quizzes, exams and/or project work.

Safely isolate areas of existing code to bring them under test. This will be assessed through homework exercises, quizzes, exams and/or project work.

Refactor existing code to apply proven application architectures. This will be assessed through homework exercises, quizzes, exams and/or project work.

Extract dependencies from existing code to enable testing and separation of concerns. This will be assessed through homework exercises, quizzes, exams and/or project work.


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


Key Performance Indicators:
Homework 20 to 40%

Quizzes 0 to 20%

Exams 0 to 30%

In-class participation 0 to 15%

Final project 10 to 40%


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

Maximum Class Size: 24
Optimum Class Size: 18