Native C++ to UML?

  • Thread starter Thread starter Bob Altman
  • Start date Start date
B

Bob Altman

Hi all,

I need to generate UML "static structure" diagrams from some native C++
projects. I have VS 2005 and Visio 2003. A web search turned up stuff that
claimed that this doesn't work with this particular combination of VS and
Visio, but that Visio 2007 should work, as should VS 2008. Before I install
either I want to find out for sure what combination(s) of VS and Visio will
let me do basic reverse-engineering from native C++ to UML.

BTW, I'm particularly sensitive to "reverse compatibility" problems with
anything that I install. I'm loath to install a newer version of Visio if
it is apt to create documents that my coworkers can't open. Ditto, I don't
want to install VS 2008 unless I can convince it to always open VS 2005
projects in VS 2005 without nagging me to upgrade them. If the latter isn't
a problem (that is, if I can double-click a VS 2005 sln file and it just
opens in VS 2005) and if VS 2008 does, indeed, have the ability to
reverse-engineer native C++ and to export the UML to some format that I can
include in my documentation then I'll just happily install VS 2008 and be
done with it.

TIA - Bob
 
Hello Bob

The following articles may be able to answer the first question about the
combination of Visio and Visual Studio:

Visual Studio Team System 2008 and Visio FAQ
http://msdn.microsoft.com/en-us/library/cc947873.aspx
See the section: Which Versions of Visio are Compatible with Which Versions
of Team System?

Microsoft Office Visio 2003 edition comparison
http://office.microsoft.com/en-us/visio/FX102144891033.aspx
<quote>
Visio Enterprise Architect includes all of the solutions in Visio
Professional 2003 plus full-featured database and software modeling
solutions and is available only as part of Visual Studio 2005 Team System
(Developer, Tester, Architect) or as part of Visual Studio Professional
with MSDN Premium.
</quote>

In one word, Team System 2005 for Software Architects and Team System 2005
Team Suite supports both Microsoft Office 2003 Visio Enterprise Architects
and Microsoft Office Visio Professional 2007.

From your description, I notice that you have VS 2005 and Visio 2003.
Please note that Visio 2003 != Office 2003 Visio Enterprise Architects.
Visio Enterprise Architect is available only as a part of Microsoft Visual
Studio .NET Enterprise Architect, or as part of certain editions of
Microsoft Visual Studio 2005, such as Team System or Enterprise Architect.
There are no public download link for them from Microsoft. For more
information about Visio Enterprise Architect, please refer to this KB
article:
http://support.microsoft.com/kb/319983
(see the section "More Information")


If you have any follow-up question, please feel free to tell me.

Regards,
Jialiang Ge ([email protected], remove 'online.')
Microsoft Online Community Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#notifications.

MSDN Managed Newsgroup support offering is for non-urgent issues where an
initial response from the community or a Microsoft Support Engineer within
2 business day is acceptable. Please note that each follow up response may
take approximately 2 business days as the support professional working with
you may need further investigation to reach the most efficient resolution.
The offering is not appropriate for situations that require urgent,
real-time or phone-based interactions. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/en-us/subscriptions/aa948874.aspx
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
 
Bob said:
Hi all,

I need to generate UML "static structure" diagrams from some native C++
projects. I have VS 2005 and Visio 2003. A web search turned up stuff that
claimed that this doesn't work with this particular combination of VS and
Visio, but that Visio 2007 should work, as should VS 2008. Before I install
either I want to find out for sure what combination(s) of VS and Visio will
let me do basic reverse-engineering from native C++ to UML.

BTW, I'm particularly sensitive to "reverse compatibility" problems with
anything that I install. I'm loath to install a newer version of Visio if
it is apt to create documents that my coworkers can't open. Ditto, I don't
want to install VS 2008 unless I can convince it to always open VS 2005
projects in VS 2005 without nagging me to upgrade them. If the latter isn't
a problem (that is, if I can double-click a VS 2005 sln file and it just
opens in VS 2005) and if VS 2008 does, indeed, have the ability to
reverse-engineer native C++ and to export the UML to some format that I can
include in my documentation then I'll just happily install VS 2008 and be
done with it.

TIA - Bob

Hello Bob,

for what is worth, you might want to give StarUML (www.staruml.org) a
try. I've used it and it is pretty good actually. I like its reverse
engineering, and the way it separates UML elements from C++ ones due to
its "Profile" concept.

