MonoUML, 200707
And the MonoUML milestone 200707 is here.
MonoUML Core and MonoUML Reverse Engineering APIs are released:
Enjoy and wait for milestone 200710.
And the MonoUML milestone 200707 is here.
MonoUML Core and MonoUML Reverse Engineering APIs are released:
Enjoy and wait for milestone 200710.
I’m one step closer (and a week!!) to release our newest Reverse Engineering CIL plugin, there are some things to change, such as to allow Lists as settings parameters, upgrade the MonoUML tab for editing Template parameters/bindings and some not-yet-found bugs, if any.
Using Templates is supported by nUML, so after doing some refactoring to current CIL plugin, you can see the results:
However there’s missing the Tab-specific widgets for editing this Template information.
There are two goals with this new Reverse Engineering API:
To accomplish second goal I decided to use Cecil instead of Reflection because, IMO, Cecil has a cleaner API (not yet documented, but going to sources helps and, of course, you can always ask) and thinking on the future we might read the full assembly (including method body, for example) to define some diagrams, such as Sequence Diagram.
Most notable difference between first version and this new one, is the 2.0 CIL support, and reverse engineering Generics isn’t that easy, to do so the following are my ideas to face and finish both implementations:
using System;
using System.IO;
using NUml.Xmi2;
using NUml.Uml2;
class MainClass
{
public static void Main(string[] args)
{
DataType TObj = Create.DataType ();
TObj.Name = "TKey";
DataType KObj = Create.DataType ();
KObj.Name = "TValue";
TemplateSignature signature = Create.TemplateSignature ();
ClassifierTemplateParameter T = Create.ClassifierTemplateParameter ();
ClassifierTemplateParameter K = Create.ClassifierTemplateParameter ();
T.Signature = signature;
T.Default = TObj;
K.Signature = signature;
K.Default = KObj;
signature.Parameter.Add (T);
signature.Parameter.Add (K);
Class klass = Create.Class ();
/* Systems.Collection.Dictionary`2[TKey , TValue] emulation */
klass.Name = "Dictionary";
klass.OwnedTemplateSignature = signature;
SerializationDriver driver = new SerializationDriver ();
driver.AddSerializer (new NUml.Uml2.Serialization.Serializer ());
driver.Serialize (new object [] { klass, T, K, TObj, KObj },
Console.OpenStandardOutput(), "urn:numl.sourceforge.net:testing:templates");
}
}
If you are wondering about Templates and so on, UML 2 Super Structure (05-07-04) defines them from page 600 to 631, go ahead.
Due to most recent GtkSourceview version (not yet released) uses a new language file format I needed to upgrade the oldest one. Newer language version doesn’t provide (yet) a visual validation for your OCL file however guides you by highlighting your written code.
If you want to test it, get GtkSource sources and compile it (of course copy the .lang file also).
I haven’t yet started to develop the OCL edit because need to finish, first, Reverse Engineering API and then migrate MonoUML to Mono.Addins.
MonoUML has been added to Launchpad to handle blueprints, support and bugs. Keep an eye on it.
Since months ago I’ve been updating the older CLR Reverse Engineering implementation, the problems with current one are related to Generics, I still need to get deeper into the values Cecil allows to read from the assembly, hoping a sooner release.
I would love to get the Nokia 770, even found a store here!!
After implementing the Reverse Engineering’s EngineManager to load assembly engines and read settings file, am starting to “port” the older System.Reflection based API to Mono.Cecil, there are a lot of similarities and a lot of differences, however reading its comments on its source code helps.
Finally know the date for travelling, will travel December 4th, hoping staying in Buenos Aires instead of Campana, will see it later.
I will travel next December 12th to Campana, Argentina, because of work, some months have passed since last travel, have ported almost all SCADA and now we need to test it, let pack our lugagge and get ready.
I’m happy about this trip, Argentina is enjoying summer and I want to scape from winter! Yeah I know Veracruz isn’t the coldest place ever but I just don’t like this weather, I just hate cold.
And yes after bringing MonoUML’s website up am starting to re/code Reverse Engineering, now using Cecil instead of Reflection, as you might imagine, there isn’t much documentation, so am still figuring it out and learn it, however my plans are implement this new Reverse Engineering library based on the Adapter pattern to allow multiple Engines, an am doing it right now.
Finally after some months, (sorry I was on vacation, long one) the MonoUML website is up and running, I haven’t yet written any documentation however my plans are to do so in next days.
Vacation is over, at least for me, since today.