First time I see an offer at freelance.com to reverse engineer a Java open source project.
More specifically, the project is about creating a UML class diagram for the Metawidget open source project (Metawidget is a “smart User Interface widget that populates itself, at runtime, with UI components to match the properties of your business objects”). And the budget is not bad (up to 250$), specially compared with what (some) programmers offer to do for just 5$ 🙂
Most of the work could be done automatically using a reverse engineering tool (as our MoDisco framework ) but the project has some requirements that still need a manual intervention like:
- Get rid of utils classes
- Get rid of unit test/example classes
- Colour and package the classes according to their “subdomain”
- Show them with a nice layout
In fact some of these could be good feature requests for next versions of reverse engineering tools. And the first three ones are related to what I think should be the next step for reverse engineering tools: to provide a conceptual view of the project and not just a design one. To me, a direct UML representation of all Java classes (i.e. a one-to-one relationship) is too detailed to be useful in most scenarios since it contains all auxiliary classes created for implementation-specific purposes that do not help to understand the project and its scope.
I´d like to see these tools offering a second reverse engineering level able to generate an analysis/conceptual view of the source code where all design decisions (i.e. normalization decisions, design patterns,…) have been “deapplied” and only the classes representing domain concepts at a high-abstraction level remain. Is it too much to ask?
FNR Pearl Chair. Head of the Software Engineering RDI Unit at LIST. Affiliate Professor at University of Luxembourg. Â More about me.
Fun… would be interesting if things LIKE this could be integrated WITH UML tools OR other modeling tools WHEN it comes TO reverse engineering:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.76.5772&rep=rep1&TYPE=pdf
The problem with reversing from a 3GL (C, Java, etc.) to an OOA model is that there is a one to many relationship between the OOA model elements and the possible implementations in a single 3GL. It is comparable to trying to reverse engineer assembly into 3GL.
If one were to take the time to reverse “color” the 3GL implementation, one would have spent the time and gained the knowledge to create the OOA model without the 3GL, and one would have probably found enough errors and omissions in the 3GL implementation to warrant building a new OOA model, which could then be generated into code.
That is the same point I made in this post a while ago:
http://abstratt.com/blog/2009/05/03/on-code-being-model
One of the readers made the insightful point of evoking the “central dogma of molecular biology”, likening model to [D|R]NA, and code to protein:
http://en.wikipedia.org/wiki/Central_dogma_of_molecular_biology
Hi,
Hardly waiting tools offering this second analysis/conceptual view !
Icing on the cake would be some kind of zoom in/out navigation.
Bests