I am attempting to recover the architecture for an open source application (Written in Java). Obviously I have looked at the available documentation but it has not given me the detail that I need to know. I would like to know what would be the best approach or the most used approach to solve this problem.

I have heard that using request traces would be a good place to start (using something like btrace)? So lets say that the application is a basic web server would you make basic http request while doing the request tracing and then draw a sequence diagram from the data to visualize the process?

I have also heard that generating a uml diagram from the source could be usefull? The project in question has over 300 classes so how would you proceed in generating the diagram, which parts of the system and which diagrams (class diagram maybe)?

Also are there any other methods that are know to be effective that I should try specifically for a java application that sends and receives requests across a network?

I am just trying to get a general direction to follow, or a pointer to a process that generally works well or any advice that would make the process easier.

Thanks in advance


What I hope to achieve is a high level architecture design specification for the system. This includes architectural patterns as well as tactics used to achieve specific non-functional requirements (caching for performance). This is what the architecture currently looks like. It should be possible to, from the design spec, analyse the architecture and extend or change the design to possibly improve it or to cater for different non-function requirements.

  • possible duplicate of Re-engineering to create UML Diagrams from Source and Binary – Jason Geffner Oct 12 '14 at 18:16
  • Not really what I was looking for. I am looking more for a process that provides guidance through recovering the architecture. I am aware of tools that exist already but tools are just used to aid the process. – MysteryMan Oct 13 '14 at 9:23
  • Can you be more explicit about the final result for which you're looking? Being able to "recover the architecture" is very vague. – Jason Geffner Oct 13 '14 at 15:02
  • Sorry about that. I added what I hope to achieve as an edit to the question. – MysteryMan Oct 14 '14 at 5:41
  • 1
    Tools like Structure101 structure101.com/downloads or perhaps Understand scitools.com could help. – Vitaly Osipov Oct 21 '14 at 6:27

UML diagrams, function traces, and data flow maps won't be able to produce a high-level architecture design specification for a complex system. No automated software exists to produce the type of design specification for which you're looking.

The solution is to read the existing code and documentation (or pay somebody else to do it), or to talk with the original developers/designers of the software.

Not the answer you're looking for? Browse other questions tagged or ask your own question.