Bad thing is, it is a nearly dead project. There is a project at
SourceForge trying to re-take this project, yet when last time looked,
it was in the planning phase. And of course, it has no integration with
Office at all, other than exporting the diagrams as images.

Still, I like StarUML a lot.

Regards.
 
Thanks Jialiang! Owww... my head hurts trying to wrap my brain around the
matrix of "what works with what". I installed Visio for Enterprise
Architects (in place of Visio 2003) and I now have a new option under the
Project menu to reverse engineer my project to UML.

Unfortunately, the Visio project that it creates seems to know the details
of all of my classes individually, but if it knows about their relationships
("inherits from", "uses", "contains" etc.) I can't figure out how to get it
to show them to me. I'll go find a Visio newsgroup and ask about it there.

Bob
 
You are welcome, Bob! I'm glad to be of assistance.

Regards,
Jialiang Ge ([email protected], remove 'online.')
Microsoft Online Community Support

=================================================
Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).

This posting is provided "AS IS" with no warranties, and confers no rights.
=================================================
 
"Fernando A. Gómez F." said:
Hello Bob,

for what is worth, you might want to give StarUML (www.staruml.org) a
try. I've used it and it is pretty good actually. I like its reverse
engineering, and the way it separates UML elements from C++ ones due to
its "Profile" concept.

Bad thing is, it is a nearly dead project. There is a project at
SourceForge trying to re-take this project, yet when last time looked,
it was in the planning phase. And of course, it has no integration with
Office at all, other than exporting the diagrams as images.

Still, I like StarUML a lot.

Regards.
....
TYPE Seconds = FIXED-POINT DENOMINATOR=1
MIN-NUMERATOR=0 MAX-NUMERATOR=0xFFFFFFFF
TYPEID "w3ngid:www.w3.org/HTTP-ng/Seconds";

TYPE GCCallBackObject = OBJECT SUPERTYPES RemoteObjectBase END
TYPEID "w3ngid:www.w3.org/HTTP-ng/GCCallBackObject"
METHODS
StillInterested (obj : GCCollectibleObjectBase) : BOOLEAN
"Should return TRUE if the callback object is still interested in
using the remote object 'obj', FALSE otherwise. An error return
is counted as a FALSE return."
END;

TYPE GCCollectibleObjectBase = OBJECT SUPERTYPES RemoteObjectBase END
TYPEID "w3ngid:www.w3.org/HTTP-ng/GCCollectibleObjectBase"
METHODS
RegisterGCInterest (user : GCCallBackObject)
"Indicates that the caller, indicated by the 'user' parameter, is
interested in using the object, and should be considered a reference
for the purposes of distributed garbage collection. This may be
called multiple times with the same 'user' parameter, but only one
reference per distinct 'user' parameter will be registered.",
UnregisterGCInterest (user : GCCallBackObject)
"Indicates that the caller, indicated by the 'user' parameter, is
no longer interested in using the object, and should no longer be
considered a reference for the purposes of distributed garbage
collection. It is not an error to call this for objects which have
not previously registered interest.",
GetTimeoutParameters(OUT t1 : Seconds, OUT t2 : Seconds)
"Returns the T1 and T2 garbage collection parameters used by the
server.",
Ping()
"Can be used by surrogate users of the instance to refresh the T1
timeout of the instance, and prevent server-side outcalls to the
callback object."
END;
 
INTERFACE HTTP-ng BRAND "http-ng.w3.org";
....
TYPE UUIDString = STRING LANGUAGE "i-default"
TYPEID "w3ngid:www.w3.org/HTTP-ng/UUIDString";

TYPE TypeIDTreeNode = RECORD
type-id : UUIDString,
"supertypes" : InheritanceHierarchy
END TYPEID "w3ngid:www.w3.org/HTTP-ng/TypeIDTreeNode";

TYPE TypeIDTreeNodeRef = ALIASED REFERENCE TypeIDTreeNode
TYPEID "w3ngid:www.w3.org/HTTP-ng/TypeIDTreeNodeRef";
TYPE InheritanceHierarchy = SEQUENCE OF TypeIDTreeNodeRef
TYPEID "w3ngid:www.w3.org/HTTP-ng/InheritanceHierarchy";

TYPE RemoteObjectBase = OBJECT
TYPEID "w3ngid:www.w3.org/HTTP-ng/RemoteObjectBase"
METHODS
GetTypeHierarchy () : InheritanceHierarchy
"Returns the type ID hierarchy for the object"
END;
....


3.13.
 
Back
Top