Yes, the dreaded 'M' word.
You've got a workstation, source control and half a million lines of source code that you didn't write. The documentation was out of date the moment that it was approved and published. The original developers are LTAO, at the next project/startup/loony bin and not answering email.
What are you going to do?
{favourite editor} and Grep will get you started on your spelunking through the gnarling guts of the code base but what other tools should be in the maintenance engineers toolbox?
To start the ball-rolling; I don't think I could live without source-insight for C/C++ spelunking. (DISCLAIMER: I don't work for 'em).
Just like eating the elephant - one bite at a time :)
Sometimes the big picture can be a real demotivator, and you need to pick a spot and tackle it piece by piece.
Of course, you still need to choose the bit to start on. Typically this is driven mostly by the users/business with top priority specific changes required (yesterday) but if you have a little flexibility or familiarization time, metrics are often useful. Tools here vary with the technology and language, but tools like NDepend and JDepend, any built in Code Metrics (like in in Visual Studio Team System, or the various available Eclipse plugins) or a tool like Simian to get a feel for the size of the copy and paste problem.
Hopefully the number of unit tests and coverage is greater than zero, and so a good first step is to always get whatever tests you can running in a Continuous Integration environment, as a foundation for adding more tests as you learn.
And as others have said - assuming options are available for the language - a good IDE with code navigation and automated refactoring is a must (Eclipse, Visual Studio with or without ReSharper).
A couple of morale-boosting books:
Good luck :)
One of the best tools in the .Net space is ReSharper. This tool has saved me time in all aspects of the development life-cycle. They have also helped me survive while joining undocumented project/solutions.
These are some of the many features which help one perform time consuming tasks.
Code search engines can help you find you way around a huge source base.
A language-sensitive source code search engine can be found at SD Source Code Search Engine. It can handle many languages at the same time. Searches can be performed for patterns in a specific language, or patterns across languages (such as "find identifiers involving TAX"). By being sensitive to language tokens, the number of false positives is reduced, saving time for the user. It understands C, C++, C#, COBOL, Java, ECMAScript, Java, XML, Verilog, VHDL and a number of other languages.
(I'm the tool architect)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With