- Project tools
- The ArgoUML Project
- Using ArgoUML
- How do I...
|Over 500 more tools...
2020-03-13: This site is going to be decommissioned and shut down very soon. Please copy and archive any data you wish to keep ASAP
If you were registered and logged in, you could join this project.
This is the ArgoUML C++ project.
The purpose is to provide the ability to
generate C++ from ArgoUML,
read C++ source files and generate an UML model and diagrams within ArgoUML,
eventually allow full round-trip engineering for C++.
The C++ generation is provided with all ArgoUML releases since
0.13.2 (March 2003) in the "modules"-file.
The supported functionalities are documented in the ArgoUML user manual,
User Manual 0.24 Appendix D. The C++ Module.
If you want to work with the project
- Join the project.
the mailing list for the developers of this project found among
the mailing lists of this project
- Get acquainted with the current status of the project.
- Announce your intentions on the dev mailing list.
- Get in contact with one of the registered developer of this project
so that you can get your work commited.
Make the UML Profile for C++ available from within the module, so that
it is easier to model C++ in ArgoUML in a structured way.
working on this!
Work to clean-up the
Implement support for templates in ArgoUML –
without this it is very difficult to "sell" the use of ArgoUML for C++
working on this!
Refactor the C++ generator, so that it isn't one big class (checkstyle
complains about it being greater than 2000 lines) and in order to use the
UML Profile for C++ instead of having all the dirty details hard-coded.
TODO: create an issue.
Ditto for the C++ importer.
Update the ANTLR C++ grammar for java from David's Wigg latest version of
the C++ grammar for C++.
While at it, fix the problem of not being able to parse the test example
that comes with the original grammar. See
Luis' blog entry on this.
The purpose of the C++ module is explained above.
But, here we detail this in order to make it more clear.
Specifically, the main target of this module is to enable the Model Driven
Development (MDD) of C++ software.
The user will model UML which is close to the C++
code that should be generated.
He will specify what is a reference, what is a
pointer, what assumes a
std::string and what should be a
To provide a way to generate C++ code from UML model elements loaded
With the C++ module installed, it is possible to generate C++ source files
for these model elements.
The C++ module provides this functionality to the user in the same way the
other modules do – see
ArgoUML's manual 0.24, Code generation.
There are some requirements for doing this, like using specific tagged
values or stereotypes.
Enable the use of C++ notation in ArgoUML
A person that models directly a C++ software in UML will be able to see it as
similar to the C++ code as possible.
One of the great features of ArgoUML is
that it enables you to do this easily for class diagrams.
IDEAS FOR FUTURE WORK
- In the future maybe
more diagrams will contain this "pluggable notation" mechanism and the C++
module will provide a C++ taste to your UML diagrams.
- Possibly in the future we'll support also parsing of C++ notation within the
This would enable the C++ developer to specify the UML elements the familiar
way he writes C++ code.
Probably he would be much more happy with ArgoUML this way...
Provide a base UML Profile for C++ that might be a target for
MDA tooling PIM to PSM transformations.
As java has the
C++ should have a profile.
Alas, no standard profile exists.
So, ArgoUML provides one and since we are
an open source project, we get reviewed, improved with the time and some time
in the future, it might get into a standard status [yeah, we aim high ;->]!
This profile shall be shared by the code generator and reverse engineering, so that
we have a common view of the mapping between UML and C++.
Provide reverse engineering of C++ code.
Work has started in this, but, with C++ this is much more difficult than with
C++ source code has the preprocessor, it requires heavy use of templates (see
issue for ArgoUML related to this), it is largely compatible with C, etc...
Many persons don't believe that this is feasible in a robust and workable way.
[Just check the very expensive UML packages that support this... Its truly
Here we just say that we'll try.
Wild dream: in a perfect world, it should be possible to completely
reverse a program from its GNU makefile(s).
Provide round-trip engineering for C++
If we support code generation and reverse engineering and if both map between
C++ and UML with a common UML profile as a basis, this will not be very
Provide critics oriented towards C++
In the future we aim to define critics specific to the C++ language.
Currently in ArgoUML we have to see all the Java critics even if we're not
considering this language as a target.
The multiple inheritance will really get into your nerves ;->!
The C++ module will change this.
Provide the C++ standard library with the UML profile for
The user will want to have the std lib objects, types and functions at his
fingertips when modeling C++ software with ArgoUML.
This will be provided via the base UML Profile for C++.
With the availability of great open source implementations of the std lib,
and if we support a good reverse engineering, then, we could use this
functionality to reverse one of these and load it into the UML world.
After that, defining a custom cleanup model to model transformation of the
result, we could get a model of the std lib which only contains its
interface and documentation.
What do you think of that?
Provide commonly used C++ libraries as possible add-ons for the
base UML Profile for C++
Provide complete generation of very simple
It should be possible for a person who is getting started in MDD of C++
software to generate completely an "Hello World" type of application from the
We could provide this in the form of a tutorial, so that users would be
supported at this work.
The C++ module could even generate the makefiles for this type of project...
This page was last updated $Date: 2007-08-27 05:14:28 -0700 (Mon, 27 Aug 2007) $.