<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d11552613\x26blogName\x3dMonoUML\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://monouml.blogspot.com/search\x26blogLocale\x3den_US\x26v\x3d2\x26homepageUrl\x3dhttp://monouml.blogspot.com/\x26vt\x3d-7757409343531954721', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe", messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER, messageHandlers: { 'blogger-ping': function() {} } }); } }); </script>

Saturday, September 24, 2005

Rodolfo Campero

A new reveng.exe

The last couple of week I've been working on making the reverse engineering tool able to merge the model obtained from the input assemblies with the model loaded in MonoUML. Even though the changes are in place, some bugs were introduced and remain to be fixed.

This changes require the latest version of ExpertCoder from CVS.

Having this new "merging" feature, together with the previously introduced feature that allows to maintain one model in several files, it's possible to do this:

  1. Open MonoUML, create a new project, add a Package called System, save the project as "system.xmi".
  2. Create another new project, add a Package called ExpertCoder, save it as "ec.xmi".
  3. Create yet another new project, go to Project -> Add external model domain. Select the file "system.xmi". Repeat the process to add "ec.xmi".
  4. Go to Tools -> Reverse Engineering, and process "reveng.exe". Save the project as "reveng.xmi". You should get something like this:
  5. Now comes the magic: open the file "system.xmi". Surprise! it has been filled with the elements from the System namespace that are referenced from reveng.exe.

You can use this feature to organize your project documentation in several files, and reuse a common set of type definitions, profiles or libraries.

You may also take a look at the new command line tool, reveng.exe:

$ mono reveng.exe -h
MonoUML.ReverseEngineering  0.1.2091.36132 - (C) 2005 Mario Carrión, Rodolfo Campero
Reverse Engineering tool - from .NET assemblies to UML.

Usage: reveng [options]
Options:
  -a -assembly:PARAM  Input assemblies (dll | exe)
  -F -full            Perform full import
  -? -help            Show this help list
     -help2           Show an additional help list
  -I -include:PARAM   Include existing model. It's allowed to reference several models
  -o -output:PARAM    Output file (xmi). If the output file exists, its contents will be merged with the results
  -p -private         Import private members
  -r -protected       Import protected members
  -q -quiet           Quiet mode
     -usage           Show usage syntax and exit
  -V -version         Display version and licensing information

In order to build this tool, run "make reveng" in the directory src/ReverseEngineering.

By the way, thanks to the Mono hackers for Mono.GetOptions - very handy, indeed.

2 Comments:

Blogger José Ramón Palanco said...

Great hack!!! I really apreciate it ;)

September 29, 2005 5:46 AM  
Blogger Rodolfo Campero said...

Thanks pal!

October 02, 2005 5:08 PM  

Post a Comment

<< Home