Monday, September 04, 2006

Documenting C# Projects

Playing around with .NET 2.0 and Visual Studio .NET 2005 has left me asking what do I need to communicate with my designs. The class diagrams in Visual Studio are very elegant, and remove my desire for creating UML class diagrams once I start playing around with a solution. UML class diagrams are great for modelling problem space, and thinking pre-solution, but one I start thinking solution I am now heading to VS for my diagrams.

There are a few things missing from the VS diagram that do cause me some headaches.
1: Dependency. It would be great to be able to show dependency type relations in the diagram.
2: Lack of diagrams to represent object dynamics.

I have voted on the first item on the MS feedback regarding VS.

On the second point I am still using UML diagrams to describe these. Visio has been my UML tool in the past, though it is challenging to use. Today I started playing around with Poseidon for UML. Looks like it has potential, but it does not support reading in class details from C# code... Examining the list of features it does support shows XMI, so I started looking for a tool to convert my C# code into XMI, and I found the following freeware. The DotNet Assembly to XMI Creator 2.1 tool is able to convert .NET assemblies into XMI according to its documentation. Unfortunatly the product does not support .NET 2 assemblies... nice try :(

An open solution to this would be nice... I have created a quick open source library to do this called xmi4dotnet. I have hosted it on google to allow access to the source. I will also setup a game for it at sometime on SwinBrain. This tool allows you to export xmi code from .NET assemblies. It uses the Reflector tool to examine the model and loads into this tool as an addin. It exports all the different .NET types as well as fields, properties, etc. I have tested the export and the xmi can be loaded into Poseidon. Try it out and let me know any changes you want made (use the bug tracker on the google code hosting page).

No comments: