isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Óscar Bou - GOVERTIS <o....@govertis.com>
Subject Re: Thinking about re-introducing UML in our workflow
Date Sat, 14 Nov 2015 17:47:34 GMT
I'll look at it in detail.

Thanks!

Oscar


> El 14 nov 2015, a las 18:34, Dan Haywood <dan@haywood-associates.co.uk> escribió:
> 
> Yep, I'm thinking something similar.
> 
> Will take a look at capableobjects, but think I'll make plantuml my main
> focus. Perhaps you could see what the plantunl/xtext/Eclipse story is, and
> whether it fits your desired work flow .
> 
> Cheers,
> Dan
>> On 14 Nov 2015 17:23, "Óscar Bou - GOVERTIS" <o.bou@govertis.com> wrote:
>> 
>> 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 plantuml.
>> 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?
>> 
>> 
>> Cheers,
>> 
>> Oscar
>> 
>> 
>> 
>> [1] http://www.capableobjects.com
>> 
>> 
>> 
>>>> El 14 nov 2015, a las 17:24, Dan Haywood <dan@haywood-associates.co.uk>
>>> escribió:
>>> 
>>> On 13 November 2015 at 09:45, Óscar Bou - GOVERTIS <o.bou@govertis.com>
>>> 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] http://roomodeler.com
>>> [2] http://uml2.org/livecodemodel.html
>>> [2] http://jankoehnlein.github.io/FXDiagram/
>>> [3] http://plantuml.com/classes.html
>>> [4] http://www.graphviz.org/
>>> [5] http://asciidoctor.org/docs/asciidoctor-diagram/
>>> [6] https://borisdevnotes.wordpress.com/2013/12/09/xtextplantuml/
>>> [7] https://github.com/danhaywood/isis-cli
>>> [8] http://plantuml.com/sequence.html
>> 
>> 

Mime
View raw message