Fragment Name: Refactoring
Originating Method: XP
Definition: "A change made to the internal structure of software to
make it easier to understand and cheaper to modify without changing its observable
behavior"  [Fowler, M. (2000). Refactoring: Improving the Design of Existing Code. Addison-Wesley, Read-
ing
Description: improving code without changing its function.
Method Fragment: Refactoring
         
Contributes to
Major Softgoal sub softgoal Cont. Value from Fragment Study Situation
Improve productivity Improve productivity during code-writing iterations  ++
Text Box: S75
Productivity of iteration immediately following a refactoring shows significant bump.
   -
Text Box: S79
Non-trivial refactorings are risky and time-consuming
 -
Text Box: S80
more difficult and time-consuming than expected
Improve code quality Improve understanding of code  +
Text Box: S75
 
     
     
Reduce complexity of code  + Text Box: S76

the method that began with the most lines of code showed the most improvement after refactoring.
 ++
Text Box: S77
replace code that works with code that works better, faster or costs less to release
 +
Text Box: S79
 
       
Estimate/target improvement gain
 ++
  able to make a correspondence between refactoring type and attributes that influence external quality
     
     
 
   
       
Increase ad hoc code reusability Improve code quality  ++ S76 Code reusability measured indirectly by measuring quality indicators