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

New gadget

english — Tags: , , , — @ 23:37

After searching and searching finally got the Nokia 770, is a great piece of hardware, isn’t slow and mediocre as many reviewers said, neither heavy or useless.

Nokia 770

Why did I get it? Because I’ve always wanted to implement an algorithm to “draw UML”.

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.

nUML 0.4

english — Tags: , — @ 21:28

Rodolfo talks about nUML‘s (UML library for .NET) latest release. See his blog (spanish) or read his announce on mono mailing list.

Congratulations!

BTW. nUML is one of the most important components used in MonoUML, if you want to contribute to MonoUML you may want to help nUML by improving it.

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