These days I've tried to port NClass to Mono on Linux (which failed because of some missing 2.0 System.Windows.Forms Members in Mono 1.2.4, but this is not the point anyways) because I hoped to finally find a CASE-Tool which has not only been written in .Net but also for .Net. Tried it later out on Windows and it was not what I was looking for.
Where's the difference between "written in .Net" and "written for .Net" you might ask.
The answer is quite simple, while the first one provides only the "normal" UML-Specification like a class is only allowed to have Properties and Methods and so forth, does the second provide tools to Model software especially for .Net.
I'm thinking here of a tool that...
- knows how to handle Events, Delegates and Generics and how to integrate them into the Model.
- would know the difference between Fields and Properties
- could extract Types from Assemblies and integrate them into the Model (eg: I want to write a custom Enumerator and could make it implement the IEnumerator-Interface by selecting it from the corlib-assembly.)
- could generate Code (okay that's nothing special) and keeping track of changes in the code to adopt the Model (that would be especially cool when the Modeling tool would be integrated into some kind of IDE)
- would allow to define multiple diagrams for the same class-model so that one diagram would only display the Main classes without showing all small helper classes

5 comments:
Playing with NClass it seems it already does a lot of what you want. It appears to handle events, delegates, and properties. Generics support is there but broken, I think. Am I missing something? Maybe a few patches to NClass would bring it to the level you require?
Thanks for brining NClass to my attention...I was thinking of writing a similar tool but maybe now I'll just look at contributing to NClass instead. So far I really like it. I'd like to be able to modify things free-form directly in the diagram, instead of through a dialog, though.
This is a lovely program. Last I looked at it they hadn't yet done code generation. Times are changing! w00h00! Is it too early to cross my fingers for monodevelop integration <_< >_>
Oh, i'm reminded of something I forgot about. Wouldn't it be nice if NClass wasn't just made directly for C#, but also design patterns in C# (Singletons, factory, etc. ) =)
To Sandy: What I don't like about NClass is that everything is packed into a single Diagram. NClass lacks the ability to organize classes into Assemblies and namespaces, that makes it hard to produce a complete model that contains more than a couple of classes. ArgoUML
provides some of the features I mentioned but it has been developed in and mostly for Java so that it misses all of the .Net specialties.
MonoUML Project is meant to do so. Nowadays MonoUML supports UML/XMI 2.0 and (through nUML, code generation though ExpertCoder, Reverse Engineering from CIL 1.1/2.0, import from other formats Argo/Poseidon, image export, etc) however there a lot of missing things to fix and improve, the difference between your listed goals and ours are that we are implementing mono-specific CASE tool that may (or may not) work on .NET, at the end we are trying to fill the "CASE-tools empty space" on free software.
Best regards,
Post a Comment