views:

78

answers:

3

I am a fairly novice Java programmer and I am currently working on a project to extend a piece of software that has been developed over a few years. So it has pretty big code base and the previous developers knew it well, so extending it is not going to be easy without a thorough understanding of the structure and function.

1) I had begun by trying to tackle small parts of the system and document them with mindmap. (particularly I am trying to document the interactions with external systems)

2) I have the book "code complete", which I am working through.

3) I have pointed some tools like "tattletale" at the code to get some diagrams of dependency relationships.

What other strategies should I employ, should I focus on one particular aspect?

+2  A: 
10 Start small.
20 Break things.
30 Then fix what you broke.
40 Goto 20
Jeremy
A: 

Maybe you could try to model the problem the program is meant to solve. If you have a clear understanding of the problem and limitations imposed on the solution, then it should be easier to understand the program itself. I am just guessing here, as I do not know what sort of program it is.

David
In this case its a java RCP app based on eclipse, but I've got a few projects like this coming up, so I am trying to develop a strategy to thoroughly learn this platform (rather than just learn enough, and hack it;-)
Tom
In all seriousness, it is very difficult to jump into someone elses code base, and start to make changes, regardless of the methodology or documentation techniques or modeling software. I currently maintain a piece of software, and it got handed to me over a year ago. There are places that I have not dug into yet, simply because I haven't had to yet. I think you will be spinning your wheels if you try to grasp everything up front. Maintenance programming I think is the most difficult just because you are not the original programmer and weren't there for design/methodology discussions etc.
Jeremy
I believe that it is almost impossible to understand any piece of code, without understand the problem it is supposed to solve. The better the understanding of the problem, the easier to understand the code. A clear example is code containing business rules.
David
A: 

It is important for you to find a good coach on the project. Go for a nice guy, who knows the system and who likes to answer your questions.

Also have the architect explain you the system. If it is a good one he can point you to the important parts and point you away from the parts you do not need to know (yet).

Then try picking up small issues. Even stupid error messages and go from there. In a few weeks you should be able to grasp the basics of the system.

Good luck!

Natan Cox