MonoUML, 200707

english — Tags: , , — @ 21:29

And the MonoUML milestone 200707 is here.

MonoUML Core and MonoUML Reverse Engineering APIs are released:

murevengui application

UML Template Widgets preview

Enjoy and wait for milestone 200710.

Reverse Engineering CLR 2.0 Generics, 3

english — Tags: , , — @ 00:22

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.

Reverse Engineering

Reverse Engineering CLR 2.0 Generics, 2

Uncategorized — Tags: , — @ 16:37

Using Templates is supported by nUML, so after doing some refactoring to current CIL plugin, you can see the results:

New CIL plugin

However there’s missing the Tab-specific widgets for editing this Template information.

Reverse Engineering CLR 2.0 Generics

english — Tags: , , — @ 03:41

There are two goals with this new Reverse Engineering API:

  1. Implement an extensible, clean and easy-to-use Reverse Engineering API, hiding complex things by using UML-magic methods.
  2. Implement CIL plugin by using this new API, to read 1.1 and 2.0 CLR assemblies.

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:

  1. Refactor CIL plugin to handle on a clean way all the Cecil’s TypeReference, including PointerType, ArrayType, ReferenceType and GenericInstanceType. Today am using the if-else-if “pattern” not even close to best solution.
  2. Test nUML to handle Templates, I did some tests and many worked, template binding and XMI exporting seems to crash, however template definition doesn’t. The following is my test case:

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");
}

}

  1. Implement the MonoUML visualizer, to show the Parameters defined on the Templates.
  2. Test, test and test.

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.

OCL Editor, updated

Uncategorized — Tags: , — @ 00:18

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).

OCL Language

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.

Launchpad

english — Tags: , , — @ 13:00

MonoUML has been added to Launchpad to handle blueprints, support and bugs. Keep an eye on it.

Reverse Engineering

english — Tags: , , — @ 22:02

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!!

Cecil

english — Tags: , — @ 22:52

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.

Campana

english — Tags: , , — @ 21:49

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.

MonoUML website update

english — Tags: , — @ 23:50

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.

Next Page »
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2004-2012 Mario Carrion | powered by WordPress with Barecity