Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / November 2005

Tip: Looking for answers? Try searching our database.

optimize a takeover process ...

Thread view: 
Giovanni Azua - 28 Oct 2005 13:31 GMT
Hi all,

Have a problem related to taking over a large J2EE project
with +1500 java classes.

Had a ten minutes chat with the developer who is
leaving and the remarks are:

- It works as is.
- Low percent of test coverage of the source code.
- Project not really carefully designed from scratch. I assume
 there is lot of "code smell" and also probably lack of e.g. design
patterns.
- It would teoretically take +1 year for a new developer
 to feel confortable to modify the code fluently, assuming the
 new developer is confortable with all the technologies utilized.

I will in theory work close with the original developer for a month
and bellow is my plan to get the most out of it:

- Get most documentation from the functional concerns
 implemented not covered by third parties.

- Ask for all possible documentation, specifically
 "meta-documentation", list of all technologies utilized and
 where to find documentation i.e. in case of proprietary
 frameworks etc.

- Get tools for "automatic documentation":

      a) Reverse Engineer to UML.
      b) Execution flows (profiler).
      c) Profiler that provides automatic source code test
          coverage e.g. Parasoft JTest. Then would be possible
          to refactor to patterns maintaining functionality "as is".
      d) Code Metrics tool to estimate the quality of the
          sources.

Anyone recommend a better way?

Thanks in advance,
Giovanni
Roedy Green - 28 Oct 2005 14:05 GMT
On Fri, 28 Oct 2005 14:31:02 +0200, "Giovanni Azua"
<bravegag@hotmail.com> wrote, quoted or indirectly quoted someone who
said :

>Have a problem related to taking over a large J2EE project
>with +1500 java classes.

What you want more than anything else is a one sentence to one
paragraph inserted about what each class is for and anything unusual
you should know about it.

Hire the original guy to do that.
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.

Robert Klemme - 28 Oct 2005 14:20 GMT
> On Fri, 28 Oct 2005 14:31:02 +0200, "Giovanni Azua"
> <bravegag@hotmail.com> wrote, quoted or indirectly quoted someone who
[quoted text clipped - 6 lines]
> paragraph inserted about what each class is for and anything unusual
> you should know about it.

Additionally I'd request a one to five page architectural description
(ideally including graphics) so you get an overview how the beast works.
For the details you can always look at the source code.

Good luck!

   robert
Roedy Green - 28 Oct 2005 14:41 GMT
On Fri, 28 Oct 2005 14:31:02 +0200, "Giovanni Azua"
<bravegag@hotmail.com> wrote, quoted or indirectly quoted someone who
said :

>Anyone recommend a better way?

One of my hobbyhorses in that the hardest documentation to recover is
the big picture.  For detail tho code will be eloquent.

So just sit the guy down with a few new programmers and turn on a tape
recorder. get him to just TALK baout how it all fits together. Have
people ask questions. This will be much more fun for him, and much
more productive of his time. Your own people can make the notes from
it afterward.

Have him walk through a typical transaction. Have him tell you all the
tools you use and what role they play.  Have him tell you anything you
must do periodically just to keep the thing alive.

just get him going. He will naturally tend to tell you the stuff you
need to know.

Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.

Roedy Green - 28 Oct 2005 14:46 GMT
On Fri, 28 Oct 2005 13:41:25 GMT, Roedy Green
<my_email_is_posted_on_my_website@munged.invalid> wrote, quoted or
indirectly quoted someone who said :

>just get him going. He will naturally tend to tell you the stuff you
>need to know.

Don't forget to ask the "obvious" questions.

1. what does the project do, what is it for?  

2. What does the project NOT do that you might plausibly might expect
it to?

3. what parts work well? Which parts need a rewrite?

4. What are the outstanding major things that have to done in priority
order.

5. who can you ask when you have trouble?

6. When it goes off the rails, what are the most common problems?

Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.

Giovanni Azua - 28 Oct 2005 14:55 GMT
Hi there!

Once more many thanks!

I was surprise that such a common real-life situation like this is not
covered by any Software Engineering process or methodology :) I did
not even found any articles on this real-life situation and was googling a
lot for it ... probably you Roedy could write one article about it :)

Best Regards,
Giovanni

> Don't forget to ask the "obvious" questions.
>
[quoted text clipped - 11 lines]
>
> 6. When it goes off the rails, what are the most common problems?
Giovanni Azua - 28 Oct 2005 14:51 GMT
Hi Roedy,

Many many thanks for your very valuable input!

> So just sit the guy down with a few new programmers and turn on a tape
> recorder. get him to just TALK baout how it all fits together. Have
> people ask questions. This will be much more fun for him, and much
> more productive of his time. Your own people can make the notes from
> it afterward.

This is a great idea, I did not think of it before  ... I think is perfectly
feasible.

Many thanks once more!

Best Regards,
Giovanni
Chris Uppal - 28 Oct 2005 16:26 GMT
> I will in theory work close with the original developer for a month
> and bellow is my plan to get the most out of it:

Make sure he spends some time describing the things that are (in his opinion)
wrong, or sub-optimal, in the current implementation.  Early design errors that
he couldn't fix, improvements that he'd have liked to make if there'd been
time, stuff that works but he'd like to re-write, and so on...

Get him to help /you/ wite the 6-pager architectural overview, draw any
diagrams, etc.  He'd more likely to spot ommisions and misunderstandings in
documents that you write, than he is to spot similar problems in what he
writes.

   -- chris
Roedy Green - 31 Oct 2005 05:09 GMT
On Fri, 28 Oct 2005 16:26:57 +0100, "Chris Uppal"
<chris.uppal@metagnostic.REMOVE-THIS.org> wrote, quoted or indirectly
quoted someone who said :

>Get him to help /you/ wite the 6-pager architectural overview, draw any
>diagrams, etc.  He'd more likely to spot ommisions and misunderstandings in
>documents that you write, than he is to spot similar problems in what he
>writes.

This is a general principle for eliciting detailed information from
people who are too busy.  Just write your best understanding. It will
drive them nuts to read it and not make the corrections.

The Java glossary would never even have started without this approach.

The approach works much more effectively than open ended "tell me what
I should know" questions.
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.

Leon Lambert - 03 Nov 2005 13:17 GMT
I agree with your opinion. A brief architectural overview should be a
must. It should not go too heavily into detail design but stay higher
level. This should not change too much over time as the detail design
could as the code is enhanced and refactored.

I also agree with Roedy Green in that each class should have some high
level description. This should also stay as high level as it can so it
is isn't extincted with enhancements and refactoring.

I know this will probably cause a flame war but i find UML diagrams to
be a completely useless step and tend to quickly become out of date.
They then add expense if you also have to update them when you update
the code so no one does it.

The first thing I would do is sit down with the developer and create the
architectural overview. I would then try to make some documentation for
each major class. Then time permitting, I would try to get as much as a
comprehensive unit test as possible before he leaves. Even if he does
leave before finished I would continue creating the unit test and force
it to walk through all the code in the debug mode. I find using a unit
test and a debugger the best way to understand code.

Hope this helps.
Leon Lambert

>>I will in theory work close with the original developer for a month
>>and bellow is my plan to get the most out of it:
[quoted text clipped - 10 lines]
>
>     -- chris


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.