Date post: | 27-Jun-2015 |
Category: |
Technology |
Upload: | denis-kondratenko |
View: | 277 times |
Download: | 0 times |
Legacy codeDevelopment and Maintenance
● Code after deployment● Successful● Long-lasting software● Meets customers’ needs● Hard to evolve:
○ design degradations○ too many use cases○ many different customers
What is the Legacy code?
Lustre® FSparallel distributed file system
● C● > 600 KLOC● kernel space code● https://github.com/Xyratex/lustre-stable/
Development and Sustaining teams
Development Cycle unpredictable
priority
changing
estim
atio
n
rough
Planing
Development
Retrospective
Nature of processesPlanning
Pulling
Lost feedback from Sustaining
Retrospective
● Defects Escapes show what missed in Quality● Feedback:
○ Process changes○ Design○ Review Checklists○ Test coverage○ Feature/Refactoring planning
Future looks bright
Tested and works. Don’t touch.
Discovered bug and hidden one
Only not used product has no bugs
Fixing bug could uncover other
Changing code always risky
Just fixing is not enough
Bugs are never ending
Legacy Quality: Continuous Refactoring
Preventive measures
“premature optimization is the root of all evil” Donald Knuth
● Refactoring SHOULD BE - proven, based on statistic and metrics○ Metrics and stat from Defects Escapes○ Code metrics (Complexity, LOC based stat, Function
points, etc)○ SCM:
■ churn (added + changed)■ age of changes (freshness)■ distance■ etc
Legacy Quality: Continuous Refactoring
● Chris Lewis and Rong Ou, “Bug Prediction at Google”● Bug Prediction, Bug Introducing Changes, BugCache,
FixCache, Predicting faults and etc. Key phrases to search in web
Readings