How to transform legacy software in to up-to-date software.
You
have to follow these steps, I will explain the steps later:
Evaluate
the state of the current software
Improve
the Understanding of the software
Generate missing documentation and charts
Improve logs and error messages
Use better names in the code
Simple refactoring
Simple test improvements
Managing
the expectation of the lower management
Building
the test fence and closing the gaps: encase the code with test
Refactoring
as long as you need it to achieve your view of up-to-date software
Well,
lets look into some of steps above.
Point
1: Evaluate the state of the current software means talk with
customers, testers, developers with every body that has a stake in
the software. Analyze the errors related with the software. Analyze
the reasons for the errors. What are the risks. These five point
gives you an raw overview and scope.
Point
2: Improve the understanding of the software means change the
software to improve the understanding without changing the
programming logic.
Point
3: Manage the expectations of your management. This is important
because managers are often no programmers. It’s hard for them to
understand why it is so important to transform the legacy code into
maintainable code. It’s important that every body understand that
you have tp spend some time now to save a lot off time in the future.
It should be clear that if you don’t transform the software then
you stuck in the future and the software is dead.
Point
4: Test are part of the product. Software without test are not
software. Legacy software has often bad, useless and sometimes
misleading test. Remove them makes the following refactorings much
easier. But fence the software with test and close all gaps. This
tests are the cornerstone of your software transformation. The test
specifies the the behavior of the software.
Point
5: Just do it. Now you have the knowledge, the support of the
management and the tests. Let’s do the refactorings.