Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best Tools for Software Maintenance Engineering

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).

like image 337
Simon Peverett Avatar asked Sep 24 '08 14:09

Simon Peverett


3 Answers

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 :)

like image 101
Matt Ryan Avatar answered Sep 28 '22 02:09

Matt Ryan


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.

  • Code Refactoring
  • Code Navigation
  • Code Analysis

These are some of the many features which help one perform time consuming tasks.

like image 27
2 revs, 2 users 89% Avatar answered Sep 28 '22 02:09

2 revs, 2 users 89%


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)

like image 29
Ira Baxter Avatar answered Sep 28 '22 02:09

Ira Baxter