Software Cleanup / Refactoring

Most of our past projects have involved at least some software cleanup work such as removing old, unused code and comments which make the code hard to read, as well as correcting problems with the software which cause software tools (compiler, linker, lint, etc.) to give warnings about possible source code problems.  Often refactoring (restructuring the code) of at least part of the software is also necessary in order to make it feasible to add new features to the code as well.

Software usually deteriorates over the years as maintenance work is done on it.  This deterioration is a result of quick, poorly thought out modifications made to deal with a problem or add a new feature, and the cumulative effect of many years of quick fixes and new features is that the code becomes progressively worse. Because of this the code is very difficult to read, understand, or modify, so costs go up, and new features take longer to implement.  This deterioration is not inevitable, if you have good developers and reasonable schedules, your software will actually get progressively better with each passing year and take less time to maintain.  Over the long haul, it is always cheaper (in development costs) to ignore the schedule and do each fix/feature the right way rather than the quick way.

What do you do if your code is already a mess?  Hire DeaTech Research to clean it up of course :-) We have a great deal of experience in this area, from minor cleanups so that we can add new features or fix bugs in customer software, to major cleanups where that was the primary reason we were hired to work on the code.  Clean software is usually shorter, has fewer bugs and is easier to read and modify (the number of bugs in a piece of software is normally directly proportional to the size of the source code, so shorter is usually better).  Our experience has been (in every project to date) that after we have cleaned up the code it runs considerably faster and uses far less memory as well.  In past projects we have on different projects managed to: reduce source code size by up to 70%, memory consumption by over 50% and increase performance by over an order of magnitude.