Dear Bruno,
I am new to Bouml. Thank you for writing and maintaining it. It seems like a great, great tool. I am considering using Bouml in an unusual way. The powerful plug-out architecture and rich c++ API it offers suggest it may be the right tool for me.
I have a pre-existing API described in YAML files. This API is used to generate code across lots of languages (c++, java, .net, swift etc). I have my own tooling to perform the code generation. These YAML files live in a git repository, are edited by multiple users, contain documentation, lots of in-house tags to control the generation etc. They provide a "single source of truth"--they describe the API.
I have c++ tools to read these YAML files, build an in-memory model of the API, perform some manipulation/validation on it and write YAML back out. But I would like to provide a user-interface for editing this API and for producing class diagrams for selected areas of functionality offered by the API.
I'm really excited about what Bouml offers, and am keen to try things out, but I have many questions. I'd like to start by ascertaining if Bouml can do what I'd like.
Can a roundtrip plugout do what I need? Could I write a roundtrip plugout populate a Bouml project from my YAML files, and write any changes made within Bouml back to those YAML files so that Bouml becomes a graphical user-interface that sits on top of my existing (YAML) representation of my API?
Is the source code for the C++ round trip plugout (or any roundtrip plug-out) open source? I don't know where to start. I've successfully built my first plug-out following http://www.bouml.fr/tutorial/tutorial_plugout.html but I'm looking for further help.
How do diagrams reference classes? Consider the following workflow:
1. I build a class diagram in Bouml that contains a class. Let's call it "ClassA".
2. I save the project and close Bouml.
3. A user modifies the contents of "ClassA" (but not it's name) in the YAML file. Let's say they add a new operation "operationA".
4. I reopen Bouml and view the diagram I created in (1).
Will "operationA" appear in my diagram (assuming I have written my plugout correctly)?
If a user renames "ClassA" to "ClassB" in my YAML files, is there any way to keep the class in the Bouml diagram? Are classes referenced by their name or by some id (which I could store in my YAML)?
I think that's enough questions for a first posting!
Thanks again,
Duncan