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
- Organize and write code with a primary focus of readability and ease of understanding.
- Safely isolate areas of existing code to bring them under test.
- Refactor existing code to apply proven application architectures.
- 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
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