CPSC 457 Lecture Notes - Lecture 1: The Repository, Iterative And Incremental Development, Software Maintenance
Document Summary
Refactoring: is the disciplined process of changing the internal structure of software to make it easier to understand and maintain, without changing its external observable behaviour. Goal is to improve the design of the code after it is written and working. Done in an orderly way to avoid introducing bugs. Every step is tested (usually with unit tests) Version control allows us to undo a step. Even a well-designed software system decays as it is modified over time. Loses its design integrity as new features and fixes are added in an ad hoc way i. e. as changes are hacked in. A bad or chaotic design can be radically improved with a series of small simple changes. In the traditional waterfall lifecycle, design precedes coding, and is never revisited. Refactoring is a form of redesign that can be superimposed on the iterative lifecycle. A version control system: stores source code files for a project in a central place.