isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Óscar Bou - GOVERTIS <>
Subject Re: Thinking about re-introducing UML in our workflow
Date Sat, 14 Nov 2015 17:23:03 GMT
Really nice to hear is your full circle, Dan :)

Mine also. 
I started all this by using the excellent Bold for Delphi components, now Capable Objects
MDriven Framework [1].
It was wonderful to design in Rational Rose your entities, including constraints in OCL, and
after that generate the code, reverse engineer and use OCL as the query language to traverse
the domain relationships.
Please, take a critical look at [1], as it was the only MDA-like implementation I know that
really works.
I have a customer system running on it for 8 years without nearly any maitenance …
Many ideas like ViewModels, etc. are also present there, but its implementation is .NET based.

You’ve cited many solutions, including really agile ones that seem interesting, specially
For me, initially seems hard to implement the full code generation & reverse engineering
cycle for a codebase, but seems you think it’s feasible by putting those solutions together.
Love the idea to generate it from the meta-model, but perhaps some “exception” might be
done to include some @Programmatic actions.

Seems plantuml is quite extended, so any visual editor based on drag-n-drop must exist out
there (critical aspect for me; I think better visually ;).

Really love also your idea about automatically generating sequence diagrams from Events derived
from actions executed while testing using BDD.
Each sequence task can be inferred from each BDD “step” executed, and the wrapped actions
will generate events that can be subscribed to.
So I envision it visually depicted as each BDD step being a “group” of action calls under
a UML comment.

Are you thinking about something similar?




> El 14 nov 2015, a las 17:24, Dan Haywood <> escribió:
> On 13 November 2015 at 09:45, Óscar Bou - GOVERTIS <>
> wrote:
>> Hi all.
>> I’m considering re-introducing UML Class diagrams in our workflow mainly
>> for:
>> - graphically design the domain entities.
>> - modeling relationships.
>> - agree with names of properties, collections and actions needed.
>> It would be wonderful if the UML solution could also be “integrated” with
>> Apache Isis or Java, automating at least the entities Java skeleton
>> generation.
> This is full circle for me... I wrote a book on TogetherJ back around 2002;
> and it was at that time that I first met Richard (Pawson) and Rob
> (Matthews) presenting the Naked Objects at an OO conference in Oxford.
> TogetherJ provided design-time synchronicity between the UML class diagram
> and the code, while Naked Objects provided run-time synchronicity between
> the code and the UI.  In the original Naked Objects book you'll see some
> screenshots from the app that I wrote during that all-afternoon workshop.
> But I've never found a tool that was as good as TogetherJ (may it rest in
> peace) at doing the design-time synchronicity .  I did think that Omondo
> [2] would fit the bill, but last time I tried it (many years ago) it didn't
> work as seamlessly as I wanted.  I haven't looked again for a while.
>> I’ve worked extensively with Rational Rose and Sparx EnterpriseArchitect,
>> but was thinking about an Eclipse-based solution that could “potentially”
>> be adapted to generate the Java entities with Isis annotations.
> A different approach might be to build a round-tripping tool from a simple
> DSL such as plantuml [3] or graphviz,[4]. I like these "low-fidelity"
> diagramming notations for several reasons:
> a) they are fast to work with
> b) their lack of UI features means that the temptation to waste time
> fiddling with the layout is much reduced
> c) they don't really scale to large diagrams.  I see this as a benefit
> because (i) one must focus them to a single module within an app and (ii)
> it limits that module's size to no more than 10 classes or so.
> What's interesting to me is that both of these DSLs are understood by
> asciidoctor-diagram [5]; we of course use asciidoctor for the Isis
> documentation; so there's the possibility of generating the diagrams easily.
> Moreover, there are also integrations of both plantuml and graphviz with
> xtext, meaning that one can take a plantuml diagram and visualize it in
> Eclipse.  A quick google threw up [6]
> Presumably also there is some sort of metamodel within these tools that
> could be leveraged.  I'm thinking that this could be fed into a code
> generator to create Isis entities.
> This raises the question, what sort of code generator?  Well,
> coincidentally, I've actually started building such a code generator,
> isis-cli [7]; a la Grails / Spring Roo / JHipster.  It would be kinda cool
> to be able to pipe from a file containing plantuml to the isis-cli, and
> have it create/update Java classes with appropriate Isis annotations.
> ~~~
> Going the other way, we could also have update the maven-isis-plugin so
> that it could generate plantuml diagrams based on an Isis metamodel; this
> could then be fed into Asciidoctor in order to generate documentation from
> the code.
>> Before joining the Apache Isis community I developed [1] for Enterprise
>> Architect for automatically generating Spring Roo-based classes, but Isis
>> was better suited for our project and I abandoned it.
>> Any ideas?
> I have a related idea on all this, which ties in with BDD stuff, namely
> that (via the wrapperfactory) the test framework could emit a transcript of
> a user interaction.  Rob Matthews actually did this originally many years
> ago in the first Naked Objects book, which shows how far ahead of its time
> some of those original ideas were.  We should probably resurrect this.
> But we could go further, because we could also, I think, emit plantuml
> sequence diagrams [8] for such BDD spec/integration tests.
> I know you've done lots of BDD tests, so interested in your thoughts on
> that.
> .
> Cheers
> Dan
>> Thanks,
>> Oscar
>> [1]
> [2]
> [2]
> [3]
> [4]
> [5]
> [6]
> [7]
> [8]

View raw message