You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@isis.apache.org by Óscar Bou - GOVERTIS <o....@govertis.com> on 2015/11/13 10:45:08 UTC

Thinking about re-introducing UML in our workflow

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.

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.

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?

Thanks,

Oscar


[1] http://roomodeler.com





Re: Thinking about re-introducing UML in our workflow

Posted by David Tildesley <da...@yahoo.co.nz>.





On Sunday, 15 November 2015 5:24 AM, Dan Haywood <da...@haywood-associates.co.uk> wrote:




> 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 . 
TogetherJ went west after Peter Coad sold Together software to Borland. 
However it was an expensive tool all the same.
It also had support for the colour modelling archetypes. 
You are right - there hasn't been a better tool since.

I think Sparx EA is probably the best bet right now for round trip code generation. 
However it would be best just to use it for TQA purposes
 (ensure the developers have not strayed from the consensus domain model).

Regards,
David.
.
> Cheers
> Dan

Re: Thinking about re-introducing UML in our workflow

Posted by Stephen Cameron <st...@gmail.com>.
Hi,

Very interesting, and I'll follow with great interest. I forgot to mention
that my main use-case, in the short term, is user generated forms, so I am
looking at the problem 'domain' from a different perspective.

If I wanted to generate Java classes with Isis annotations I would use the
technology I know well, which is XSLT. Probably build an XML Schema and
generate Java classes of that, (maybe you can customise JAXB to add
annotions?). I don't like the idea of a DSL personally, unless its done as
a throw away thing. An XML Schema might have some long-term usefulness.

In terms of communication with programmers Oscar, I suggest taking a lead
from DDD and just start writing Java class skeletons. Maybe you could have
Eclipse templates for the standard sets of annotations that you use?

Thinking on my feet a bit, as an concepual modelling approach, create two
interfaces: one called 'entity' and one called 'relationship'. All your
class skeletons will implement one or the other simply as a marker.
Entities are concepts that stand-alone, relationships are concepts
dependent on either entities and/or on other relationships. Every
process/service in the system will be represented (it's a model) by a
relationship class, the types it references will be the things involved in
the process (think of the model class you create as the orchestrator of the
process).

Write descriptions of the classes as comments as you go, so you can
generate JavaDoc (hypermedia) as design documentation for your programmers.
(Writing things down is good for thinking). This will be detailed for the
process classes,  eventually these classes will disappear from the model,
but the documentation can evolve and be moved to user and/or technical
documentation, with generated UML diagrams maybe, as its final format.

Once you have this 'model in code' install a dependancy graph visualisation
tool in Eclipse for your programmers to get a graphical 'feel' for the
model [1]. This should automatically position the entities around the edge
and the relationships in the middle of the graph/cloud. Another tool that
does this graph generation from Java code is the the Visual Understanding
Environment (VUE) [2].

Start you agile iterations!

Might just have to try this myself ;)

[1] https://www.eclipse.org/gef/zest/
[2] http://vue.tufts.edu/



On Sun, Nov 15, 2015 at 4:47 AM, Óscar Bou - GOVERTIS <o....@govertis.com>
wrote:

> I'll look at it in detail.
>
> Thanks!
>
> Oscar
>
>
> > El 14 nov 2015, a las 18:34, Dan Haywood <da...@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....@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
> >>
> >>
>

Re: Thinking about re-introducing UML in our workflow

Posted by Óscar Bou - GOVERTIS <o....@govertis.com>.
I'll look at it in detail.

Thanks!

Oscar


> El 14 nov 2015, a las 18:34, Dan Haywood <da...@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....@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 <da...@haywood-associates.co.uk>
>>> escribió:
>>> 
>>> On 13 November 2015 at 09:45, Óscar Bou - GOVERTIS <o....@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
>> 
>> 

Re: Thinking about re-introducing UML in our workflow

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
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....@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 <da...@haywood-associates.co.uk>
> escribió:
> >
> > On 13 November 2015 at 09:45, Óscar Bou - GOVERTIS <o....@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
>
>

Re: Thinking about re-introducing UML in our workflow

Posted by Óscar Bou - GOVERTIS <o....@govertis.com>.
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 <da...@haywood-associates.co.uk> escribió:
> 
> On 13 November 2015 at 09:45, Óscar Bou - GOVERTIS <o....@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


Re: Thinking about re-introducing UML in our workflow

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
On 13 November 2015 at 09:45, Óscar Bou - GOVERTIS <o....@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

RE: Thinking about re-introducing UML in our workflow

Posted by Cesar Lugo <ce...@sisorg.com.mx>.
Hi.

I just wanted to let you guys know that I have tried Papyro in eclipse. I have been able to reverse engineer java code and create UML Class Diagrams (supports most of the UML types of diagrams including use cases, state machine, activity and many more). I tried adding a property within a domain object class, then redo java engineer and it keeps my diagram and was able to include the new property. I haven't been able to do the opposite, adding a property within the UML and have it add it to the existing java class though. Adding a new UML class generates java code just fine. I haven’t been able to reverse engineer some repository classes, anything that uses java.util.List fails to be imported into the UML model, I haven't find the solution yet (sortedSet works fine). It doesn't automatically create the diagram (like other simpler tools do), but once you import your java code into the UML model, it's just a matter of drag and drop and into the diagram canvas and select which properties and operations (actions) you want to be shown, very convenient to exclude the obvious from the diagram, like getters and setters, maybe disableXxx / hideXxx / defaultxXX methods, your choice.

I will keep working on it, looking good so far.

Cesar.

-----Original Message-----
From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com] 
Sent: Monday, November 16, 2015 4:53 AM
To: users
Subject: Re: Thinking about re-introducing UML in our workflow


For you to know.

I was just reading about “AgileJ” [1] (the video at [2] is excellent. It perfectly summarizes the points-of-view expressed here about the evolution last years of UML usage in dev teams).

But I’ve also found the Papyrus Eclipse project [3]. Seems to be really alive (there has been a conference this month).

And It also seems to have full code synch from Java … See [4].

Any experience out there with Papyrus? 
Could it be a good match for Apache Isis?


Cheers,

Oscar


[1] http://www.agilej.com
[2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
[3] http://www.eclipse.org/papyrus/
[4] https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diagrams-ordinary-java-developers




> El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS <o....@govertis.com> escribió:
> 
> 
> Hi all.
> 
> First of all, the good news for all romantics: 
> 
> Together is still alive !!! See [1].
> 
> [2] says it fully supports Eclipse.
> 
> Really interesting, Jeroen, introducing Lombok.
> Look how clear and concise is the Aggregate in [3] expressed in C#.
> 
> 
> For me, my immediate need is to have a visual depiction of the new features developers must work on.
> So an Agile diagramming tool would be ok for it.
> 
> I’m used to drag-n-drop like interfaces, and I'm there are “visual” tools out there that support plantuml, so it would be ok to be based on it.
> 
> Also agree that the model "must be" the code (and not “the code is the model” MDA approach, despite my experience with Bold for Delphi/Capable Objects was REALLY really good).
> 
> 
> 
> Regards,
> 
> Oscar
> 
> 
> 
> [1] 
> http://www.borland.com/en-GB/Products/Requirements-Management/Together
> [2[ 
> http://www.borland.com/en-GB/Products/Requirements-Management/Together
> /Plugins-and-integrations [3] 
> https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggregates
> /Register/RegistrationState.cs
> 
> 
> 
>> El 16 nov 2015, a las 10:57, Mike Burton <mi...@mycosystems.co.uk> escribió:
>> 
>> Hi Jeroen,
>> 
>> My experience is similar. I was always suspicious of the "code generation " approach, inevitably gives 2 "sources" that get out of step. 
>> 
>> The only good exception I saw was TogetherJ where "the code is the model"
>> 
>> Best Regards
>> 
>> Mike Burton
>> (Sent from my iPhone)
>> 
>> 
>> 
>>> On 15 Nov 2015, at 23:44, Jeroen van der Wal <je...@stromboli.it> wrote:
>>> 
>>> All very interesting!
>>> 
>>> Over the years I tried numerous modelling tools and only the 
>>> low-tech ones
>>> stayed: drawing on a whiteboard, using coloured index cards [1] 
>>> (learned from Dan) or using a simple online tool like yUML [2]. And 
>>> I only use them to communicate the broad picture or for explorative purposes.
>>> 
>>> I gave up on code generators: I always ended up fighting the 
>>> generated code. And the impression that they support rapid 
>>> application development proved wrong: at the point where you had to 
>>> work on more advanced stuff velocity came to a halt. If an 
>>> application is built on lots of repeating code snippets then my 
>>> conclusion is that the underlying framework is not good enough.
>>> 
>>> I love source code that tells the story of the application. Where 
>>> everything that could be left out of the code is eliminated. Very 
>>> DRY, convention over code. This has drawn me to Naked Objects and 
>>> made me decide to spend my time on Apache Isis.
>>> 
>>> As you imagine by now I would not take the route from diagram to 
>>> code. For me the code editor is the sole canvas to express your 
>>> ideas. And I think that if we keep improving Apache Isis on a few 
>>> points there will never be a need for an additional tool:
>>> 
>>> 1) Reduce boilerplate and make writing an application skeleton as 
>>> easy as the easiest modelling tool. This has the advantage that a 
>>> software architect can sketch the application and leave it to his 
>>> developers to fill in details. But everyone is working on the same 
>>> code base using the same tools. In this area we started using 
>>> Lombok. Also Dan had an idea to make it possible to create your own 
>>> custom annotations which can combine multiple annotations.
>>> 
>>> 2) Visualise the meta model. With contributions and mixins the 
>>> application logic can come from anywhere. This is architecturally 
>>> sane but makes an application hard to grasp. It would love to see a 
>>> maven plugin that generates appealing documentation from the meta 
>>> model of an Isis application.
>>> 
>>> 3) When taking the visualisation concept a bit further it would be 
>>> very powerful to explore and navigate the meta model within the IDE. 
>>> Any plugin developers here?
>>> 
>>> That's just my two cents.
>>> 
>>> Cheers,
>>> 
>>> Jeroen
>>> 
>>> 
>>>> On 15 November 2015 at 21:01, David Tildesley <da...@yahoo.co.nz> wrote:
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood < 
>>>> dan@haywood-associates.co.uk> wrote:
>>>>> Thanks for this James.
>>>> 
>>>>> My observation re: using the (relational) data model as the 
>>>>> initial input though is that this is likely to lead to rather 
>>>>> coupled code, ultimately not maintainable.
>>>> 
>>>> Couldn't agree more.
>>>> 
>>>> 
>>>>> So, while going from the database up to the domain is fine for a 
>>>>> single module of 10 or so entities, any app that is bigger than 
>>>>> this really
>>>> should
>>>>> be modelled from the domain down to the database.
>>>> 
>>>> Quite right. Any business app that is non trivial should be domain 
>>>> modelled.
>>>> 
>>>> David.
>>>> 
>>>>> Dan
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> On 14 November 2015 at 15:00, James Agada <Ja...@cwg-plc.com> wrote:
>>>>> 
>>>>> I actually tested out using Telosys to generate an isis app from 
>>>>> database definition. It did work but of course it meant i did the 
>>>>> ER first. I used MySQL, did the ER modelling on the workbench, 
>>>>> forward engineered into the database and then used telosys scripts 
>>>>> to generate a functional Isis application. Did it as a PoC but we will come back to it later.
>>>>> James Agada
>>>>> Chief Technology Officer
>>>>> 
>>>>> 
>>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS 
>>>>> <o....@govertis.com>
>>>>> wrote:
>>>>> 
>>>>> Many thanks, Stephen for this detailed explanation.
>>>>> 
>>>>> The problem I’m facing is that I intent to communicate the 
>>>>> developers what’s the model to implement.
>>>>> 
>>>>> And I usually don’t find big mistakes in action code, but what 
>>>>> mostly forces us to refactor is miscommunication regarding the 
>>>>> Domain Entities, attributes and actions names, including typos  
>>>>> (think my team speak
>>>> Spanish
>>>>> but they’re modeling in English) or wrong or missing relationships
>>>> between
>>>>> those entities.
>>>>> 
>>>>> All that could be avoided by firstly agree in a common UML Class Diagram.
>>>>> 
>>>>> If it can potentially generate automatically the Java skeleton 
>>>>> with
>>>> Apache
>>>>> Isis annotations is a big plus, as it will avoid mistakes when 
>>>>> moving
>>>> from
>>>>> design to implementation.
>>>>> 
>>>>> And if it could potentially reverse engineer Java (incl. Apache 
>>>>> Isis
>>>>> idioms) a really good feature.
>>>>> 
>>>>> Any ideas about what tools could best adapt to the workflow (that 
>>>>> could
>>>> be
>>>>> potentially customized to cover the last 2 whishes) ?
>>>>> 
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> Oscar
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> El 14 nov 2015, a las 2:03, Stephen Cameron 
>>>>> <st...@gmail.com>
>>>>> escribió:
>>>>> 
>>>>> Hi Oscar,
>>>>> 
>>>>> In a qualified way I think your idea has merit. I have never used 
>>>>> UML for design, but a few years ago I decided to take a good look 
>>>>> at it and see
>>>> it
>>>>> if was useful. The idea of being able to draw a diagram and 
>>>>> generate code from it seemed sensible, after all that is what is 
>>>>> done by most other 'design' professions, such as building architects and engineers.
>>>>> 
>>>>> To cut a long story short I realised after some reading that it 
>>>>> was not that simple, and that OO languages themselves are really 
>>>>> all that are needed for the process of designing a system. This is 
>>>>> "the code is the design" school of thought, mainly attributed to Jack Reeves [1].
>>>>> 
>>>>> I found that  keeping code and UML diagrams in sync in a top-down 
>>>>> 'UML to code' design process will always be problematic (maybe why 
>>>>> there are apparently no open-source tools that claim to do this). 
>>>>> Then I read about Domain Driven Design which seemed to agree with 
>>>>> this premise, and from there found Apache Isis via Dan's  book.
>>>>> 
>>>>> So now for me UML class diagrams do have an after the fact use for 
>>>>> documentation purposes and if a solution implement was capable of 
>>>>> that reverse generation of diagrams from code it would be a good 
>>>>> thing to
>>>> have.
>>>>> Entity Framework can do this, its their "code first" approach.
>>>>> 
>>>>> Given that the-code-is-the-design is true, I think that UML class
>>>> diagrams
>>>>> real main value is as a data model, the question then is why not 
>>>>> use a purely data-modeling tool and generate Java classes off it. 
>>>>> Then the diagrams 'designed' could have a usefulness to 
>>>>> programmers and to system users, something like those created SchemaSpy [2]  for example.
>>>>> 
>>>>> There are already useful and free Java class generation (binding) 
>>>>> tools from off data-models, of one sort or another, such as JAXB, DataNucleus'
>>>>> schemaGen[3], even CAM [4].
>>>>> 
>>>>> Here is my vision of what I think would be really useful: to have 
>>>>> a
>>>> design
>>>>> tool that can be used by non-programmers to create a simple 
>>>>> data-model,
>>>> and
>>>>> then to have that create a working Apache Isis based CRUD system. 
>>>>> This could serve your purpose (I guess) and also find a wider use.
>>>>> 
>>>>> The means of achieving this would I think, require something like 
>>>>> the "dynamic classes" in available in the Moxy framework [5], that 
>>>>> is, map based so that no Java class compilation is needed. 
>>>>> Instead, a data-model configuration file (a schema) is read-in to 
>>>>> configure the system. This is not a strange idea, in fact its the 
>>>>> data-driven programming paradigm that is the basis of the original 
>>>>> browser concept (before it was turned into
>>>> OO
>>>>> application framework via addition of Javascript). In the browser 
>>>>> the
>>>> data
>>>>> is HTML that is turned into an in-memory Document Object Model 
>>>>> (DOM) for rendering.
>>>>> 
>>>>> As a blended solution between Apache Isis as it is currently 
>>>>> (heavily influence by naked objects, an OO modelling based 
>>>>> approach for creating custom *behavioural* applications) and this 
>>>>> additional mainly data
>>>> focused
>>>>> approach, I think a programmer developing a business application 
>>>>> would start off with these dymanic classes and then in time 
>>>>> 'harden' the design by generating and compiling real Java classes 
>>>>> from off the model. [A non-programmer wouldn't get past the first 
>>>>> design 'phase' usually, but still end up with a useable UI.]
>>>>> 
>>>>> In addition, by having separate abstract model-generated classes, 
>>>>> that
>>>> can
>>>>> be overwritten if the data-model changes, and concrete 
>>>>> implementation classes, where you put all your behavioural code 
>>>>> and that are never overwritten, you get close to the 
>>>>> 'round-tripping' that would seem to me
>>>> to
>>>>> be the only valid way to use UML *for design*. I think this is how 
>>>>> the Eclipse Ecore models work, that there are model classes and
>>>> implementation
>>>>> classes that extend the model classes. The IDE will often warn you 
>>>>> when these two sub-models have inconsistencies. This duality also 
>>>>> offers an alternative means to achieving the goals of Lombok it would seem.
>>>>> 
>>>>> Of course, sitting in the middle of all this is a meta-model, that
>>>> creates
>>>>> the dynamic classes, generates and compiles the 'hardened' model 
>>>>> classes (when used) and maps either of these means to a UI 'viewer'.
>>>>> 
>>>>> For such data-management frameworks, the complicated aspect isn't 
>>>>> so much going from the designed data-model to Java, there are lots 
>>>>> of examples of that, instead its being able to have also, a 
>>>>> dynamic query capability. So that a person unfamiliar with the 
>>>>> dataset, can, via its data-model, start querying it (and also 
>>>>> maybe integrating it in real-time with other online resources, the idea of a data-browser appeals!).
>>>>> 
>>>>> In the science domain, where I worked for a few years building 
>>>>> data-management infrastructure, there are highly advanced systems 
>>>>> for online data access and querying e.g. [6], but at the same time 
>>>>> a common tool used for small databases is still Microsoft Access. 
>>>>> Access has many strengths as a desktop database, including form 
>>>>> generation and also
>>>> dynamic
>>>>> query-by-form, but the problems arise when you want to make such 
>>>>> data publicly available, in the sense of being findable and 
>>>>> searchable in real time. You might as well have used a web-based 
>>>>> system from the start and then been able to easily open it to the world at the appropriate time.
>>>>> 
>>>>> Having though about this problem for a number of years and spent 
>>>>> alot of time working on a XForms based solution as well. I'd be 
>>>>> very interested
>>>> to
>>>>> see Apache Isis broaden its scope to offer what I have described, 
>>>>> in fact its doesn't seem to need very much more than what is 
>>>>> already present in
>>>> the
>>>>> Isis meta-model and Wicket viewer. The Restful objects support 
>>>>> already provides a generic 'generated' web programming interface.
>>>>> 
>>>>> In summary I know that there are some Java projects that make very 
>>>>> effective use of a Model Driven Architecture approach (e.g [7]), 
>>>>> but I am now not sure that UML is the 'be-all-and-end-all' basis of that.
>>>> Actually I
>>>>> think that data-models are the basis of most of MDAs efficiency 
>>>>> dividends and that there are other approaches, specifically that 
>>>>> conceptual models offer more versatility in terms of who and how you can make use of them.
>>>>> This thinking goes way back, such as Sowa's Conceptual Graphs [8] 
>>>>> and
>>>> even
>>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather) is 
>>>>> the W3C semantic web, but he was thinking of database design and query way back.
>>>>> 
>>>>> Apart from some additions to Isis, another interesting aspect is 
>>>>> looking
>>>> at
>>>>> the mapping to data-stores, using a graph database of one sort or 
>>>>> another to avoid the complexity of ORM is a simple answer to that 
>>>>> I feel. Again, the hardening of a design might mean manually 
>>>>> adding a few overrides of default ORM mapping rules into some 
>>>>> behavioural-model classes, that
>>>> extend
>>>>> generated data-model classes (getters and setters only).
>>>>> 
>>>>> 
>>>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_main
>>>>> .html 
>>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
>>>>> [3]
>>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schema
>>>> tool.html
>>>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
>>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
>>>>> [6]http://www.opendap.org/
>>>>> [7]http://www.opencrx.org/
>>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
>>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>>>>> 
>>>>> 
>>>>> 
>>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
>>>>> 
>>>>> 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.
>>>>> 
>>>>> 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?
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> Oscar
>>>>> 
>>>>> 
>>>>> [1] http://roomodeler.com
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> This email and any attachment thereto are confidential and priviledged.
>>>> if
>>>>> you have received it in error, please delete immediately and 
>>>>> notify the sender. Do not disclose, copy, circulate or in any way 
>>>>> use it. The information contained therein is for the address only, 
>>>>> if you reply on
>>>> it,
>>>>> its at your own risk. Emails are not guaranteed to be secure or 
>>>>> error
>>>> free,
>>>>> the message and any attachment could be intercepted, corrupted, 
>>>>> lost, delayed, incomplete or ammended. Computer warehouse group 
>>>>> and its
>>>> divisions
>>>>> do not accept liability for damage caused by this email or any
>>>> attachment.
>>>>> The message you tried to print is protected with Information 
>>>>> Rights Management. You don't have the necessary user rights to 
>>>>> print the
>>>> message.
>>>>> 
>>>>> 
>>>>> This email and any attachment thereto are confidential and priviledged.
>>>> if
>>>>> you have received it in error, please delete immediately and 
>>>>> notify the sender. Do not disclose, copy, circulate or in any way 
>>>>> use it. The information contained therein is for the address only, 
>>>>> if you reply on
>>>> it,
>>>>> its at your own risk. Emails are not guaranteed to be secure or 
>>>>> error
>>>> free,
>>>>> the message and any attachment could be intercepted, corrupted, 
>>>>> lost, delayed, incomplete or ammended. Computer warehouse group 
>>>>> and its
>>>> divisions
>>>>> do not accept liability for damage caused by this email or any
>>>> attachment.
>>>>> The message you tried to print is protected with Information 
>>>>> Rights Management. You don't have the necessary user rights to 
>>>>> print the
>>>> message.
>>>> 
> 



---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus


RE: Thinking about re-introducing UML in our workflow

Posted by Cesar Lugo <ce...@sisorg.com.mx>.
Hi. I also tried Papyrus, it works but the installation is a little tricky. Best guidance I got was this YouTube video, which adds the "missing link" to make it work. It's actually a part of a quite nice series with Papyrus and UML tutorial videos. I hope that helps.

https://www.youtube.com/watch?v=gmf8CswqKcs

Cesar.

-----Original Message-----
From: Stephen Cameron [mailto:steve.cameron.62@gmail.com] 
Sent: Monday, November 23, 2015 4:42 AM
To: users@isis.apache.org
Subject: Re: Thinking about re-introducing UML in our workflow

Spent some time on this today, but did not get far. I tried Papyrus but without success, couldn't get it to reverse engineer my code that is. Then I tried myeclipse which does support UML2 and does reverse engineer Java code to UML class diagrams and also updates these diagrams from any (code) 'Model' changes afterwards. However the trial strangelly doesn't support Activity diagrams despite them being in the documentation. So all in all not time well spent.

On Sat, Nov 21, 2015 at 9:31 AM, Stephen Cameron <steve.cameron.62@gmail.com
> wrote:

> Hi,
>
> Related to this thread, my new job involves maintenance of a Struts 2 
> based website, in thinking about the best way to approach this task, 
> both to learn how it has been put together and potentially make life 
> easier into the future I thought the best place to start is creating 
> some diagrams, maybe even UML diagrams .
>
> Then I remembered something called AndroMDA [1] from my past reading 
> on UML/MDA, it has a 'cartridge' for generating a Struts 
> web-application off a UML class model [2]. Just reading the 
> documentation now, it can also make use of an UML Activity diagram for 
> designing page navigation[3], also, it consume a BPMN diagram as a 
> design model too (Hmm, just maybe this has more potential than I imagined).
>
> I'll have a play with this myself soon (It seems like a fun way to 
> learn about Struts and JBOSS), but thought in worth mentioning in this 
> discussion. If I was starting from scratch to build such a 'public facing'
> website, an approach that I can see working is to first develop an 
> Apache Isis based domain model in Java and get all the systems 
> integrations needed working with that. Then, to generate UML class 
> diagrams off that design, add in the page navigation design (UML 
> Activity diagram?), and use that combination to generate the skeleton 
> of a tradition request/response type website using AndroMDA.
>
> If this all worked, it would provide something very close to a 
> commercial MDA suite that I was interested in supporting called 
> WebRatio [4], for which the public website design [5] market seems 
> quite large. They talk about web-applications, but  I like the Isis 
> coded model approach better for real applications (as opposed to 
> database back web-sites). For public facing web-sites, a templates 
> based approach does still seem to be valid, such as Struts/JSP, and 
> using a MDA probably a good way to manage that complexity.
>
> The WebRatio folk have designed a specific graphical web-site design 
> language called Interacton Flow Modelling Language (IFML) [6] (but 
> AndroMDA is UML focused). There is an open-source Eclipse plugin for 
> IFML that they have contributed to [7].
>
> Interested to hear thoughts, maybe a dead-end, but maybe not.
>
> Cheers
>
>
> [1] http://www.andromda.org/
> [2]
> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cartri
> dge/index.html
> [3]
> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cartri
> dge/howto2.html
> [4] http://www.webratio.com
> [5] 
> http://www.webratio.com/site/content/en/web-application-development
> [6] http://www.ifml.org/
> [7] http://ifml.github.io/
>
>
>
>
>
>
>
>
>
> On Fri, Nov 20, 2015 at 1:48 AM, Cesar Lugo <ce...@sisorg.com.mx>
> wrote:
>
>> Hi.
>>
>> I just wanted to let you guys know that I have tried Papyro in 
>> eclipse. I have been able to reverse engineer java code and create 
>> UML Class Diagrams (supports most of the UML types of diagrams 
>> including use cases, state machine, activity and many more). I tried 
>> adding a property within a domain object class, then redo java 
>> engineer and it keeps my diagram and was able to include the new 
>> property. I haven't been able to do the opposite, adding a property 
>> within the UML and have it add it to the existing java class though. 
>> Adding a new UML class generates java code just fine. I haven’t been 
>> able to reverse engineer some repository classes, anything that uses 
>> java.util.List fails to be imported into the UML model, I haven't 
>> find the solution yet (sortedSet works fine). It doesn't 
>> automatically create the diagram (like other simpler tools do), but 
>> once you import your java code into the UML model, it's just a matter 
>> of drag and drop and into the diagram canvas and select which 
>> properties and operations (actions) you want to be shown, very 
>> convenient to exclude the obvious from the diagram, like getters and setters, maybe disableXxx / hideXxx / defaultxXX methods, your choice.
>>
>> I will keep working on it, looking good so far.
>>
>> Cesar.
>>
>> -----Original Message-----
>> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
>> Sent: Monday, November 16, 2015 4:53 AM
>> To: users
>> Subject: Re: Thinking about re-introducing UML in our workflow
>>
>>
>> For you to know.
>>
>> I was just reading about “AgileJ” [1] (the video at [2] is excellent. 
>> It perfectly summarizes the points-of-view expressed here about the 
>> evolution last years of UML usage in dev teams).
>>
>> But I’ve also found the Papyrus Eclipse project [3]. Seems to be 
>> really alive (there has been a conference this month).
>>
>> And It also seems to have full code synch from Java … See [4].
>>
>> Any experience out there with Papyrus?
>> Could it be a good match for Apache Isis?
>>
>>
>> Cheers,
>>
>> Oscar
>>
>>
>> [1] http://www.agilej.com
>> [2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
>> [3] http://www.eclipse.org/papyrus/
>> [4]
>> https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diagra
>> ms-ordinary-java-developers
>>
>>
>>
>>
>> > El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS 
>> > <o....@govertis.com>
>> escribió:
>> >
>> >
>> > Hi all.
>> >
>> > First of all, the good news for all romantics:
>> >
>> > Together is still alive !!! See [1].
>> >
>> > [2] says it fully supports Eclipse.
>> >
>> > Really interesting, Jeroen, introducing Lombok.
>> > Look how clear and concise is the Aggregate in [3] expressed in C#.
>> >
>> >
>> > For me, my immediate need is to have a visual depiction of the new
>> features developers must work on.
>> > So an Agile diagramming tool would be ok for it.
>> >
>> > I’m used to drag-n-drop like interfaces, and I'm there are “visual”
>> tools out there that support plantuml, so it would be ok to be based on it.
>> >
>> > Also agree that the model "must be" the code (and not “the code is 
>> > the
>> model” MDA approach, despite my experience with Bold for 
>> Delphi/Capable Objects was REALLY really good).
>> >
>> >
>> >
>> > Regards,
>> >
>> > Oscar
>> >
>> >
>> >
>> > [1]
>> > http://www.borland.com/en-GB/Products/Requirements-Management/Toget
>> > her
>> > [2[
>> > http://www.borland.com/en-GB/Products/Requirements-Management/Toget
>> > her
>> > /Plugins-and-integrations [3]
>> > https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggrega
>> > tes
>> > /Register/RegistrationState.cs
>> >
>> >
>> >
>> >> El 16 nov 2015, a las 10:57, Mike Burton <mi...@mycosystems.co.uk>
>> escribió:
>> >>
>> >> Hi Jeroen,
>> >>
>> >> My experience is similar. I was always suspicious of the "code
>> generation " approach, inevitably gives 2 "sources" that get out of step.
>> >>
>> >> The only good exception I saw was TogetherJ where "the code is the
>> model"
>> >>
>> >> Best Regards
>> >>
>> >> Mike Burton
>> >> (Sent from my iPhone)
>> >>
>> >>
>> >>
>> >>> On 15 Nov 2015, at 23:44, Jeroen van der Wal 
>> >>> <je...@stromboli.it>
>> wrote:
>> >>>
>> >>> All very interesting!
>> >>>
>> >>> Over the years I tried numerous modelling tools and only the 
>> >>> low-tech ones
>> >>> stayed: drawing on a whiteboard, using coloured index cards [1] 
>> >>> (learned from Dan) or using a simple online tool like yUML [2]. 
>> >>> And I only use them to communicate the broad picture or for 
>> >>> explorative
>> purposes.
>> >>>
>> >>> I gave up on code generators: I always ended up fighting the 
>> >>> generated code. And the impression that they support rapid 
>> >>> application development proved wrong: at the point where you had 
>> >>> to work on more advanced stuff velocity came to a halt. If an 
>> >>> application is built on lots of repeating code snippets then my 
>> >>> conclusion is that the underlying framework is not good enough.
>> >>>
>> >>> I love source code that tells the story of the application. Where 
>> >>> everything that could be left out of the code is eliminated. Very 
>> >>> DRY, convention over code. This has drawn me to Naked Objects and 
>> >>> made me decide to spend my time on Apache Isis.
>> >>>
>> >>> As you imagine by now I would not take the route from diagram to 
>> >>> code. For me the code editor is the sole canvas to express your 
>> >>> ideas. And I think that if we keep improving Apache Isis on a few 
>> >>> points there will never be a need for an additional tool:
>> >>>
>> >>> 1) Reduce boilerplate and make writing an application skeleton as 
>> >>> easy as the easiest modelling tool. This has the advantage that a 
>> >>> software architect can sketch the application and leave it to his 
>> >>> developers to fill in details. But everyone is working on the 
>> >>> same code base using the same tools. In this area we started 
>> >>> using Lombok. Also Dan had an idea to make it possible to create 
>> >>> your own custom annotations which can combine multiple annotations.
>> >>>
>> >>> 2) Visualise the meta model. With contributions and mixins the 
>> >>> application logic can come from anywhere. This is architecturally 
>> >>> sane but makes an application hard to grasp. It would love to see 
>> >>> a maven plugin that generates appealing documentation from the 
>> >>> meta model of an Isis application.
>> >>>
>> >>> 3) When taking the visualisation concept a bit further it would 
>> >>> be very powerful to explore and navigate the meta model within the IDE.
>> >>> Any plugin developers here?
>> >>>
>> >>> That's just my two cents.
>> >>>
>> >>> Cheers,
>> >>>
>> >>> Jeroen
>> >>>
>> >>>
>> >>>> On 15 November 2015 at 21:01, David Tildesley 
>> >>>> <da...@yahoo.co.nz>
>> wrote:
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood < 
>> >>>> dan@haywood-associates.co.uk> wrote:
>> >>>>> Thanks for this James.
>> >>>>
>> >>>>> My observation re: using the (relational) data model as the 
>> >>>>> initial input though is that this is likely to lead to rather 
>> >>>>> coupled code, ultimately not maintainable.
>> >>>>
>> >>>> Couldn't agree more.
>> >>>>
>> >>>>
>> >>>>> So, while going from the database up to the domain is fine for 
>> >>>>> a single module of 10 or so entities, any app that is bigger 
>> >>>>> than this really
>> >>>> should
>> >>>>> be modelled from the domain down to the database.
>> >>>>
>> >>>> Quite right. Any business app that is non trivial should be 
>> >>>> domain modelled.
>> >>>>
>> >>>> David.
>> >>>>
>> >>>>> Dan
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>> On 14 November 2015 at 15:00, James Agada 
>> >>>>> <Ja...@cwg-plc.com>
>> wrote:
>> >>>>>
>> >>>>> I actually tested out using Telosys to generate an isis app 
>> >>>>> from database definition. It did work but of course it meant i 
>> >>>>> did the ER first. I used MySQL, did the ER modelling on the 
>> >>>>> workbench, forward engineered into the database and then used 
>> >>>>> telosys scripts to generate a functional Isis application. Did 
>> >>>>> it as a PoC but we
>> will come back to it later.
>> >>>>> James Agada
>> >>>>> Chief Technology Officer
>> >>>>>
>> >>>>>
>> >>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS 
>> >>>>> <o....@govertis.com>
>> >>>>> wrote:
>> >>>>>
>> >>>>> Many thanks, Stephen for this detailed explanation.
>> >>>>>
>> >>>>> The problem I’m facing is that I intent to communicate the 
>> >>>>> developers what’s the model to implement.
>> >>>>>
>> >>>>> And I usually don’t find big mistakes in action code, but what 
>> >>>>> mostly forces us to refactor is miscommunication regarding the 
>> >>>>> Domain Entities, attributes and actions names, including typos 
>> >>>>> (think my team speak
>> >>>> Spanish
>> >>>>> but they’re modeling in English) or wrong or missing 
>> >>>>> relationships
>> >>>> between
>> >>>>> those entities.
>> >>>>>
>> >>>>> All that could be avoided by firstly agree in a common UML 
>> >>>>> Class
>> Diagram.
>> >>>>>
>> >>>>> If it can potentially generate automatically the Java skeleton 
>> >>>>> with
>> >>>> Apache
>> >>>>> Isis annotations is a big plus, as it will avoid mistakes when 
>> >>>>> moving
>> >>>> from
>> >>>>> design to implementation.
>> >>>>>
>> >>>>> And if it could potentially reverse engineer Java (incl. Apache 
>> >>>>> Isis
>> >>>>> idioms) a really good feature.
>> >>>>>
>> >>>>> Any ideas about what tools could best adapt to the workflow 
>> >>>>> (that could
>> >>>> be
>> >>>>> potentially customized to cover the last 2 whishes) ?
>> >>>>>
>> >>>>>
>> >>>>> Thanks,
>> >>>>>
>> >>>>> Oscar
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> El 14 nov 2015, a las 2:03, Stephen Cameron 
>> >>>>> <st...@gmail.com>
>> >>>>> escribió:
>> >>>>>
>> >>>>> Hi Oscar,
>> >>>>>
>> >>>>> In a qualified way I think your idea has merit. I have never 
>> >>>>> used UML for design, but a few years ago I decided to take a 
>> >>>>> good look at it and see
>> >>>> it
>> >>>>> if was useful. The idea of being able to draw a diagram and 
>> >>>>> generate code from it seemed sensible, after all that is what 
>> >>>>> is done by most other 'design' professions, such as building
>> architects and engineers.
>> >>>>>
>> >>>>> To cut a long story short I realised after some reading that it 
>> >>>>> was not that simple, and that OO languages themselves are 
>> >>>>> really all that are needed for the process of designing a 
>> >>>>> system. This is "the code is the design" school of thought, 
>> >>>>> mainly attributed to
>> Jack Reeves [1].
>> >>>>>
>> >>>>> I found that  keeping code and UML diagrams in sync in a 
>> >>>>> top-down 'UML to code' design process will always be 
>> >>>>> problematic (maybe why there are apparently no open-source tools that claim to do this).
>> >>>>> Then I read about Domain Driven Design which seemed to agree 
>> >>>>> with this premise, and from there found Apache Isis via Dan's  book.
>> >>>>>
>> >>>>> So now for me UML class diagrams do have an after the fact use 
>> >>>>> for documentation purposes and if a solution implement was 
>> >>>>> capable of that reverse generation of diagrams from code it 
>> >>>>> would be a good thing to
>> >>>> have.
>> >>>>> Entity Framework can do this, its their "code first" approach.
>> >>>>>
>> >>>>> Given that the-code-is-the-design is true, I think that UML 
>> >>>>> class
>> >>>> diagrams
>> >>>>> real main value is as a data model, the question then is why 
>> >>>>> not use a purely data-modeling tool and generate Java classes off it.
>> >>>>> Then the diagrams 'designed' could have a usefulness to 
>> >>>>> programmers and to system users, something like those created
>> SchemaSpy [2]  for example.
>> >>>>>
>> >>>>> There are already useful and free Java class generation 
>> >>>>> (binding) tools from off data-models, of one sort or another, 
>> >>>>> such as JAXB,
>> DataNucleus'
>> >>>>> schemaGen[3], even CAM [4].
>> >>>>>
>> >>>>> Here is my vision of what I think would be really useful: to 
>> >>>>> have a
>> >>>> design
>> >>>>> tool that can be used by non-programmers to create a simple 
>> >>>>> data-model,
>> >>>> and
>> >>>>> then to have that create a working Apache Isis based CRUD system.
>> >>>>> This could serve your purpose (I guess) and also find a wider use.
>> >>>>>
>> >>>>> The means of achieving this would I think, require something 
>> >>>>> like the "dynamic classes" in available in the Moxy framework 
>> >>>>> [5], that is, map based so that no Java class compilation is needed.
>> >>>>> Instead, a data-model configuration file (a schema) is read-in 
>> >>>>> to configure the system. This is not a strange idea, in fact 
>> >>>>> its the data-driven programming paradigm that is the basis of 
>> >>>>> the original browser concept (before it was turned into
>> >>>> OO
>> >>>>> application framework via addition of Javascript). In the 
>> >>>>> browser the
>> >>>> data
>> >>>>> is HTML that is turned into an in-memory Document Object Model
>> >>>>> (DOM) for rendering.
>> >>>>>
>> >>>>> As a blended solution between Apache Isis as it is currently 
>> >>>>> (heavily influence by naked objects, an OO modelling based 
>> >>>>> approach for creating custom *behavioural* applications) and 
>> >>>>> this additional mainly data
>> >>>> focused
>> >>>>> approach, I think a programmer developing a business 
>> >>>>> application would start off with these dymanic classes and then 
>> >>>>> in time 'harden' the design by generating and compiling real 
>> >>>>> Java classes from off the model. [A non-programmer wouldn't get 
>> >>>>> past the first design 'phase' usually, but still end up with a 
>> >>>>> useable UI.]
>> >>>>>
>> >>>>> In addition, by having separate abstract model-generated 
>> >>>>> classes, that
>> >>>> can
>> >>>>> be overwritten if the data-model changes, and concrete 
>> >>>>> implementation classes, where you put all your behavioural code 
>> >>>>> and that are never overwritten, you get close to the 
>> >>>>> 'round-tripping' that would seem to me
>> >>>> to
>> >>>>> be the only valid way to use UML *for design*. I think this is 
>> >>>>> how the Eclipse Ecore models work, that there are model classes 
>> >>>>> and
>> >>>> implementation
>> >>>>> classes that extend the model classes. The IDE will often warn 
>> >>>>> you when these two sub-models have inconsistencies. This 
>> >>>>> duality also offers an alternative means to achieving the goals 
>> >>>>> of Lombok it
>> would seem.
>> >>>>>
>> >>>>> Of course, sitting in the middle of all this is a meta-model, 
>> >>>>> that
>> >>>> creates
>> >>>>> the dynamic classes, generates and compiles the 'hardened' 
>> >>>>> model classes (when used) and maps either of these means to a UI 'viewer'.
>> >>>>>
>> >>>>> For such data-management frameworks, the complicated aspect 
>> >>>>> isn't so much going from the designed data-model to Java, there 
>> >>>>> are lots of examples of that, instead its being able to have 
>> >>>>> also, a dynamic query capability. So that a person unfamiliar 
>> >>>>> with the dataset, can, via its data-model, start querying it 
>> >>>>> (and also maybe integrating it in real-time with other online 
>> >>>>> resources, the
>> idea of a data-browser appeals!).
>> >>>>>
>> >>>>> In the science domain, where I worked for a few years building 
>> >>>>> data-management infrastructure, there are highly advanced 
>> >>>>> systems for online data access and querying e.g. [6], but at 
>> >>>>> the same time a common tool used for small databases is still Microsoft Access.
>> >>>>> Access has many strengths as a desktop database, including form 
>> >>>>> generation and also
>> >>>> dynamic
>> >>>>> query-by-form, but the problems arise when you want to make 
>> >>>>> such data publicly available, in the sense of being findable 
>> >>>>> and searchable in real time. You might as well have used a 
>> >>>>> web-based system from the start and then been able to easily 
>> >>>>> open it to the
>> world at the appropriate time.
>> >>>>>
>> >>>>> Having though about this problem for a number of years and 
>> >>>>> spent alot of time working on a XForms based solution as well. 
>> >>>>> I'd be very interested
>> >>>> to
>> >>>>> see Apache Isis broaden its scope to offer what I have 
>> >>>>> described, in fact its doesn't seem to need very much more than 
>> >>>>> what is already present in
>> >>>> the
>> >>>>> Isis meta-model and Wicket viewer. The Restful objects support 
>> >>>>> already provides a generic 'generated' web programming interface.
>> >>>>>
>> >>>>> In summary I know that there are some Java projects that make 
>> >>>>> very effective use of a Model Driven Architecture approach (e.g 
>> >>>>> [7]), but I am now not sure that UML is the 
>> >>>>> 'be-all-and-end-all' basis of
>> that.
>> >>>> Actually I
>> >>>>> think that data-models are the basis of most of MDAs efficiency 
>> >>>>> dividends and that there are other approaches, specifically 
>> >>>>> that conceptual models offer more versatility in terms of who 
>> >>>>> and how
>> you can make use of them.
>> >>>>> This thinking goes way back, such as Sowa's Conceptual Graphs 
>> >>>>> [8] and
>> >>>> even
>> >>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather) 
>> >>>>> is the W3C semantic web, but he was thinking of database design 
>> >>>>> and
>> query way back.
>> >>>>>
>> >>>>> Apart from some additions to Isis, another interesting aspect 
>> >>>>> is looking
>> >>>> at
>> >>>>> the mapping to data-stores, using a graph database of one sort 
>> >>>>> or another to avoid the complexity of ORM is a simple answer to 
>> >>>>> that I feel. Again, the hardening of a design might mean 
>> >>>>> manually adding a few overrides of default ORM mapping rules 
>> >>>>> into some behavioural-model classes, that
>> >>>> extend
>> >>>>> generated data-model classes (getters and setters only).
>> >>>>>
>> >>>>>
>> >>>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_m
>> >>>>> ain
>> >>>>> .html
>> >>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
>> >>>>> [3]
>> >>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/sch
>> >>>> ema
>> >>>> tool.html
>> >>>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
>> >>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
>> >>>>> [6]http://www.opendap.org/
>> >>>>> [7]http://www.opencrx.org/
>> >>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
>> >>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
>> >>>>>
>> >>>>> 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.
>> >>>>>
>> >>>>> 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?
>> >>>>>
>> >>>>> Thanks,
>> >>>>>
>> >>>>> Oscar
>> >>>>>
>> >>>>>
>> >>>>> [1] http://roomodeler.com
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> This email and any attachment thereto are confidential and
>> priviledged.
>> >>>> if
>> >>>>> you have received it in error, please delete immediately and 
>> >>>>> notify the sender. Do not disclose, copy, circulate or in any 
>> >>>>> way use it. The information contained therein is for the 
>> >>>>> address only, if you reply on
>> >>>> it,
>> >>>>> its at your own risk. Emails are not guaranteed to be secure or 
>> >>>>> error
>> >>>> free,
>> >>>>> the message and any attachment could be intercepted, corrupted, 
>> >>>>> lost, delayed, incomplete or ammended. Computer warehouse group 
>> >>>>> and its
>> >>>> divisions
>> >>>>> do not accept liability for damage caused by this email or any
>> >>>> attachment.
>> >>>>> The message you tried to print is protected with Information 
>> >>>>> Rights Management. You don't have the necessary user rights to 
>> >>>>> print the
>> >>>> message.
>> >>>>>
>> >>>>>
>> >>>>> This email and any attachment thereto are confidential and
>> priviledged.
>> >>>> if
>> >>>>> you have received it in error, please delete immediately and 
>> >>>>> notify the sender. Do not disclose, copy, circulate or in any 
>> >>>>> way use it. The information contained therein is for the 
>> >>>>> address only, if you reply on
>> >>>> it,
>> >>>>> its at your own risk. Emails are not guaranteed to be secure or 
>> >>>>> error
>> >>>> free,
>> >>>>> the message and any attachment could be intercepted, corrupted, 
>> >>>>> lost, delayed, incomplete or ammended. Computer warehouse group 
>> >>>>> and its
>> >>>> divisions
>> >>>>> do not accept liability for damage caused by this email or any
>> >>>> attachment.
>> >>>>> The message you tried to print is protected with Information 
>> >>>>> Rights Management. You don't have the necessary user rights to 
>> >>>>> print the
>> >>>> message.
>> >>>>
>> >
>>
>>
>>
>> ---
>> This email has been checked for viruses by Avast antivirus software.
>> https://www.avast.com/antivirus
>>
>>
>


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus


Re: Thinking about re-introducing UML in our workflow

Posted by Óscar Bou - GOVERTIS <o....@govertis.com>.
Hi, Dan for this summary.

I agree with Cesar that Eclipse Papyrus can be of help for the initial use case.
Just needing to know if it’s only a matter of configuring their profiles or primitive types definition to generate entities, properties, actions, etc. annotated with JDO and Isis annotations.

Thanks,

Oscar


> El 26 nov 2015, a las 11:01, Dan Haywood <da...@haywood-associates.co.uk> escribió:
> 
> Just to pull this thread apart a little:
> 
> - there are various tools candidates for Oscar's original use case, ie to
> model class diagrams then forward generate into Java, thereafter ideally to
> allow reverse engineering.  Eclipse Papyrus looks promising for this
> - for old-fashioned visualization of existing Java code, there is AgileJ.
> I remember this product from a while back, nice to see it still going, and
> a very reasonable price I think.
> - I've raised ISIS-1267 for my idea of generating either the PlantUML class
> diagrams from the Isis metamodel (for visualization thereafter using
> Asciidoctor-diagram, or XTextPlantUML), or alternatively umlgraph.org's DSL
> - I've raised ISIS-1268 for my idea of generating PlantUML sequence
> diagrams by running integration tests.
> 
> Thx
> Dan
> 
> https://issues.apache.org/jira/browse/ISIS-1267
> https://issues.apache.org/jira/browse/ISIS-1268
> 
> 
> 
> On 26 November 2015 at 00:04, Stephen Cameron <st...@gmail.com>
> wrote:
> 
>> In terms of using UML for after the fact documentation, I like this
>> UMLGraph approach:
>> 
>> http://umlgraph.org
>> 
>> On Tue, Nov 24, 2015 at 9:42 AM, Stephen Cameron <
>> steve.cameron.62@gmail.com
>>> wrote:
>> 
>>> 
>>> 
>>> On Tue, Nov 24, 2015 at 9:19 AM, Cesar Lugo <ce...@sisorg.com.mx>
>>> wrote:
>>> 
>>>> Hi Oscar,
>>>> 
>>>> Reverse engineering worked for me just fine, also when you make changes
>>>> to the code and update the UMl from it. When you have your UML
>> repository
>>>> open (diagram canvas open), the you select the java class or classes
>> from
>>>> Isis repo, click the java reverse button or select the right click -
>> java -
>>>> reverse option, and it will import the selected classes to the UML
>>>> repository. From there you drag and drop the UML classes you want on the
>>>> diagram canvas (from the UML repo to the Diagram canvas), and once on
>> the
>>>> diagram you select the class element and press F4 (or right click for
>>>> contextual menu), so it let's you choose the properties and methods you
>>>> want to be shown / hidden from the menu. When you make changes to the
>> code,
>>>> just do the same again and it will update the UML metadata, F4 again on
>> the
>>>> class and select the new properties or methods you want to be shown on
>> the
>>>> diagram.
>>>> 
>>>> Hmm, definitely a "missing link" in my case as none of this worked, I
>>> will watch the video.
>>> 
>>> 
>>>> The issue I have found is that if the class contains a java.util.List,
>> it
>>>> won't import the whole class (typically repositories or menu classes).
>>>> Haven't find the time to check why or solve that, but I can see in the
>> UML
>>>> repository a java element that contains a Java - Util - SortedSet, but
>> not
>>>> a Java - Util - List element. That might be the reason, just hopping
>> there
>>>> is a way to add the List to make it work too.
>>>> 
>>>> Cesar.
>>>> 
>>>> -----Original Message-----
>>>> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
>>>> Sent: Monday, November 23, 2015 2:37 PM
>>>> To: users@isis.apache.org
>>>> Subject: Re: Thinking about re-introducing UML in our workflow
>>>> 
>>>> H, Cesar.
>>>> 
>>>> Thanks here also.
>>>> 
>>>> I’ve seen the video, but need to find time to install and test it
>> locally.
>>>> 
>>>> Seems interesting for direct generation.
>>>> No example is given for reverse-engineering.
>>>> 
>>>> As I see, customizing for Apache Isis would be a matter of defining
>>>> - a custom profile for Apache Isis (perhaps it would be enough with the
>>>> Java one).
>>>> - and an Apache-Isis specific Library (for generating the properties,
>>>> actions, etc. with the proper annotations).
>>>> 
>>>> It remembers me quite well the Spring Roo customization on SparxSystem’s
>>>> Enterprise Arquitect.
>>>> 
>>>> There I implemented also a custom toolbox, in order to avoid to first
>>>> create the attribute and after that assign to the specific library item
>>>> (instead of 2 different steps).
>>>> 
>>>> Perhaps all that is also possible here.
>>>> 
>>>> 
>>>> Thanks,
>>>> 
>>>> Oscar
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> El 23 nov 2015, a las 21:18, Stephen Cameron <
>>>> steve.cameron.62@gmail.com> escribió:
>>>>> 
>>>>> Thanks Cesar, I will give it a go, but don't have alot of time now
>>>>> this week. They use myeclipse at work and its cheap to buy a licence,
>>>>> so I'll find out why the activity diagrams are missing.
>>>>> 
>>>>> I am also keen to take a closer look at IFML [1] in terms of it being
>>>>> integated with the workflow addon in Apache-Isis. This is instead of
>>>>> UML Activity diagrams.
>>>>> 
>>>>> [1] http://www.ifml.org
>>>>> 
>>>>> On Tue, Nov 24, 2015 at 3:00 AM, Cesar Lugo <cesar.lugo@sisorg.com.mx
>>> 
>>>>> wrote:
>>>>> 
>>>>>> Hi. I also tried Papyrus, it works but the installation is a little
>>>>>> tricky. Best guidance I got was this YouTube video, which adds the
>>>>>> "missing link" to make it work. It's actually a part of a quite nice
>>>>>> series with Papyrus and UML tutorial videos. I hope that helps.
>>>>>> 
>>>>>> https://www.youtube.com/watch?v=gmf8CswqKcs
>>>>>> 
>>>>>> Cesar.
>>>>>> 
>>>>>> -----Original Message-----
>>>>>> From: Stephen Cameron [mailto:steve.cameron.62@gmail.com]
>>>>>> Sent: Monday, November 23, 2015 4:42 AM
>>>>>> To: users@isis.apache.org
>>>>>> Subject: Re: Thinking about re-introducing UML in our workflow
>>>>>> 
>>>>>> Spent some time on this today, but did not get far. I tried Papyrus
>>>>>> but without success, couldn't get it to reverse engineer my code that
>>>>>> is. Then I tried myeclipse which does support UML2 and does reverse
>>>>>> engineer Java code to UML class diagrams and also updates these
>>>>>> diagrams from any (code) 'Model' changes afterwards. However the
>>>>>> trial strangelly doesn't support Activity diagrams despite them being
>>>>>> in the documentation. So all in all not time well spent.
>>>>>> 
>>>>>> On Sat, Nov 21, 2015 at 9:31 AM, Stephen Cameron <
>>>>>> steve.cameron.62@gmail.com
>>>>>>> wrote:
>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> Related to this thread, my new job involves maintenance of a Struts
>>>>>>> 2 based website, in thinking about the best way to approach this
>>>>>>> task, both to learn how it has been put together and potentially
>>>>>>> make life easier into the future I thought the best place to start
>>>>>>> is creating some diagrams, maybe even UML diagrams .
>>>>>>> 
>>>>>>> Then I remembered something called AndroMDA [1] from my past reading
>>>>>>> on UML/MDA, it has a 'cartridge' for generating a Struts
>>>>>>> web-application off a UML class model [2]. Just reading the
>>>>>>> documentation now, it can also make use of an UML Activity diagram
>>>>>>> for designing page navigation[3], also, it consume a BPMN diagram as
>>>>>>> a design model too (Hmm, just maybe this has more potential than I
>>>>>> imagined).
>>>>>>> 
>>>>>>> I'll have a play with this myself soon (It seems like a fun way to
>>>>>>> learn about Struts and JBOSS), but thought in worth mentioning in
>>>>>>> this discussion. If I was starting from scratch to build such a
>>>>>>> 'public
>>>>>> facing'
>>>>>>> website, an approach that I can see working is to first develop an
>>>>>>> Apache Isis based domain model in Java and get all the systems
>>>>>>> integrations needed working with that. Then, to generate UML class
>>>>>>> diagrams off that design, add in the page navigation design (UML
>>>>>>> Activity diagram?), and use that combination to generate the
>>>>>>> skeleton of a tradition request/response type website using
>> AndroMDA.
>>>>>>> 
>>>>>>> If this all worked, it would provide something very close to a
>>>>>>> commercial MDA suite that I was interested in supporting called
>>>>>>> WebRatio [4], for which the public website design [5] market seems
>>>>>>> quite large. They talk about web-applications, but  I like the Isis
>>>>>>> coded model approach better for real applications (as opposed to
>>>>>>> database back web-sites). For public facing web-sites, a templates
>>>>>>> based approach does still seem to be valid, such as Struts/JSP, and
>>>>>>> using a MDA probably a good way to manage that complexity.
>>>>>>> 
>>>>>>> The WebRatio folk have designed a specific graphical web-site design
>>>>>>> language called Interacton Flow Modelling Language (IFML) [6] (but
>>>>>>> AndroMDA is UML focused). There is an open-source Eclipse plugin for
>>>>>>> IFML that they have contributed to [7].
>>>>>>> 
>>>>>>> Interested to hear thoughts, maybe a dead-end, but maybe not.
>>>>>>> 
>>>>>>> Cheers
>>>>>>> 
>>>>>>> 
>>>>>>> [1] http://www.andromda.org/
>>>>>>> [2]
>>>>>>> 
>> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart
>>>>>>> ri
>>>>>>> dge/index.html
>>>>>>> [3]
>>>>>>> 
>> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart
>>>>>>> ri
>>>>>>> dge/howto2.html
>>>>>>> [4] http://www.webratio.com
>>>>>>> [5]
>>>>>>> http://www.webratio.com/site/content/en/web-application-development
>>>>>>> [6] http://www.ifml.org/
>>>>>>> [7] http://ifml.github.io/
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On Fri, Nov 20, 2015 at 1:48 AM, Cesar Lugo
>>>>>>> <ce...@sisorg.com.mx>
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> Hi.
>>>>>>>> 
>>>>>>>> I just wanted to let you guys know that I have tried Papyro in
>>>>>>>> eclipse. I have been able to reverse engineer java code and create
>>>>>>>> UML Class Diagrams (supports most of the UML types of diagrams
>>>>>>>> including use cases, state machine, activity and many more). I
>>>>>>>> tried adding a property within a domain object class, then redo
>>>>>>>> java engineer and it keeps my diagram and was able to include the
>>>>>>>> new property. I haven't been able to do the opposite, adding a
>>>>>>>> property within the UML and have it add it to the existing java
>>>> class though.
>>>>>>>> Adding a new UML class generates java code just fine. I haven’t
>>>>>>>> been able to reverse engineer some repository classes, anything
>>>>>>>> that uses java.util.List fails to be imported into the UML model, I
>>>>>>>> haven't find the solution yet (sortedSet works fine). It doesn't
>>>>>>>> automatically create the diagram (like other simpler tools do), but
>>>>>>>> once you import your java code into the UML model, it's just a
>>>>>>>> matter of drag and drop and into the diagram canvas and select
>>>>>>>> which properties and operations (actions) you want to be shown,
>>>>>>>> very convenient to exclude the obvious from the diagram, like
>>>>>>>> getters and
>>>>>> setters, maybe disableXxx / hideXxx / defaultxXX methods, your
>> choice.
>>>>>>>> 
>>>>>>>> I will keep working on it, looking good so far.
>>>>>>>> 
>>>>>>>> Cesar.
>>>>>>>> 
>>>>>>>> -----Original Message-----
>>>>>>>> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
>>>>>>>> Sent: Monday, November 16, 2015 4:53 AM
>>>>>>>> To: users
>>>>>>>> Subject: Re: Thinking about re-introducing UML in our workflow
>>>>>>>> 
>>>>>>>> 
>>>>>>>> For you to know.
>>>>>>>> 
>>>>>>>> I was just reading about “AgileJ” [1] (the video at [2] is
>> excellent.
>>>>>>>> It perfectly summarizes the points-of-view expressed here about the
>>>>>>>> evolution last years of UML usage in dev teams).
>>>>>>>> 
>>>>>>>> But I’ve also found the Papyrus Eclipse project [3]. Seems to be
>>>>>>>> really alive (there has been a conference this month).
>>>>>>>> 
>>>>>>>> And It also seems to have full code synch from Java … See [4].
>>>>>>>> 
>>>>>>>> Any experience out there with Papyrus?
>>>>>>>> Could it be a good match for Apache Isis?
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Cheers,
>>>>>>>> 
>>>>>>>> Oscar
>>>>>>>> 
>>>>>>>> 
>>>>>>>> [1] http://www.agilej.com
>>>>>>>> [2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
>>>>>>>> [3] http://www.eclipse.org/papyrus/ [4]
>>>>>>>> 
>> https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diag
>>>>>>>> ra
>>>>>>>> ms-ordinary-java-developers
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS
>>>>>>>>> <o....@govertis.com>
>>>>>>>> escribió:
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Hi all.
>>>>>>>>> 
>>>>>>>>> First of all, the good news for all romantics:
>>>>>>>>> 
>>>>>>>>> Together is still alive !!! See [1].
>>>>>>>>> 
>>>>>>>>> [2] says it fully supports Eclipse.
>>>>>>>>> 
>>>>>>>>> Really interesting, Jeroen, introducing Lombok.
>>>>>>>>> Look how clear and concise is the Aggregate in [3] expressed in
>> C#.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> For me, my immediate need is to have a visual depiction of the new
>>>>>>>> features developers must work on.
>>>>>>>>> So an Agile diagramming tool would be ok for it.
>>>>>>>>> 
>>>>>>>>> I’m used to drag-n-drop like interfaces, and I'm there are
>> “visual”
>>>>>>>> tools out there that support plantuml, so it would be ok to be
>>>>>>>> based on
>>>>>> it.
>>>>>>>>> 
>>>>>>>>> Also agree that the model "must be" the code (and not “the code is
>>>>>>>>> the
>>>>>>>> model” MDA approach, despite my experience with Bold for
>>>>>>>> Delphi/Capable Objects was REALLY really good).
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Regards,
>>>>>>>>> 
>>>>>>>>> Oscar
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> [1]
>>>>>>>>> 
>> http://www.borland.com/en-GB/Products/Requirements-Management/Toge
>>>>>>>>> t
>>>>>>>>> her
>>>>>>>>> [2[
>>>>>>>>> 
>> http://www.borland.com/en-GB/Products/Requirements-Management/Toge
>>>>>>>>> t
>>>>>>>>> her
>>>>>>>>> /Plugins-and-integrations [3]
>>>>>>>>> 
>> https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggreg
>>>>>>>>> a
>>>>>>>>> tes
>>>>>>>>> /Register/RegistrationState.cs
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>> El 16 nov 2015, a las 10:57, Mike Burton
>>>>>>>>>> <mi...@mycosystems.co.uk>
>>>>>>>> escribió:
>>>>>>>>>> 
>>>>>>>>>> Hi Jeroen,
>>>>>>>>>> 
>>>>>>>>>> My experience is similar. I was always suspicious of the "code
>>>>>>>> generation " approach, inevitably gives 2 "sources" that get out of
>>>>>> step.
>>>>>>>>>> 
>>>>>>>>>> The only good exception I saw was TogetherJ where "the code is
>>>>>>>>>> the
>>>>>>>> model"
>>>>>>>>>> 
>>>>>>>>>> Best Regards
>>>>>>>>>> 
>>>>>>>>>> Mike Burton
>>>>>>>>>> (Sent from my iPhone)
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> On 15 Nov 2015, at 23:44, Jeroen van der Wal
>>>>>>>>>>> <je...@stromboli.it>
>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> All very interesting!
>>>>>>>>>>> 
>>>>>>>>>>> Over the years I tried numerous modelling tools and only the
>>>>>>>>>>> low-tech ones
>>>>>>>>>>> stayed: drawing on a whiteboard, using coloured index cards [1]
>>>>>>>>>>> (learned from Dan) or using a simple online tool like yUML [2].
>>>>>>>>>>> And I only use them to communicate the broad picture or for
>>>>>>>>>>> explorative
>>>>>>>> purposes.
>>>>>>>>>>> 
>>>>>>>>>>> I gave up on code generators: I always ended up fighting the
>>>>>>>>>>> generated code. And the impression that they support rapid
>>>>>>>>>>> application development proved wrong: at the point where you had
>>>>>>>>>>> to work on more advanced stuff velocity came to a halt. If an
>>>>>>>>>>> application is built on lots of repeating code snippets then my
>>>>>>>>>>> conclusion is that the underlying framework is not good enough.
>>>>>>>>>>> 
>>>>>>>>>>> I love source code that tells the story of the application.
>>>>>>>>>>> Where everything that could be left out of the code is
>>>>>>>>>>> eliminated. Very DRY, convention over code. This has drawn me to
>>>>>>>>>>> Naked Objects and made me decide to spend my time on Apache
>> Isis.
>>>>>>>>>>> 
>>>>>>>>>>> As you imagine by now I would not take the route from diagram to
>>>>>>>>>>> code. For me the code editor is the sole canvas to express your
>>>>>>>>>>> ideas. And I think that if we keep improving Apache Isis on a
>>>>>>>>>>> few points there will never be a need for an additional tool:
>>>>>>>>>>> 
>>>>>>>>>>> 1) Reduce boilerplate and make writing an application skeleton
>>>>>>>>>>> as easy as the easiest modelling tool. This has the advantage
>>>>>>>>>>> that a software architect can sketch the application and leave
>>>>>>>>>>> it to his developers to fill in details. But everyone is working
>>>>>>>>>>> on the same code base using the same tools. In this area we
>>>>>>>>>>> started using Lombok. Also Dan had an idea to make it possible
>>>>>>>>>>> to create your own custom annotations which can combine multiple
>>>> annotations.
>>>>>>>>>>> 
>>>>>>>>>>> 2) Visualise the meta model. With contributions and mixins the
>>>>>>>>>>> application logic can come from anywhere. This is
>>>>>>>>>>> architecturally sane but makes an application hard to grasp. It
>>>>>>>>>>> would love to see a maven plugin that generates appealing
>>>>>>>>>>> documentation from the meta model of an Isis application.
>>>>>>>>>>> 
>>>>>>>>>>> 3) When taking the visualisation concept a bit further it would
>>>>>>>>>>> be very powerful to explore and navigate the meta model within
>>>>>>>>>>> the
>>>>>> IDE.
>>>>>>>>>>> Any plugin developers here?
>>>>>>>>>>> 
>>>>>>>>>>> That's just my two cents.
>>>>>>>>>>> 
>>>>>>>>>>> Cheers,
>>>>>>>>>>> 
>>>>>>>>>>> Jeroen
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>>> On 15 November 2015 at 21:01, David Tildesley
>>>>>>>>>>>> <da...@yahoo.co.nz>
>>>>>>>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
>>>>>>>>>>>> dan@haywood-associates.co.uk> wrote:
>>>>>>>>>>>>> Thanks for this James.
>>>>>>>>>>>> 
>>>>>>>>>>>>> My observation re: using the (relational) data model as the
>>>>>>>>>>>>> initial input though is that this is likely to lead to rather
>>>>>>>>>>>>> coupled code, ultimately not maintainable.
>>>>>>>>>>>> 
>>>>>>>>>>>> Couldn't agree more.
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> So, while going from the database up to the domain is fine for
>>>>>>>>>>>>> a single module of 10 or so entities, any app that is bigger
>>>>>>>>>>>>> than this really
>>>>>>>>>>>> should
>>>>>>>>>>>>> be modelled from the domain down to the database.
>>>>>>>>>>>> 
>>>>>>>>>>>> Quite right. Any business app that is non trivial should be
>>>>>>>>>>>> domain modelled.
>>>>>>>>>>>> 
>>>>>>>>>>>> David.
>>>>>>>>>>>> 
>>>>>>>>>>>>> Dan
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> On 14 November 2015 at 15:00, James Agada
>>>>>>>>>>>>> <Ja...@cwg-plc.com>
>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I actually tested out using Telosys to generate an isis app
>>>>>>>>>>>>> from database definition. It did work but of course it meant i
>>>>>>>>>>>>> did the ER first. I used MySQL, did the ER modelling on the
>>>>>>>>>>>>> workbench, forward engineered into the database and then used
>>>>>>>>>>>>> telosys scripts to generate a functional Isis application. Did
>>>>>>>>>>>>> it as a PoC but we
>>>>>>>> will come back to it later.
>>>>>>>>>>>>> James Agada
>>>>>>>>>>>>> Chief Technology Officer
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS
>>>>>>>>>>>>> <o....@govertis.com>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Many thanks, Stephen for this detailed explanation.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> The problem I’m facing is that I intent to communicate the
>>>>>>>>>>>>> developers what’s the model to implement.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> And I usually don’t find big mistakes in action code, but what
>>>>>>>>>>>>> mostly forces us to refactor is miscommunication regarding the
>>>>>>>>>>>>> Domain Entities, attributes and actions names, including typos
>>>>>>>>>>>>> (think my team speak
>>>>>>>>>>>> Spanish
>>>>>>>>>>>>> but they’re modeling in English) or wrong or missing
>>>>>>>>>>>>> relationships
>>>>>>>>>>>> between
>>>>>>>>>>>>> those entities.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> All that could be avoided by firstly agree in a common UML
>>>>>>>>>>>>> Class
>>>>>>>> Diagram.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> If it can potentially generate automatically the Java skeleton
>>>>>>>>>>>>> with
>>>>>>>>>>>> Apache
>>>>>>>>>>>>> Isis annotations is a big plus, as it will avoid mistakes when
>>>>>>>>>>>>> moving
>>>>>>>>>>>> from
>>>>>>>>>>>>> design to implementation.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> And if it could potentially reverse engineer Java (incl.
>>>>>>>>>>>>> Apache Isis
>>>>>>>>>>>>> idioms) a really good feature.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Any ideas about what tools could best adapt to the workflow
>>>>>>>>>>>>> (that could
>>>>>>>>>>>> be
>>>>>>>>>>>>> potentially customized to cover the last 2 whishes) ?
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Oscar
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> El 14 nov 2015, a las 2:03, Stephen Cameron
>>>>>>>>>>>>> <st...@gmail.com>
>>>>>>>>>>>>> escribió:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi Oscar,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> In a qualified way I think your idea has merit. I have never
>>>>>>>>>>>>> used UML for design, but a few years ago I decided to take a
>>>>>>>>>>>>> good look at it and see
>>>>>>>>>>>> it
>>>>>>>>>>>>> if was useful. The idea of being able to draw a diagram and
>>>>>>>>>>>>> generate code from it seemed sensible, after all that is what
>>>>>>>>>>>>> is done by most other 'design' professions, such as building
>>>>>>>> architects and engineers.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> To cut a long story short I realised after some reading that
>>>>>>>>>>>>> it was not that simple, and that OO languages themselves are
>>>>>>>>>>>>> really all that are needed for the process of designing a
>>>>>>>>>>>>> system. This is "the code is the design" school of thought,
>>>>>>>>>>>>> mainly attributed to
>>>>>>>> Jack Reeves [1].
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I found that  keeping code and UML diagrams in sync in a
>>>>>>>>>>>>> top-down 'UML to code' design process will always be
>>>>>>>>>>>>> problematic (maybe why there are apparently no open-source
>>>>>>>>>>>>> tools
>>>>>> that claim to do this).
>>>>>>>>>>>>> Then I read about Domain Driven Design which seemed to agree
>>>>>>>>>>>>> with this premise, and from there found Apache Isis via Dan's
>>>>>> book.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> So now for me UML class diagrams do have an after the fact use
>>>>>>>>>>>>> for documentation purposes and if a solution implement was
>>>>>>>>>>>>> capable of that reverse generation of diagrams from code it
>>>>>>>>>>>>> would be a good thing to
>>>>>>>>>>>> have.
>>>>>>>>>>>>> Entity Framework can do this, its their "code first" approach.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Given that the-code-is-the-design is true, I think that UML
>>>>>>>>>>>>> class
>>>>>>>>>>>> diagrams
>>>>>>>>>>>>> real main value is as a data model, the question then is why
>>>>>>>>>>>>> not use a purely data-modeling tool and generate Java classes
>>>>>>>>>>>>> off
>>>>>> it.
>>>>>>>>>>>>> Then the diagrams 'designed' could have a usefulness to
>>>>>>>>>>>>> programmers and to system users, something like those created
>>>>>>>> SchemaSpy [2]  for example.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> There are already useful and free Java class generation
>>>>>>>>>>>>> (binding) tools from off data-models, of one sort or another,
>>>>>>>>>>>>> such as JAXB,
>>>>>>>> DataNucleus'
>>>>>>>>>>>>> schemaGen[3], even CAM [4].
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Here is my vision of what I think would be really useful: to
>>>>>>>>>>>>> have a
>>>>>>>>>>>> design
>>>>>>>>>>>>> tool that can be used by non-programmers to create a simple
>>>>>>>>>>>>> data-model,
>>>>>>>>>>>> and
>>>>>>>>>>>>> then to have that create a working Apache Isis based CRUD
>>>> system.
>>>>>>>>>>>>> This could serve your purpose (I guess) and also find a wider
>>>> use.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> The means of achieving this would I think, require something
>>>>>>>>>>>>> like the "dynamic classes" in available in the Moxy framework
>>>>>>>>>>>>> [5], that is, map based so that no Java class compilation is
>>>>>> needed.
>>>>>>>>>>>>> Instead, a data-model configuration file (a schema) is read-in
>>>>>>>>>>>>> to configure the system. This is not a strange idea, in fact
>>>>>>>>>>>>> its the data-driven programming paradigm that is the basis of
>>>>>>>>>>>>> the original browser concept (before it was turned into
>>>>>>>>>>>> OO
>>>>>>>>>>>>> application framework via addition of Javascript). In the
>>>>>>>>>>>>> browser the
>>>>>>>>>>>> data
>>>>>>>>>>>>> is HTML that is turned into an in-memory Document Object Model
>>>>>>>>>>>>> (DOM) for rendering.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> As a blended solution between Apache Isis as it is currently
>>>>>>>>>>>>> (heavily influence by naked objects, an OO modelling based
>>>>>>>>>>>>> approach for creating custom *behavioural* applications) and
>>>>>>>>>>>>> this additional mainly data
>>>>>>>>>>>> focused
>>>>>>>>>>>>> approach, I think a programmer developing a business
>>>>>>>>>>>>> application would start off with these dymanic classes and
>>>>>>>>>>>>> then in time 'harden' the design by generating and compiling
>>>>>>>>>>>>> real Java classes from off the model. [A non-programmer
>>>>>>>>>>>>> wouldn't get past the first design 'phase' usually, but still
>>>>>>>>>>>>> end up with a useable UI.]
>>>>>>>>>>>>> 
>>>>>>>>>>>>> In addition, by having separate abstract model-generated
>>>>>>>>>>>>> classes, that
>>>>>>>>>>>> can
>>>>>>>>>>>>> be overwritten if the data-model changes, and concrete
>>>>>>>>>>>>> implementation classes, where you put all your behavioural
>>>>>>>>>>>>> code and that are never overwritten, you get close to the
>>>>>>>>>>>>> 'round-tripping' that would seem to me
>>>>>>>>>>>> to
>>>>>>>>>>>>> be the only valid way to use UML *for design*. I think this is
>>>>>>>>>>>>> how the Eclipse Ecore models work, that there are model
>>>>>>>>>>>>> classes and
>>>>>>>>>>>> implementation
>>>>>>>>>>>>> classes that extend the model classes. The IDE will often warn
>>>>>>>>>>>>> you when these two sub-models have inconsistencies. This
>>>>>>>>>>>>> duality also offers an alternative means to achieving the
>>>>>>>>>>>>> goals of Lombok it
>>>>>>>> would seem.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Of course, sitting in the middle of all this is a meta-model,
>>>>>>>>>>>>> that
>>>>>>>>>>>> creates
>>>>>>>>>>>>> the dynamic classes, generates and compiles the 'hardened'
>>>>>>>>>>>>> model classes (when used) and maps either of these means to a
>>>>>>>>>>>>> UI
>>>>>> 'viewer'.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> For such data-management frameworks, the complicated aspect
>>>>>>>>>>>>> isn't so much going from the designed data-model to Java,
>>>>>>>>>>>>> there are lots of examples of that, instead its being able to
>>>>>>>>>>>>> have also, a dynamic query capability. So that a person
>>>>>>>>>>>>> unfamiliar with the dataset, can, via its data-model, start
>>>>>>>>>>>>> querying it (and also maybe integrating it in real-time with
>>>>>>>>>>>>> other online resources, the
>>>>>>>> idea of a data-browser appeals!).
>>>>>>>>>>>>> 
>>>>>>>>>>>>> In the science domain, where I worked for a few years building
>>>>>>>>>>>>> data-management infrastructure, there are highly advanced
>>>>>>>>>>>>> systems for online data access and querying e.g. [6], but at
>>>>>>>>>>>>> the same time a common tool used for small databases is still
>>>>>> Microsoft Access.
>>>>>>>>>>>>> Access has many strengths as a desktop database, including
>>>>>>>>>>>>> form generation and also
>>>>>>>>>>>> dynamic
>>>>>>>>>>>>> query-by-form, but the problems arise when you want to make
>>>>>>>>>>>>> such data publicly available, in the sense of being findable
>>>>>>>>>>>>> and searchable in real time. You might as well have used a
>>>>>>>>>>>>> web-based system from the start and then been able to easily
>>>>>>>>>>>>> open it to the
>>>>>>>> world at the appropriate time.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Having though about this problem for a number of years and
>>>>>>>>>>>>> spent alot of time working on a XForms based solution as well.
>>>>>>>>>>>>> I'd be very interested
>>>>>>>>>>>> to
>>>>>>>>>>>>> see Apache Isis broaden its scope to offer what I have
>>>>>>>>>>>>> described, in fact its doesn't seem to need very much more
>>>>>>>>>>>>> than what is already present in
>>>>>>>>>>>> the
>>>>>>>>>>>>> Isis meta-model and Wicket viewer. The Restful objects support
>>>>>>>>>>>>> already provides a generic 'generated' web programming
>>>> interface.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> In summary I know that there are some Java projects that make
>>>>>>>>>>>>> very effective use of a Model Driven Architecture approach
>>>>>>>>>>>>> (e.g [7]), but I am now not sure that UML is the
>>>>>>>>>>>>> 'be-all-and-end-all' basis of
>>>>>>>> that.
>>>>>>>>>>>> Actually I
>>>>>>>>>>>>> think that data-models are the basis of most of MDAs
>>>>>>>>>>>>> efficiency dividends and that there are other approaches,
>>>>>>>>>>>>> specifically that conceptual models offer more versatility in
>>>>>>>>>>>>> terms of who and how
>>>>>>>> you can make use of them.
>>>>>>>>>>>>> This thinking goes way back, such as Sowa's Conceptual Graphs
>>>>>>>>>>>>> [8] and
>>>>>>>>>>>> even
>>>>>>>>>>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather)
>>>>>>>>>>>>> is the W3C semantic web, but he was thinking of database
>>>>>>>>>>>>> design and
>>>>>>>> query way back.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Apart from some additions to Isis, another interesting aspect
>>>>>>>>>>>>> is looking
>>>>>>>>>>>> at
>>>>>>>>>>>>> the mapping to data-stores, using a graph database of one sort
>>>>>>>>>>>>> or another to avoid the complexity of ORM is a simple answer
>>>>>>>>>>>>> to that I feel. Again, the hardening of a design might mean
>>>>>>>>>>>>> manually adding a few overrides of default ORM mapping rules
>>>>>>>>>>>>> into some behavioural-model classes, that
>>>>>>>>>>>> extend
>>>>>>>>>>>>> generated data-model classes (getters and setters only).
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> [1]
>> http://www.developerdotstar.com/mag/articles/reeves_design_
>>>>>>>>>>>>> m
>>>>>>>>>>>>> ain
>>>>>>>>>>>>> .html
>>>>>>>>>>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
>>>>>>>>>>>>> [3]
>>>>>>>>>>>> 
>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/sc
>>>>>>>>>>>> h
>>>>>>>>>>>> ema
>>>>>>>>>>>> tool.html
>>>>>>>>>>>>> [4]
>> http://camprocessor.sourceforge.net/wiki/index.php/Main_Pag
>>>>>>>>>>>>> e
>>>>>>>>>>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
>>>>>>>>>>>>> [6]http://www.opendap.org/
>>>>>>>>>>>>> [7]http://www.opencrx.org/
>>>>>>>>>>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
>>>>>>>>>>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 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.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 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?
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Oscar
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> [1] http://roomodeler.com
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> This email and any attachment thereto are confidential and
>>>>>>>> priviledged.
>>>>>>>>>>>> if
>>>>>>>>>>>>> you have received it in error, please delete immediately and
>>>>>>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any
>>>>>>>>>>>>> way use it. The information contained therein is for the
>>>>>>>>>>>>> address only, if you reply on
>>>>>>>>>>>> it,
>>>>>>>>>>>>> its at your own risk. Emails are not guaranteed to be secure
>>>>>>>>>>>>> or error
>>>>>>>>>>>> free,
>>>>>>>>>>>>> the message and any attachment could be intercepted,
>>>>>>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer
>>>>>>>>>>>>> warehouse group and its
>>>>>>>>>>>> divisions
>>>>>>>>>>>>> do not accept liability for damage caused by this email or any
>>>>>>>>>>>> attachment.
>>>>>>>>>>>>> The message you tried to print is protected with Information
>>>>>>>>>>>>> Rights Management. You don't have the necessary user rights to
>>>>>>>>>>>>> print the
>>>>>>>>>>>> message.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> This email and any attachment thereto are confidential and
>>>>>>>> priviledged.
>>>>>>>>>>>> if
>>>>>>>>>>>>> you have received it in error, please delete immediately and
>>>>>>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any
>>>>>>>>>>>>> way use it. The information contained therein is for the
>>>>>>>>>>>>> address only, if you reply on
>>>>>>>>>>>> it,
>>>>>>>>>>>>> its at your own risk. Emails are not guaranteed to be secure
>>>>>>>>>>>>> or error
>>>>>>>>>>>> free,
>>>>>>>>>>>>> the message and any attachment could be intercepted,
>>>>>>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer
>>>>>>>>>>>>> warehouse group and its
>>>>>>>>>>>> divisions
>>>>>>>>>>>>> do not accept liability for damage caused by this email or any
>>>>>>>>>>>> attachment.
>>>>>>>>>>>>> The message you tried to print is protected with Information
>>>>>>>>>>>>> Rights Management. You don't have the necessary user rights to
>>>>>>>>>>>>> print the
>>>>>>>>>>>> message.
>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> ---
>>>>>>>> This email has been checked for viruses by Avast antivirus
>> software.
>>>>>>>> https://www.avast.com/antivirus
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> ---
>>>>>> This email has been checked for viruses by Avast antivirus software.
>>>>>> https://www.avast.com/antivirus
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>>> 
>>>> ---
>>>> This email has been checked for viruses by Avast antivirus software.
>>>> https://www.avast.com/antivirus
>>>> 
>>>> 
>>>> 
>>> 
>> 



Re: Thinking about re-introducing UML in our workflow

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
Just to pull this thread apart a little:

- there are various tools candidates for Oscar's original use case, ie to
model class diagrams then forward generate into Java, thereafter ideally to
allow reverse engineering.  Eclipse Papyrus looks promising for this
- for old-fashioned visualization of existing Java code, there is AgileJ.
I remember this product from a while back, nice to see it still going, and
a very reasonable price I think.
- I've raised ISIS-1267 for my idea of generating either the PlantUML class
diagrams from the Isis metamodel (for visualization thereafter using
Asciidoctor-diagram, or XTextPlantUML), or alternatively umlgraph.org's DSL
- I've raised ISIS-1268 for my idea of generating PlantUML sequence
diagrams by running integration tests.

Thx
Dan

https://issues.apache.org/jira/browse/ISIS-1267
https://issues.apache.org/jira/browse/ISIS-1268



On 26 November 2015 at 00:04, Stephen Cameron <st...@gmail.com>
wrote:

> In terms of using UML for after the fact documentation, I like this
> UMLGraph approach:
>
> http://umlgraph.org
>
> On Tue, Nov 24, 2015 at 9:42 AM, Stephen Cameron <
> steve.cameron.62@gmail.com
> > wrote:
>
> >
> >
> > On Tue, Nov 24, 2015 at 9:19 AM, Cesar Lugo <ce...@sisorg.com.mx>
> > wrote:
> >
> >> Hi Oscar,
> >>
> >> Reverse engineering worked for me just fine, also when you make changes
> >> to the code and update the UMl from it. When you have your UML
> repository
> >> open (diagram canvas open), the you select the java class or classes
> from
> >> Isis repo, click the java reverse button or select the right click -
> java -
> >> reverse option, and it will import the selected classes to the UML
> >> repository. From there you drag and drop the UML classes you want on the
> >> diagram canvas (from the UML repo to the Diagram canvas), and once on
> the
> >> diagram you select the class element and press F4 (or right click for
> >> contextual menu), so it let's you choose the properties and methods you
> >> want to be shown / hidden from the menu. When you make changes to the
> code,
> >> just do the same again and it will update the UML metadata, F4 again on
> the
> >> class and select the new properties or methods you want to be shown on
> the
> >> diagram.
> >>
> >> Hmm, definitely a "missing link" in my case as none of this worked, I
> > will watch the video.
> >
> >
> >> The issue I have found is that if the class contains a java.util.List,
> it
> >> won't import the whole class (typically repositories or menu classes).
> >> Haven't find the time to check why or solve that, but I can see in the
> UML
> >> repository a java element that contains a Java - Util - SortedSet, but
> not
> >> a Java - Util - List element. That might be the reason, just hopping
> there
> >> is a way to add the List to make it work too.
> >>
> >> Cesar.
> >>
> >> -----Original Message-----
> >> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
> >> Sent: Monday, November 23, 2015 2:37 PM
> >> To: users@isis.apache.org
> >> Subject: Re: Thinking about re-introducing UML in our workflow
> >>
> >> H, Cesar.
> >>
> >> Thanks here also.
> >>
> >> I’ve seen the video, but need to find time to install and test it
> locally.
> >>
> >> Seems interesting for direct generation.
> >> No example is given for reverse-engineering.
> >>
> >> As I see, customizing for Apache Isis would be a matter of defining
> >> - a custom profile for Apache Isis (perhaps it would be enough with the
> >> Java one).
> >> - and an Apache-Isis specific Library (for generating the properties,
> >> actions, etc. with the proper annotations).
> >>
> >> It remembers me quite well the Spring Roo customization on SparxSystem’s
> >> Enterprise Arquitect.
> >>
> >> There I implemented also a custom toolbox, in order to avoid to first
> >> create the attribute and after that assign to the specific library item
> >> (instead of 2 different steps).
> >>
> >> Perhaps all that is also possible here.
> >>
> >>
> >> Thanks,
> >>
> >> Oscar
> >>
> >>
> >>
> >>
> >>
> >>
> >> > El 23 nov 2015, a las 21:18, Stephen Cameron <
> >> steve.cameron.62@gmail.com> escribió:
> >> >
> >> > Thanks Cesar, I will give it a go, but don't have alot of time now
> >> > this week. They use myeclipse at work and its cheap to buy a licence,
> >> > so I'll find out why the activity diagrams are missing.
> >> >
> >> > I am also keen to take a closer look at IFML [1] in terms of it being
> >> > integated with the workflow addon in Apache-Isis. This is instead of
> >> > UML Activity diagrams.
> >> >
> >> > [1] http://www.ifml.org
> >> >
> >> > On Tue, Nov 24, 2015 at 3:00 AM, Cesar Lugo <cesar.lugo@sisorg.com.mx
> >
> >> > wrote:
> >> >
> >> >> Hi. I also tried Papyrus, it works but the installation is a little
> >> >> tricky. Best guidance I got was this YouTube video, which adds the
> >> >> "missing link" to make it work. It's actually a part of a quite nice
> >> >> series with Papyrus and UML tutorial videos. I hope that helps.
> >> >>
> >> >> https://www.youtube.com/watch?v=gmf8CswqKcs
> >> >>
> >> >> Cesar.
> >> >>
> >> >> -----Original Message-----
> >> >> From: Stephen Cameron [mailto:steve.cameron.62@gmail.com]
> >> >> Sent: Monday, November 23, 2015 4:42 AM
> >> >> To: users@isis.apache.org
> >> >> Subject: Re: Thinking about re-introducing UML in our workflow
> >> >>
> >> >> Spent some time on this today, but did not get far. I tried Papyrus
> >> >> but without success, couldn't get it to reverse engineer my code that
> >> >> is. Then I tried myeclipse which does support UML2 and does reverse
> >> >> engineer Java code to UML class diagrams and also updates these
> >> >> diagrams from any (code) 'Model' changes afterwards. However the
> >> >> trial strangelly doesn't support Activity diagrams despite them being
> >> >> in the documentation. So all in all not time well spent.
> >> >>
> >> >> On Sat, Nov 21, 2015 at 9:31 AM, Stephen Cameron <
> >> >> steve.cameron.62@gmail.com
> >> >>> wrote:
> >> >>
> >> >>> Hi,
> >> >>>
> >> >>> Related to this thread, my new job involves maintenance of a Struts
> >> >>> 2 based website, in thinking about the best way to approach this
> >> >>> task, both to learn how it has been put together and potentially
> >> >>> make life easier into the future I thought the best place to start
> >> >>> is creating some diagrams, maybe even UML diagrams .
> >> >>>
> >> >>> Then I remembered something called AndroMDA [1] from my past reading
> >> >>> on UML/MDA, it has a 'cartridge' for generating a Struts
> >> >>> web-application off a UML class model [2]. Just reading the
> >> >>> documentation now, it can also make use of an UML Activity diagram
> >> >>> for designing page navigation[3], also, it consume a BPMN diagram as
> >> >>> a design model too (Hmm, just maybe this has more potential than I
> >> >> imagined).
> >> >>>
> >> >>> I'll have a play with this myself soon (It seems like a fun way to
> >> >>> learn about Struts and JBOSS), but thought in worth mentioning in
> >> >>> this discussion. If I was starting from scratch to build such a
> >> >>> 'public
> >> >> facing'
> >> >>> website, an approach that I can see working is to first develop an
> >> >>> Apache Isis based domain model in Java and get all the systems
> >> >>> integrations needed working with that. Then, to generate UML class
> >> >>> diagrams off that design, add in the page navigation design (UML
> >> >>> Activity diagram?), and use that combination to generate the
> >> >>> skeleton of a tradition request/response type website using
> AndroMDA.
> >> >>>
> >> >>> If this all worked, it would provide something very close to a
> >> >>> commercial MDA suite that I was interested in supporting called
> >> >>> WebRatio [4], for which the public website design [5] market seems
> >> >>> quite large. They talk about web-applications, but  I like the Isis
> >> >>> coded model approach better for real applications (as opposed to
> >> >>> database back web-sites). For public facing web-sites, a templates
> >> >>> based approach does still seem to be valid, such as Struts/JSP, and
> >> >>> using a MDA probably a good way to manage that complexity.
> >> >>>
> >> >>> The WebRatio folk have designed a specific graphical web-site design
> >> >>> language called Interacton Flow Modelling Language (IFML) [6] (but
> >> >>> AndroMDA is UML focused). There is an open-source Eclipse plugin for
> >> >>> IFML that they have contributed to [7].
> >> >>>
> >> >>> Interested to hear thoughts, maybe a dead-end, but maybe not.
> >> >>>
> >> >>> Cheers
> >> >>>
> >> >>>
> >> >>> [1] http://www.andromda.org/
> >> >>> [2]
> >> >>>
> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart
> >> >>> ri
> >> >>> dge/index.html
> >> >>> [3]
> >> >>>
> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart
> >> >>> ri
> >> >>> dge/howto2.html
> >> >>> [4] http://www.webratio.com
> >> >>> [5]
> >> >>> http://www.webratio.com/site/content/en/web-application-development
> >> >>> [6] http://www.ifml.org/
> >> >>> [7] http://ifml.github.io/
> >> >>>
> >> >>>
> >> >>>
> >> >>>
> >> >>>
> >> >>>
> >> >>>
> >> >>>
> >> >>>
> >> >>> On Fri, Nov 20, 2015 at 1:48 AM, Cesar Lugo
> >> >>> <ce...@sisorg.com.mx>
> >> >>> wrote:
> >> >>>
> >> >>>> Hi.
> >> >>>>
> >> >>>> I just wanted to let you guys know that I have tried Papyro in
> >> >>>> eclipse. I have been able to reverse engineer java code and create
> >> >>>> UML Class Diagrams (supports most of the UML types of diagrams
> >> >>>> including use cases, state machine, activity and many more). I
> >> >>>> tried adding a property within a domain object class, then redo
> >> >>>> java engineer and it keeps my diagram and was able to include the
> >> >>>> new property. I haven't been able to do the opposite, adding a
> >> >>>> property within the UML and have it add it to the existing java
> >> class though.
> >> >>>> Adding a new UML class generates java code just fine. I haven’t
> >> >>>> been able to reverse engineer some repository classes, anything
> >> >>>> that uses java.util.List fails to be imported into the UML model, I
> >> >>>> haven't find the solution yet (sortedSet works fine). It doesn't
> >> >>>> automatically create the diagram (like other simpler tools do), but
> >> >>>> once you import your java code into the UML model, it's just a
> >> >>>> matter of drag and drop and into the diagram canvas and select
> >> >>>> which properties and operations (actions) you want to be shown,
> >> >>>> very convenient to exclude the obvious from the diagram, like
> >> >>>> getters and
> >> >> setters, maybe disableXxx / hideXxx / defaultxXX methods, your
> choice.
> >> >>>>
> >> >>>> I will keep working on it, looking good so far.
> >> >>>>
> >> >>>> Cesar.
> >> >>>>
> >> >>>> -----Original Message-----
> >> >>>> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
> >> >>>> Sent: Monday, November 16, 2015 4:53 AM
> >> >>>> To: users
> >> >>>> Subject: Re: Thinking about re-introducing UML in our workflow
> >> >>>>
> >> >>>>
> >> >>>> For you to know.
> >> >>>>
> >> >>>> I was just reading about “AgileJ” [1] (the video at [2] is
> excellent.
> >> >>>> It perfectly summarizes the points-of-view expressed here about the
> >> >>>> evolution last years of UML usage in dev teams).
> >> >>>>
> >> >>>> But I’ve also found the Papyrus Eclipse project [3]. Seems to be
> >> >>>> really alive (there has been a conference this month).
> >> >>>>
> >> >>>> And It also seems to have full code synch from Java … See [4].
> >> >>>>
> >> >>>> Any experience out there with Papyrus?
> >> >>>> Could it be a good match for Apache Isis?
> >> >>>>
> >> >>>>
> >> >>>> Cheers,
> >> >>>>
> >> >>>> Oscar
> >> >>>>
> >> >>>>
> >> >>>> [1] http://www.agilej.com
> >> >>>> [2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
> >> >>>> [3] http://www.eclipse.org/papyrus/ [4]
> >> >>>>
> https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diag
> >> >>>> ra
> >> >>>> ms-ordinary-java-developers
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>>> El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS
> >> >>>>> <o....@govertis.com>
> >> >>>> escribió:
> >> >>>>>
> >> >>>>>
> >> >>>>> Hi all.
> >> >>>>>
> >> >>>>> First of all, the good news for all romantics:
> >> >>>>>
> >> >>>>> Together is still alive !!! See [1].
> >> >>>>>
> >> >>>>> [2] says it fully supports Eclipse.
> >> >>>>>
> >> >>>>> Really interesting, Jeroen, introducing Lombok.
> >> >>>>> Look how clear and concise is the Aggregate in [3] expressed in
> C#.
> >> >>>>>
> >> >>>>>
> >> >>>>> For me, my immediate need is to have a visual depiction of the new
> >> >>>> features developers must work on.
> >> >>>>> So an Agile diagramming tool would be ok for it.
> >> >>>>>
> >> >>>>> I’m used to drag-n-drop like interfaces, and I'm there are
> “visual”
> >> >>>> tools out there that support plantuml, so it would be ok to be
> >> >>>> based on
> >> >> it.
> >> >>>>>
> >> >>>>> Also agree that the model "must be" the code (and not “the code is
> >> >>>>> the
> >> >>>> model” MDA approach, despite my experience with Bold for
> >> >>>> Delphi/Capable Objects was REALLY really good).
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>> Regards,
> >> >>>>>
> >> >>>>> Oscar
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>> [1]
> >> >>>>>
> http://www.borland.com/en-GB/Products/Requirements-Management/Toge
> >> >>>>> t
> >> >>>>> her
> >> >>>>> [2[
> >> >>>>>
> http://www.borland.com/en-GB/Products/Requirements-Management/Toge
> >> >>>>> t
> >> >>>>> her
> >> >>>>> /Plugins-and-integrations [3]
> >> >>>>>
> https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggreg
> >> >>>>> a
> >> >>>>> tes
> >> >>>>> /Register/RegistrationState.cs
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>>> El 16 nov 2015, a las 10:57, Mike Burton
> >> >>>>>> <mi...@mycosystems.co.uk>
> >> >>>> escribió:
> >> >>>>>>
> >> >>>>>> Hi Jeroen,
> >> >>>>>>
> >> >>>>>> My experience is similar. I was always suspicious of the "code
> >> >>>> generation " approach, inevitably gives 2 "sources" that get out of
> >> >> step.
> >> >>>>>>
> >> >>>>>> The only good exception I saw was TogetherJ where "the code is
> >> >>>>>> the
> >> >>>> model"
> >> >>>>>>
> >> >>>>>> Best Regards
> >> >>>>>>
> >> >>>>>> Mike Burton
> >> >>>>>> (Sent from my iPhone)
> >> >>>>>>
> >> >>>>>>
> >> >>>>>>
> >> >>>>>>> On 15 Nov 2015, at 23:44, Jeroen van der Wal
> >> >>>>>>> <je...@stromboli.it>
> >> >>>> wrote:
> >> >>>>>>>
> >> >>>>>>> All very interesting!
> >> >>>>>>>
> >> >>>>>>> Over the years I tried numerous modelling tools and only the
> >> >>>>>>> low-tech ones
> >> >>>>>>> stayed: drawing on a whiteboard, using coloured index cards [1]
> >> >>>>>>> (learned from Dan) or using a simple online tool like yUML [2].
> >> >>>>>>> And I only use them to communicate the broad picture or for
> >> >>>>>>> explorative
> >> >>>> purposes.
> >> >>>>>>>
> >> >>>>>>> I gave up on code generators: I always ended up fighting the
> >> >>>>>>> generated code. And the impression that they support rapid
> >> >>>>>>> application development proved wrong: at the point where you had
> >> >>>>>>> to work on more advanced stuff velocity came to a halt. If an
> >> >>>>>>> application is built on lots of repeating code snippets then my
> >> >>>>>>> conclusion is that the underlying framework is not good enough.
> >> >>>>>>>
> >> >>>>>>> I love source code that tells the story of the application.
> >> >>>>>>> Where everything that could be left out of the code is
> >> >>>>>>> eliminated. Very DRY, convention over code. This has drawn me to
> >> >>>>>>> Naked Objects and made me decide to spend my time on Apache
> Isis.
> >> >>>>>>>
> >> >>>>>>> As you imagine by now I would not take the route from diagram to
> >> >>>>>>> code. For me the code editor is the sole canvas to express your
> >> >>>>>>> ideas. And I think that if we keep improving Apache Isis on a
> >> >>>>>>> few points there will never be a need for an additional tool:
> >> >>>>>>>
> >> >>>>>>> 1) Reduce boilerplate and make writing an application skeleton
> >> >>>>>>> as easy as the easiest modelling tool. This has the advantage
> >> >>>>>>> that a software architect can sketch the application and leave
> >> >>>>>>> it to his developers to fill in details. But everyone is working
> >> >>>>>>> on the same code base using the same tools. In this area we
> >> >>>>>>> started using Lombok. Also Dan had an idea to make it possible
> >> >>>>>>> to create your own custom annotations which can combine multiple
> >> annotations.
> >> >>>>>>>
> >> >>>>>>> 2) Visualise the meta model. With contributions and mixins the
> >> >>>>>>> application logic can come from anywhere. This is
> >> >>>>>>> architecturally sane but makes an application hard to grasp. It
> >> >>>>>>> would love to see a maven plugin that generates appealing
> >> >>>>>>> documentation from the meta model of an Isis application.
> >> >>>>>>>
> >> >>>>>>> 3) When taking the visualisation concept a bit further it would
> >> >>>>>>> be very powerful to explore and navigate the meta model within
> >> >>>>>>> the
> >> >> IDE.
> >> >>>>>>> Any plugin developers here?
> >> >>>>>>>
> >> >>>>>>> That's just my two cents.
> >> >>>>>>>
> >> >>>>>>> Cheers,
> >> >>>>>>>
> >> >>>>>>> Jeroen
> >> >>>>>>>
> >> >>>>>>>
> >> >>>>>>>> On 15 November 2015 at 21:01, David Tildesley
> >> >>>>>>>> <da...@yahoo.co.nz>
> >> >>>> wrote:
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
> >> >>>>>>>> dan@haywood-associates.co.uk> wrote:
> >> >>>>>>>>> Thanks for this James.
> >> >>>>>>>>
> >> >>>>>>>>> My observation re: using the (relational) data model as the
> >> >>>>>>>>> initial input though is that this is likely to lead to rather
> >> >>>>>>>>> coupled code, ultimately not maintainable.
> >> >>>>>>>>
> >> >>>>>>>> Couldn't agree more.
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>> So, while going from the database up to the domain is fine for
> >> >>>>>>>>> a single module of 10 or so entities, any app that is bigger
> >> >>>>>>>>> than this really
> >> >>>>>>>> should
> >> >>>>>>>>> be modelled from the domain down to the database.
> >> >>>>>>>>
> >> >>>>>>>> Quite right. Any business app that is non trivial should be
> >> >>>>>>>> domain modelled.
> >> >>>>>>>>
> >> >>>>>>>> David.
> >> >>>>>>>>
> >> >>>>>>>>> Dan
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>> On 14 November 2015 at 15:00, James Agada
> >> >>>>>>>>> <Ja...@cwg-plc.com>
> >> >>>> wrote:
> >> >>>>>>>>>
> >> >>>>>>>>> I actually tested out using Telosys to generate an isis app
> >> >>>>>>>>> from database definition. It did work but of course it meant i
> >> >>>>>>>>> did the ER first. I used MySQL, did the ER modelling on the
> >> >>>>>>>>> workbench, forward engineered into the database and then used
> >> >>>>>>>>> telosys scripts to generate a functional Isis application. Did
> >> >>>>>>>>> it as a PoC but we
> >> >>>> will come back to it later.
> >> >>>>>>>>> James Agada
> >> >>>>>>>>> Chief Technology Officer
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS
> >> >>>>>>>>> <o....@govertis.com>
> >> >>>>>>>>> wrote:
> >> >>>>>>>>>
> >> >>>>>>>>> Many thanks, Stephen for this detailed explanation.
> >> >>>>>>>>>
> >> >>>>>>>>> The problem I’m facing is that I intent to communicate the
> >> >>>>>>>>> developers what’s the model to implement.
> >> >>>>>>>>>
> >> >>>>>>>>> And I usually don’t find big mistakes in action code, but what
> >> >>>>>>>>> mostly forces us to refactor is miscommunication regarding the
> >> >>>>>>>>> Domain Entities, attributes and actions names, including typos
> >> >>>>>>>>> (think my team speak
> >> >>>>>>>> Spanish
> >> >>>>>>>>> but they’re modeling in English) or wrong or missing
> >> >>>>>>>>> relationships
> >> >>>>>>>> between
> >> >>>>>>>>> those entities.
> >> >>>>>>>>>
> >> >>>>>>>>> All that could be avoided by firstly agree in a common UML
> >> >>>>>>>>> Class
> >> >>>> Diagram.
> >> >>>>>>>>>
> >> >>>>>>>>> If it can potentially generate automatically the Java skeleton
> >> >>>>>>>>> with
> >> >>>>>>>> Apache
> >> >>>>>>>>> Isis annotations is a big plus, as it will avoid mistakes when
> >> >>>>>>>>> moving
> >> >>>>>>>> from
> >> >>>>>>>>> design to implementation.
> >> >>>>>>>>>
> >> >>>>>>>>> And if it could potentially reverse engineer Java (incl.
> >> >>>>>>>>> Apache Isis
> >> >>>>>>>>> idioms) a really good feature.
> >> >>>>>>>>>
> >> >>>>>>>>> Any ideas about what tools could best adapt to the workflow
> >> >>>>>>>>> (that could
> >> >>>>>>>> be
> >> >>>>>>>>> potentially customized to cover the last 2 whishes) ?
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>> Thanks,
> >> >>>>>>>>>
> >> >>>>>>>>> Oscar
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>> El 14 nov 2015, a las 2:03, Stephen Cameron
> >> >>>>>>>>> <st...@gmail.com>
> >> >>>>>>>>> escribió:
> >> >>>>>>>>>
> >> >>>>>>>>> Hi Oscar,
> >> >>>>>>>>>
> >> >>>>>>>>> In a qualified way I think your idea has merit. I have never
> >> >>>>>>>>> used UML for design, but a few years ago I decided to take a
> >> >>>>>>>>> good look at it and see
> >> >>>>>>>> it
> >> >>>>>>>>> if was useful. The idea of being able to draw a diagram and
> >> >>>>>>>>> generate code from it seemed sensible, after all that is what
> >> >>>>>>>>> is done by most other 'design' professions, such as building
> >> >>>> architects and engineers.
> >> >>>>>>>>>
> >> >>>>>>>>> To cut a long story short I realised after some reading that
> >> >>>>>>>>> it was not that simple, and that OO languages themselves are
> >> >>>>>>>>> really all that are needed for the process of designing a
> >> >>>>>>>>> system. This is "the code is the design" school of thought,
> >> >>>>>>>>> mainly attributed to
> >> >>>> Jack Reeves [1].
> >> >>>>>>>>>
> >> >>>>>>>>> I found that  keeping code and UML diagrams in sync in a
> >> >>>>>>>>> top-down 'UML to code' design process will always be
> >> >>>>>>>>> problematic (maybe why there are apparently no open-source
> >> >>>>>>>>> tools
> >> >> that claim to do this).
> >> >>>>>>>>> Then I read about Domain Driven Design which seemed to agree
> >> >>>>>>>>> with this premise, and from there found Apache Isis via Dan's
> >> >> book.
> >> >>>>>>>>>
> >> >>>>>>>>> So now for me UML class diagrams do have an after the fact use
> >> >>>>>>>>> for documentation purposes and if a solution implement was
> >> >>>>>>>>> capable of that reverse generation of diagrams from code it
> >> >>>>>>>>> would be a good thing to
> >> >>>>>>>> have.
> >> >>>>>>>>> Entity Framework can do this, its their "code first" approach.
> >> >>>>>>>>>
> >> >>>>>>>>> Given that the-code-is-the-design is true, I think that UML
> >> >>>>>>>>> class
> >> >>>>>>>> diagrams
> >> >>>>>>>>> real main value is as a data model, the question then is why
> >> >>>>>>>>> not use a purely data-modeling tool and generate Java classes
> >> >>>>>>>>> off
> >> >> it.
> >> >>>>>>>>> Then the diagrams 'designed' could have a usefulness to
> >> >>>>>>>>> programmers and to system users, something like those created
> >> >>>> SchemaSpy [2]  for example.
> >> >>>>>>>>>
> >> >>>>>>>>> There are already useful and free Java class generation
> >> >>>>>>>>> (binding) tools from off data-models, of one sort or another,
> >> >>>>>>>>> such as JAXB,
> >> >>>> DataNucleus'
> >> >>>>>>>>> schemaGen[3], even CAM [4].
> >> >>>>>>>>>
> >> >>>>>>>>> Here is my vision of what I think would be really useful: to
> >> >>>>>>>>> have a
> >> >>>>>>>> design
> >> >>>>>>>>> tool that can be used by non-programmers to create a simple
> >> >>>>>>>>> data-model,
> >> >>>>>>>> and
> >> >>>>>>>>> then to have that create a working Apache Isis based CRUD
> >> system.
> >> >>>>>>>>> This could serve your purpose (I guess) and also find a wider
> >> use.
> >> >>>>>>>>>
> >> >>>>>>>>> The means of achieving this would I think, require something
> >> >>>>>>>>> like the "dynamic classes" in available in the Moxy framework
> >> >>>>>>>>> [5], that is, map based so that no Java class compilation is
> >> >> needed.
> >> >>>>>>>>> Instead, a data-model configuration file (a schema) is read-in
> >> >>>>>>>>> to configure the system. This is not a strange idea, in fact
> >> >>>>>>>>> its the data-driven programming paradigm that is the basis of
> >> >>>>>>>>> the original browser concept (before it was turned into
> >> >>>>>>>> OO
> >> >>>>>>>>> application framework via addition of Javascript). In the
> >> >>>>>>>>> browser the
> >> >>>>>>>> data
> >> >>>>>>>>> is HTML that is turned into an in-memory Document Object Model
> >> >>>>>>>>> (DOM) for rendering.
> >> >>>>>>>>>
> >> >>>>>>>>> As a blended solution between Apache Isis as it is currently
> >> >>>>>>>>> (heavily influence by naked objects, an OO modelling based
> >> >>>>>>>>> approach for creating custom *behavioural* applications) and
> >> >>>>>>>>> this additional mainly data
> >> >>>>>>>> focused
> >> >>>>>>>>> approach, I think a programmer developing a business
> >> >>>>>>>>> application would start off with these dymanic classes and
> >> >>>>>>>>> then in time 'harden' the design by generating and compiling
> >> >>>>>>>>> real Java classes from off the model. [A non-programmer
> >> >>>>>>>>> wouldn't get past the first design 'phase' usually, but still
> >> >>>>>>>>> end up with a useable UI.]
> >> >>>>>>>>>
> >> >>>>>>>>> In addition, by having separate abstract model-generated
> >> >>>>>>>>> classes, that
> >> >>>>>>>> can
> >> >>>>>>>>> be overwritten if the data-model changes, and concrete
> >> >>>>>>>>> implementation classes, where you put all your behavioural
> >> >>>>>>>>> code and that are never overwritten, you get close to the
> >> >>>>>>>>> 'round-tripping' that would seem to me
> >> >>>>>>>> to
> >> >>>>>>>>> be the only valid way to use UML *for design*. I think this is
> >> >>>>>>>>> how the Eclipse Ecore models work, that there are model
> >> >>>>>>>>> classes and
> >> >>>>>>>> implementation
> >> >>>>>>>>> classes that extend the model classes. The IDE will often warn
> >> >>>>>>>>> you when these two sub-models have inconsistencies. This
> >> >>>>>>>>> duality also offers an alternative means to achieving the
> >> >>>>>>>>> goals of Lombok it
> >> >>>> would seem.
> >> >>>>>>>>>
> >> >>>>>>>>> Of course, sitting in the middle of all this is a meta-model,
> >> >>>>>>>>> that
> >> >>>>>>>> creates
> >> >>>>>>>>> the dynamic classes, generates and compiles the 'hardened'
> >> >>>>>>>>> model classes (when used) and maps either of these means to a
> >> >>>>>>>>> UI
> >> >> 'viewer'.
> >> >>>>>>>>>
> >> >>>>>>>>> For such data-management frameworks, the complicated aspect
> >> >>>>>>>>> isn't so much going from the designed data-model to Java,
> >> >>>>>>>>> there are lots of examples of that, instead its being able to
> >> >>>>>>>>> have also, a dynamic query capability. So that a person
> >> >>>>>>>>> unfamiliar with the dataset, can, via its data-model, start
> >> >>>>>>>>> querying it (and also maybe integrating it in real-time with
> >> >>>>>>>>> other online resources, the
> >> >>>> idea of a data-browser appeals!).
> >> >>>>>>>>>
> >> >>>>>>>>> In the science domain, where I worked for a few years building
> >> >>>>>>>>> data-management infrastructure, there are highly advanced
> >> >>>>>>>>> systems for online data access and querying e.g. [6], but at
> >> >>>>>>>>> the same time a common tool used for small databases is still
> >> >> Microsoft Access.
> >> >>>>>>>>> Access has many strengths as a desktop database, including
> >> >>>>>>>>> form generation and also
> >> >>>>>>>> dynamic
> >> >>>>>>>>> query-by-form, but the problems arise when you want to make
> >> >>>>>>>>> such data publicly available, in the sense of being findable
> >> >>>>>>>>> and searchable in real time. You might as well have used a
> >> >>>>>>>>> web-based system from the start and then been able to easily
> >> >>>>>>>>> open it to the
> >> >>>> world at the appropriate time.
> >> >>>>>>>>>
> >> >>>>>>>>> Having though about this problem for a number of years and
> >> >>>>>>>>> spent alot of time working on a XForms based solution as well.
> >> >>>>>>>>> I'd be very interested
> >> >>>>>>>> to
> >> >>>>>>>>> see Apache Isis broaden its scope to offer what I have
> >> >>>>>>>>> described, in fact its doesn't seem to need very much more
> >> >>>>>>>>> than what is already present in
> >> >>>>>>>> the
> >> >>>>>>>>> Isis meta-model and Wicket viewer. The Restful objects support
> >> >>>>>>>>> already provides a generic 'generated' web programming
> >> interface.
> >> >>>>>>>>>
> >> >>>>>>>>> In summary I know that there are some Java projects that make
> >> >>>>>>>>> very effective use of a Model Driven Architecture approach
> >> >>>>>>>>> (e.g [7]), but I am now not sure that UML is the
> >> >>>>>>>>> 'be-all-and-end-all' basis of
> >> >>>> that.
> >> >>>>>>>> Actually I
> >> >>>>>>>>> think that data-models are the basis of most of MDAs
> >> >>>>>>>>> efficiency dividends and that there are other approaches,
> >> >>>>>>>>> specifically that conceptual models offer more versatility in
> >> >>>>>>>>> terms of who and how
> >> >>>> you can make use of them.
> >> >>>>>>>>> This thinking goes way back, such as Sowa's Conceptual Graphs
> >> >>>>>>>>> [8] and
> >> >>>>>>>> even
> >> >>>>>>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather)
> >> >>>>>>>>> is the W3C semantic web, but he was thinking of database
> >> >>>>>>>>> design and
> >> >>>> query way back.
> >> >>>>>>>>>
> >> >>>>>>>>> Apart from some additions to Isis, another interesting aspect
> >> >>>>>>>>> is looking
> >> >>>>>>>> at
> >> >>>>>>>>> the mapping to data-stores, using a graph database of one sort
> >> >>>>>>>>> or another to avoid the complexity of ORM is a simple answer
> >> >>>>>>>>> to that I feel. Again, the hardening of a design might mean
> >> >>>>>>>>> manually adding a few overrides of default ORM mapping rules
> >> >>>>>>>>> into some behavioural-model classes, that
> >> >>>>>>>> extend
> >> >>>>>>>>> generated data-model classes (getters and setters only).
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>> [1]
> http://www.developerdotstar.com/mag/articles/reeves_design_
> >> >>>>>>>>> m
> >> >>>>>>>>> ain
> >> >>>>>>>>> .html
> >> >>>>>>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
> >> >>>>>>>>> [3]
> >> >>>>>>>>
> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/sc
> >> >>>>>>>> h
> >> >>>>>>>> ema
> >> >>>>>>>> tool.html
> >> >>>>>>>>> [4]
> http://camprocessor.sourceforge.net/wiki/index.php/Main_Pag
> >> >>>>>>>>> e
> >> >>>>>>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
> >> >>>>>>>>> [6]http://www.opendap.org/
> >> >>>>>>>>> [7]http://www.opencrx.org/
> >> >>>>>>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
> >> >>>>>>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
> >> >>>>>>>>>
> >> >>>>>>>>> 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.
> >> >>>>>>>>>
> >> >>>>>>>>> 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?
> >> >>>>>>>>>
> >> >>>>>>>>> Thanks,
> >> >>>>>>>>>
> >> >>>>>>>>> Oscar
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>> [1] http://roomodeler.com
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>> This email and any attachment thereto are confidential and
> >> >>>> priviledged.
> >> >>>>>>>> if
> >> >>>>>>>>> you have received it in error, please delete immediately and
> >> >>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any
> >> >>>>>>>>> way use it. The information contained therein is for the
> >> >>>>>>>>> address only, if you reply on
> >> >>>>>>>> it,
> >> >>>>>>>>> its at your own risk. Emails are not guaranteed to be secure
> >> >>>>>>>>> or error
> >> >>>>>>>> free,
> >> >>>>>>>>> the message and any attachment could be intercepted,
> >> >>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer
> >> >>>>>>>>> warehouse group and its
> >> >>>>>>>> divisions
> >> >>>>>>>>> do not accept liability for damage caused by this email or any
> >> >>>>>>>> attachment.
> >> >>>>>>>>> The message you tried to print is protected with Information
> >> >>>>>>>>> Rights Management. You don't have the necessary user rights to
> >> >>>>>>>>> print the
> >> >>>>>>>> message.
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>> This email and any attachment thereto are confidential and
> >> >>>> priviledged.
> >> >>>>>>>> if
> >> >>>>>>>>> you have received it in error, please delete immediately and
> >> >>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any
> >> >>>>>>>>> way use it. The information contained therein is for the
> >> >>>>>>>>> address only, if you reply on
> >> >>>>>>>> it,
> >> >>>>>>>>> its at your own risk. Emails are not guaranteed to be secure
> >> >>>>>>>>> or error
> >> >>>>>>>> free,
> >> >>>>>>>>> the message and any attachment could be intercepted,
> >> >>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer
> >> >>>>>>>>> warehouse group and its
> >> >>>>>>>> divisions
> >> >>>>>>>>> do not accept liability for damage caused by this email or any
> >> >>>>>>>> attachment.
> >> >>>>>>>>> The message you tried to print is protected with Information
> >> >>>>>>>>> Rights Management. You don't have the necessary user rights to
> >> >>>>>>>>> print the
> >> >>>>>>>> message.
> >> >>>>>>>>
> >> >>>>>
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>> ---
> >> >>>> This email has been checked for viruses by Avast antivirus
> software.
> >> >>>> https://www.avast.com/antivirus
> >> >>>>
> >> >>>>
> >> >>>
> >> >>
> >> >>
> >> >> ---
> >> >> This email has been checked for viruses by Avast antivirus software.
> >> >> https://www.avast.com/antivirus
> >> >>
> >> >>
> >>
> >>
> >>
> >> ---
> >> This email has been checked for viruses by Avast antivirus software.
> >> https://www.avast.com/antivirus
> >>
> >>
> >>
> >
>

Re: Thinking about re-introducing UML in our workflow

Posted by Stephen Cameron <st...@gmail.com>.
In terms of using UML for after the fact documentation, I like this
UMLGraph approach:

http://umlgraph.org

On Tue, Nov 24, 2015 at 9:42 AM, Stephen Cameron <steve.cameron.62@gmail.com
> wrote:

>
>
> On Tue, Nov 24, 2015 at 9:19 AM, Cesar Lugo <ce...@sisorg.com.mx>
> wrote:
>
>> Hi Oscar,
>>
>> Reverse engineering worked for me just fine, also when you make changes
>> to the code and update the UMl from it. When you have your UML repository
>> open (diagram canvas open), the you select the java class or classes from
>> Isis repo, click the java reverse button or select the right click - java -
>> reverse option, and it will import the selected classes to the UML
>> repository. From there you drag and drop the UML classes you want on the
>> diagram canvas (from the UML repo to the Diagram canvas), and once on the
>> diagram you select the class element and press F4 (or right click for
>> contextual menu), so it let's you choose the properties and methods you
>> want to be shown / hidden from the menu. When you make changes to the code,
>> just do the same again and it will update the UML metadata, F4 again on the
>> class and select the new properties or methods you want to be shown on the
>> diagram.
>>
>> Hmm, definitely a "missing link" in my case as none of this worked, I
> will watch the video.
>
>
>> The issue I have found is that if the class contains a java.util.List, it
>> won't import the whole class (typically repositories or menu classes).
>> Haven't find the time to check why or solve that, but I can see in the UML
>> repository a java element that contains a Java - Util - SortedSet, but not
>> a Java - Util - List element. That might be the reason, just hopping there
>> is a way to add the List to make it work too.
>>
>> Cesar.
>>
>> -----Original Message-----
>> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
>> Sent: Monday, November 23, 2015 2:37 PM
>> To: users@isis.apache.org
>> Subject: Re: Thinking about re-introducing UML in our workflow
>>
>> H, Cesar.
>>
>> Thanks here also.
>>
>> I’ve seen the video, but need to find time to install and test it locally.
>>
>> Seems interesting for direct generation.
>> No example is given for reverse-engineering.
>>
>> As I see, customizing for Apache Isis would be a matter of defining
>> - a custom profile for Apache Isis (perhaps it would be enough with the
>> Java one).
>> - and an Apache-Isis specific Library (for generating the properties,
>> actions, etc. with the proper annotations).
>>
>> It remembers me quite well the Spring Roo customization on SparxSystem’s
>> Enterprise Arquitect.
>>
>> There I implemented also a custom toolbox, in order to avoid to first
>> create the attribute and after that assign to the specific library item
>> (instead of 2 different steps).
>>
>> Perhaps all that is also possible here.
>>
>>
>> Thanks,
>>
>> Oscar
>>
>>
>>
>>
>>
>>
>> > El 23 nov 2015, a las 21:18, Stephen Cameron <
>> steve.cameron.62@gmail.com> escribió:
>> >
>> > Thanks Cesar, I will give it a go, but don't have alot of time now
>> > this week. They use myeclipse at work and its cheap to buy a licence,
>> > so I'll find out why the activity diagrams are missing.
>> >
>> > I am also keen to take a closer look at IFML [1] in terms of it being
>> > integated with the workflow addon in Apache-Isis. This is instead of
>> > UML Activity diagrams.
>> >
>> > [1] http://www.ifml.org
>> >
>> > On Tue, Nov 24, 2015 at 3:00 AM, Cesar Lugo <ce...@sisorg.com.mx>
>> > wrote:
>> >
>> >> Hi. I also tried Papyrus, it works but the installation is a little
>> >> tricky. Best guidance I got was this YouTube video, which adds the
>> >> "missing link" to make it work. It's actually a part of a quite nice
>> >> series with Papyrus and UML tutorial videos. I hope that helps.
>> >>
>> >> https://www.youtube.com/watch?v=gmf8CswqKcs
>> >>
>> >> Cesar.
>> >>
>> >> -----Original Message-----
>> >> From: Stephen Cameron [mailto:steve.cameron.62@gmail.com]
>> >> Sent: Monday, November 23, 2015 4:42 AM
>> >> To: users@isis.apache.org
>> >> Subject: Re: Thinking about re-introducing UML in our workflow
>> >>
>> >> Spent some time on this today, but did not get far. I tried Papyrus
>> >> but without success, couldn't get it to reverse engineer my code that
>> >> is. Then I tried myeclipse which does support UML2 and does reverse
>> >> engineer Java code to UML class diagrams and also updates these
>> >> diagrams from any (code) 'Model' changes afterwards. However the
>> >> trial strangelly doesn't support Activity diagrams despite them being
>> >> in the documentation. So all in all not time well spent.
>> >>
>> >> On Sat, Nov 21, 2015 at 9:31 AM, Stephen Cameron <
>> >> steve.cameron.62@gmail.com
>> >>> wrote:
>> >>
>> >>> Hi,
>> >>>
>> >>> Related to this thread, my new job involves maintenance of a Struts
>> >>> 2 based website, in thinking about the best way to approach this
>> >>> task, both to learn how it has been put together and potentially
>> >>> make life easier into the future I thought the best place to start
>> >>> is creating some diagrams, maybe even UML diagrams .
>> >>>
>> >>> Then I remembered something called AndroMDA [1] from my past reading
>> >>> on UML/MDA, it has a 'cartridge' for generating a Struts
>> >>> web-application off a UML class model [2]. Just reading the
>> >>> documentation now, it can also make use of an UML Activity diagram
>> >>> for designing page navigation[3], also, it consume a BPMN diagram as
>> >>> a design model too (Hmm, just maybe this has more potential than I
>> >> imagined).
>> >>>
>> >>> I'll have a play with this myself soon (It seems like a fun way to
>> >>> learn about Struts and JBOSS), but thought in worth mentioning in
>> >>> this discussion. If I was starting from scratch to build such a
>> >>> 'public
>> >> facing'
>> >>> website, an approach that I can see working is to first develop an
>> >>> Apache Isis based domain model in Java and get all the systems
>> >>> integrations needed working with that. Then, to generate UML class
>> >>> diagrams off that design, add in the page navigation design (UML
>> >>> Activity diagram?), and use that combination to generate the
>> >>> skeleton of a tradition request/response type website using AndroMDA.
>> >>>
>> >>> If this all worked, it would provide something very close to a
>> >>> commercial MDA suite that I was interested in supporting called
>> >>> WebRatio [4], for which the public website design [5] market seems
>> >>> quite large. They talk about web-applications, but  I like the Isis
>> >>> coded model approach better for real applications (as opposed to
>> >>> database back web-sites). For public facing web-sites, a templates
>> >>> based approach does still seem to be valid, such as Struts/JSP, and
>> >>> using a MDA probably a good way to manage that complexity.
>> >>>
>> >>> The WebRatio folk have designed a specific graphical web-site design
>> >>> language called Interacton Flow Modelling Language (IFML) [6] (but
>> >>> AndroMDA is UML focused). There is an open-source Eclipse plugin for
>> >>> IFML that they have contributed to [7].
>> >>>
>> >>> Interested to hear thoughts, maybe a dead-end, but maybe not.
>> >>>
>> >>> Cheers
>> >>>
>> >>>
>> >>> [1] http://www.andromda.org/
>> >>> [2]
>> >>> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart
>> >>> ri
>> >>> dge/index.html
>> >>> [3]
>> >>> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart
>> >>> ri
>> >>> dge/howto2.html
>> >>> [4] http://www.webratio.com
>> >>> [5]
>> >>> http://www.webratio.com/site/content/en/web-application-development
>> >>> [6] http://www.ifml.org/
>> >>> [7] http://ifml.github.io/
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> On Fri, Nov 20, 2015 at 1:48 AM, Cesar Lugo
>> >>> <ce...@sisorg.com.mx>
>> >>> wrote:
>> >>>
>> >>>> Hi.
>> >>>>
>> >>>> I just wanted to let you guys know that I have tried Papyro in
>> >>>> eclipse. I have been able to reverse engineer java code and create
>> >>>> UML Class Diagrams (supports most of the UML types of diagrams
>> >>>> including use cases, state machine, activity and many more). I
>> >>>> tried adding a property within a domain object class, then redo
>> >>>> java engineer and it keeps my diagram and was able to include the
>> >>>> new property. I haven't been able to do the opposite, adding a
>> >>>> property within the UML and have it add it to the existing java
>> class though.
>> >>>> Adding a new UML class generates java code just fine. I haven’t
>> >>>> been able to reverse engineer some repository classes, anything
>> >>>> that uses java.util.List fails to be imported into the UML model, I
>> >>>> haven't find the solution yet (sortedSet works fine). It doesn't
>> >>>> automatically create the diagram (like other simpler tools do), but
>> >>>> once you import your java code into the UML model, it's just a
>> >>>> matter of drag and drop and into the diagram canvas and select
>> >>>> which properties and operations (actions) you want to be shown,
>> >>>> very convenient to exclude the obvious from the diagram, like
>> >>>> getters and
>> >> setters, maybe disableXxx / hideXxx / defaultxXX methods, your choice.
>> >>>>
>> >>>> I will keep working on it, looking good so far.
>> >>>>
>> >>>> Cesar.
>> >>>>
>> >>>> -----Original Message-----
>> >>>> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
>> >>>> Sent: Monday, November 16, 2015 4:53 AM
>> >>>> To: users
>> >>>> Subject: Re: Thinking about re-introducing UML in our workflow
>> >>>>
>> >>>>
>> >>>> For you to know.
>> >>>>
>> >>>> I was just reading about “AgileJ” [1] (the video at [2] is excellent.
>> >>>> It perfectly summarizes the points-of-view expressed here about the
>> >>>> evolution last years of UML usage in dev teams).
>> >>>>
>> >>>> But I’ve also found the Papyrus Eclipse project [3]. Seems to be
>> >>>> really alive (there has been a conference this month).
>> >>>>
>> >>>> And It also seems to have full code synch from Java … See [4].
>> >>>>
>> >>>> Any experience out there with Papyrus?
>> >>>> Could it be a good match for Apache Isis?
>> >>>>
>> >>>>
>> >>>> Cheers,
>> >>>>
>> >>>> Oscar
>> >>>>
>> >>>>
>> >>>> [1] http://www.agilej.com
>> >>>> [2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
>> >>>> [3] http://www.eclipse.org/papyrus/ [4]
>> >>>> https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diag
>> >>>> ra
>> >>>> ms-ordinary-java-developers
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>> El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS
>> >>>>> <o....@govertis.com>
>> >>>> escribió:
>> >>>>>
>> >>>>>
>> >>>>> Hi all.
>> >>>>>
>> >>>>> First of all, the good news for all romantics:
>> >>>>>
>> >>>>> Together is still alive !!! See [1].
>> >>>>>
>> >>>>> [2] says it fully supports Eclipse.
>> >>>>>
>> >>>>> Really interesting, Jeroen, introducing Lombok.
>> >>>>> Look how clear and concise is the Aggregate in [3] expressed in C#.
>> >>>>>
>> >>>>>
>> >>>>> For me, my immediate need is to have a visual depiction of the new
>> >>>> features developers must work on.
>> >>>>> So an Agile diagramming tool would be ok for it.
>> >>>>>
>> >>>>> I’m used to drag-n-drop like interfaces, and I'm there are “visual”
>> >>>> tools out there that support plantuml, so it would be ok to be
>> >>>> based on
>> >> it.
>> >>>>>
>> >>>>> Also agree that the model "must be" the code (and not “the code is
>> >>>>> the
>> >>>> model” MDA approach, despite my experience with Bold for
>> >>>> Delphi/Capable Objects was REALLY really good).
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> Regards,
>> >>>>>
>> >>>>> Oscar
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> [1]
>> >>>>> http://www.borland.com/en-GB/Products/Requirements-Management/Toge
>> >>>>> t
>> >>>>> her
>> >>>>> [2[
>> >>>>> http://www.borland.com/en-GB/Products/Requirements-Management/Toge
>> >>>>> t
>> >>>>> her
>> >>>>> /Plugins-and-integrations [3]
>> >>>>> https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggreg
>> >>>>> a
>> >>>>> tes
>> >>>>> /Register/RegistrationState.cs
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>> El 16 nov 2015, a las 10:57, Mike Burton
>> >>>>>> <mi...@mycosystems.co.uk>
>> >>>> escribió:
>> >>>>>>
>> >>>>>> Hi Jeroen,
>> >>>>>>
>> >>>>>> My experience is similar. I was always suspicious of the "code
>> >>>> generation " approach, inevitably gives 2 "sources" that get out of
>> >> step.
>> >>>>>>
>> >>>>>> The only good exception I saw was TogetherJ where "the code is
>> >>>>>> the
>> >>>> model"
>> >>>>>>
>> >>>>>> Best Regards
>> >>>>>>
>> >>>>>> Mike Burton
>> >>>>>> (Sent from my iPhone)
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>> On 15 Nov 2015, at 23:44, Jeroen van der Wal
>> >>>>>>> <je...@stromboli.it>
>> >>>> wrote:
>> >>>>>>>
>> >>>>>>> All very interesting!
>> >>>>>>>
>> >>>>>>> Over the years I tried numerous modelling tools and only the
>> >>>>>>> low-tech ones
>> >>>>>>> stayed: drawing on a whiteboard, using coloured index cards [1]
>> >>>>>>> (learned from Dan) or using a simple online tool like yUML [2].
>> >>>>>>> And I only use them to communicate the broad picture or for
>> >>>>>>> explorative
>> >>>> purposes.
>> >>>>>>>
>> >>>>>>> I gave up on code generators: I always ended up fighting the
>> >>>>>>> generated code. And the impression that they support rapid
>> >>>>>>> application development proved wrong: at the point where you had
>> >>>>>>> to work on more advanced stuff velocity came to a halt. If an
>> >>>>>>> application is built on lots of repeating code snippets then my
>> >>>>>>> conclusion is that the underlying framework is not good enough.
>> >>>>>>>
>> >>>>>>> I love source code that tells the story of the application.
>> >>>>>>> Where everything that could be left out of the code is
>> >>>>>>> eliminated. Very DRY, convention over code. This has drawn me to
>> >>>>>>> Naked Objects and made me decide to spend my time on Apache Isis.
>> >>>>>>>
>> >>>>>>> As you imagine by now I would not take the route from diagram to
>> >>>>>>> code. For me the code editor is the sole canvas to express your
>> >>>>>>> ideas. And I think that if we keep improving Apache Isis on a
>> >>>>>>> few points there will never be a need for an additional tool:
>> >>>>>>>
>> >>>>>>> 1) Reduce boilerplate and make writing an application skeleton
>> >>>>>>> as easy as the easiest modelling tool. This has the advantage
>> >>>>>>> that a software architect can sketch the application and leave
>> >>>>>>> it to his developers to fill in details. But everyone is working
>> >>>>>>> on the same code base using the same tools. In this area we
>> >>>>>>> started using Lombok. Also Dan had an idea to make it possible
>> >>>>>>> to create your own custom annotations which can combine multiple
>> annotations.
>> >>>>>>>
>> >>>>>>> 2) Visualise the meta model. With contributions and mixins the
>> >>>>>>> application logic can come from anywhere. This is
>> >>>>>>> architecturally sane but makes an application hard to grasp. It
>> >>>>>>> would love to see a maven plugin that generates appealing
>> >>>>>>> documentation from the meta model of an Isis application.
>> >>>>>>>
>> >>>>>>> 3) When taking the visualisation concept a bit further it would
>> >>>>>>> be very powerful to explore and navigate the meta model within
>> >>>>>>> the
>> >> IDE.
>> >>>>>>> Any plugin developers here?
>> >>>>>>>
>> >>>>>>> That's just my two cents.
>> >>>>>>>
>> >>>>>>> Cheers,
>> >>>>>>>
>> >>>>>>> Jeroen
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>> On 15 November 2015 at 21:01, David Tildesley
>> >>>>>>>> <da...@yahoo.co.nz>
>> >>>> wrote:
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
>> >>>>>>>> dan@haywood-associates.co.uk> wrote:
>> >>>>>>>>> Thanks for this James.
>> >>>>>>>>
>> >>>>>>>>> My observation re: using the (relational) data model as the
>> >>>>>>>>> initial input though is that this is likely to lead to rather
>> >>>>>>>>> coupled code, ultimately not maintainable.
>> >>>>>>>>
>> >>>>>>>> Couldn't agree more.
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>> So, while going from the database up to the domain is fine for
>> >>>>>>>>> a single module of 10 or so entities, any app that is bigger
>> >>>>>>>>> than this really
>> >>>>>>>> should
>> >>>>>>>>> be modelled from the domain down to the database.
>> >>>>>>>>
>> >>>>>>>> Quite right. Any business app that is non trivial should be
>> >>>>>>>> domain modelled.
>> >>>>>>>>
>> >>>>>>>> David.
>> >>>>>>>>
>> >>>>>>>>> Dan
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>> On 14 November 2015 at 15:00, James Agada
>> >>>>>>>>> <Ja...@cwg-plc.com>
>> >>>> wrote:
>> >>>>>>>>>
>> >>>>>>>>> I actually tested out using Telosys to generate an isis app
>> >>>>>>>>> from database definition. It did work but of course it meant i
>> >>>>>>>>> did the ER first. I used MySQL, did the ER modelling on the
>> >>>>>>>>> workbench, forward engineered into the database and then used
>> >>>>>>>>> telosys scripts to generate a functional Isis application. Did
>> >>>>>>>>> it as a PoC but we
>> >>>> will come back to it later.
>> >>>>>>>>> James Agada
>> >>>>>>>>> Chief Technology Officer
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS
>> >>>>>>>>> <o....@govertis.com>
>> >>>>>>>>> wrote:
>> >>>>>>>>>
>> >>>>>>>>> Many thanks, Stephen for this detailed explanation.
>> >>>>>>>>>
>> >>>>>>>>> The problem I’m facing is that I intent to communicate the
>> >>>>>>>>> developers what’s the model to implement.
>> >>>>>>>>>
>> >>>>>>>>> And I usually don’t find big mistakes in action code, but what
>> >>>>>>>>> mostly forces us to refactor is miscommunication regarding the
>> >>>>>>>>> Domain Entities, attributes and actions names, including typos
>> >>>>>>>>> (think my team speak
>> >>>>>>>> Spanish
>> >>>>>>>>> but they’re modeling in English) or wrong or missing
>> >>>>>>>>> relationships
>> >>>>>>>> between
>> >>>>>>>>> those entities.
>> >>>>>>>>>
>> >>>>>>>>> All that could be avoided by firstly agree in a common UML
>> >>>>>>>>> Class
>> >>>> Diagram.
>> >>>>>>>>>
>> >>>>>>>>> If it can potentially generate automatically the Java skeleton
>> >>>>>>>>> with
>> >>>>>>>> Apache
>> >>>>>>>>> Isis annotations is a big plus, as it will avoid mistakes when
>> >>>>>>>>> moving
>> >>>>>>>> from
>> >>>>>>>>> design to implementation.
>> >>>>>>>>>
>> >>>>>>>>> And if it could potentially reverse engineer Java (incl.
>> >>>>>>>>> Apache Isis
>> >>>>>>>>> idioms) a really good feature.
>> >>>>>>>>>
>> >>>>>>>>> Any ideas about what tools could best adapt to the workflow
>> >>>>>>>>> (that could
>> >>>>>>>> be
>> >>>>>>>>> potentially customized to cover the last 2 whishes) ?
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> Thanks,
>> >>>>>>>>>
>> >>>>>>>>> Oscar
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> El 14 nov 2015, a las 2:03, Stephen Cameron
>> >>>>>>>>> <st...@gmail.com>
>> >>>>>>>>> escribió:
>> >>>>>>>>>
>> >>>>>>>>> Hi Oscar,
>> >>>>>>>>>
>> >>>>>>>>> In a qualified way I think your idea has merit. I have never
>> >>>>>>>>> used UML for design, but a few years ago I decided to take a
>> >>>>>>>>> good look at it and see
>> >>>>>>>> it
>> >>>>>>>>> if was useful. The idea of being able to draw a diagram and
>> >>>>>>>>> generate code from it seemed sensible, after all that is what
>> >>>>>>>>> is done by most other 'design' professions, such as building
>> >>>> architects and engineers.
>> >>>>>>>>>
>> >>>>>>>>> To cut a long story short I realised after some reading that
>> >>>>>>>>> it was not that simple, and that OO languages themselves are
>> >>>>>>>>> really all that are needed for the process of designing a
>> >>>>>>>>> system. This is "the code is the design" school of thought,
>> >>>>>>>>> mainly attributed to
>> >>>> Jack Reeves [1].
>> >>>>>>>>>
>> >>>>>>>>> I found that  keeping code and UML diagrams in sync in a
>> >>>>>>>>> top-down 'UML to code' design process will always be
>> >>>>>>>>> problematic (maybe why there are apparently no open-source
>> >>>>>>>>> tools
>> >> that claim to do this).
>> >>>>>>>>> Then I read about Domain Driven Design which seemed to agree
>> >>>>>>>>> with this premise, and from there found Apache Isis via Dan's
>> >> book.
>> >>>>>>>>>
>> >>>>>>>>> So now for me UML class diagrams do have an after the fact use
>> >>>>>>>>> for documentation purposes and if a solution implement was
>> >>>>>>>>> capable of that reverse generation of diagrams from code it
>> >>>>>>>>> would be a good thing to
>> >>>>>>>> have.
>> >>>>>>>>> Entity Framework can do this, its their "code first" approach.
>> >>>>>>>>>
>> >>>>>>>>> Given that the-code-is-the-design is true, I think that UML
>> >>>>>>>>> class
>> >>>>>>>> diagrams
>> >>>>>>>>> real main value is as a data model, the question then is why
>> >>>>>>>>> not use a purely data-modeling tool and generate Java classes
>> >>>>>>>>> off
>> >> it.
>> >>>>>>>>> Then the diagrams 'designed' could have a usefulness to
>> >>>>>>>>> programmers and to system users, something like those created
>> >>>> SchemaSpy [2]  for example.
>> >>>>>>>>>
>> >>>>>>>>> There are already useful and free Java class generation
>> >>>>>>>>> (binding) tools from off data-models, of one sort or another,
>> >>>>>>>>> such as JAXB,
>> >>>> DataNucleus'
>> >>>>>>>>> schemaGen[3], even CAM [4].
>> >>>>>>>>>
>> >>>>>>>>> Here is my vision of what I think would be really useful: to
>> >>>>>>>>> have a
>> >>>>>>>> design
>> >>>>>>>>> tool that can be used by non-programmers to create a simple
>> >>>>>>>>> data-model,
>> >>>>>>>> and
>> >>>>>>>>> then to have that create a working Apache Isis based CRUD
>> system.
>> >>>>>>>>> This could serve your purpose (I guess) and also find a wider
>> use.
>> >>>>>>>>>
>> >>>>>>>>> The means of achieving this would I think, require something
>> >>>>>>>>> like the "dynamic classes" in available in the Moxy framework
>> >>>>>>>>> [5], that is, map based so that no Java class compilation is
>> >> needed.
>> >>>>>>>>> Instead, a data-model configuration file (a schema) is read-in
>> >>>>>>>>> to configure the system. This is not a strange idea, in fact
>> >>>>>>>>> its the data-driven programming paradigm that is the basis of
>> >>>>>>>>> the original browser concept (before it was turned into
>> >>>>>>>> OO
>> >>>>>>>>> application framework via addition of Javascript). In the
>> >>>>>>>>> browser the
>> >>>>>>>> data
>> >>>>>>>>> is HTML that is turned into an in-memory Document Object Model
>> >>>>>>>>> (DOM) for rendering.
>> >>>>>>>>>
>> >>>>>>>>> As a blended solution between Apache Isis as it is currently
>> >>>>>>>>> (heavily influence by naked objects, an OO modelling based
>> >>>>>>>>> approach for creating custom *behavioural* applications) and
>> >>>>>>>>> this additional mainly data
>> >>>>>>>> focused
>> >>>>>>>>> approach, I think a programmer developing a business
>> >>>>>>>>> application would start off with these dymanic classes and
>> >>>>>>>>> then in time 'harden' the design by generating and compiling
>> >>>>>>>>> real Java classes from off the model. [A non-programmer
>> >>>>>>>>> wouldn't get past the first design 'phase' usually, but still
>> >>>>>>>>> end up with a useable UI.]
>> >>>>>>>>>
>> >>>>>>>>> In addition, by having separate abstract model-generated
>> >>>>>>>>> classes, that
>> >>>>>>>> can
>> >>>>>>>>> be overwritten if the data-model changes, and concrete
>> >>>>>>>>> implementation classes, where you put all your behavioural
>> >>>>>>>>> code and that are never overwritten, you get close to the
>> >>>>>>>>> 'round-tripping' that would seem to me
>> >>>>>>>> to
>> >>>>>>>>> be the only valid way to use UML *for design*. I think this is
>> >>>>>>>>> how the Eclipse Ecore models work, that there are model
>> >>>>>>>>> classes and
>> >>>>>>>> implementation
>> >>>>>>>>> classes that extend the model classes. The IDE will often warn
>> >>>>>>>>> you when these two sub-models have inconsistencies. This
>> >>>>>>>>> duality also offers an alternative means to achieving the
>> >>>>>>>>> goals of Lombok it
>> >>>> would seem.
>> >>>>>>>>>
>> >>>>>>>>> Of course, sitting in the middle of all this is a meta-model,
>> >>>>>>>>> that
>> >>>>>>>> creates
>> >>>>>>>>> the dynamic classes, generates and compiles the 'hardened'
>> >>>>>>>>> model classes (when used) and maps either of these means to a
>> >>>>>>>>> UI
>> >> 'viewer'.
>> >>>>>>>>>
>> >>>>>>>>> For such data-management frameworks, the complicated aspect
>> >>>>>>>>> isn't so much going from the designed data-model to Java,
>> >>>>>>>>> there are lots of examples of that, instead its being able to
>> >>>>>>>>> have also, a dynamic query capability. So that a person
>> >>>>>>>>> unfamiliar with the dataset, can, via its data-model, start
>> >>>>>>>>> querying it (and also maybe integrating it in real-time with
>> >>>>>>>>> other online resources, the
>> >>>> idea of a data-browser appeals!).
>> >>>>>>>>>
>> >>>>>>>>> In the science domain, where I worked for a few years building
>> >>>>>>>>> data-management infrastructure, there are highly advanced
>> >>>>>>>>> systems for online data access and querying e.g. [6], but at
>> >>>>>>>>> the same time a common tool used for small databases is still
>> >> Microsoft Access.
>> >>>>>>>>> Access has many strengths as a desktop database, including
>> >>>>>>>>> form generation and also
>> >>>>>>>> dynamic
>> >>>>>>>>> query-by-form, but the problems arise when you want to make
>> >>>>>>>>> such data publicly available, in the sense of being findable
>> >>>>>>>>> and searchable in real time. You might as well have used a
>> >>>>>>>>> web-based system from the start and then been able to easily
>> >>>>>>>>> open it to the
>> >>>> world at the appropriate time.
>> >>>>>>>>>
>> >>>>>>>>> Having though about this problem for a number of years and
>> >>>>>>>>> spent alot of time working on a XForms based solution as well.
>> >>>>>>>>> I'd be very interested
>> >>>>>>>> to
>> >>>>>>>>> see Apache Isis broaden its scope to offer what I have
>> >>>>>>>>> described, in fact its doesn't seem to need very much more
>> >>>>>>>>> than what is already present in
>> >>>>>>>> the
>> >>>>>>>>> Isis meta-model and Wicket viewer. The Restful objects support
>> >>>>>>>>> already provides a generic 'generated' web programming
>> interface.
>> >>>>>>>>>
>> >>>>>>>>> In summary I know that there are some Java projects that make
>> >>>>>>>>> very effective use of a Model Driven Architecture approach
>> >>>>>>>>> (e.g [7]), but I am now not sure that UML is the
>> >>>>>>>>> 'be-all-and-end-all' basis of
>> >>>> that.
>> >>>>>>>> Actually I
>> >>>>>>>>> think that data-models are the basis of most of MDAs
>> >>>>>>>>> efficiency dividends and that there are other approaches,
>> >>>>>>>>> specifically that conceptual models offer more versatility in
>> >>>>>>>>> terms of who and how
>> >>>> you can make use of them.
>> >>>>>>>>> This thinking goes way back, such as Sowa's Conceptual Graphs
>> >>>>>>>>> [8] and
>> >>>>>>>> even
>> >>>>>>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather)
>> >>>>>>>>> is the W3C semantic web, but he was thinking of database
>> >>>>>>>>> design and
>> >>>> query way back.
>> >>>>>>>>>
>> >>>>>>>>> Apart from some additions to Isis, another interesting aspect
>> >>>>>>>>> is looking
>> >>>>>>>> at
>> >>>>>>>>> the mapping to data-stores, using a graph database of one sort
>> >>>>>>>>> or another to avoid the complexity of ORM is a simple answer
>> >>>>>>>>> to that I feel. Again, the hardening of a design might mean
>> >>>>>>>>> manually adding a few overrides of default ORM mapping rules
>> >>>>>>>>> into some behavioural-model classes, that
>> >>>>>>>> extend
>> >>>>>>>>> generated data-model classes (getters and setters only).
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_
>> >>>>>>>>> m
>> >>>>>>>>> ain
>> >>>>>>>>> .html
>> >>>>>>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
>> >>>>>>>>> [3]
>> >>>>>>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/sc
>> >>>>>>>> h
>> >>>>>>>> ema
>> >>>>>>>> tool.html
>> >>>>>>>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Pag
>> >>>>>>>>> e
>> >>>>>>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
>> >>>>>>>>> [6]http://www.opendap.org/
>> >>>>>>>>> [7]http://www.opencrx.org/
>> >>>>>>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
>> >>>>>>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
>> >>>>>>>>>
>> >>>>>>>>> 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.
>> >>>>>>>>>
>> >>>>>>>>> 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?
>> >>>>>>>>>
>> >>>>>>>>> Thanks,
>> >>>>>>>>>
>> >>>>>>>>> Oscar
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> [1] http://roomodeler.com
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> This email and any attachment thereto are confidential and
>> >>>> priviledged.
>> >>>>>>>> if
>> >>>>>>>>> you have received it in error, please delete immediately and
>> >>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any
>> >>>>>>>>> way use it. The information contained therein is for the
>> >>>>>>>>> address only, if you reply on
>> >>>>>>>> it,
>> >>>>>>>>> its at your own risk. Emails are not guaranteed to be secure
>> >>>>>>>>> or error
>> >>>>>>>> free,
>> >>>>>>>>> the message and any attachment could be intercepted,
>> >>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer
>> >>>>>>>>> warehouse group and its
>> >>>>>>>> divisions
>> >>>>>>>>> do not accept liability for damage caused by this email or any
>> >>>>>>>> attachment.
>> >>>>>>>>> The message you tried to print is protected with Information
>> >>>>>>>>> Rights Management. You don't have the necessary user rights to
>> >>>>>>>>> print the
>> >>>>>>>> message.
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> This email and any attachment thereto are confidential and
>> >>>> priviledged.
>> >>>>>>>> if
>> >>>>>>>>> you have received it in error, please delete immediately and
>> >>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any
>> >>>>>>>>> way use it. The information contained therein is for the
>> >>>>>>>>> address only, if you reply on
>> >>>>>>>> it,
>> >>>>>>>>> its at your own risk. Emails are not guaranteed to be secure
>> >>>>>>>>> or error
>> >>>>>>>> free,
>> >>>>>>>>> the message and any attachment could be intercepted,
>> >>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer
>> >>>>>>>>> warehouse group and its
>> >>>>>>>> divisions
>> >>>>>>>>> do not accept liability for damage caused by this email or any
>> >>>>>>>> attachment.
>> >>>>>>>>> The message you tried to print is protected with Information
>> >>>>>>>>> Rights Management. You don't have the necessary user rights to
>> >>>>>>>>> print the
>> >>>>>>>> message.
>> >>>>>>>>
>> >>>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> ---
>> >>>> This email has been checked for viruses by Avast antivirus software.
>> >>>> https://www.avast.com/antivirus
>> >>>>
>> >>>>
>> >>>
>> >>
>> >>
>> >> ---
>> >> This email has been checked for viruses by Avast antivirus software.
>> >> https://www.avast.com/antivirus
>> >>
>> >>
>>
>>
>>
>> ---
>> This email has been checked for viruses by Avast antivirus software.
>> https://www.avast.com/antivirus
>>
>>
>>
>

Re: Thinking about re-introducing UML in our workflow

Posted by Stephen Cameron <st...@gmail.com>.
On Tue, Nov 24, 2015 at 9:19 AM, Cesar Lugo <ce...@sisorg.com.mx>
wrote:

> Hi Oscar,
>
> Reverse engineering worked for me just fine, also when you make changes to
> the code and update the UMl from it. When you have your UML repository open
> (diagram canvas open), the you select the java class or classes from Isis
> repo, click the java reverse button or select the right click - java -
> reverse option, and it will import the selected classes to the UML
> repository. From there you drag and drop the UML classes you want on the
> diagram canvas (from the UML repo to the Diagram canvas), and once on the
> diagram you select the class element and press F4 (or right click for
> contextual menu), so it let's you choose the properties and methods you
> want to be shown / hidden from the menu. When you make changes to the code,
> just do the same again and it will update the UML metadata, F4 again on the
> class and select the new properties or methods you want to be shown on the
> diagram.
>
> Hmm, definitely a "missing link" in my case as none of this worked, I will
watch the video.


> The issue I have found is that if the class contains a java.util.List, it
> won't import the whole class (typically repositories or menu classes).
> Haven't find the time to check why or solve that, but I can see in the UML
> repository a java element that contains a Java - Util - SortedSet, but not
> a Java - Util - List element. That might be the reason, just hopping there
> is a way to add the List to make it work too.
>
> Cesar.
>
> -----Original Message-----
> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
> Sent: Monday, November 23, 2015 2:37 PM
> To: users@isis.apache.org
> Subject: Re: Thinking about re-introducing UML in our workflow
>
> H, Cesar.
>
> Thanks here also.
>
> I’ve seen the video, but need to find time to install and test it locally.
>
> Seems interesting for direct generation.
> No example is given for reverse-engineering.
>
> As I see, customizing for Apache Isis would be a matter of defining
> - a custom profile for Apache Isis (perhaps it would be enough with the
> Java one).
> - and an Apache-Isis specific Library (for generating the properties,
> actions, etc. with the proper annotations).
>
> It remembers me quite well the Spring Roo customization on SparxSystem’s
> Enterprise Arquitect.
>
> There I implemented also a custom toolbox, in order to avoid to first
> create the attribute and after that assign to the specific library item
> (instead of 2 different steps).
>
> Perhaps all that is also possible here.
>
>
> Thanks,
>
> Oscar
>
>
>
>
>
>
> > El 23 nov 2015, a las 21:18, Stephen Cameron <st...@gmail.com>
> escribió:
> >
> > Thanks Cesar, I will give it a go, but don't have alot of time now
> > this week. They use myeclipse at work and its cheap to buy a licence,
> > so I'll find out why the activity diagrams are missing.
> >
> > I am also keen to take a closer look at IFML [1] in terms of it being
> > integated with the workflow addon in Apache-Isis. This is instead of
> > UML Activity diagrams.
> >
> > [1] http://www.ifml.org
> >
> > On Tue, Nov 24, 2015 at 3:00 AM, Cesar Lugo <ce...@sisorg.com.mx>
> > wrote:
> >
> >> Hi. I also tried Papyrus, it works but the installation is a little
> >> tricky. Best guidance I got was this YouTube video, which adds the
> >> "missing link" to make it work. It's actually a part of a quite nice
> >> series with Papyrus and UML tutorial videos. I hope that helps.
> >>
> >> https://www.youtube.com/watch?v=gmf8CswqKcs
> >>
> >> Cesar.
> >>
> >> -----Original Message-----
> >> From: Stephen Cameron [mailto:steve.cameron.62@gmail.com]
> >> Sent: Monday, November 23, 2015 4:42 AM
> >> To: users@isis.apache.org
> >> Subject: Re: Thinking about re-introducing UML in our workflow
> >>
> >> Spent some time on this today, but did not get far. I tried Papyrus
> >> but without success, couldn't get it to reverse engineer my code that
> >> is. Then I tried myeclipse which does support UML2 and does reverse
> >> engineer Java code to UML class diagrams and also updates these
> >> diagrams from any (code) 'Model' changes afterwards. However the
> >> trial strangelly doesn't support Activity diagrams despite them being
> >> in the documentation. So all in all not time well spent.
> >>
> >> On Sat, Nov 21, 2015 at 9:31 AM, Stephen Cameron <
> >> steve.cameron.62@gmail.com
> >>> wrote:
> >>
> >>> Hi,
> >>>
> >>> Related to this thread, my new job involves maintenance of a Struts
> >>> 2 based website, in thinking about the best way to approach this
> >>> task, both to learn how it has been put together and potentially
> >>> make life easier into the future I thought the best place to start
> >>> is creating some diagrams, maybe even UML diagrams .
> >>>
> >>> Then I remembered something called AndroMDA [1] from my past reading
> >>> on UML/MDA, it has a 'cartridge' for generating a Struts
> >>> web-application off a UML class model [2]. Just reading the
> >>> documentation now, it can also make use of an UML Activity diagram
> >>> for designing page navigation[3], also, it consume a BPMN diagram as
> >>> a design model too (Hmm, just maybe this has more potential than I
> >> imagined).
> >>>
> >>> I'll have a play with this myself soon (It seems like a fun way to
> >>> learn about Struts and JBOSS), but thought in worth mentioning in
> >>> this discussion. If I was starting from scratch to build such a
> >>> 'public
> >> facing'
> >>> website, an approach that I can see working is to first develop an
> >>> Apache Isis based domain model in Java and get all the systems
> >>> integrations needed working with that. Then, to generate UML class
> >>> diagrams off that design, add in the page navigation design (UML
> >>> Activity diagram?), and use that combination to generate the
> >>> skeleton of a tradition request/response type website using AndroMDA.
> >>>
> >>> If this all worked, it would provide something very close to a
> >>> commercial MDA suite that I was interested in supporting called
> >>> WebRatio [4], for which the public website design [5] market seems
> >>> quite large. They talk about web-applications, but  I like the Isis
> >>> coded model approach better for real applications (as opposed to
> >>> database back web-sites). For public facing web-sites, a templates
> >>> based approach does still seem to be valid, such as Struts/JSP, and
> >>> using a MDA probably a good way to manage that complexity.
> >>>
> >>> The WebRatio folk have designed a specific graphical web-site design
> >>> language called Interacton Flow Modelling Language (IFML) [6] (but
> >>> AndroMDA is UML focused). There is an open-source Eclipse plugin for
> >>> IFML that they have contributed to [7].
> >>>
> >>> Interested to hear thoughts, maybe a dead-end, but maybe not.
> >>>
> >>> Cheers
> >>>
> >>>
> >>> [1] http://www.andromda.org/
> >>> [2]
> >>> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart
> >>> ri
> >>> dge/index.html
> >>> [3]
> >>> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart
> >>> ri
> >>> dge/howto2.html
> >>> [4] http://www.webratio.com
> >>> [5]
> >>> http://www.webratio.com/site/content/en/web-application-development
> >>> [6] http://www.ifml.org/
> >>> [7] http://ifml.github.io/
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> On Fri, Nov 20, 2015 at 1:48 AM, Cesar Lugo
> >>> <ce...@sisorg.com.mx>
> >>> wrote:
> >>>
> >>>> Hi.
> >>>>
> >>>> I just wanted to let you guys know that I have tried Papyro in
> >>>> eclipse. I have been able to reverse engineer java code and create
> >>>> UML Class Diagrams (supports most of the UML types of diagrams
> >>>> including use cases, state machine, activity and many more). I
> >>>> tried adding a property within a domain object class, then redo
> >>>> java engineer and it keeps my diagram and was able to include the
> >>>> new property. I haven't been able to do the opposite, adding a
> >>>> property within the UML and have it add it to the existing java class
> though.
> >>>> Adding a new UML class generates java code just fine. I haven’t
> >>>> been able to reverse engineer some repository classes, anything
> >>>> that uses java.util.List fails to be imported into the UML model, I
> >>>> haven't find the solution yet (sortedSet works fine). It doesn't
> >>>> automatically create the diagram (like other simpler tools do), but
> >>>> once you import your java code into the UML model, it's just a
> >>>> matter of drag and drop and into the diagram canvas and select
> >>>> which properties and operations (actions) you want to be shown,
> >>>> very convenient to exclude the obvious from the diagram, like
> >>>> getters and
> >> setters, maybe disableXxx / hideXxx / defaultxXX methods, your choice.
> >>>>
> >>>> I will keep working on it, looking good so far.
> >>>>
> >>>> Cesar.
> >>>>
> >>>> -----Original Message-----
> >>>> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
> >>>> Sent: Monday, November 16, 2015 4:53 AM
> >>>> To: users
> >>>> Subject: Re: Thinking about re-introducing UML in our workflow
> >>>>
> >>>>
> >>>> For you to know.
> >>>>
> >>>> I was just reading about “AgileJ” [1] (the video at [2] is excellent.
> >>>> It perfectly summarizes the points-of-view expressed here about the
> >>>> evolution last years of UML usage in dev teams).
> >>>>
> >>>> But I’ve also found the Papyrus Eclipse project [3]. Seems to be
> >>>> really alive (there has been a conference this month).
> >>>>
> >>>> And It also seems to have full code synch from Java … See [4].
> >>>>
> >>>> Any experience out there with Papyrus?
> >>>> Could it be a good match for Apache Isis?
> >>>>
> >>>>
> >>>> Cheers,
> >>>>
> >>>> Oscar
> >>>>
> >>>>
> >>>> [1] http://www.agilej.com
> >>>> [2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
> >>>> [3] http://www.eclipse.org/papyrus/ [4]
> >>>> https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diag
> >>>> ra
> >>>> ms-ordinary-java-developers
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>> El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS
> >>>>> <o....@govertis.com>
> >>>> escribió:
> >>>>>
> >>>>>
> >>>>> Hi all.
> >>>>>
> >>>>> First of all, the good news for all romantics:
> >>>>>
> >>>>> Together is still alive !!! See [1].
> >>>>>
> >>>>> [2] says it fully supports Eclipse.
> >>>>>
> >>>>> Really interesting, Jeroen, introducing Lombok.
> >>>>> Look how clear and concise is the Aggregate in [3] expressed in C#.
> >>>>>
> >>>>>
> >>>>> For me, my immediate need is to have a visual depiction of the new
> >>>> features developers must work on.
> >>>>> So an Agile diagramming tool would be ok for it.
> >>>>>
> >>>>> I’m used to drag-n-drop like interfaces, and I'm there are “visual”
> >>>> tools out there that support plantuml, so it would be ok to be
> >>>> based on
> >> it.
> >>>>>
> >>>>> Also agree that the model "must be" the code (and not “the code is
> >>>>> the
> >>>> model” MDA approach, despite my experience with Bold for
> >>>> Delphi/Capable Objects was REALLY really good).
> >>>>>
> >>>>>
> >>>>>
> >>>>> Regards,
> >>>>>
> >>>>> Oscar
> >>>>>
> >>>>>
> >>>>>
> >>>>> [1]
> >>>>> http://www.borland.com/en-GB/Products/Requirements-Management/Toge
> >>>>> t
> >>>>> her
> >>>>> [2[
> >>>>> http://www.borland.com/en-GB/Products/Requirements-Management/Toge
> >>>>> t
> >>>>> her
> >>>>> /Plugins-and-integrations [3]
> >>>>> https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggreg
> >>>>> a
> >>>>> tes
> >>>>> /Register/RegistrationState.cs
> >>>>>
> >>>>>
> >>>>>
> >>>>>> El 16 nov 2015, a las 10:57, Mike Burton
> >>>>>> <mi...@mycosystems.co.uk>
> >>>> escribió:
> >>>>>>
> >>>>>> Hi Jeroen,
> >>>>>>
> >>>>>> My experience is similar. I was always suspicious of the "code
> >>>> generation " approach, inevitably gives 2 "sources" that get out of
> >> step.
> >>>>>>
> >>>>>> The only good exception I saw was TogetherJ where "the code is
> >>>>>> the
> >>>> model"
> >>>>>>
> >>>>>> Best Regards
> >>>>>>
> >>>>>> Mike Burton
> >>>>>> (Sent from my iPhone)
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> On 15 Nov 2015, at 23:44, Jeroen van der Wal
> >>>>>>> <je...@stromboli.it>
> >>>> wrote:
> >>>>>>>
> >>>>>>> All very interesting!
> >>>>>>>
> >>>>>>> Over the years I tried numerous modelling tools and only the
> >>>>>>> low-tech ones
> >>>>>>> stayed: drawing on a whiteboard, using coloured index cards [1]
> >>>>>>> (learned from Dan) or using a simple online tool like yUML [2].
> >>>>>>> And I only use them to communicate the broad picture or for
> >>>>>>> explorative
> >>>> purposes.
> >>>>>>>
> >>>>>>> I gave up on code generators: I always ended up fighting the
> >>>>>>> generated code. And the impression that they support rapid
> >>>>>>> application development proved wrong: at the point where you had
> >>>>>>> to work on more advanced stuff velocity came to a halt. If an
> >>>>>>> application is built on lots of repeating code snippets then my
> >>>>>>> conclusion is that the underlying framework is not good enough.
> >>>>>>>
> >>>>>>> I love source code that tells the story of the application.
> >>>>>>> Where everything that could be left out of the code is
> >>>>>>> eliminated. Very DRY, convention over code. This has drawn me to
> >>>>>>> Naked Objects and made me decide to spend my time on Apache Isis.
> >>>>>>>
> >>>>>>> As you imagine by now I would not take the route from diagram to
> >>>>>>> code. For me the code editor is the sole canvas to express your
> >>>>>>> ideas. And I think that if we keep improving Apache Isis on a
> >>>>>>> few points there will never be a need for an additional tool:
> >>>>>>>
> >>>>>>> 1) Reduce boilerplate and make writing an application skeleton
> >>>>>>> as easy as the easiest modelling tool. This has the advantage
> >>>>>>> that a software architect can sketch the application and leave
> >>>>>>> it to his developers to fill in details. But everyone is working
> >>>>>>> on the same code base using the same tools. In this area we
> >>>>>>> started using Lombok. Also Dan had an idea to make it possible
> >>>>>>> to create your own custom annotations which can combine multiple
> annotations.
> >>>>>>>
> >>>>>>> 2) Visualise the meta model. With contributions and mixins the
> >>>>>>> application logic can come from anywhere. This is
> >>>>>>> architecturally sane but makes an application hard to grasp. It
> >>>>>>> would love to see a maven plugin that generates appealing
> >>>>>>> documentation from the meta model of an Isis application.
> >>>>>>>
> >>>>>>> 3) When taking the visualisation concept a bit further it would
> >>>>>>> be very powerful to explore and navigate the meta model within
> >>>>>>> the
> >> IDE.
> >>>>>>> Any plugin developers here?
> >>>>>>>
> >>>>>>> That's just my two cents.
> >>>>>>>
> >>>>>>> Cheers,
> >>>>>>>
> >>>>>>> Jeroen
> >>>>>>>
> >>>>>>>
> >>>>>>>> On 15 November 2015 at 21:01, David Tildesley
> >>>>>>>> <da...@yahoo.co.nz>
> >>>> wrote:
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
> >>>>>>>> dan@haywood-associates.co.uk> wrote:
> >>>>>>>>> Thanks for this James.
> >>>>>>>>
> >>>>>>>>> My observation re: using the (relational) data model as the
> >>>>>>>>> initial input though is that this is likely to lead to rather
> >>>>>>>>> coupled code, ultimately not maintainable.
> >>>>>>>>
> >>>>>>>> Couldn't agree more.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>> So, while going from the database up to the domain is fine for
> >>>>>>>>> a single module of 10 or so entities, any app that is bigger
> >>>>>>>>> than this really
> >>>>>>>> should
> >>>>>>>>> be modelled from the domain down to the database.
> >>>>>>>>
> >>>>>>>> Quite right. Any business app that is non trivial should be
> >>>>>>>> domain modelled.
> >>>>>>>>
> >>>>>>>> David.
> >>>>>>>>
> >>>>>>>>> Dan
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>> On 14 November 2015 at 15:00, James Agada
> >>>>>>>>> <Ja...@cwg-plc.com>
> >>>> wrote:
> >>>>>>>>>
> >>>>>>>>> I actually tested out using Telosys to generate an isis app
> >>>>>>>>> from database definition. It did work but of course it meant i
> >>>>>>>>> did the ER first. I used MySQL, did the ER modelling on the
> >>>>>>>>> workbench, forward engineered into the database and then used
> >>>>>>>>> telosys scripts to generate a functional Isis application. Did
> >>>>>>>>> it as a PoC but we
> >>>> will come back to it later.
> >>>>>>>>> James Agada
> >>>>>>>>> Chief Technology Officer
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS
> >>>>>>>>> <o....@govertis.com>
> >>>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>> Many thanks, Stephen for this detailed explanation.
> >>>>>>>>>
> >>>>>>>>> The problem I’m facing is that I intent to communicate the
> >>>>>>>>> developers what’s the model to implement.
> >>>>>>>>>
> >>>>>>>>> And I usually don’t find big mistakes in action code, but what
> >>>>>>>>> mostly forces us to refactor is miscommunication regarding the
> >>>>>>>>> Domain Entities, attributes and actions names, including typos
> >>>>>>>>> (think my team speak
> >>>>>>>> Spanish
> >>>>>>>>> but they’re modeling in English) or wrong or missing
> >>>>>>>>> relationships
> >>>>>>>> between
> >>>>>>>>> those entities.
> >>>>>>>>>
> >>>>>>>>> All that could be avoided by firstly agree in a common UML
> >>>>>>>>> Class
> >>>> Diagram.
> >>>>>>>>>
> >>>>>>>>> If it can potentially generate automatically the Java skeleton
> >>>>>>>>> with
> >>>>>>>> Apache
> >>>>>>>>> Isis annotations is a big plus, as it will avoid mistakes when
> >>>>>>>>> moving
> >>>>>>>> from
> >>>>>>>>> design to implementation.
> >>>>>>>>>
> >>>>>>>>> And if it could potentially reverse engineer Java (incl.
> >>>>>>>>> Apache Isis
> >>>>>>>>> idioms) a really good feature.
> >>>>>>>>>
> >>>>>>>>> Any ideas about what tools could best adapt to the workflow
> >>>>>>>>> (that could
> >>>>>>>> be
> >>>>>>>>> potentially customized to cover the last 2 whishes) ?
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Thanks,
> >>>>>>>>>
> >>>>>>>>> Oscar
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> El 14 nov 2015, a las 2:03, Stephen Cameron
> >>>>>>>>> <st...@gmail.com>
> >>>>>>>>> escribió:
> >>>>>>>>>
> >>>>>>>>> Hi Oscar,
> >>>>>>>>>
> >>>>>>>>> In a qualified way I think your idea has merit. I have never
> >>>>>>>>> used UML for design, but a few years ago I decided to take a
> >>>>>>>>> good look at it and see
> >>>>>>>> it
> >>>>>>>>> if was useful. The idea of being able to draw a diagram and
> >>>>>>>>> generate code from it seemed sensible, after all that is what
> >>>>>>>>> is done by most other 'design' professions, such as building
> >>>> architects and engineers.
> >>>>>>>>>
> >>>>>>>>> To cut a long story short I realised after some reading that
> >>>>>>>>> it was not that simple, and that OO languages themselves are
> >>>>>>>>> really all that are needed for the process of designing a
> >>>>>>>>> system. This is "the code is the design" school of thought,
> >>>>>>>>> mainly attributed to
> >>>> Jack Reeves [1].
> >>>>>>>>>
> >>>>>>>>> I found that  keeping code and UML diagrams in sync in a
> >>>>>>>>> top-down 'UML to code' design process will always be
> >>>>>>>>> problematic (maybe why there are apparently no open-source
> >>>>>>>>> tools
> >> that claim to do this).
> >>>>>>>>> Then I read about Domain Driven Design which seemed to agree
> >>>>>>>>> with this premise, and from there found Apache Isis via Dan's
> >> book.
> >>>>>>>>>
> >>>>>>>>> So now for me UML class diagrams do have an after the fact use
> >>>>>>>>> for documentation purposes and if a solution implement was
> >>>>>>>>> capable of that reverse generation of diagrams from code it
> >>>>>>>>> would be a good thing to
> >>>>>>>> have.
> >>>>>>>>> Entity Framework can do this, its their "code first" approach.
> >>>>>>>>>
> >>>>>>>>> Given that the-code-is-the-design is true, I think that UML
> >>>>>>>>> class
> >>>>>>>> diagrams
> >>>>>>>>> real main value is as a data model, the question then is why
> >>>>>>>>> not use a purely data-modeling tool and generate Java classes
> >>>>>>>>> off
> >> it.
> >>>>>>>>> Then the diagrams 'designed' could have a usefulness to
> >>>>>>>>> programmers and to system users, something like those created
> >>>> SchemaSpy [2]  for example.
> >>>>>>>>>
> >>>>>>>>> There are already useful and free Java class generation
> >>>>>>>>> (binding) tools from off data-models, of one sort or another,
> >>>>>>>>> such as JAXB,
> >>>> DataNucleus'
> >>>>>>>>> schemaGen[3], even CAM [4].
> >>>>>>>>>
> >>>>>>>>> Here is my vision of what I think would be really useful: to
> >>>>>>>>> have a
> >>>>>>>> design
> >>>>>>>>> tool that can be used by non-programmers to create a simple
> >>>>>>>>> data-model,
> >>>>>>>> and
> >>>>>>>>> then to have that create a working Apache Isis based CRUD system.
> >>>>>>>>> This could serve your purpose (I guess) and also find a wider
> use.
> >>>>>>>>>
> >>>>>>>>> The means of achieving this would I think, require something
> >>>>>>>>> like the "dynamic classes" in available in the Moxy framework
> >>>>>>>>> [5], that is, map based so that no Java class compilation is
> >> needed.
> >>>>>>>>> Instead, a data-model configuration file (a schema) is read-in
> >>>>>>>>> to configure the system. This is not a strange idea, in fact
> >>>>>>>>> its the data-driven programming paradigm that is the basis of
> >>>>>>>>> the original browser concept (before it was turned into
> >>>>>>>> OO
> >>>>>>>>> application framework via addition of Javascript). In the
> >>>>>>>>> browser the
> >>>>>>>> data
> >>>>>>>>> is HTML that is turned into an in-memory Document Object Model
> >>>>>>>>> (DOM) for rendering.
> >>>>>>>>>
> >>>>>>>>> As a blended solution between Apache Isis as it is currently
> >>>>>>>>> (heavily influence by naked objects, an OO modelling based
> >>>>>>>>> approach for creating custom *behavioural* applications) and
> >>>>>>>>> this additional mainly data
> >>>>>>>> focused
> >>>>>>>>> approach, I think a programmer developing a business
> >>>>>>>>> application would start off with these dymanic classes and
> >>>>>>>>> then in time 'harden' the design by generating and compiling
> >>>>>>>>> real Java classes from off the model. [A non-programmer
> >>>>>>>>> wouldn't get past the first design 'phase' usually, but still
> >>>>>>>>> end up with a useable UI.]
> >>>>>>>>>
> >>>>>>>>> In addition, by having separate abstract model-generated
> >>>>>>>>> classes, that
> >>>>>>>> can
> >>>>>>>>> be overwritten if the data-model changes, and concrete
> >>>>>>>>> implementation classes, where you put all your behavioural
> >>>>>>>>> code and that are never overwritten, you get close to the
> >>>>>>>>> 'round-tripping' that would seem to me
> >>>>>>>> to
> >>>>>>>>> be the only valid way to use UML *for design*. I think this is
> >>>>>>>>> how the Eclipse Ecore models work, that there are model
> >>>>>>>>> classes and
> >>>>>>>> implementation
> >>>>>>>>> classes that extend the model classes. The IDE will often warn
> >>>>>>>>> you when these two sub-models have inconsistencies. This
> >>>>>>>>> duality also offers an alternative means to achieving the
> >>>>>>>>> goals of Lombok it
> >>>> would seem.
> >>>>>>>>>
> >>>>>>>>> Of course, sitting in the middle of all this is a meta-model,
> >>>>>>>>> that
> >>>>>>>> creates
> >>>>>>>>> the dynamic classes, generates and compiles the 'hardened'
> >>>>>>>>> model classes (when used) and maps either of these means to a
> >>>>>>>>> UI
> >> 'viewer'.
> >>>>>>>>>
> >>>>>>>>> For such data-management frameworks, the complicated aspect
> >>>>>>>>> isn't so much going from the designed data-model to Java,
> >>>>>>>>> there are lots of examples of that, instead its being able to
> >>>>>>>>> have also, a dynamic query capability. So that a person
> >>>>>>>>> unfamiliar with the dataset, can, via its data-model, start
> >>>>>>>>> querying it (and also maybe integrating it in real-time with
> >>>>>>>>> other online resources, the
> >>>> idea of a data-browser appeals!).
> >>>>>>>>>
> >>>>>>>>> In the science domain, where I worked for a few years building
> >>>>>>>>> data-management infrastructure, there are highly advanced
> >>>>>>>>> systems for online data access and querying e.g. [6], but at
> >>>>>>>>> the same time a common tool used for small databases is still
> >> Microsoft Access.
> >>>>>>>>> Access has many strengths as a desktop database, including
> >>>>>>>>> form generation and also
> >>>>>>>> dynamic
> >>>>>>>>> query-by-form, but the problems arise when you want to make
> >>>>>>>>> such data publicly available, in the sense of being findable
> >>>>>>>>> and searchable in real time. You might as well have used a
> >>>>>>>>> web-based system from the start and then been able to easily
> >>>>>>>>> open it to the
> >>>> world at the appropriate time.
> >>>>>>>>>
> >>>>>>>>> Having though about this problem for a number of years and
> >>>>>>>>> spent alot of time working on a XForms based solution as well.
> >>>>>>>>> I'd be very interested
> >>>>>>>> to
> >>>>>>>>> see Apache Isis broaden its scope to offer what I have
> >>>>>>>>> described, in fact its doesn't seem to need very much more
> >>>>>>>>> than what is already present in
> >>>>>>>> the
> >>>>>>>>> Isis meta-model and Wicket viewer. The Restful objects support
> >>>>>>>>> already provides a generic 'generated' web programming interface.
> >>>>>>>>>
> >>>>>>>>> In summary I know that there are some Java projects that make
> >>>>>>>>> very effective use of a Model Driven Architecture approach
> >>>>>>>>> (e.g [7]), but I am now not sure that UML is the
> >>>>>>>>> 'be-all-and-end-all' basis of
> >>>> that.
> >>>>>>>> Actually I
> >>>>>>>>> think that data-models are the basis of most of MDAs
> >>>>>>>>> efficiency dividends and that there are other approaches,
> >>>>>>>>> specifically that conceptual models offer more versatility in
> >>>>>>>>> terms of who and how
> >>>> you can make use of them.
> >>>>>>>>> This thinking goes way back, such as Sowa's Conceptual Graphs
> >>>>>>>>> [8] and
> >>>>>>>> even
> >>>>>>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather)
> >>>>>>>>> is the W3C semantic web, but he was thinking of database
> >>>>>>>>> design and
> >>>> query way back.
> >>>>>>>>>
> >>>>>>>>> Apart from some additions to Isis, another interesting aspect
> >>>>>>>>> is looking
> >>>>>>>> at
> >>>>>>>>> the mapping to data-stores, using a graph database of one sort
> >>>>>>>>> or another to avoid the complexity of ORM is a simple answer
> >>>>>>>>> to that I feel. Again, the hardening of a design might mean
> >>>>>>>>> manually adding a few overrides of default ORM mapping rules
> >>>>>>>>> into some behavioural-model classes, that
> >>>>>>>> extend
> >>>>>>>>> generated data-model classes (getters and setters only).
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_
> >>>>>>>>> m
> >>>>>>>>> ain
> >>>>>>>>> .html
> >>>>>>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
> >>>>>>>>> [3]
> >>>>>>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/sc
> >>>>>>>> h
> >>>>>>>> ema
> >>>>>>>> tool.html
> >>>>>>>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Pag
> >>>>>>>>> e
> >>>>>>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
> >>>>>>>>> [6]http://www.opendap.org/
> >>>>>>>>> [7]http://www.opencrx.org/
> >>>>>>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
> >>>>>>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
> >>>>>>>>>
> >>>>>>>>> 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.
> >>>>>>>>>
> >>>>>>>>> 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?
> >>>>>>>>>
> >>>>>>>>> Thanks,
> >>>>>>>>>
> >>>>>>>>> Oscar
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> [1] http://roomodeler.com
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> This email and any attachment thereto are confidential and
> >>>> priviledged.
> >>>>>>>> if
> >>>>>>>>> you have received it in error, please delete immediately and
> >>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any
> >>>>>>>>> way use it. The information contained therein is for the
> >>>>>>>>> address only, if you reply on
> >>>>>>>> it,
> >>>>>>>>> its at your own risk. Emails are not guaranteed to be secure
> >>>>>>>>> or error
> >>>>>>>> free,
> >>>>>>>>> the message and any attachment could be intercepted,
> >>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer
> >>>>>>>>> warehouse group and its
> >>>>>>>> divisions
> >>>>>>>>> do not accept liability for damage caused by this email or any
> >>>>>>>> attachment.
> >>>>>>>>> The message you tried to print is protected with Information
> >>>>>>>>> Rights Management. You don't have the necessary user rights to
> >>>>>>>>> print the
> >>>>>>>> message.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> This email and any attachment thereto are confidential and
> >>>> priviledged.
> >>>>>>>> if
> >>>>>>>>> you have received it in error, please delete immediately and
> >>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any
> >>>>>>>>> way use it. The information contained therein is for the
> >>>>>>>>> address only, if you reply on
> >>>>>>>> it,
> >>>>>>>>> its at your own risk. Emails are not guaranteed to be secure
> >>>>>>>>> or error
> >>>>>>>> free,
> >>>>>>>>> the message and any attachment could be intercepted,
> >>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer
> >>>>>>>>> warehouse group and its
> >>>>>>>> divisions
> >>>>>>>>> do not accept liability for damage caused by this email or any
> >>>>>>>> attachment.
> >>>>>>>>> The message you tried to print is protected with Information
> >>>>>>>>> Rights Management. You don't have the necessary user rights to
> >>>>>>>>> print the
> >>>>>>>> message.
> >>>>>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> ---
> >>>> This email has been checked for viruses by Avast antivirus software.
> >>>> https://www.avast.com/antivirus
> >>>>
> >>>>
> >>>
> >>
> >>
> >> ---
> >> This email has been checked for viruses by Avast antivirus software.
> >> https://www.avast.com/antivirus
> >>
> >>
>
>
>
> ---
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
>
>
>

RE: Thinking about re-introducing UML in our workflow

Posted by Cesar Lugo <ce...@sisorg.com.mx>.
Hi Oscar,

Reverse engineering worked for me just fine, also when you make changes to the code and update the UMl from it. When you have your UML repository open (diagram canvas open), the you select the java class or classes from Isis repo, click the java reverse button or select the right click - java - reverse option, and it will import the selected classes to the UML repository. >From there you drag and drop the UML classes you want on the diagram canvas (from the UML repo to the Diagram canvas), and once on the diagram you select the class element and press F4 (or right click for contextual menu), so it let's you choose the properties and methods you want to be shown / hidden from the menu. When you make changes to the code, just do the same again and it will update the UML metadata, F4 again on the class and select the new properties or methods you want to be shown on the diagram.

The issue I have found is that if the class contains a java.util.List, it won't import the whole class (typically repositories or menu classes). Haven't find the time to check why or solve that, but I can see in the UML repository a java element that contains a Java - Util - SortedSet, but not a Java - Util - List element. That might be the reason, just hopping there is a way to add the List to make it work too.

Cesar.

-----Original Message-----
From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com] 
Sent: Monday, November 23, 2015 2:37 PM
To: users@isis.apache.org
Subject: Re: Thinking about re-introducing UML in our workflow

H, Cesar.

Thanks here also.

I’ve seen the video, but need to find time to install and test it locally. 

Seems interesting for direct generation. 
No example is given for reverse-engineering.

As I see, customizing for Apache Isis would be a matter of defining
- a custom profile for Apache Isis (perhaps it would be enough with the Java one).
- and an Apache-Isis specific Library (for generating the properties, actions, etc. with the proper annotations).

It remembers me quite well the Spring Roo customization on SparxSystem’s Enterprise Arquitect.

There I implemented also a custom toolbox, in order to avoid to first create the attribute and after that assign to the specific library item (instead of 2 different steps).

Perhaps all that is also possible here.


Thanks,

Oscar






> El 23 nov 2015, a las 21:18, Stephen Cameron <st...@gmail.com> escribió:
> 
> Thanks Cesar, I will give it a go, but don't have alot of time now 
> this week. They use myeclipse at work and its cheap to buy a licence, 
> so I'll find out why the activity diagrams are missing.
> 
> I am also keen to take a closer look at IFML [1] in terms of it being 
> integated with the workflow addon in Apache-Isis. This is instead of 
> UML Activity diagrams.
> 
> [1] http://www.ifml.org
> 
> On Tue, Nov 24, 2015 at 3:00 AM, Cesar Lugo <ce...@sisorg.com.mx>
> wrote:
> 
>> Hi. I also tried Papyrus, it works but the installation is a little 
>> tricky. Best guidance I got was this YouTube video, which adds the 
>> "missing link" to make it work. It's actually a part of a quite nice 
>> series with Papyrus and UML tutorial videos. I hope that helps.
>> 
>> https://www.youtube.com/watch?v=gmf8CswqKcs
>> 
>> Cesar.
>> 
>> -----Original Message-----
>> From: Stephen Cameron [mailto:steve.cameron.62@gmail.com]
>> Sent: Monday, November 23, 2015 4:42 AM
>> To: users@isis.apache.org
>> Subject: Re: Thinking about re-introducing UML in our workflow
>> 
>> Spent some time on this today, but did not get far. I tried Papyrus 
>> but without success, couldn't get it to reverse engineer my code that 
>> is. Then I tried myeclipse which does support UML2 and does reverse 
>> engineer Java code to UML class diagrams and also updates these 
>> diagrams from any (code) 'Model' changes afterwards. However the 
>> trial strangelly doesn't support Activity diagrams despite them being 
>> in the documentation. So all in all not time well spent.
>> 
>> On Sat, Nov 21, 2015 at 9:31 AM, Stephen Cameron < 
>> steve.cameron.62@gmail.com
>>> wrote:
>> 
>>> Hi,
>>> 
>>> Related to this thread, my new job involves maintenance of a Struts 
>>> 2 based website, in thinking about the best way to approach this 
>>> task, both to learn how it has been put together and potentially 
>>> make life easier into the future I thought the best place to start 
>>> is creating some diagrams, maybe even UML diagrams .
>>> 
>>> Then I remembered something called AndroMDA [1] from my past reading 
>>> on UML/MDA, it has a 'cartridge' for generating a Struts 
>>> web-application off a UML class model [2]. Just reading the 
>>> documentation now, it can also make use of an UML Activity diagram 
>>> for designing page navigation[3], also, it consume a BPMN diagram as 
>>> a design model too (Hmm, just maybe this has more potential than I
>> imagined).
>>> 
>>> I'll have a play with this myself soon (It seems like a fun way to 
>>> learn about Struts and JBOSS), but thought in worth mentioning in 
>>> this discussion. If I was starting from scratch to build such a 
>>> 'public
>> facing'
>>> website, an approach that I can see working is to first develop an 
>>> Apache Isis based domain model in Java and get all the systems 
>>> integrations needed working with that. Then, to generate UML class 
>>> diagrams off that design, add in the page navigation design (UML 
>>> Activity diagram?), and use that combination to generate the 
>>> skeleton of a tradition request/response type website using AndroMDA.
>>> 
>>> If this all worked, it would provide something very close to a 
>>> commercial MDA suite that I was interested in supporting called 
>>> WebRatio [4], for which the public website design [5] market seems 
>>> quite large. They talk about web-applications, but  I like the Isis 
>>> coded model approach better for real applications (as opposed to 
>>> database back web-sites). For public facing web-sites, a templates 
>>> based approach does still seem to be valid, such as Struts/JSP, and 
>>> using a MDA probably a good way to manage that complexity.
>>> 
>>> The WebRatio folk have designed a specific graphical web-site design 
>>> language called Interacton Flow Modelling Language (IFML) [6] (but 
>>> AndroMDA is UML focused). There is an open-source Eclipse plugin for 
>>> IFML that they have contributed to [7].
>>> 
>>> Interested to hear thoughts, maybe a dead-end, but maybe not.
>>> 
>>> Cheers
>>> 
>>> 
>>> [1] http://www.andromda.org/
>>> [2]
>>> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart
>>> ri
>>> dge/index.html
>>> [3]
>>> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart
>>> ri
>>> dge/howto2.html
>>> [4] http://www.webratio.com
>>> [5]
>>> http://www.webratio.com/site/content/en/web-application-development
>>> [6] http://www.ifml.org/
>>> [7] http://ifml.github.io/
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On Fri, Nov 20, 2015 at 1:48 AM, Cesar Lugo 
>>> <ce...@sisorg.com.mx>
>>> wrote:
>>> 
>>>> Hi.
>>>> 
>>>> I just wanted to let you guys know that I have tried Papyro in 
>>>> eclipse. I have been able to reverse engineer java code and create 
>>>> UML Class Diagrams (supports most of the UML types of diagrams 
>>>> including use cases, state machine, activity and many more). I 
>>>> tried adding a property within a domain object class, then redo 
>>>> java engineer and it keeps my diagram and was able to include the 
>>>> new property. I haven't been able to do the opposite, adding a 
>>>> property within the UML and have it add it to the existing java class though.
>>>> Adding a new UML class generates java code just fine. I haven’t 
>>>> been able to reverse engineer some repository classes, anything 
>>>> that uses java.util.List fails to be imported into the UML model, I 
>>>> haven't find the solution yet (sortedSet works fine). It doesn't 
>>>> automatically create the diagram (like other simpler tools do), but 
>>>> once you import your java code into the UML model, it's just a 
>>>> matter of drag and drop and into the diagram canvas and select 
>>>> which properties and operations (actions) you want to be shown, 
>>>> very convenient to exclude the obvious from the diagram, like 
>>>> getters and
>> setters, maybe disableXxx / hideXxx / defaultxXX methods, your choice.
>>>> 
>>>> I will keep working on it, looking good so far.
>>>> 
>>>> Cesar.
>>>> 
>>>> -----Original Message-----
>>>> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
>>>> Sent: Monday, November 16, 2015 4:53 AM
>>>> To: users
>>>> Subject: Re: Thinking about re-introducing UML in our workflow
>>>> 
>>>> 
>>>> For you to know.
>>>> 
>>>> I was just reading about “AgileJ” [1] (the video at [2] is excellent.
>>>> It perfectly summarizes the points-of-view expressed here about the 
>>>> evolution last years of UML usage in dev teams).
>>>> 
>>>> But I’ve also found the Papyrus Eclipse project [3]. Seems to be 
>>>> really alive (there has been a conference this month).
>>>> 
>>>> And It also seems to have full code synch from Java … See [4].
>>>> 
>>>> Any experience out there with Papyrus?
>>>> Could it be a good match for Apache Isis?
>>>> 
>>>> 
>>>> Cheers,
>>>> 
>>>> Oscar
>>>> 
>>>> 
>>>> [1] http://www.agilej.com
>>>> [2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
>>>> [3] http://www.eclipse.org/papyrus/ [4] 
>>>> https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diag
>>>> ra
>>>> ms-ordinary-java-developers
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS 
>>>>> <o....@govertis.com>
>>>> escribió:
>>>>> 
>>>>> 
>>>>> Hi all.
>>>>> 
>>>>> First of all, the good news for all romantics:
>>>>> 
>>>>> Together is still alive !!! See [1].
>>>>> 
>>>>> [2] says it fully supports Eclipse.
>>>>> 
>>>>> Really interesting, Jeroen, introducing Lombok.
>>>>> Look how clear and concise is the Aggregate in [3] expressed in C#.
>>>>> 
>>>>> 
>>>>> For me, my immediate need is to have a visual depiction of the new
>>>> features developers must work on.
>>>>> So an Agile diagramming tool would be ok for it.
>>>>> 
>>>>> I’m used to drag-n-drop like interfaces, and I'm there are “visual”
>>>> tools out there that support plantuml, so it would be ok to be 
>>>> based on
>> it.
>>>>> 
>>>>> Also agree that the model "must be" the code (and not “the code is 
>>>>> the
>>>> model” MDA approach, despite my experience with Bold for 
>>>> Delphi/Capable Objects was REALLY really good).
>>>>> 
>>>>> 
>>>>> 
>>>>> Regards,
>>>>> 
>>>>> Oscar
>>>>> 
>>>>> 
>>>>> 
>>>>> [1]
>>>>> http://www.borland.com/en-GB/Products/Requirements-Management/Toge
>>>>> t
>>>>> her
>>>>> [2[
>>>>> http://www.borland.com/en-GB/Products/Requirements-Management/Toge
>>>>> t
>>>>> her
>>>>> /Plugins-and-integrations [3]
>>>>> https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggreg
>>>>> a
>>>>> tes
>>>>> /Register/RegistrationState.cs
>>>>> 
>>>>> 
>>>>> 
>>>>>> El 16 nov 2015, a las 10:57, Mike Burton 
>>>>>> <mi...@mycosystems.co.uk>
>>>> escribió:
>>>>>> 
>>>>>> Hi Jeroen,
>>>>>> 
>>>>>> My experience is similar. I was always suspicious of the "code
>>>> generation " approach, inevitably gives 2 "sources" that get out of
>> step.
>>>>>> 
>>>>>> The only good exception I saw was TogetherJ where "the code is 
>>>>>> the
>>>> model"
>>>>>> 
>>>>>> Best Regards
>>>>>> 
>>>>>> Mike Burton
>>>>>> (Sent from my iPhone)
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On 15 Nov 2015, at 23:44, Jeroen van der Wal 
>>>>>>> <je...@stromboli.it>
>>>> wrote:
>>>>>>> 
>>>>>>> All very interesting!
>>>>>>> 
>>>>>>> Over the years I tried numerous modelling tools and only the 
>>>>>>> low-tech ones
>>>>>>> stayed: drawing on a whiteboard, using coloured index cards [1] 
>>>>>>> (learned from Dan) or using a simple online tool like yUML [2].
>>>>>>> And I only use them to communicate the broad picture or for 
>>>>>>> explorative
>>>> purposes.
>>>>>>> 
>>>>>>> I gave up on code generators: I always ended up fighting the 
>>>>>>> generated code. And the impression that they support rapid 
>>>>>>> application development proved wrong: at the point where you had 
>>>>>>> to work on more advanced stuff velocity came to a halt. If an 
>>>>>>> application is built on lots of repeating code snippets then my 
>>>>>>> conclusion is that the underlying framework is not good enough.
>>>>>>> 
>>>>>>> I love source code that tells the story of the application. 
>>>>>>> Where everything that could be left out of the code is 
>>>>>>> eliminated. Very DRY, convention over code. This has drawn me to 
>>>>>>> Naked Objects and made me decide to spend my time on Apache Isis.
>>>>>>> 
>>>>>>> As you imagine by now I would not take the route from diagram to 
>>>>>>> code. For me the code editor is the sole canvas to express your 
>>>>>>> ideas. And I think that if we keep improving Apache Isis on a 
>>>>>>> few points there will never be a need for an additional tool:
>>>>>>> 
>>>>>>> 1) Reduce boilerplate and make writing an application skeleton 
>>>>>>> as easy as the easiest modelling tool. This has the advantage 
>>>>>>> that a software architect can sketch the application and leave 
>>>>>>> it to his developers to fill in details. But everyone is working 
>>>>>>> on the same code base using the same tools. In this area we 
>>>>>>> started using Lombok. Also Dan had an idea to make it possible 
>>>>>>> to create your own custom annotations which can combine multiple annotations.
>>>>>>> 
>>>>>>> 2) Visualise the meta model. With contributions and mixins the 
>>>>>>> application logic can come from anywhere. This is 
>>>>>>> architecturally sane but makes an application hard to grasp. It 
>>>>>>> would love to see a maven plugin that generates appealing 
>>>>>>> documentation from the meta model of an Isis application.
>>>>>>> 
>>>>>>> 3) When taking the visualisation concept a bit further it would 
>>>>>>> be very powerful to explore and navigate the meta model within 
>>>>>>> the
>> IDE.
>>>>>>> Any plugin developers here?
>>>>>>> 
>>>>>>> That's just my two cents.
>>>>>>> 
>>>>>>> Cheers,
>>>>>>> 
>>>>>>> Jeroen
>>>>>>> 
>>>>>>> 
>>>>>>>> On 15 November 2015 at 21:01, David Tildesley 
>>>>>>>> <da...@yahoo.co.nz>
>>>> wrote:
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood < 
>>>>>>>> dan@haywood-associates.co.uk> wrote:
>>>>>>>>> Thanks for this James.
>>>>>>>> 
>>>>>>>>> My observation re: using the (relational) data model as the 
>>>>>>>>> initial input though is that this is likely to lead to rather 
>>>>>>>>> coupled code, ultimately not maintainable.
>>>>>>>> 
>>>>>>>> Couldn't agree more.
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> So, while going from the database up to the domain is fine for 
>>>>>>>>> a single module of 10 or so entities, any app that is bigger 
>>>>>>>>> than this really
>>>>>>>> should
>>>>>>>>> be modelled from the domain down to the database.
>>>>>>>> 
>>>>>>>> Quite right. Any business app that is non trivial should be 
>>>>>>>> domain modelled.
>>>>>>>> 
>>>>>>>> David.
>>>>>>>> 
>>>>>>>>> Dan
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> On 14 November 2015 at 15:00, James Agada 
>>>>>>>>> <Ja...@cwg-plc.com>
>>>> wrote:
>>>>>>>>> 
>>>>>>>>> I actually tested out using Telosys to generate an isis app 
>>>>>>>>> from database definition. It did work but of course it meant i 
>>>>>>>>> did the ER first. I used MySQL, did the ER modelling on the 
>>>>>>>>> workbench, forward engineered into the database and then used 
>>>>>>>>> telosys scripts to generate a functional Isis application. Did 
>>>>>>>>> it as a PoC but we
>>>> will come back to it later.
>>>>>>>>> James Agada
>>>>>>>>> Chief Technology Officer
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS 
>>>>>>>>> <o....@govertis.com>
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>> Many thanks, Stephen for this detailed explanation.
>>>>>>>>> 
>>>>>>>>> The problem I’m facing is that I intent to communicate the 
>>>>>>>>> developers what’s the model to implement.
>>>>>>>>> 
>>>>>>>>> And I usually don’t find big mistakes in action code, but what 
>>>>>>>>> mostly forces us to refactor is miscommunication regarding the 
>>>>>>>>> Domain Entities, attributes and actions names, including typos 
>>>>>>>>> (think my team speak
>>>>>>>> Spanish
>>>>>>>>> but they’re modeling in English) or wrong or missing 
>>>>>>>>> relationships
>>>>>>>> between
>>>>>>>>> those entities.
>>>>>>>>> 
>>>>>>>>> All that could be avoided by firstly agree in a common UML 
>>>>>>>>> Class
>>>> Diagram.
>>>>>>>>> 
>>>>>>>>> If it can potentially generate automatically the Java skeleton 
>>>>>>>>> with
>>>>>>>> Apache
>>>>>>>>> Isis annotations is a big plus, as it will avoid mistakes when 
>>>>>>>>> moving
>>>>>>>> from
>>>>>>>>> design to implementation.
>>>>>>>>> 
>>>>>>>>> And if it could potentially reverse engineer Java (incl. 
>>>>>>>>> Apache Isis
>>>>>>>>> idioms) a really good feature.
>>>>>>>>> 
>>>>>>>>> Any ideas about what tools could best adapt to the workflow 
>>>>>>>>> (that could
>>>>>>>> be
>>>>>>>>> potentially customized to cover the last 2 whishes) ?
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Thanks,
>>>>>>>>> 
>>>>>>>>> Oscar
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> El 14 nov 2015, a las 2:03, Stephen Cameron 
>>>>>>>>> <st...@gmail.com>
>>>>>>>>> escribió:
>>>>>>>>> 
>>>>>>>>> Hi Oscar,
>>>>>>>>> 
>>>>>>>>> In a qualified way I think your idea has merit. I have never 
>>>>>>>>> used UML for design, but a few years ago I decided to take a 
>>>>>>>>> good look at it and see
>>>>>>>> it
>>>>>>>>> if was useful. The idea of being able to draw a diagram and 
>>>>>>>>> generate code from it seemed sensible, after all that is what 
>>>>>>>>> is done by most other 'design' professions, such as building
>>>> architects and engineers.
>>>>>>>>> 
>>>>>>>>> To cut a long story short I realised after some reading that 
>>>>>>>>> it was not that simple, and that OO languages themselves are 
>>>>>>>>> really all that are needed for the process of designing a 
>>>>>>>>> system. This is "the code is the design" school of thought, 
>>>>>>>>> mainly attributed to
>>>> Jack Reeves [1].
>>>>>>>>> 
>>>>>>>>> I found that  keeping code and UML diagrams in sync in a 
>>>>>>>>> top-down 'UML to code' design process will always be 
>>>>>>>>> problematic (maybe why there are apparently no open-source 
>>>>>>>>> tools
>> that claim to do this).
>>>>>>>>> Then I read about Domain Driven Design which seemed to agree 
>>>>>>>>> with this premise, and from there found Apache Isis via Dan's
>> book.
>>>>>>>>> 
>>>>>>>>> So now for me UML class diagrams do have an after the fact use 
>>>>>>>>> for documentation purposes and if a solution implement was 
>>>>>>>>> capable of that reverse generation of diagrams from code it 
>>>>>>>>> would be a good thing to
>>>>>>>> have.
>>>>>>>>> Entity Framework can do this, its their "code first" approach.
>>>>>>>>> 
>>>>>>>>> Given that the-code-is-the-design is true, I think that UML 
>>>>>>>>> class
>>>>>>>> diagrams
>>>>>>>>> real main value is as a data model, the question then is why 
>>>>>>>>> not use a purely data-modeling tool and generate Java classes 
>>>>>>>>> off
>> it.
>>>>>>>>> Then the diagrams 'designed' could have a usefulness to 
>>>>>>>>> programmers and to system users, something like those created
>>>> SchemaSpy [2]  for example.
>>>>>>>>> 
>>>>>>>>> There are already useful and free Java class generation
>>>>>>>>> (binding) tools from off data-models, of one sort or another, 
>>>>>>>>> such as JAXB,
>>>> DataNucleus'
>>>>>>>>> schemaGen[3], even CAM [4].
>>>>>>>>> 
>>>>>>>>> Here is my vision of what I think would be really useful: to 
>>>>>>>>> have a
>>>>>>>> design
>>>>>>>>> tool that can be used by non-programmers to create a simple 
>>>>>>>>> data-model,
>>>>>>>> and
>>>>>>>>> then to have that create a working Apache Isis based CRUD system.
>>>>>>>>> This could serve your purpose (I guess) and also find a wider use.
>>>>>>>>> 
>>>>>>>>> The means of achieving this would I think, require something 
>>>>>>>>> like the "dynamic classes" in available in the Moxy framework 
>>>>>>>>> [5], that is, map based so that no Java class compilation is
>> needed.
>>>>>>>>> Instead, a data-model configuration file (a schema) is read-in 
>>>>>>>>> to configure the system. This is not a strange idea, in fact 
>>>>>>>>> its the data-driven programming paradigm that is the basis of 
>>>>>>>>> the original browser concept (before it was turned into
>>>>>>>> OO
>>>>>>>>> application framework via addition of Javascript). In the 
>>>>>>>>> browser the
>>>>>>>> data
>>>>>>>>> is HTML that is turned into an in-memory Document Object Model
>>>>>>>>> (DOM) for rendering.
>>>>>>>>> 
>>>>>>>>> As a blended solution between Apache Isis as it is currently 
>>>>>>>>> (heavily influence by naked objects, an OO modelling based 
>>>>>>>>> approach for creating custom *behavioural* applications) and 
>>>>>>>>> this additional mainly data
>>>>>>>> focused
>>>>>>>>> approach, I think a programmer developing a business 
>>>>>>>>> application would start off with these dymanic classes and 
>>>>>>>>> then in time 'harden' the design by generating and compiling 
>>>>>>>>> real Java classes from off the model. [A non-programmer 
>>>>>>>>> wouldn't get past the first design 'phase' usually, but still 
>>>>>>>>> end up with a useable UI.]
>>>>>>>>> 
>>>>>>>>> In addition, by having separate abstract model-generated 
>>>>>>>>> classes, that
>>>>>>>> can
>>>>>>>>> be overwritten if the data-model changes, and concrete 
>>>>>>>>> implementation classes, where you put all your behavioural 
>>>>>>>>> code and that are never overwritten, you get close to the 
>>>>>>>>> 'round-tripping' that would seem to me
>>>>>>>> to
>>>>>>>>> be the only valid way to use UML *for design*. I think this is 
>>>>>>>>> how the Eclipse Ecore models work, that there are model 
>>>>>>>>> classes and
>>>>>>>> implementation
>>>>>>>>> classes that extend the model classes. The IDE will often warn 
>>>>>>>>> you when these two sub-models have inconsistencies. This 
>>>>>>>>> duality also offers an alternative means to achieving the 
>>>>>>>>> goals of Lombok it
>>>> would seem.
>>>>>>>>> 
>>>>>>>>> Of course, sitting in the middle of all this is a meta-model, 
>>>>>>>>> that
>>>>>>>> creates
>>>>>>>>> the dynamic classes, generates and compiles the 'hardened'
>>>>>>>>> model classes (when used) and maps either of these means to a 
>>>>>>>>> UI
>> 'viewer'.
>>>>>>>>> 
>>>>>>>>> For such data-management frameworks, the complicated aspect 
>>>>>>>>> isn't so much going from the designed data-model to Java, 
>>>>>>>>> there are lots of examples of that, instead its being able to 
>>>>>>>>> have also, a dynamic query capability. So that a person 
>>>>>>>>> unfamiliar with the dataset, can, via its data-model, start 
>>>>>>>>> querying it (and also maybe integrating it in real-time with 
>>>>>>>>> other online resources, the
>>>> idea of a data-browser appeals!).
>>>>>>>>> 
>>>>>>>>> In the science domain, where I worked for a few years building 
>>>>>>>>> data-management infrastructure, there are highly advanced 
>>>>>>>>> systems for online data access and querying e.g. [6], but at 
>>>>>>>>> the same time a common tool used for small databases is still
>> Microsoft Access.
>>>>>>>>> Access has many strengths as a desktop database, including 
>>>>>>>>> form generation and also
>>>>>>>> dynamic
>>>>>>>>> query-by-form, but the problems arise when you want to make 
>>>>>>>>> such data publicly available, in the sense of being findable 
>>>>>>>>> and searchable in real time. You might as well have used a 
>>>>>>>>> web-based system from the start and then been able to easily 
>>>>>>>>> open it to the
>>>> world at the appropriate time.
>>>>>>>>> 
>>>>>>>>> Having though about this problem for a number of years and 
>>>>>>>>> spent alot of time working on a XForms based solution as well.
>>>>>>>>> I'd be very interested
>>>>>>>> to
>>>>>>>>> see Apache Isis broaden its scope to offer what I have 
>>>>>>>>> described, in fact its doesn't seem to need very much more 
>>>>>>>>> than what is already present in
>>>>>>>> the
>>>>>>>>> Isis meta-model and Wicket viewer. The Restful objects support 
>>>>>>>>> already provides a generic 'generated' web programming interface.
>>>>>>>>> 
>>>>>>>>> In summary I know that there are some Java projects that make 
>>>>>>>>> very effective use of a Model Driven Architecture approach 
>>>>>>>>> (e.g [7]), but I am now not sure that UML is the 
>>>>>>>>> 'be-all-and-end-all' basis of
>>>> that.
>>>>>>>> Actually I
>>>>>>>>> think that data-models are the basis of most of MDAs 
>>>>>>>>> efficiency dividends and that there are other approaches, 
>>>>>>>>> specifically that conceptual models offer more versatility in 
>>>>>>>>> terms of who and how
>>>> you can make use of them.
>>>>>>>>> This thinking goes way back, such as Sowa's Conceptual Graphs 
>>>>>>>>> [8] and
>>>>>>>> even
>>>>>>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather) 
>>>>>>>>> is the W3C semantic web, but he was thinking of database 
>>>>>>>>> design and
>>>> query way back.
>>>>>>>>> 
>>>>>>>>> Apart from some additions to Isis, another interesting aspect 
>>>>>>>>> is looking
>>>>>>>> at
>>>>>>>>> the mapping to data-stores, using a graph database of one sort 
>>>>>>>>> or another to avoid the complexity of ORM is a simple answer 
>>>>>>>>> to that I feel. Again, the hardening of a design might mean 
>>>>>>>>> manually adding a few overrides of default ORM mapping rules 
>>>>>>>>> into some behavioural-model classes, that
>>>>>>>> extend
>>>>>>>>> generated data-model classes (getters and setters only).
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_
>>>>>>>>> m
>>>>>>>>> ain
>>>>>>>>> .html
>>>>>>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
>>>>>>>>> [3]
>>>>>>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/sc
>>>>>>>> h
>>>>>>>> ema
>>>>>>>> tool.html
>>>>>>>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Pag
>>>>>>>>> e 
>>>>>>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
>>>>>>>>> [6]http://www.opendap.org/
>>>>>>>>> [7]http://www.opencrx.org/
>>>>>>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
>>>>>>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
>>>>>>>>> 
>>>>>>>>> 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.
>>>>>>>>> 
>>>>>>>>> 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?
>>>>>>>>> 
>>>>>>>>> Thanks,
>>>>>>>>> 
>>>>>>>>> Oscar
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> [1] http://roomodeler.com
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> This email and any attachment thereto are confidential and
>>>> priviledged.
>>>>>>>> if
>>>>>>>>> you have received it in error, please delete immediately and 
>>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any 
>>>>>>>>> way use it. The information contained therein is for the 
>>>>>>>>> address only, if you reply on
>>>>>>>> it,
>>>>>>>>> its at your own risk. Emails are not guaranteed to be secure 
>>>>>>>>> or error
>>>>>>>> free,
>>>>>>>>> the message and any attachment could be intercepted, 
>>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer 
>>>>>>>>> warehouse group and its
>>>>>>>> divisions
>>>>>>>>> do not accept liability for damage caused by this email or any
>>>>>>>> attachment.
>>>>>>>>> The message you tried to print is protected with Information 
>>>>>>>>> Rights Management. You don't have the necessary user rights to 
>>>>>>>>> print the
>>>>>>>> message.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> This email and any attachment thereto are confidential and
>>>> priviledged.
>>>>>>>> if
>>>>>>>>> you have received it in error, please delete immediately and 
>>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any 
>>>>>>>>> way use it. The information contained therein is for the 
>>>>>>>>> address only, if you reply on
>>>>>>>> it,
>>>>>>>>> its at your own risk. Emails are not guaranteed to be secure 
>>>>>>>>> or error
>>>>>>>> free,
>>>>>>>>> the message and any attachment could be intercepted, 
>>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer 
>>>>>>>>> warehouse group and its
>>>>>>>> divisions
>>>>>>>>> do not accept liability for damage caused by this email or any
>>>>>>>> attachment.
>>>>>>>>> The message you tried to print is protected with Information 
>>>>>>>>> Rights Management. You don't have the necessary user rights to 
>>>>>>>>> print the
>>>>>>>> message.
>>>>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> ---
>>>> This email has been checked for viruses by Avast antivirus software.
>>>> https://www.avast.com/antivirus
>>>> 
>>>> 
>>> 
>> 
>> 
>> ---
>> This email has been checked for viruses by Avast antivirus software.
>> https://www.avast.com/antivirus
>> 
>> 



---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus



Re: Thinking about re-introducing UML in our workflow

Posted by Óscar Bou - GOVERTIS <o....@govertis.com>.
H, Cesar.

Thanks here also.

I’ve seen the video, but need to find time to install and test it locally. 

Seems interesting for direct generation. 
No example is given for reverse-engineering.

As I see, customizing for Apache Isis would be a matter of defining 
- a custom profile for Apache Isis (perhaps it would be enough with the Java one).
- and an Apache-Isis specific Library (for generating the properties, actions, etc. with the proper annotations).

It remembers me quite well the Spring Roo customization on SparxSystem’s Enterprise Arquitect.

There I implemented also a custom toolbox, in order to avoid to first create the attribute and after that assign to the specific library item (instead of 2 different steps).

Perhaps all that is also possible here.


Thanks,

Oscar






> El 23 nov 2015, a las 21:18, Stephen Cameron <st...@gmail.com> escribió:
> 
> Thanks Cesar, I will give it a go, but don't have alot of time now this
> week. They use myeclipse at work and its cheap to buy a licence, so I'll
> find out why the activity diagrams are missing.
> 
> I am also keen to take a closer look at IFML [1] in terms of it being
> integated with the workflow addon in Apache-Isis. This is instead of UML
> Activity diagrams.
> 
> [1] http://www.ifml.org
> 
> On Tue, Nov 24, 2015 at 3:00 AM, Cesar Lugo <ce...@sisorg.com.mx>
> wrote:
> 
>> Hi. I also tried Papyrus, it works but the installation is a little
>> tricky. Best guidance I got was this YouTube video, which adds the "missing
>> link" to make it work. It's actually a part of a quite nice series with
>> Papyrus and UML tutorial videos. I hope that helps.
>> 
>> https://www.youtube.com/watch?v=gmf8CswqKcs
>> 
>> Cesar.
>> 
>> -----Original Message-----
>> From: Stephen Cameron [mailto:steve.cameron.62@gmail.com]
>> Sent: Monday, November 23, 2015 4:42 AM
>> To: users@isis.apache.org
>> Subject: Re: Thinking about re-introducing UML in our workflow
>> 
>> Spent some time on this today, but did not get far. I tried Papyrus but
>> without success, couldn't get it to reverse engineer my code that is. Then
>> I tried myeclipse which does support UML2 and does reverse engineer Java
>> code to UML class diagrams and also updates these diagrams from any (code)
>> 'Model' changes afterwards. However the trial strangelly doesn't support
>> Activity diagrams despite them being in the documentation. So all in all
>> not time well spent.
>> 
>> On Sat, Nov 21, 2015 at 9:31 AM, Stephen Cameron <
>> steve.cameron.62@gmail.com
>>> wrote:
>> 
>>> Hi,
>>> 
>>> Related to this thread, my new job involves maintenance of a Struts 2
>>> based website, in thinking about the best way to approach this task,
>>> both to learn how it has been put together and potentially make life
>>> easier into the future I thought the best place to start is creating
>>> some diagrams, maybe even UML diagrams .
>>> 
>>> Then I remembered something called AndroMDA [1] from my past reading
>>> on UML/MDA, it has a 'cartridge' for generating a Struts
>>> web-application off a UML class model [2]. Just reading the
>>> documentation now, it can also make use of an UML Activity diagram for
>>> designing page navigation[3], also, it consume a BPMN diagram as a
>>> design model too (Hmm, just maybe this has more potential than I
>> imagined).
>>> 
>>> I'll have a play with this myself soon (It seems like a fun way to
>>> learn about Struts and JBOSS), but thought in worth mentioning in this
>>> discussion. If I was starting from scratch to build such a 'public
>> facing'
>>> website, an approach that I can see working is to first develop an
>>> Apache Isis based domain model in Java and get all the systems
>>> integrations needed working with that. Then, to generate UML class
>>> diagrams off that design, add in the page navigation design (UML
>>> Activity diagram?), and use that combination to generate the skeleton
>>> of a tradition request/response type website using AndroMDA.
>>> 
>>> If this all worked, it would provide something very close to a
>>> commercial MDA suite that I was interested in supporting called
>>> WebRatio [4], for which the public website design [5] market seems
>>> quite large. They talk about web-applications, but  I like the Isis
>>> coded model approach better for real applications (as opposed to
>>> database back web-sites). For public facing web-sites, a templates
>>> based approach does still seem to be valid, such as Struts/JSP, and
>>> using a MDA probably a good way to manage that complexity.
>>> 
>>> The WebRatio folk have designed a specific graphical web-site design
>>> language called Interacton Flow Modelling Language (IFML) [6] (but
>>> AndroMDA is UML focused). There is an open-source Eclipse plugin for
>>> IFML that they have contributed to [7].
>>> 
>>> Interested to hear thoughts, maybe a dead-end, but maybe not.
>>> 
>>> Cheers
>>> 
>>> 
>>> [1] http://www.andromda.org/
>>> [2]
>>> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cartri
>>> dge/index.html
>>> [3]
>>> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cartri
>>> dge/howto2.html
>>> [4] http://www.webratio.com
>>> [5]
>>> http://www.webratio.com/site/content/en/web-application-development
>>> [6] http://www.ifml.org/
>>> [7] http://ifml.github.io/
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On Fri, Nov 20, 2015 at 1:48 AM, Cesar Lugo <ce...@sisorg.com.mx>
>>> wrote:
>>> 
>>>> Hi.
>>>> 
>>>> I just wanted to let you guys know that I have tried Papyro in
>>>> eclipse. I have been able to reverse engineer java code and create
>>>> UML Class Diagrams (supports most of the UML types of diagrams
>>>> including use cases, state machine, activity and many more). I tried
>>>> adding a property within a domain object class, then redo java
>>>> engineer and it keeps my diagram and was able to include the new
>>>> property. I haven't been able to do the opposite, adding a property
>>>> within the UML and have it add it to the existing java class though.
>>>> Adding a new UML class generates java code just fine. I haven’t been
>>>> able to reverse engineer some repository classes, anything that uses
>>>> java.util.List fails to be imported into the UML model, I haven't
>>>> find the solution yet (sortedSet works fine). It doesn't
>>>> automatically create the diagram (like other simpler tools do), but
>>>> once you import your java code into the UML model, it's just a matter
>>>> of drag and drop and into the diagram canvas and select which
>>>> properties and operations (actions) you want to be shown, very
>>>> convenient to exclude the obvious from the diagram, like getters and
>> setters, maybe disableXxx / hideXxx / defaultxXX methods, your choice.
>>>> 
>>>> I will keep working on it, looking good so far.
>>>> 
>>>> Cesar.
>>>> 
>>>> -----Original Message-----
>>>> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
>>>> Sent: Monday, November 16, 2015 4:53 AM
>>>> To: users
>>>> Subject: Re: Thinking about re-introducing UML in our workflow
>>>> 
>>>> 
>>>> For you to know.
>>>> 
>>>> I was just reading about “AgileJ” [1] (the video at [2] is excellent.
>>>> It perfectly summarizes the points-of-view expressed here about the
>>>> evolution last years of UML usage in dev teams).
>>>> 
>>>> But I’ve also found the Papyrus Eclipse project [3]. Seems to be
>>>> really alive (there has been a conference this month).
>>>> 
>>>> And It also seems to have full code synch from Java … See [4].
>>>> 
>>>> Any experience out there with Papyrus?
>>>> Could it be a good match for Apache Isis?
>>>> 
>>>> 
>>>> Cheers,
>>>> 
>>>> Oscar
>>>> 
>>>> 
>>>> [1] http://www.agilej.com
>>>> [2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
>>>> [3] http://www.eclipse.org/papyrus/
>>>> [4]
>>>> https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diagra
>>>> ms-ordinary-java-developers
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS
>>>>> <o....@govertis.com>
>>>> escribió:
>>>>> 
>>>>> 
>>>>> Hi all.
>>>>> 
>>>>> First of all, the good news for all romantics:
>>>>> 
>>>>> Together is still alive !!! See [1].
>>>>> 
>>>>> [2] says it fully supports Eclipse.
>>>>> 
>>>>> Really interesting, Jeroen, introducing Lombok.
>>>>> Look how clear and concise is the Aggregate in [3] expressed in C#.
>>>>> 
>>>>> 
>>>>> For me, my immediate need is to have a visual depiction of the new
>>>> features developers must work on.
>>>>> So an Agile diagramming tool would be ok for it.
>>>>> 
>>>>> I’m used to drag-n-drop like interfaces, and I'm there are “visual”
>>>> tools out there that support plantuml, so it would be ok to be based on
>> it.
>>>>> 
>>>>> Also agree that the model "must be" the code (and not “the code is
>>>>> the
>>>> model” MDA approach, despite my experience with Bold for
>>>> Delphi/Capable Objects was REALLY really good).
>>>>> 
>>>>> 
>>>>> 
>>>>> Regards,
>>>>> 
>>>>> Oscar
>>>>> 
>>>>> 
>>>>> 
>>>>> [1]
>>>>> http://www.borland.com/en-GB/Products/Requirements-Management/Toget
>>>>> her
>>>>> [2[
>>>>> http://www.borland.com/en-GB/Products/Requirements-Management/Toget
>>>>> her
>>>>> /Plugins-and-integrations [3]
>>>>> https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggrega
>>>>> tes
>>>>> /Register/RegistrationState.cs
>>>>> 
>>>>> 
>>>>> 
>>>>>> El 16 nov 2015, a las 10:57, Mike Burton <mi...@mycosystems.co.uk>
>>>> escribió:
>>>>>> 
>>>>>> Hi Jeroen,
>>>>>> 
>>>>>> My experience is similar. I was always suspicious of the "code
>>>> generation " approach, inevitably gives 2 "sources" that get out of
>> step.
>>>>>> 
>>>>>> The only good exception I saw was TogetherJ where "the code is the
>>>> model"
>>>>>> 
>>>>>> Best Regards
>>>>>> 
>>>>>> Mike Burton
>>>>>> (Sent from my iPhone)
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On 15 Nov 2015, at 23:44, Jeroen van der Wal
>>>>>>> <je...@stromboli.it>
>>>> wrote:
>>>>>>> 
>>>>>>> All very interesting!
>>>>>>> 
>>>>>>> Over the years I tried numerous modelling tools and only the
>>>>>>> low-tech ones
>>>>>>> stayed: drawing on a whiteboard, using coloured index cards [1]
>>>>>>> (learned from Dan) or using a simple online tool like yUML [2].
>>>>>>> And I only use them to communicate the broad picture or for
>>>>>>> explorative
>>>> purposes.
>>>>>>> 
>>>>>>> I gave up on code generators: I always ended up fighting the
>>>>>>> generated code. And the impression that they support rapid
>>>>>>> application development proved wrong: at the point where you had
>>>>>>> to work on more advanced stuff velocity came to a halt. If an
>>>>>>> application is built on lots of repeating code snippets then my
>>>>>>> conclusion is that the underlying framework is not good enough.
>>>>>>> 
>>>>>>> I love source code that tells the story of the application. Where
>>>>>>> everything that could be left out of the code is eliminated. Very
>>>>>>> DRY, convention over code. This has drawn me to Naked Objects and
>>>>>>> made me decide to spend my time on Apache Isis.
>>>>>>> 
>>>>>>> As you imagine by now I would not take the route from diagram to
>>>>>>> code. For me the code editor is the sole canvas to express your
>>>>>>> ideas. And I think that if we keep improving Apache Isis on a few
>>>>>>> points there will never be a need for an additional tool:
>>>>>>> 
>>>>>>> 1) Reduce boilerplate and make writing an application skeleton as
>>>>>>> easy as the easiest modelling tool. This has the advantage that a
>>>>>>> software architect can sketch the application and leave it to his
>>>>>>> developers to fill in details. But everyone is working on the
>>>>>>> same code base using the same tools. In this area we started
>>>>>>> using Lombok. Also Dan had an idea to make it possible to create
>>>>>>> your own custom annotations which can combine multiple annotations.
>>>>>>> 
>>>>>>> 2) Visualise the meta model. With contributions and mixins the
>>>>>>> application logic can come from anywhere. This is architecturally
>>>>>>> sane but makes an application hard to grasp. It would love to see
>>>>>>> a maven plugin that generates appealing documentation from the
>>>>>>> meta model of an Isis application.
>>>>>>> 
>>>>>>> 3) When taking the visualisation concept a bit further it would
>>>>>>> be very powerful to explore and navigate the meta model within the
>> IDE.
>>>>>>> Any plugin developers here?
>>>>>>> 
>>>>>>> That's just my two cents.
>>>>>>> 
>>>>>>> Cheers,
>>>>>>> 
>>>>>>> Jeroen
>>>>>>> 
>>>>>>> 
>>>>>>>> On 15 November 2015 at 21:01, David Tildesley
>>>>>>>> <da...@yahoo.co.nz>
>>>> wrote:
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
>>>>>>>> dan@haywood-associates.co.uk> wrote:
>>>>>>>>> Thanks for this James.
>>>>>>>> 
>>>>>>>>> My observation re: using the (relational) data model as the
>>>>>>>>> initial input though is that this is likely to lead to rather
>>>>>>>>> coupled code, ultimately not maintainable.
>>>>>>>> 
>>>>>>>> Couldn't agree more.
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> So, while going from the database up to the domain is fine for
>>>>>>>>> a single module of 10 or so entities, any app that is bigger
>>>>>>>>> than this really
>>>>>>>> should
>>>>>>>>> be modelled from the domain down to the database.
>>>>>>>> 
>>>>>>>> Quite right. Any business app that is non trivial should be
>>>>>>>> domain modelled.
>>>>>>>> 
>>>>>>>> David.
>>>>>>>> 
>>>>>>>>> Dan
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> On 14 November 2015 at 15:00, James Agada
>>>>>>>>> <Ja...@cwg-plc.com>
>>>> wrote:
>>>>>>>>> 
>>>>>>>>> I actually tested out using Telosys to generate an isis app
>>>>>>>>> from database definition. It did work but of course it meant i
>>>>>>>>> did the ER first. I used MySQL, did the ER modelling on the
>>>>>>>>> workbench, forward engineered into the database and then used
>>>>>>>>> telosys scripts to generate a functional Isis application. Did
>>>>>>>>> it as a PoC but we
>>>> will come back to it later.
>>>>>>>>> James Agada
>>>>>>>>> Chief Technology Officer
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS
>>>>>>>>> <o....@govertis.com>
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>> Many thanks, Stephen for this detailed explanation.
>>>>>>>>> 
>>>>>>>>> The problem I’m facing is that I intent to communicate the
>>>>>>>>> developers what’s the model to implement.
>>>>>>>>> 
>>>>>>>>> And I usually don’t find big mistakes in action code, but what
>>>>>>>>> mostly forces us to refactor is miscommunication regarding the
>>>>>>>>> Domain Entities, attributes and actions names, including typos
>>>>>>>>> (think my team speak
>>>>>>>> Spanish
>>>>>>>>> but they’re modeling in English) or wrong or missing
>>>>>>>>> relationships
>>>>>>>> between
>>>>>>>>> those entities.
>>>>>>>>> 
>>>>>>>>> All that could be avoided by firstly agree in a common UML
>>>>>>>>> Class
>>>> Diagram.
>>>>>>>>> 
>>>>>>>>> If it can potentially generate automatically the Java skeleton
>>>>>>>>> with
>>>>>>>> Apache
>>>>>>>>> Isis annotations is a big plus, as it will avoid mistakes when
>>>>>>>>> moving
>>>>>>>> from
>>>>>>>>> design to implementation.
>>>>>>>>> 
>>>>>>>>> And if it could potentially reverse engineer Java (incl. Apache
>>>>>>>>> Isis
>>>>>>>>> idioms) a really good feature.
>>>>>>>>> 
>>>>>>>>> Any ideas about what tools could best adapt to the workflow
>>>>>>>>> (that could
>>>>>>>> be
>>>>>>>>> potentially customized to cover the last 2 whishes) ?
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Thanks,
>>>>>>>>> 
>>>>>>>>> Oscar
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> El 14 nov 2015, a las 2:03, Stephen Cameron
>>>>>>>>> <st...@gmail.com>
>>>>>>>>> escribió:
>>>>>>>>> 
>>>>>>>>> Hi Oscar,
>>>>>>>>> 
>>>>>>>>> In a qualified way I think your idea has merit. I have never
>>>>>>>>> used UML for design, but a few years ago I decided to take a
>>>>>>>>> good look at it and see
>>>>>>>> it
>>>>>>>>> if was useful. The idea of being able to draw a diagram and
>>>>>>>>> generate code from it seemed sensible, after all that is what
>>>>>>>>> is done by most other 'design' professions, such as building
>>>> architects and engineers.
>>>>>>>>> 
>>>>>>>>> To cut a long story short I realised after some reading that it
>>>>>>>>> was not that simple, and that OO languages themselves are
>>>>>>>>> really all that are needed for the process of designing a
>>>>>>>>> system. This is "the code is the design" school of thought,
>>>>>>>>> mainly attributed to
>>>> Jack Reeves [1].
>>>>>>>>> 
>>>>>>>>> I found that  keeping code and UML diagrams in sync in a
>>>>>>>>> top-down 'UML to code' design process will always be
>>>>>>>>> problematic (maybe why there are apparently no open-source tools
>> that claim to do this).
>>>>>>>>> Then I read about Domain Driven Design which seemed to agree
>>>>>>>>> with this premise, and from there found Apache Isis via Dan's
>> book.
>>>>>>>>> 
>>>>>>>>> So now for me UML class diagrams do have an after the fact use
>>>>>>>>> for documentation purposes and if a solution implement was
>>>>>>>>> capable of that reverse generation of diagrams from code it
>>>>>>>>> would be a good thing to
>>>>>>>> have.
>>>>>>>>> Entity Framework can do this, its their "code first" approach.
>>>>>>>>> 
>>>>>>>>> Given that the-code-is-the-design is true, I think that UML
>>>>>>>>> class
>>>>>>>> diagrams
>>>>>>>>> real main value is as a data model, the question then is why
>>>>>>>>> not use a purely data-modeling tool and generate Java classes off
>> it.
>>>>>>>>> Then the diagrams 'designed' could have a usefulness to
>>>>>>>>> programmers and to system users, something like those created
>>>> SchemaSpy [2]  for example.
>>>>>>>>> 
>>>>>>>>> There are already useful and free Java class generation
>>>>>>>>> (binding) tools from off data-models, of one sort or another,
>>>>>>>>> such as JAXB,
>>>> DataNucleus'
>>>>>>>>> schemaGen[3], even CAM [4].
>>>>>>>>> 
>>>>>>>>> Here is my vision of what I think would be really useful: to
>>>>>>>>> have a
>>>>>>>> design
>>>>>>>>> tool that can be used by non-programmers to create a simple
>>>>>>>>> data-model,
>>>>>>>> and
>>>>>>>>> then to have that create a working Apache Isis based CRUD system.
>>>>>>>>> This could serve your purpose (I guess) and also find a wider use.
>>>>>>>>> 
>>>>>>>>> The means of achieving this would I think, require something
>>>>>>>>> like the "dynamic classes" in available in the Moxy framework
>>>>>>>>> [5], that is, map based so that no Java class compilation is
>> needed.
>>>>>>>>> Instead, a data-model configuration file (a schema) is read-in
>>>>>>>>> to configure the system. This is not a strange idea, in fact
>>>>>>>>> its the data-driven programming paradigm that is the basis of
>>>>>>>>> the original browser concept (before it was turned into
>>>>>>>> OO
>>>>>>>>> application framework via addition of Javascript). In the
>>>>>>>>> browser the
>>>>>>>> data
>>>>>>>>> is HTML that is turned into an in-memory Document Object Model
>>>>>>>>> (DOM) for rendering.
>>>>>>>>> 
>>>>>>>>> As a blended solution between Apache Isis as it is currently
>>>>>>>>> (heavily influence by naked objects, an OO modelling based
>>>>>>>>> approach for creating custom *behavioural* applications) and
>>>>>>>>> this additional mainly data
>>>>>>>> focused
>>>>>>>>> approach, I think a programmer developing a business
>>>>>>>>> application would start off with these dymanic classes and then
>>>>>>>>> in time 'harden' the design by generating and compiling real
>>>>>>>>> Java classes from off the model. [A non-programmer wouldn't get
>>>>>>>>> past the first design 'phase' usually, but still end up with a
>>>>>>>>> useable UI.]
>>>>>>>>> 
>>>>>>>>> In addition, by having separate abstract model-generated
>>>>>>>>> classes, that
>>>>>>>> can
>>>>>>>>> be overwritten if the data-model changes, and concrete
>>>>>>>>> implementation classes, where you put all your behavioural code
>>>>>>>>> and that are never overwritten, you get close to the
>>>>>>>>> 'round-tripping' that would seem to me
>>>>>>>> to
>>>>>>>>> be the only valid way to use UML *for design*. I think this is
>>>>>>>>> how the Eclipse Ecore models work, that there are model classes
>>>>>>>>> and
>>>>>>>> implementation
>>>>>>>>> classes that extend the model classes. The IDE will often warn
>>>>>>>>> you when these two sub-models have inconsistencies. This
>>>>>>>>> duality also offers an alternative means to achieving the goals
>>>>>>>>> of Lombok it
>>>> would seem.
>>>>>>>>> 
>>>>>>>>> Of course, sitting in the middle of all this is a meta-model,
>>>>>>>>> that
>>>>>>>> creates
>>>>>>>>> the dynamic classes, generates and compiles the 'hardened'
>>>>>>>>> model classes (when used) and maps either of these means to a UI
>> 'viewer'.
>>>>>>>>> 
>>>>>>>>> For such data-management frameworks, the complicated aspect
>>>>>>>>> isn't so much going from the designed data-model to Java, there
>>>>>>>>> are lots of examples of that, instead its being able to have
>>>>>>>>> also, a dynamic query capability. So that a person unfamiliar
>>>>>>>>> with the dataset, can, via its data-model, start querying it
>>>>>>>>> (and also maybe integrating it in real-time with other online
>>>>>>>>> resources, the
>>>> idea of a data-browser appeals!).
>>>>>>>>> 
>>>>>>>>> In the science domain, where I worked for a few years building
>>>>>>>>> data-management infrastructure, there are highly advanced
>>>>>>>>> systems for online data access and querying e.g. [6], but at
>>>>>>>>> the same time a common tool used for small databases is still
>> Microsoft Access.
>>>>>>>>> Access has many strengths as a desktop database, including form
>>>>>>>>> generation and also
>>>>>>>> dynamic
>>>>>>>>> query-by-form, but the problems arise when you want to make
>>>>>>>>> such data publicly available, in the sense of being findable
>>>>>>>>> and searchable in real time. You might as well have used a
>>>>>>>>> web-based system from the start and then been able to easily
>>>>>>>>> open it to the
>>>> world at the appropriate time.
>>>>>>>>> 
>>>>>>>>> Having though about this problem for a number of years and
>>>>>>>>> spent alot of time working on a XForms based solution as well.
>>>>>>>>> I'd be very interested
>>>>>>>> to
>>>>>>>>> see Apache Isis broaden its scope to offer what I have
>>>>>>>>> described, in fact its doesn't seem to need very much more than
>>>>>>>>> what is already present in
>>>>>>>> the
>>>>>>>>> Isis meta-model and Wicket viewer. The Restful objects support
>>>>>>>>> already provides a generic 'generated' web programming interface.
>>>>>>>>> 
>>>>>>>>> In summary I know that there are some Java projects that make
>>>>>>>>> very effective use of a Model Driven Architecture approach (e.g
>>>>>>>>> [7]), but I am now not sure that UML is the
>>>>>>>>> 'be-all-and-end-all' basis of
>>>> that.
>>>>>>>> Actually I
>>>>>>>>> think that data-models are the basis of most of MDAs efficiency
>>>>>>>>> dividends and that there are other approaches, specifically
>>>>>>>>> that conceptual models offer more versatility in terms of who
>>>>>>>>> and how
>>>> you can make use of them.
>>>>>>>>> This thinking goes way back, such as Sowa's Conceptual Graphs
>>>>>>>>> [8] and
>>>>>>>> even
>>>>>>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather)
>>>>>>>>> is the W3C semantic web, but he was thinking of database design
>>>>>>>>> and
>>>> query way back.
>>>>>>>>> 
>>>>>>>>> Apart from some additions to Isis, another interesting aspect
>>>>>>>>> is looking
>>>>>>>> at
>>>>>>>>> the mapping to data-stores, using a graph database of one sort
>>>>>>>>> or another to avoid the complexity of ORM is a simple answer to
>>>>>>>>> that I feel. Again, the hardening of a design might mean
>>>>>>>>> manually adding a few overrides of default ORM mapping rules
>>>>>>>>> into some behavioural-model classes, that
>>>>>>>> extend
>>>>>>>>> generated data-model classes (getters and setters only).
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_m
>>>>>>>>> ain
>>>>>>>>> .html
>>>>>>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
>>>>>>>>> [3]
>>>>>>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/sch
>>>>>>>> ema
>>>>>>>> tool.html
>>>>>>>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
>>>>>>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
>>>>>>>>> [6]http://www.opendap.org/
>>>>>>>>> [7]http://www.opencrx.org/
>>>>>>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
>>>>>>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
>>>>>>>>> 
>>>>>>>>> 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.
>>>>>>>>> 
>>>>>>>>> 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?
>>>>>>>>> 
>>>>>>>>> Thanks,
>>>>>>>>> 
>>>>>>>>> Oscar
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> [1] http://roomodeler.com
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> This email and any attachment thereto are confidential and
>>>> priviledged.
>>>>>>>> if
>>>>>>>>> you have received it in error, please delete immediately and
>>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any
>>>>>>>>> way use it. The information contained therein is for the
>>>>>>>>> address only, if you reply on
>>>>>>>> it,
>>>>>>>>> its at your own risk. Emails are not guaranteed to be secure or
>>>>>>>>> error
>>>>>>>> free,
>>>>>>>>> the message and any attachment could be intercepted, corrupted,
>>>>>>>>> lost, delayed, incomplete or ammended. Computer warehouse group
>>>>>>>>> and its
>>>>>>>> divisions
>>>>>>>>> do not accept liability for damage caused by this email or any
>>>>>>>> attachment.
>>>>>>>>> The message you tried to print is protected with Information
>>>>>>>>> Rights Management. You don't have the necessary user rights to
>>>>>>>>> print the
>>>>>>>> message.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> This email and any attachment thereto are confidential and
>>>> priviledged.
>>>>>>>> if
>>>>>>>>> you have received it in error, please delete immediately and
>>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any
>>>>>>>>> way use it. The information contained therein is for the
>>>>>>>>> address only, if you reply on
>>>>>>>> it,
>>>>>>>>> its at your own risk. Emails are not guaranteed to be secure or
>>>>>>>>> error
>>>>>>>> free,
>>>>>>>>> the message and any attachment could be intercepted, corrupted,
>>>>>>>>> lost, delayed, incomplete or ammended. Computer warehouse group
>>>>>>>>> and its
>>>>>>>> divisions
>>>>>>>>> do not accept liability for damage caused by this email or any
>>>>>>>> attachment.
>>>>>>>>> The message you tried to print is protected with Information
>>>>>>>>> Rights Management. You don't have the necessary user rights to
>>>>>>>>> print the
>>>>>>>> message.
>>>>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> ---
>>>> This email has been checked for viruses by Avast antivirus software.
>>>> https://www.avast.com/antivirus
>>>> 
>>>> 
>>> 
>> 
>> 
>> ---
>> This email has been checked for viruses by Avast antivirus software.
>> https://www.avast.com/antivirus
>> 
>> 


Re: Thinking about re-introducing UML in our workflow

Posted by Stephen Cameron <st...@gmail.com>.
Thanks Cesar, I will give it a go, but don't have alot of time now this
week. They use myeclipse at work and its cheap to buy a licence, so I'll
find out why the activity diagrams are missing.

I am also keen to take a closer look at IFML [1] in terms of it being
integated with the workflow addon in Apache-Isis. This is instead of UML
Activity diagrams.

[1] http://www.ifml.org

On Tue, Nov 24, 2015 at 3:00 AM, Cesar Lugo <ce...@sisorg.com.mx>
wrote:

> Hi. I also tried Papyrus, it works but the installation is a little
> tricky. Best guidance I got was this YouTube video, which adds the "missing
> link" to make it work. It's actually a part of a quite nice series with
> Papyrus and UML tutorial videos. I hope that helps.
>
> https://www.youtube.com/watch?v=gmf8CswqKcs
>
> Cesar.
>
> -----Original Message-----
> From: Stephen Cameron [mailto:steve.cameron.62@gmail.com]
> Sent: Monday, November 23, 2015 4:42 AM
> To: users@isis.apache.org
> Subject: Re: Thinking about re-introducing UML in our workflow
>
> Spent some time on this today, but did not get far. I tried Papyrus but
> without success, couldn't get it to reverse engineer my code that is. Then
> I tried myeclipse which does support UML2 and does reverse engineer Java
> code to UML class diagrams and also updates these diagrams from any (code)
> 'Model' changes afterwards. However the trial strangelly doesn't support
> Activity diagrams despite them being in the documentation. So all in all
> not time well spent.
>
> On Sat, Nov 21, 2015 at 9:31 AM, Stephen Cameron <
> steve.cameron.62@gmail.com
> > wrote:
>
> > Hi,
> >
> > Related to this thread, my new job involves maintenance of a Struts 2
> > based website, in thinking about the best way to approach this task,
> > both to learn how it has been put together and potentially make life
> > easier into the future I thought the best place to start is creating
> > some diagrams, maybe even UML diagrams .
> >
> > Then I remembered something called AndroMDA [1] from my past reading
> > on UML/MDA, it has a 'cartridge' for generating a Struts
> > web-application off a UML class model [2]. Just reading the
> > documentation now, it can also make use of an UML Activity diagram for
> > designing page navigation[3], also, it consume a BPMN diagram as a
> > design model too (Hmm, just maybe this has more potential than I
> imagined).
> >
> > I'll have a play with this myself soon (It seems like a fun way to
> > learn about Struts and JBOSS), but thought in worth mentioning in this
> > discussion. If I was starting from scratch to build such a 'public
> facing'
> > website, an approach that I can see working is to first develop an
> > Apache Isis based domain model in Java and get all the systems
> > integrations needed working with that. Then, to generate UML class
> > diagrams off that design, add in the page navigation design (UML
> > Activity diagram?), and use that combination to generate the skeleton
> > of a tradition request/response type website using AndroMDA.
> >
> > If this all worked, it would provide something very close to a
> > commercial MDA suite that I was interested in supporting called
> > WebRatio [4], for which the public website design [5] market seems
> > quite large. They talk about web-applications, but  I like the Isis
> > coded model approach better for real applications (as opposed to
> > database back web-sites). For public facing web-sites, a templates
> > based approach does still seem to be valid, such as Struts/JSP, and
> > using a MDA probably a good way to manage that complexity.
> >
> > The WebRatio folk have designed a specific graphical web-site design
> > language called Interacton Flow Modelling Language (IFML) [6] (but
> > AndroMDA is UML focused). There is an open-source Eclipse plugin for
> > IFML that they have contributed to [7].
> >
> > Interested to hear thoughts, maybe a dead-end, but maybe not.
> >
> > Cheers
> >
> >
> > [1] http://www.andromda.org/
> > [2]
> > http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cartri
> > dge/index.html
> > [3]
> > http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cartri
> > dge/howto2.html
> > [4] http://www.webratio.com
> > [5]
> > http://www.webratio.com/site/content/en/web-application-development
> > [6] http://www.ifml.org/
> > [7] http://ifml.github.io/
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > On Fri, Nov 20, 2015 at 1:48 AM, Cesar Lugo <ce...@sisorg.com.mx>
> > wrote:
> >
> >> Hi.
> >>
> >> I just wanted to let you guys know that I have tried Papyro in
> >> eclipse. I have been able to reverse engineer java code and create
> >> UML Class Diagrams (supports most of the UML types of diagrams
> >> including use cases, state machine, activity and many more). I tried
> >> adding a property within a domain object class, then redo java
> >> engineer and it keeps my diagram and was able to include the new
> >> property. I haven't been able to do the opposite, adding a property
> >> within the UML and have it add it to the existing java class though.
> >> Adding a new UML class generates java code just fine. I haven’t been
> >> able to reverse engineer some repository classes, anything that uses
> >> java.util.List fails to be imported into the UML model, I haven't
> >> find the solution yet (sortedSet works fine). It doesn't
> >> automatically create the diagram (like other simpler tools do), but
> >> once you import your java code into the UML model, it's just a matter
> >> of drag and drop and into the diagram canvas and select which
> >> properties and operations (actions) you want to be shown, very
> >> convenient to exclude the obvious from the diagram, like getters and
> setters, maybe disableXxx / hideXxx / defaultxXX methods, your choice.
> >>
> >> I will keep working on it, looking good so far.
> >>
> >> Cesar.
> >>
> >> -----Original Message-----
> >> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
> >> Sent: Monday, November 16, 2015 4:53 AM
> >> To: users
> >> Subject: Re: Thinking about re-introducing UML in our workflow
> >>
> >>
> >> For you to know.
> >>
> >> I was just reading about “AgileJ” [1] (the video at [2] is excellent.
> >> It perfectly summarizes the points-of-view expressed here about the
> >> evolution last years of UML usage in dev teams).
> >>
> >> But I’ve also found the Papyrus Eclipse project [3]. Seems to be
> >> really alive (there has been a conference this month).
> >>
> >> And It also seems to have full code synch from Java … See [4].
> >>
> >> Any experience out there with Papyrus?
> >> Could it be a good match for Apache Isis?
> >>
> >>
> >> Cheers,
> >>
> >> Oscar
> >>
> >>
> >> [1] http://www.agilej.com
> >> [2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
> >> [3] http://www.eclipse.org/papyrus/
> >> [4]
> >> https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diagra
> >> ms-ordinary-java-developers
> >>
> >>
> >>
> >>
> >> > El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS
> >> > <o....@govertis.com>
> >> escribió:
> >> >
> >> >
> >> > Hi all.
> >> >
> >> > First of all, the good news for all romantics:
> >> >
> >> > Together is still alive !!! See [1].
> >> >
> >> > [2] says it fully supports Eclipse.
> >> >
> >> > Really interesting, Jeroen, introducing Lombok.
> >> > Look how clear and concise is the Aggregate in [3] expressed in C#.
> >> >
> >> >
> >> > For me, my immediate need is to have a visual depiction of the new
> >> features developers must work on.
> >> > So an Agile diagramming tool would be ok for it.
> >> >
> >> > I’m used to drag-n-drop like interfaces, and I'm there are “visual”
> >> tools out there that support plantuml, so it would be ok to be based on
> it.
> >> >
> >> > Also agree that the model "must be" the code (and not “the code is
> >> > the
> >> model” MDA approach, despite my experience with Bold for
> >> Delphi/Capable Objects was REALLY really good).
> >> >
> >> >
> >> >
> >> > Regards,
> >> >
> >> > Oscar
> >> >
> >> >
> >> >
> >> > [1]
> >> > http://www.borland.com/en-GB/Products/Requirements-Management/Toget
> >> > her
> >> > [2[
> >> > http://www.borland.com/en-GB/Products/Requirements-Management/Toget
> >> > her
> >> > /Plugins-and-integrations [3]
> >> > https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggrega
> >> > tes
> >> > /Register/RegistrationState.cs
> >> >
> >> >
> >> >
> >> >> El 16 nov 2015, a las 10:57, Mike Burton <mi...@mycosystems.co.uk>
> >> escribió:
> >> >>
> >> >> Hi Jeroen,
> >> >>
> >> >> My experience is similar. I was always suspicious of the "code
> >> generation " approach, inevitably gives 2 "sources" that get out of
> step.
> >> >>
> >> >> The only good exception I saw was TogetherJ where "the code is the
> >> model"
> >> >>
> >> >> Best Regards
> >> >>
> >> >> Mike Burton
> >> >> (Sent from my iPhone)
> >> >>
> >> >>
> >> >>
> >> >>> On 15 Nov 2015, at 23:44, Jeroen van der Wal
> >> >>> <je...@stromboli.it>
> >> wrote:
> >> >>>
> >> >>> All very interesting!
> >> >>>
> >> >>> Over the years I tried numerous modelling tools and only the
> >> >>> low-tech ones
> >> >>> stayed: drawing on a whiteboard, using coloured index cards [1]
> >> >>> (learned from Dan) or using a simple online tool like yUML [2].
> >> >>> And I only use them to communicate the broad picture or for
> >> >>> explorative
> >> purposes.
> >> >>>
> >> >>> I gave up on code generators: I always ended up fighting the
> >> >>> generated code. And the impression that they support rapid
> >> >>> application development proved wrong: at the point where you had
> >> >>> to work on more advanced stuff velocity came to a halt. If an
> >> >>> application is built on lots of repeating code snippets then my
> >> >>> conclusion is that the underlying framework is not good enough.
> >> >>>
> >> >>> I love source code that tells the story of the application. Where
> >> >>> everything that could be left out of the code is eliminated. Very
> >> >>> DRY, convention over code. This has drawn me to Naked Objects and
> >> >>> made me decide to spend my time on Apache Isis.
> >> >>>
> >> >>> As you imagine by now I would not take the route from diagram to
> >> >>> code. For me the code editor is the sole canvas to express your
> >> >>> ideas. And I think that if we keep improving Apache Isis on a few
> >> >>> points there will never be a need for an additional tool:
> >> >>>
> >> >>> 1) Reduce boilerplate and make writing an application skeleton as
> >> >>> easy as the easiest modelling tool. This has the advantage that a
> >> >>> software architect can sketch the application and leave it to his
> >> >>> developers to fill in details. But everyone is working on the
> >> >>> same code base using the same tools. In this area we started
> >> >>> using Lombok. Also Dan had an idea to make it possible to create
> >> >>> your own custom annotations which can combine multiple annotations.
> >> >>>
> >> >>> 2) Visualise the meta model. With contributions and mixins the
> >> >>> application logic can come from anywhere. This is architecturally
> >> >>> sane but makes an application hard to grasp. It would love to see
> >> >>> a maven plugin that generates appealing documentation from the
> >> >>> meta model of an Isis application.
> >> >>>
> >> >>> 3) When taking the visualisation concept a bit further it would
> >> >>> be very powerful to explore and navigate the meta model within the
> IDE.
> >> >>> Any plugin developers here?
> >> >>>
> >> >>> That's just my two cents.
> >> >>>
> >> >>> Cheers,
> >> >>>
> >> >>> Jeroen
> >> >>>
> >> >>>
> >> >>>> On 15 November 2015 at 21:01, David Tildesley
> >> >>>> <da...@yahoo.co.nz>
> >> wrote:
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
> >> >>>> dan@haywood-associates.co.uk> wrote:
> >> >>>>> Thanks for this James.
> >> >>>>
> >> >>>>> My observation re: using the (relational) data model as the
> >> >>>>> initial input though is that this is likely to lead to rather
> >> >>>>> coupled code, ultimately not maintainable.
> >> >>>>
> >> >>>> Couldn't agree more.
> >> >>>>
> >> >>>>
> >> >>>>> So, while going from the database up to the domain is fine for
> >> >>>>> a single module of 10 or so entities, any app that is bigger
> >> >>>>> than this really
> >> >>>> should
> >> >>>>> be modelled from the domain down to the database.
> >> >>>>
> >> >>>> Quite right. Any business app that is non trivial should be
> >> >>>> domain modelled.
> >> >>>>
> >> >>>> David.
> >> >>>>
> >> >>>>> Dan
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>>> On 14 November 2015 at 15:00, James Agada
> >> >>>>> <Ja...@cwg-plc.com>
> >> wrote:
> >> >>>>>
> >> >>>>> I actually tested out using Telosys to generate an isis app
> >> >>>>> from database definition. It did work but of course it meant i
> >> >>>>> did the ER first. I used MySQL, did the ER modelling on the
> >> >>>>> workbench, forward engineered into the database and then used
> >> >>>>> telosys scripts to generate a functional Isis application. Did
> >> >>>>> it as a PoC but we
> >> will come back to it later.
> >> >>>>> James Agada
> >> >>>>> Chief Technology Officer
> >> >>>>>
> >> >>>>>
> >> >>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS
> >> >>>>> <o....@govertis.com>
> >> >>>>> wrote:
> >> >>>>>
> >> >>>>> Many thanks, Stephen for this detailed explanation.
> >> >>>>>
> >> >>>>> The problem I’m facing is that I intent to communicate the
> >> >>>>> developers what’s the model to implement.
> >> >>>>>
> >> >>>>> And I usually don’t find big mistakes in action code, but what
> >> >>>>> mostly forces us to refactor is miscommunication regarding the
> >> >>>>> Domain Entities, attributes and actions names, including typos
> >> >>>>> (think my team speak
> >> >>>> Spanish
> >> >>>>> but they’re modeling in English) or wrong or missing
> >> >>>>> relationships
> >> >>>> between
> >> >>>>> those entities.
> >> >>>>>
> >> >>>>> All that could be avoided by firstly agree in a common UML
> >> >>>>> Class
> >> Diagram.
> >> >>>>>
> >> >>>>> If it can potentially generate automatically the Java skeleton
> >> >>>>> with
> >> >>>> Apache
> >> >>>>> Isis annotations is a big plus, as it will avoid mistakes when
> >> >>>>> moving
> >> >>>> from
> >> >>>>> design to implementation.
> >> >>>>>
> >> >>>>> And if it could potentially reverse engineer Java (incl. Apache
> >> >>>>> Isis
> >> >>>>> idioms) a really good feature.
> >> >>>>>
> >> >>>>> Any ideas about what tools could best adapt to the workflow
> >> >>>>> (that could
> >> >>>> be
> >> >>>>> potentially customized to cover the last 2 whishes) ?
> >> >>>>>
> >> >>>>>
> >> >>>>> Thanks,
> >> >>>>>
> >> >>>>> Oscar
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>> El 14 nov 2015, a las 2:03, Stephen Cameron
> >> >>>>> <st...@gmail.com>
> >> >>>>> escribió:
> >> >>>>>
> >> >>>>> Hi Oscar,
> >> >>>>>
> >> >>>>> In a qualified way I think your idea has merit. I have never
> >> >>>>> used UML for design, but a few years ago I decided to take a
> >> >>>>> good look at it and see
> >> >>>> it
> >> >>>>> if was useful. The idea of being able to draw a diagram and
> >> >>>>> generate code from it seemed sensible, after all that is what
> >> >>>>> is done by most other 'design' professions, such as building
> >> architects and engineers.
> >> >>>>>
> >> >>>>> To cut a long story short I realised after some reading that it
> >> >>>>> was not that simple, and that OO languages themselves are
> >> >>>>> really all that are needed for the process of designing a
> >> >>>>> system. This is "the code is the design" school of thought,
> >> >>>>> mainly attributed to
> >> Jack Reeves [1].
> >> >>>>>
> >> >>>>> I found that  keeping code and UML diagrams in sync in a
> >> >>>>> top-down 'UML to code' design process will always be
> >> >>>>> problematic (maybe why there are apparently no open-source tools
> that claim to do this).
> >> >>>>> Then I read about Domain Driven Design which seemed to agree
> >> >>>>> with this premise, and from there found Apache Isis via Dan's
> book.
> >> >>>>>
> >> >>>>> So now for me UML class diagrams do have an after the fact use
> >> >>>>> for documentation purposes and if a solution implement was
> >> >>>>> capable of that reverse generation of diagrams from code it
> >> >>>>> would be a good thing to
> >> >>>> have.
> >> >>>>> Entity Framework can do this, its their "code first" approach.
> >> >>>>>
> >> >>>>> Given that the-code-is-the-design is true, I think that UML
> >> >>>>> class
> >> >>>> diagrams
> >> >>>>> real main value is as a data model, the question then is why
> >> >>>>> not use a purely data-modeling tool and generate Java classes off
> it.
> >> >>>>> Then the diagrams 'designed' could have a usefulness to
> >> >>>>> programmers and to system users, something like those created
> >> SchemaSpy [2]  for example.
> >> >>>>>
> >> >>>>> There are already useful and free Java class generation
> >> >>>>> (binding) tools from off data-models, of one sort or another,
> >> >>>>> such as JAXB,
> >> DataNucleus'
> >> >>>>> schemaGen[3], even CAM [4].
> >> >>>>>
> >> >>>>> Here is my vision of what I think would be really useful: to
> >> >>>>> have a
> >> >>>> design
> >> >>>>> tool that can be used by non-programmers to create a simple
> >> >>>>> data-model,
> >> >>>> and
> >> >>>>> then to have that create a working Apache Isis based CRUD system.
> >> >>>>> This could serve your purpose (I guess) and also find a wider use.
> >> >>>>>
> >> >>>>> The means of achieving this would I think, require something
> >> >>>>> like the "dynamic classes" in available in the Moxy framework
> >> >>>>> [5], that is, map based so that no Java class compilation is
> needed.
> >> >>>>> Instead, a data-model configuration file (a schema) is read-in
> >> >>>>> to configure the system. This is not a strange idea, in fact
> >> >>>>> its the data-driven programming paradigm that is the basis of
> >> >>>>> the original browser concept (before it was turned into
> >> >>>> OO
> >> >>>>> application framework via addition of Javascript). In the
> >> >>>>> browser the
> >> >>>> data
> >> >>>>> is HTML that is turned into an in-memory Document Object Model
> >> >>>>> (DOM) for rendering.
> >> >>>>>
> >> >>>>> As a blended solution between Apache Isis as it is currently
> >> >>>>> (heavily influence by naked objects, an OO modelling based
> >> >>>>> approach for creating custom *behavioural* applications) and
> >> >>>>> this additional mainly data
> >> >>>> focused
> >> >>>>> approach, I think a programmer developing a business
> >> >>>>> application would start off with these dymanic classes and then
> >> >>>>> in time 'harden' the design by generating and compiling real
> >> >>>>> Java classes from off the model. [A non-programmer wouldn't get
> >> >>>>> past the first design 'phase' usually, but still end up with a
> >> >>>>> useable UI.]
> >> >>>>>
> >> >>>>> In addition, by having separate abstract model-generated
> >> >>>>> classes, that
> >> >>>> can
> >> >>>>> be overwritten if the data-model changes, and concrete
> >> >>>>> implementation classes, where you put all your behavioural code
> >> >>>>> and that are never overwritten, you get close to the
> >> >>>>> 'round-tripping' that would seem to me
> >> >>>> to
> >> >>>>> be the only valid way to use UML *for design*. I think this is
> >> >>>>> how the Eclipse Ecore models work, that there are model classes
> >> >>>>> and
> >> >>>> implementation
> >> >>>>> classes that extend the model classes. The IDE will often warn
> >> >>>>> you when these two sub-models have inconsistencies. This
> >> >>>>> duality also offers an alternative means to achieving the goals
> >> >>>>> of Lombok it
> >> would seem.
> >> >>>>>
> >> >>>>> Of course, sitting in the middle of all this is a meta-model,
> >> >>>>> that
> >> >>>> creates
> >> >>>>> the dynamic classes, generates and compiles the 'hardened'
> >> >>>>> model classes (when used) and maps either of these means to a UI
> 'viewer'.
> >> >>>>>
> >> >>>>> For such data-management frameworks, the complicated aspect
> >> >>>>> isn't so much going from the designed data-model to Java, there
> >> >>>>> are lots of examples of that, instead its being able to have
> >> >>>>> also, a dynamic query capability. So that a person unfamiliar
> >> >>>>> with the dataset, can, via its data-model, start querying it
> >> >>>>> (and also maybe integrating it in real-time with other online
> >> >>>>> resources, the
> >> idea of a data-browser appeals!).
> >> >>>>>
> >> >>>>> In the science domain, where I worked for a few years building
> >> >>>>> data-management infrastructure, there are highly advanced
> >> >>>>> systems for online data access and querying e.g. [6], but at
> >> >>>>> the same time a common tool used for small databases is still
> Microsoft Access.
> >> >>>>> Access has many strengths as a desktop database, including form
> >> >>>>> generation and also
> >> >>>> dynamic
> >> >>>>> query-by-form, but the problems arise when you want to make
> >> >>>>> such data publicly available, in the sense of being findable
> >> >>>>> and searchable in real time. You might as well have used a
> >> >>>>> web-based system from the start and then been able to easily
> >> >>>>> open it to the
> >> world at the appropriate time.
> >> >>>>>
> >> >>>>> Having though about this problem for a number of years and
> >> >>>>> spent alot of time working on a XForms based solution as well.
> >> >>>>> I'd be very interested
> >> >>>> to
> >> >>>>> see Apache Isis broaden its scope to offer what I have
> >> >>>>> described, in fact its doesn't seem to need very much more than
> >> >>>>> what is already present in
> >> >>>> the
> >> >>>>> Isis meta-model and Wicket viewer. The Restful objects support
> >> >>>>> already provides a generic 'generated' web programming interface.
> >> >>>>>
> >> >>>>> In summary I know that there are some Java projects that make
> >> >>>>> very effective use of a Model Driven Architecture approach (e.g
> >> >>>>> [7]), but I am now not sure that UML is the
> >> >>>>> 'be-all-and-end-all' basis of
> >> that.
> >> >>>> Actually I
> >> >>>>> think that data-models are the basis of most of MDAs efficiency
> >> >>>>> dividends and that there are other approaches, specifically
> >> >>>>> that conceptual models offer more versatility in terms of who
> >> >>>>> and how
> >> you can make use of them.
> >> >>>>> This thinking goes way back, such as Sowa's Conceptual Graphs
> >> >>>>> [8] and
> >> >>>> even
> >> >>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather)
> >> >>>>> is the W3C semantic web, but he was thinking of database design
> >> >>>>> and
> >> query way back.
> >> >>>>>
> >> >>>>> Apart from some additions to Isis, another interesting aspect
> >> >>>>> is looking
> >> >>>> at
> >> >>>>> the mapping to data-stores, using a graph database of one sort
> >> >>>>> or another to avoid the complexity of ORM is a simple answer to
> >> >>>>> that I feel. Again, the hardening of a design might mean
> >> >>>>> manually adding a few overrides of default ORM mapping rules
> >> >>>>> into some behavioural-model classes, that
> >> >>>> extend
> >> >>>>> generated data-model classes (getters and setters only).
> >> >>>>>
> >> >>>>>
> >> >>>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_m
> >> >>>>> ain
> >> >>>>> .html
> >> >>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
> >> >>>>> [3]
> >> >>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/sch
> >> >>>> ema
> >> >>>> tool.html
> >> >>>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
> >> >>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
> >> >>>>> [6]http://www.opendap.org/
> >> >>>>> [7]http://www.opencrx.org/
> >> >>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
> >> >>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
> >> >>>>>
> >> >>>>> 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.
> >> >>>>>
> >> >>>>> 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?
> >> >>>>>
> >> >>>>> Thanks,
> >> >>>>>
> >> >>>>> Oscar
> >> >>>>>
> >> >>>>>
> >> >>>>> [1] http://roomodeler.com
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>> This email and any attachment thereto are confidential and
> >> priviledged.
> >> >>>> if
> >> >>>>> you have received it in error, please delete immediately and
> >> >>>>> notify the sender. Do not disclose, copy, circulate or in any
> >> >>>>> way use it. The information contained therein is for the
> >> >>>>> address only, if you reply on
> >> >>>> it,
> >> >>>>> its at your own risk. Emails are not guaranteed to be secure or
> >> >>>>> error
> >> >>>> free,
> >> >>>>> the message and any attachment could be intercepted, corrupted,
> >> >>>>> lost, delayed, incomplete or ammended. Computer warehouse group
> >> >>>>> and its
> >> >>>> divisions
> >> >>>>> do not accept liability for damage caused by this email or any
> >> >>>> attachment.
> >> >>>>> The message you tried to print is protected with Information
> >> >>>>> Rights Management. You don't have the necessary user rights to
> >> >>>>> print the
> >> >>>> message.
> >> >>>>>
> >> >>>>>
> >> >>>>> This email and any attachment thereto are confidential and
> >> priviledged.
> >> >>>> if
> >> >>>>> you have received it in error, please delete immediately and
> >> >>>>> notify the sender. Do not disclose, copy, circulate or in any
> >> >>>>> way use it. The information contained therein is for the
> >> >>>>> address only, if you reply on
> >> >>>> it,
> >> >>>>> its at your own risk. Emails are not guaranteed to be secure or
> >> >>>>> error
> >> >>>> free,
> >> >>>>> the message and any attachment could be intercepted, corrupted,
> >> >>>>> lost, delayed, incomplete or ammended. Computer warehouse group
> >> >>>>> and its
> >> >>>> divisions
> >> >>>>> do not accept liability for damage caused by this email or any
> >> >>>> attachment.
> >> >>>>> The message you tried to print is protected with Information
> >> >>>>> Rights Management. You don't have the necessary user rights to
> >> >>>>> print the
> >> >>>> message.
> >> >>>>
> >> >
> >>
> >>
> >>
> >> ---
> >> This email has been checked for viruses by Avast antivirus software.
> >> https://www.avast.com/antivirus
> >>
> >>
> >
>
>
> ---
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
>
>

Re: Thinking about re-introducing UML in our workflow

Posted by Stephen Cameron <st...@gmail.com>.
Spent some time on this today, but did not get far. I tried Papyrus but
without success, couldn't get it to reverse engineer my code that is. Then
I tried myeclipse which does support UML2 and does reverse engineer Java
code to UML class diagrams and also updates these diagrams from any (code)
'Model' changes afterwards. However the trial strangelly doesn't support
Activity diagrams despite them being in the documentation. So all in all
not time well spent.

On Sat, Nov 21, 2015 at 9:31 AM, Stephen Cameron <steve.cameron.62@gmail.com
> wrote:

> Hi,
>
> Related to this thread, my new job involves maintenance of a Struts 2
> based website, in thinking about the best way to approach this task, both
> to learn how it has been put together and potentially make life easier into
> the future I thought the best place to start is creating some diagrams,
> maybe even UML diagrams .
>
> Then I remembered something called AndroMDA [1] from my past reading on
> UML/MDA, it has a 'cartridge' for generating a Struts web-application off a
> UML class model [2]. Just reading the documentation now, it can also make
> use of an UML Activity diagram for designing page navigation[3], also, it
> consume a BPMN diagram as a design model too (Hmm, just maybe this has more
> potential than I imagined).
>
> I'll have a play with this myself soon (It seems like a fun way to learn
> about Struts and JBOSS), but thought in worth mentioning in this
> discussion. If I was starting from scratch to build such a 'public facing'
> website, an approach that I can see working is to first develop an Apache
> Isis based domain model in Java and get all the systems integrations needed
> working with that. Then, to generate UML class diagrams off that design,
> add in the page navigation design (UML Activity diagram?), and use that
> combination to generate the skeleton of a tradition request/response type
> website using AndroMDA.
>
> If this all worked, it would provide something very close to a commercial
> MDA suite that I was interested in supporting called WebRatio [4], for
> which the public website design [5] market seems quite large. They talk
> about web-applications, but  I like the Isis coded model approach better
> for real applications (as opposed to database back web-sites). For public
> facing web-sites, a templates based approach does still seem to be valid,
> such as Struts/JSP, and using a MDA probably a good way to manage that
> complexity.
>
> The WebRatio folk have designed a specific graphical web-site design
> language called Interacton Flow Modelling Language (IFML) [6] (but AndroMDA
> is UML focused). There is an open-source Eclipse plugin for IFML that they
> have contributed to [7].
>
> Interested to hear thoughts, maybe a dead-end, but maybe not.
>
> Cheers
>
>
> [1] http://www.andromda.org/
> [2]
> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cartridge/index.html
> [3]
> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cartridge/howto2.html
> [4] http://www.webratio.com
> [5] http://www.webratio.com/site/content/en/web-application-development
> [6] http://www.ifml.org/
> [7] http://ifml.github.io/
>
>
>
>
>
>
>
>
>
> On Fri, Nov 20, 2015 at 1:48 AM, Cesar Lugo <ce...@sisorg.com.mx>
> wrote:
>
>> Hi.
>>
>> I just wanted to let you guys know that I have tried Papyro in eclipse. I
>> have been able to reverse engineer java code and create UML Class Diagrams
>> (supports most of the UML types of diagrams including use cases, state
>> machine, activity and many more). I tried adding a property within a domain
>> object class, then redo java engineer and it keeps my diagram and was able
>> to include the new property. I haven't been able to do the opposite, adding
>> a property within the UML and have it add it to the existing java class
>> though. Adding a new UML class generates java code just fine. I haven’t
>> been able to reverse engineer some repository classes, anything that uses
>> java.util.List fails to be imported into the UML model, I haven't find the
>> solution yet (sortedSet works fine). It doesn't automatically create the
>> diagram (like other simpler tools do), but once you import your java code
>> into the UML model, it's just a matter of drag and drop and into the
>> diagram canvas and select which properties and operations (actions) you
>> want to be shown, very convenient to exclude the obvious from the diagram,
>> like getters and setters, maybe disableXxx / hideXxx / defaultxXX methods,
>> your choice.
>>
>> I will keep working on it, looking good so far.
>>
>> Cesar.
>>
>> -----Original Message-----
>> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
>> Sent: Monday, November 16, 2015 4:53 AM
>> To: users
>> Subject: Re: Thinking about re-introducing UML in our workflow
>>
>>
>> For you to know.
>>
>> I was just reading about “AgileJ” [1] (the video at [2] is excellent. It
>> perfectly summarizes the points-of-view expressed here about the evolution
>> last years of UML usage in dev teams).
>>
>> But I’ve also found the Papyrus Eclipse project [3]. Seems to be really
>> alive (there has been a conference this month).
>>
>> And It also seems to have full code synch from Java … See [4].
>>
>> Any experience out there with Papyrus?
>> Could it be a good match for Apache Isis?
>>
>>
>> Cheers,
>>
>> Oscar
>>
>>
>> [1] http://www.agilej.com
>> [2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
>> [3] http://www.eclipse.org/papyrus/
>> [4]
>> https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diagrams-ordinary-java-developers
>>
>>
>>
>>
>> > El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS <o....@govertis.com>
>> escribió:
>> >
>> >
>> > Hi all.
>> >
>> > First of all, the good news for all romantics:
>> >
>> > Together is still alive !!! See [1].
>> >
>> > [2] says it fully supports Eclipse.
>> >
>> > Really interesting, Jeroen, introducing Lombok.
>> > Look how clear and concise is the Aggregate in [3] expressed in C#.
>> >
>> >
>> > For me, my immediate need is to have a visual depiction of the new
>> features developers must work on.
>> > So an Agile diagramming tool would be ok for it.
>> >
>> > I’m used to drag-n-drop like interfaces, and I'm there are “visual”
>> tools out there that support plantuml, so it would be ok to be based on it.
>> >
>> > Also agree that the model "must be" the code (and not “the code is the
>> model” MDA approach, despite my experience with Bold for Delphi/Capable
>> Objects was REALLY really good).
>> >
>> >
>> >
>> > Regards,
>> >
>> > Oscar
>> >
>> >
>> >
>> > [1]
>> > http://www.borland.com/en-GB/Products/Requirements-Management/Together
>> > [2[
>> > http://www.borland.com/en-GB/Products/Requirements-Management/Together
>> > /Plugins-and-integrations [3]
>> > https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggregates
>> > /Register/RegistrationState.cs
>> >
>> >
>> >
>> >> El 16 nov 2015, a las 10:57, Mike Burton <mi...@mycosystems.co.uk>
>> escribió:
>> >>
>> >> Hi Jeroen,
>> >>
>> >> My experience is similar. I was always suspicious of the "code
>> generation " approach, inevitably gives 2 "sources" that get out of step.
>> >>
>> >> The only good exception I saw was TogetherJ where "the code is the
>> model"
>> >>
>> >> Best Regards
>> >>
>> >> Mike Burton
>> >> (Sent from my iPhone)
>> >>
>> >>
>> >>
>> >>> On 15 Nov 2015, at 23:44, Jeroen van der Wal <je...@stromboli.it>
>> wrote:
>> >>>
>> >>> All very interesting!
>> >>>
>> >>> Over the years I tried numerous modelling tools and only the
>> >>> low-tech ones
>> >>> stayed: drawing on a whiteboard, using coloured index cards [1]
>> >>> (learned from Dan) or using a simple online tool like yUML [2]. And
>> >>> I only use them to communicate the broad picture or for explorative
>> purposes.
>> >>>
>> >>> I gave up on code generators: I always ended up fighting the
>> >>> generated code. And the impression that they support rapid
>> >>> application development proved wrong: at the point where you had to
>> >>> work on more advanced stuff velocity came to a halt. If an
>> >>> application is built on lots of repeating code snippets then my
>> >>> conclusion is that the underlying framework is not good enough.
>> >>>
>> >>> I love source code that tells the story of the application. Where
>> >>> everything that could be left out of the code is eliminated. Very
>> >>> DRY, convention over code. This has drawn me to Naked Objects and
>> >>> made me decide to spend my time on Apache Isis.
>> >>>
>> >>> As you imagine by now I would not take the route from diagram to
>> >>> code. For me the code editor is the sole canvas to express your
>> >>> ideas. And I think that if we keep improving Apache Isis on a few
>> >>> points there will never be a need for an additional tool:
>> >>>
>> >>> 1) Reduce boilerplate and make writing an application skeleton as
>> >>> easy as the easiest modelling tool. This has the advantage that a
>> >>> software architect can sketch the application and leave it to his
>> >>> developers to fill in details. But everyone is working on the same
>> >>> code base using the same tools. In this area we started using
>> >>> Lombok. Also Dan had an idea to make it possible to create your own
>> >>> custom annotations which can combine multiple annotations.
>> >>>
>> >>> 2) Visualise the meta model. With contributions and mixins the
>> >>> application logic can come from anywhere. This is architecturally
>> >>> sane but makes an application hard to grasp. It would love to see a
>> >>> maven plugin that generates appealing documentation from the meta
>> >>> model of an Isis application.
>> >>>
>> >>> 3) When taking the visualisation concept a bit further it would be
>> >>> very powerful to explore and navigate the meta model within the IDE.
>> >>> Any plugin developers here?
>> >>>
>> >>> That's just my two cents.
>> >>>
>> >>> Cheers,
>> >>>
>> >>> Jeroen
>> >>>
>> >>>
>> >>>> On 15 November 2015 at 21:01, David Tildesley <da...@yahoo.co.nz>
>> wrote:
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
>> >>>> dan@haywood-associates.co.uk> wrote:
>> >>>>> Thanks for this James.
>> >>>>
>> >>>>> My observation re: using the (relational) data model as the
>> >>>>> initial input though is that this is likely to lead to rather
>> >>>>> coupled code, ultimately not maintainable.
>> >>>>
>> >>>> Couldn't agree more.
>> >>>>
>> >>>>
>> >>>>> So, while going from the database up to the domain is fine for a
>> >>>>> single module of 10 or so entities, any app that is bigger than
>> >>>>> this really
>> >>>> should
>> >>>>> be modelled from the domain down to the database.
>> >>>>
>> >>>> Quite right. Any business app that is non trivial should be domain
>> >>>> modelled.
>> >>>>
>> >>>> David.
>> >>>>
>> >>>>> Dan
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>> On 14 November 2015 at 15:00, James Agada <Ja...@cwg-plc.com>
>> wrote:
>> >>>>>
>> >>>>> I actually tested out using Telosys to generate an isis app from
>> >>>>> database definition. It did work but of course it meant i did the
>> >>>>> ER first. I used MySQL, did the ER modelling on the workbench,
>> >>>>> forward engineered into the database and then used telosys scripts
>> >>>>> to generate a functional Isis application. Did it as a PoC but we
>> will come back to it later.
>> >>>>> James Agada
>> >>>>> Chief Technology Officer
>> >>>>>
>> >>>>>
>> >>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS
>> >>>>> <o....@govertis.com>
>> >>>>> wrote:
>> >>>>>
>> >>>>> Many thanks, Stephen for this detailed explanation.
>> >>>>>
>> >>>>> The problem I’m facing is that I intent to communicate the
>> >>>>> developers what’s the model to implement.
>> >>>>>
>> >>>>> And I usually don’t find big mistakes in action code, but what
>> >>>>> mostly forces us to refactor is miscommunication regarding the
>> >>>>> Domain Entities, attributes and actions names, including typos
>> >>>>> (think my team speak
>> >>>> Spanish
>> >>>>> but they’re modeling in English) or wrong or missing relationships
>> >>>> between
>> >>>>> those entities.
>> >>>>>
>> >>>>> All that could be avoided by firstly agree in a common UML Class
>> Diagram.
>> >>>>>
>> >>>>> If it can potentially generate automatically the Java skeleton
>> >>>>> with
>> >>>> Apache
>> >>>>> Isis annotations is a big plus, as it will avoid mistakes when
>> >>>>> moving
>> >>>> from
>> >>>>> design to implementation.
>> >>>>>
>> >>>>> And if it could potentially reverse engineer Java (incl. Apache
>> >>>>> Isis
>> >>>>> idioms) a really good feature.
>> >>>>>
>> >>>>> Any ideas about what tools could best adapt to the workflow (that
>> >>>>> could
>> >>>> be
>> >>>>> potentially customized to cover the last 2 whishes) ?
>> >>>>>
>> >>>>>
>> >>>>> Thanks,
>> >>>>>
>> >>>>> Oscar
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> El 14 nov 2015, a las 2:03, Stephen Cameron
>> >>>>> <st...@gmail.com>
>> >>>>> escribió:
>> >>>>>
>> >>>>> Hi Oscar,
>> >>>>>
>> >>>>> In a qualified way I think your idea has merit. I have never used
>> >>>>> UML for design, but a few years ago I decided to take a good look
>> >>>>> at it and see
>> >>>> it
>> >>>>> if was useful. The idea of being able to draw a diagram and
>> >>>>> generate code from it seemed sensible, after all that is what is
>> >>>>> done by most other 'design' professions, such as building
>> architects and engineers.
>> >>>>>
>> >>>>> To cut a long story short I realised after some reading that it
>> >>>>> was not that simple, and that OO languages themselves are really
>> >>>>> all that are needed for the process of designing a system. This is
>> >>>>> "the code is the design" school of thought, mainly attributed to
>> Jack Reeves [1].
>> >>>>>
>> >>>>> I found that  keeping code and UML diagrams in sync in a top-down
>> >>>>> 'UML to code' design process will always be problematic (maybe why
>> >>>>> there are apparently no open-source tools that claim to do this).
>> >>>>> Then I read about Domain Driven Design which seemed to agree with
>> >>>>> this premise, and from there found Apache Isis via Dan's  book.
>> >>>>>
>> >>>>> So now for me UML class diagrams do have an after the fact use for
>> >>>>> documentation purposes and if a solution implement was capable of
>> >>>>> that reverse generation of diagrams from code it would be a good
>> >>>>> thing to
>> >>>> have.
>> >>>>> Entity Framework can do this, its their "code first" approach.
>> >>>>>
>> >>>>> Given that the-code-is-the-design is true, I think that UML class
>> >>>> diagrams
>> >>>>> real main value is as a data model, the question then is why not
>> >>>>> use a purely data-modeling tool and generate Java classes off it.
>> >>>>> Then the diagrams 'designed' could have a usefulness to
>> >>>>> programmers and to system users, something like those created
>> SchemaSpy [2]  for example.
>> >>>>>
>> >>>>> There are already useful and free Java class generation (binding)
>> >>>>> tools from off data-models, of one sort or another, such as JAXB,
>> DataNucleus'
>> >>>>> schemaGen[3], even CAM [4].
>> >>>>>
>> >>>>> Here is my vision of what I think would be really useful: to have
>> >>>>> a
>> >>>> design
>> >>>>> tool that can be used by non-programmers to create a simple
>> >>>>> data-model,
>> >>>> and
>> >>>>> then to have that create a working Apache Isis based CRUD system.
>> >>>>> This could serve your purpose (I guess) and also find a wider use.
>> >>>>>
>> >>>>> The means of achieving this would I think, require something like
>> >>>>> the "dynamic classes" in available in the Moxy framework [5], that
>> >>>>> is, map based so that no Java class compilation is needed.
>> >>>>> Instead, a data-model configuration file (a schema) is read-in to
>> >>>>> configure the system. This is not a strange idea, in fact its the
>> >>>>> data-driven programming paradigm that is the basis of the original
>> >>>>> browser concept (before it was turned into
>> >>>> OO
>> >>>>> application framework via addition of Javascript). In the browser
>> >>>>> the
>> >>>> data
>> >>>>> is HTML that is turned into an in-memory Document Object Model
>> >>>>> (DOM) for rendering.
>> >>>>>
>> >>>>> As a blended solution between Apache Isis as it is currently
>> >>>>> (heavily influence by naked objects, an OO modelling based
>> >>>>> approach for creating custom *behavioural* applications) and this
>> >>>>> additional mainly data
>> >>>> focused
>> >>>>> approach, I think a programmer developing a business application
>> >>>>> would start off with these dymanic classes and then in time
>> >>>>> 'harden' the design by generating and compiling real Java classes
>> >>>>> from off the model. [A non-programmer wouldn't get past the first
>> >>>>> design 'phase' usually, but still end up with a useable UI.]
>> >>>>>
>> >>>>> In addition, by having separate abstract model-generated classes,
>> >>>>> that
>> >>>> can
>> >>>>> be overwritten if the data-model changes, and concrete
>> >>>>> implementation classes, where you put all your behavioural code
>> >>>>> and that are never overwritten, you get close to the
>> >>>>> 'round-tripping' that would seem to me
>> >>>> to
>> >>>>> be the only valid way to use UML *for design*. I think this is how
>> >>>>> the Eclipse Ecore models work, that there are model classes and
>> >>>> implementation
>> >>>>> classes that extend the model classes. The IDE will often warn you
>> >>>>> when these two sub-models have inconsistencies. This duality also
>> >>>>> offers an alternative means to achieving the goals of Lombok it
>> would seem.
>> >>>>>
>> >>>>> Of course, sitting in the middle of all this is a meta-model, that
>> >>>> creates
>> >>>>> the dynamic classes, generates and compiles the 'hardened' model
>> >>>>> classes (when used) and maps either of these means to a UI 'viewer'.
>> >>>>>
>> >>>>> For such data-management frameworks, the complicated aspect isn't
>> >>>>> so much going from the designed data-model to Java, there are lots
>> >>>>> of examples of that, instead its being able to have also, a
>> >>>>> dynamic query capability. So that a person unfamiliar with the
>> >>>>> dataset, can, via its data-model, start querying it (and also
>> >>>>> maybe integrating it in real-time with other online resources, the
>> idea of a data-browser appeals!).
>> >>>>>
>> >>>>> In the science domain, where I worked for a few years building
>> >>>>> data-management infrastructure, there are highly advanced systems
>> >>>>> for online data access and querying e.g. [6], but at the same time
>> >>>>> a common tool used for small databases is still Microsoft Access.
>> >>>>> Access has many strengths as a desktop database, including form
>> >>>>> generation and also
>> >>>> dynamic
>> >>>>> query-by-form, but the problems arise when you want to make such
>> >>>>> data publicly available, in the sense of being findable and
>> >>>>> searchable in real time. You might as well have used a web-based
>> >>>>> system from the start and then been able to easily open it to the
>> world at the appropriate time.
>> >>>>>
>> >>>>> Having though about this problem for a number of years and spent
>> >>>>> alot of time working on a XForms based solution as well. I'd be
>> >>>>> very interested
>> >>>> to
>> >>>>> see Apache Isis broaden its scope to offer what I have described,
>> >>>>> in fact its doesn't seem to need very much more than what is
>> >>>>> already present in
>> >>>> the
>> >>>>> Isis meta-model and Wicket viewer. The Restful objects support
>> >>>>> already provides a generic 'generated' web programming interface.
>> >>>>>
>> >>>>> In summary I know that there are some Java projects that make very
>> >>>>> effective use of a Model Driven Architecture approach (e.g [7]),
>> >>>>> but I am now not sure that UML is the 'be-all-and-end-all' basis of
>> that.
>> >>>> Actually I
>> >>>>> think that data-models are the basis of most of MDAs efficiency
>> >>>>> dividends and that there are other approaches, specifically that
>> >>>>> conceptual models offer more versatility in terms of who and how
>> you can make use of them.
>> >>>>> This thinking goes way back, such as Sowa's Conceptual Graphs [8]
>> >>>>> and
>> >>>> even
>> >>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather) is
>> >>>>> the W3C semantic web, but he was thinking of database design and
>> query way back.
>> >>>>>
>> >>>>> Apart from some additions to Isis, another interesting aspect is
>> >>>>> looking
>> >>>> at
>> >>>>> the mapping to data-stores, using a graph database of one sort or
>> >>>>> another to avoid the complexity of ORM is a simple answer to that
>> >>>>> I feel. Again, the hardening of a design might mean manually
>> >>>>> adding a few overrides of default ORM mapping rules into some
>> >>>>> behavioural-model classes, that
>> >>>> extend
>> >>>>> generated data-model classes (getters and setters only).
>> >>>>>
>> >>>>>
>> >>>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_main
>> >>>>> .html
>> >>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
>> >>>>> [3]
>> >>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schema
>> >>>> tool.html
>> >>>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
>> >>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
>> >>>>> [6]http://www.opendap.org/
>> >>>>> [7]http://www.opencrx.org/
>> >>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
>> >>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
>> >>>>>
>> >>>>> 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.
>> >>>>>
>> >>>>> 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?
>> >>>>>
>> >>>>> Thanks,
>> >>>>>
>> >>>>> Oscar
>> >>>>>
>> >>>>>
>> >>>>> [1] http://roomodeler.com
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> This email and any attachment thereto are confidential and
>> priviledged.
>> >>>> if
>> >>>>> you have received it in error, please delete immediately and
>> >>>>> notify the sender. Do not disclose, copy, circulate or in any way
>> >>>>> use it. The information contained therein is for the address only,
>> >>>>> if you reply on
>> >>>> it,
>> >>>>> its at your own risk. Emails are not guaranteed to be secure or
>> >>>>> error
>> >>>> free,
>> >>>>> the message and any attachment could be intercepted, corrupted,
>> >>>>> lost, delayed, incomplete or ammended. Computer warehouse group
>> >>>>> and its
>> >>>> divisions
>> >>>>> do not accept liability for damage caused by this email or any
>> >>>> attachment.
>> >>>>> The message you tried to print is protected with Information
>> >>>>> Rights Management. You don't have the necessary user rights to
>> >>>>> print the
>> >>>> message.
>> >>>>>
>> >>>>>
>> >>>>> This email and any attachment thereto are confidential and
>> priviledged.
>> >>>> if
>> >>>>> you have received it in error, please delete immediately and
>> >>>>> notify the sender. Do not disclose, copy, circulate or in any way
>> >>>>> use it. The information contained therein is for the address only,
>> >>>>> if you reply on
>> >>>> it,
>> >>>>> its at your own risk. Emails are not guaranteed to be secure or
>> >>>>> error
>> >>>> free,
>> >>>>> the message and any attachment could be intercepted, corrupted,
>> >>>>> lost, delayed, incomplete or ammended. Computer warehouse group
>> >>>>> and its
>> >>>> divisions
>> >>>>> do not accept liability for damage caused by this email or any
>> >>>> attachment.
>> >>>>> The message you tried to print is protected with Information
>> >>>>> Rights Management. You don't have the necessary user rights to
>> >>>>> print the
>> >>>> message.
>> >>>>
>> >
>>
>>
>>
>> ---
>> This email has been checked for viruses by Avast antivirus software.
>> https://www.avast.com/antivirus
>>
>>
>

Re: Thinking about re-introducing UML in our workflow

Posted by Stephen Cameron <st...@gmail.com>.
Hi,

Related to this thread, my new job involves maintenance of a Struts 2 based
website, in thinking about the best way to approach this task, both to
learn how it has been put together and potentially make life easier into
the future I thought the best place to start is creating some diagrams,
maybe even UML diagrams .

Then I remembered something called AndroMDA [1] from my past reading on
UML/MDA, it has a 'cartridge' for generating a Struts web-application off a
UML class model [2]. Just reading the documentation now, it can also make
use of an UML Activity diagram for designing page navigation[3], also, it
consume a BPMN diagram as a design model too (Hmm, just maybe this has more
potential than I imagined).

I'll have a play with this myself soon (It seems like a fun way to learn
about Struts and JBOSS), but thought in worth mentioning in this
discussion. If I was starting from scratch to build such a 'public facing'
website, an approach that I can see working is to first develop an Apache
Isis based domain model in Java and get all the systems integrations needed
working with that. Then, to generate UML class diagrams off that design,
add in the page navigation design (UML Activity diagram?), and use that
combination to generate the skeleton of a tradition request/response type
website using AndroMDA.

If this all worked, it would provide something very close to a commercial
MDA suite that I was interested in supporting called WebRatio [4], for
which the public website design [5] market seems quite large. They talk
about web-applications, but  I like the Isis coded model approach better
for real applications (as opposed to database back web-sites). For public
facing web-sites, a templates based approach does still seem to be valid,
such as Struts/JSP, and using a MDA probably a good way to manage that
complexity.

The WebRatio folk have designed a specific graphical web-site design
language called Interacton Flow Modelling Language (IFML) [6] (but AndroMDA
is UML focused). There is an open-source Eclipse plugin for IFML that they
have contributed to [7].

Interested to hear thoughts, maybe a dead-end, but maybe not.

Cheers


[1] http://www.andromda.org/
[2]
http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cartridge/index.html
[3]
http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cartridge/howto2.html
[4] http://www.webratio.com
[5] http://www.webratio.com/site/content/en/web-application-development
[6] http://www.ifml.org/
[7] http://ifml.github.io/









On Fri, Nov 20, 2015 at 1:48 AM, Cesar Lugo <ce...@sisorg.com.mx>
wrote:

> Hi.
>
> I just wanted to let you guys know that I have tried Papyro in eclipse. I
> have been able to reverse engineer java code and create UML Class Diagrams
> (supports most of the UML types of diagrams including use cases, state
> machine, activity and many more). I tried adding a property within a domain
> object class, then redo java engineer and it keeps my diagram and was able
> to include the new property. I haven't been able to do the opposite, adding
> a property within the UML and have it add it to the existing java class
> though. Adding a new UML class generates java code just fine. I haven’t
> been able to reverse engineer some repository classes, anything that uses
> java.util.List fails to be imported into the UML model, I haven't find the
> solution yet (sortedSet works fine). It doesn't automatically create the
> diagram (like other simpler tools do), but once you import your java code
> into the UML model, it's just a matter of drag and drop and into the
> diagram canvas and select which properties and operations (actions) you
> want to be shown, very convenient to exclude the obvious from the diagram,
> like getters and setters, maybe disableXxx / hideXxx / defaultxXX methods,
> your choice.
>
> I will keep working on it, looking good so far.
>
> Cesar.
>
> -----Original Message-----
> From: Óscar Bou - GOVERTIS [mailto:o.bou@govertis.com]
> Sent: Monday, November 16, 2015 4:53 AM
> To: users
> Subject: Re: Thinking about re-introducing UML in our workflow
>
>
> For you to know.
>
> I was just reading about “AgileJ” [1] (the video at [2] is excellent. It
> perfectly summarizes the points-of-view expressed here about the evolution
> last years of UML usage in dev teams).
>
> But I’ve also found the Papyrus Eclipse project [3]. Seems to be really
> alive (there has been a conference this month).
>
> And It also seems to have full code synch from Java … See [4].
>
> Any experience out there with Papyrus?
> Could it be a good match for Apache Isis?
>
>
> Cheers,
>
> Oscar
>
>
> [1] http://www.agilej.com
> [2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
> [3] http://www.eclipse.org/papyrus/
> [4]
> https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diagrams-ordinary-java-developers
>
>
>
>
> > El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS <o....@govertis.com>
> escribió:
> >
> >
> > Hi all.
> >
> > First of all, the good news for all romantics:
> >
> > Together is still alive !!! See [1].
> >
> > [2] says it fully supports Eclipse.
> >
> > Really interesting, Jeroen, introducing Lombok.
> > Look how clear and concise is the Aggregate in [3] expressed in C#.
> >
> >
> > For me, my immediate need is to have a visual depiction of the new
> features developers must work on.
> > So an Agile diagramming tool would be ok for it.
> >
> > I’m used to drag-n-drop like interfaces, and I'm there are “visual”
> tools out there that support plantuml, so it would be ok to be based on it.
> >
> > Also agree that the model "must be" the code (and not “the code is the
> model” MDA approach, despite my experience with Bold for Delphi/Capable
> Objects was REALLY really good).
> >
> >
> >
> > Regards,
> >
> > Oscar
> >
> >
> >
> > [1]
> > http://www.borland.com/en-GB/Products/Requirements-Management/Together
> > [2[
> > http://www.borland.com/en-GB/Products/Requirements-Management/Together
> > /Plugins-and-integrations [3]
> > https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggregates
> > /Register/RegistrationState.cs
> >
> >
> >
> >> El 16 nov 2015, a las 10:57, Mike Burton <mi...@mycosystems.co.uk>
> escribió:
> >>
> >> Hi Jeroen,
> >>
> >> My experience is similar. I was always suspicious of the "code
> generation " approach, inevitably gives 2 "sources" that get out of step.
> >>
> >> The only good exception I saw was TogetherJ where "the code is the
> model"
> >>
> >> Best Regards
> >>
> >> Mike Burton
> >> (Sent from my iPhone)
> >>
> >>
> >>
> >>> On 15 Nov 2015, at 23:44, Jeroen van der Wal <je...@stromboli.it>
> wrote:
> >>>
> >>> All very interesting!
> >>>
> >>> Over the years I tried numerous modelling tools and only the
> >>> low-tech ones
> >>> stayed: drawing on a whiteboard, using coloured index cards [1]
> >>> (learned from Dan) or using a simple online tool like yUML [2]. And
> >>> I only use them to communicate the broad picture or for explorative
> purposes.
> >>>
> >>> I gave up on code generators: I always ended up fighting the
> >>> generated code. And the impression that they support rapid
> >>> application development proved wrong: at the point where you had to
> >>> work on more advanced stuff velocity came to a halt. If an
> >>> application is built on lots of repeating code snippets then my
> >>> conclusion is that the underlying framework is not good enough.
> >>>
> >>> I love source code that tells the story of the application. Where
> >>> everything that could be left out of the code is eliminated. Very
> >>> DRY, convention over code. This has drawn me to Naked Objects and
> >>> made me decide to spend my time on Apache Isis.
> >>>
> >>> As you imagine by now I would not take the route from diagram to
> >>> code. For me the code editor is the sole canvas to express your
> >>> ideas. And I think that if we keep improving Apache Isis on a few
> >>> points there will never be a need for an additional tool:
> >>>
> >>> 1) Reduce boilerplate and make writing an application skeleton as
> >>> easy as the easiest modelling tool. This has the advantage that a
> >>> software architect can sketch the application and leave it to his
> >>> developers to fill in details. But everyone is working on the same
> >>> code base using the same tools. In this area we started using
> >>> Lombok. Also Dan had an idea to make it possible to create your own
> >>> custom annotations which can combine multiple annotations.
> >>>
> >>> 2) Visualise the meta model. With contributions and mixins the
> >>> application logic can come from anywhere. This is architecturally
> >>> sane but makes an application hard to grasp. It would love to see a
> >>> maven plugin that generates appealing documentation from the meta
> >>> model of an Isis application.
> >>>
> >>> 3) When taking the visualisation concept a bit further it would be
> >>> very powerful to explore and navigate the meta model within the IDE.
> >>> Any plugin developers here?
> >>>
> >>> That's just my two cents.
> >>>
> >>> Cheers,
> >>>
> >>> Jeroen
> >>>
> >>>
> >>>> On 15 November 2015 at 21:01, David Tildesley <da...@yahoo.co.nz>
> wrote:
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
> >>>> dan@haywood-associates.co.uk> wrote:
> >>>>> Thanks for this James.
> >>>>
> >>>>> My observation re: using the (relational) data model as the
> >>>>> initial input though is that this is likely to lead to rather
> >>>>> coupled code, ultimately not maintainable.
> >>>>
> >>>> Couldn't agree more.
> >>>>
> >>>>
> >>>>> So, while going from the database up to the domain is fine for a
> >>>>> single module of 10 or so entities, any app that is bigger than
> >>>>> this really
> >>>> should
> >>>>> be modelled from the domain down to the database.
> >>>>
> >>>> Quite right. Any business app that is non trivial should be domain
> >>>> modelled.
> >>>>
> >>>> David.
> >>>>
> >>>>> Dan
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>> On 14 November 2015 at 15:00, James Agada <Ja...@cwg-plc.com>
> wrote:
> >>>>>
> >>>>> I actually tested out using Telosys to generate an isis app from
> >>>>> database definition. It did work but of course it meant i did the
> >>>>> ER first. I used MySQL, did the ER modelling on the workbench,
> >>>>> forward engineered into the database and then used telosys scripts
> >>>>> to generate a functional Isis application. Did it as a PoC but we
> will come back to it later.
> >>>>> James Agada
> >>>>> Chief Technology Officer
> >>>>>
> >>>>>
> >>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS
> >>>>> <o....@govertis.com>
> >>>>> wrote:
> >>>>>
> >>>>> Many thanks, Stephen for this detailed explanation.
> >>>>>
> >>>>> The problem I’m facing is that I intent to communicate the
> >>>>> developers what’s the model to implement.
> >>>>>
> >>>>> And I usually don’t find big mistakes in action code, but what
> >>>>> mostly forces us to refactor is miscommunication regarding the
> >>>>> Domain Entities, attributes and actions names, including typos
> >>>>> (think my team speak
> >>>> Spanish
> >>>>> but they’re modeling in English) or wrong or missing relationships
> >>>> between
> >>>>> those entities.
> >>>>>
> >>>>> All that could be avoided by firstly agree in a common UML Class
> Diagram.
> >>>>>
> >>>>> If it can potentially generate automatically the Java skeleton
> >>>>> with
> >>>> Apache
> >>>>> Isis annotations is a big plus, as it will avoid mistakes when
> >>>>> moving
> >>>> from
> >>>>> design to implementation.
> >>>>>
> >>>>> And if it could potentially reverse engineer Java (incl. Apache
> >>>>> Isis
> >>>>> idioms) a really good feature.
> >>>>>
> >>>>> Any ideas about what tools could best adapt to the workflow (that
> >>>>> could
> >>>> be
> >>>>> potentially customized to cover the last 2 whishes) ?
> >>>>>
> >>>>>
> >>>>> Thanks,
> >>>>>
> >>>>> Oscar
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> El 14 nov 2015, a las 2:03, Stephen Cameron
> >>>>> <st...@gmail.com>
> >>>>> escribió:
> >>>>>
> >>>>> Hi Oscar,
> >>>>>
> >>>>> In a qualified way I think your idea has merit. I have never used
> >>>>> UML for design, but a few years ago I decided to take a good look
> >>>>> at it and see
> >>>> it
> >>>>> if was useful. The idea of being able to draw a diagram and
> >>>>> generate code from it seemed sensible, after all that is what is
> >>>>> done by most other 'design' professions, such as building architects
> and engineers.
> >>>>>
> >>>>> To cut a long story short I realised after some reading that it
> >>>>> was not that simple, and that OO languages themselves are really
> >>>>> all that are needed for the process of designing a system. This is
> >>>>> "the code is the design" school of thought, mainly attributed to
> Jack Reeves [1].
> >>>>>
> >>>>> I found that  keeping code and UML diagrams in sync in a top-down
> >>>>> 'UML to code' design process will always be problematic (maybe why
> >>>>> there are apparently no open-source tools that claim to do this).
> >>>>> Then I read about Domain Driven Design which seemed to agree with
> >>>>> this premise, and from there found Apache Isis via Dan's  book.
> >>>>>
> >>>>> So now for me UML class diagrams do have an after the fact use for
> >>>>> documentation purposes and if a solution implement was capable of
> >>>>> that reverse generation of diagrams from code it would be a good
> >>>>> thing to
> >>>> have.
> >>>>> Entity Framework can do this, its their "code first" approach.
> >>>>>
> >>>>> Given that the-code-is-the-design is true, I think that UML class
> >>>> diagrams
> >>>>> real main value is as a data model, the question then is why not
> >>>>> use a purely data-modeling tool and generate Java classes off it.
> >>>>> Then the diagrams 'designed' could have a usefulness to
> >>>>> programmers and to system users, something like those created
> SchemaSpy [2]  for example.
> >>>>>
> >>>>> There are already useful and free Java class generation (binding)
> >>>>> tools from off data-models, of one sort or another, such as JAXB,
> DataNucleus'
> >>>>> schemaGen[3], even CAM [4].
> >>>>>
> >>>>> Here is my vision of what I think would be really useful: to have
> >>>>> a
> >>>> design
> >>>>> tool that can be used by non-programmers to create a simple
> >>>>> data-model,
> >>>> and
> >>>>> then to have that create a working Apache Isis based CRUD system.
> >>>>> This could serve your purpose (I guess) and also find a wider use.
> >>>>>
> >>>>> The means of achieving this would I think, require something like
> >>>>> the "dynamic classes" in available in the Moxy framework [5], that
> >>>>> is, map based so that no Java class compilation is needed.
> >>>>> Instead, a data-model configuration file (a schema) is read-in to
> >>>>> configure the system. This is not a strange idea, in fact its the
> >>>>> data-driven programming paradigm that is the basis of the original
> >>>>> browser concept (before it was turned into
> >>>> OO
> >>>>> application framework via addition of Javascript). In the browser
> >>>>> the
> >>>> data
> >>>>> is HTML that is turned into an in-memory Document Object Model
> >>>>> (DOM) for rendering.
> >>>>>
> >>>>> As a blended solution between Apache Isis as it is currently
> >>>>> (heavily influence by naked objects, an OO modelling based
> >>>>> approach for creating custom *behavioural* applications) and this
> >>>>> additional mainly data
> >>>> focused
> >>>>> approach, I think a programmer developing a business application
> >>>>> would start off with these dymanic classes and then in time
> >>>>> 'harden' the design by generating and compiling real Java classes
> >>>>> from off the model. [A non-programmer wouldn't get past the first
> >>>>> design 'phase' usually, but still end up with a useable UI.]
> >>>>>
> >>>>> In addition, by having separate abstract model-generated classes,
> >>>>> that
> >>>> can
> >>>>> be overwritten if the data-model changes, and concrete
> >>>>> implementation classes, where you put all your behavioural code
> >>>>> and that are never overwritten, you get close to the
> >>>>> 'round-tripping' that would seem to me
> >>>> to
> >>>>> be the only valid way to use UML *for design*. I think this is how
> >>>>> the Eclipse Ecore models work, that there are model classes and
> >>>> implementation
> >>>>> classes that extend the model classes. The IDE will often warn you
> >>>>> when these two sub-models have inconsistencies. This duality also
> >>>>> offers an alternative means to achieving the goals of Lombok it
> would seem.
> >>>>>
> >>>>> Of course, sitting in the middle of all this is a meta-model, that
> >>>> creates
> >>>>> the dynamic classes, generates and compiles the 'hardened' model
> >>>>> classes (when used) and maps either of these means to a UI 'viewer'.
> >>>>>
> >>>>> For such data-management frameworks, the complicated aspect isn't
> >>>>> so much going from the designed data-model to Java, there are lots
> >>>>> of examples of that, instead its being able to have also, a
> >>>>> dynamic query capability. So that a person unfamiliar with the
> >>>>> dataset, can, via its data-model, start querying it (and also
> >>>>> maybe integrating it in real-time with other online resources, the
> idea of a data-browser appeals!).
> >>>>>
> >>>>> In the science domain, where I worked for a few years building
> >>>>> data-management infrastructure, there are highly advanced systems
> >>>>> for online data access and querying e.g. [6], but at the same time
> >>>>> a common tool used for small databases is still Microsoft Access.
> >>>>> Access has many strengths as a desktop database, including form
> >>>>> generation and also
> >>>> dynamic
> >>>>> query-by-form, but the problems arise when you want to make such
> >>>>> data publicly available, in the sense of being findable and
> >>>>> searchable in real time. You might as well have used a web-based
> >>>>> system from the start and then been able to easily open it to the
> world at the appropriate time.
> >>>>>
> >>>>> Having though about this problem for a number of years and spent
> >>>>> alot of time working on a XForms based solution as well. I'd be
> >>>>> very interested
> >>>> to
> >>>>> see Apache Isis broaden its scope to offer what I have described,
> >>>>> in fact its doesn't seem to need very much more than what is
> >>>>> already present in
> >>>> the
> >>>>> Isis meta-model and Wicket viewer. The Restful objects support
> >>>>> already provides a generic 'generated' web programming interface.
> >>>>>
> >>>>> In summary I know that there are some Java projects that make very
> >>>>> effective use of a Model Driven Architecture approach (e.g [7]),
> >>>>> but I am now not sure that UML is the 'be-all-and-end-all' basis of
> that.
> >>>> Actually I
> >>>>> think that data-models are the basis of most of MDAs efficiency
> >>>>> dividends and that there are other approaches, specifically that
> >>>>> conceptual models offer more versatility in terms of who and how you
> can make use of them.
> >>>>> This thinking goes way back, such as Sowa's Conceptual Graphs [8]
> >>>>> and
> >>>> even
> >>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather) is
> >>>>> the W3C semantic web, but he was thinking of database design and
> query way back.
> >>>>>
> >>>>> Apart from some additions to Isis, another interesting aspect is
> >>>>> looking
> >>>> at
> >>>>> the mapping to data-stores, using a graph database of one sort or
> >>>>> another to avoid the complexity of ORM is a simple answer to that
> >>>>> I feel. Again, the hardening of a design might mean manually
> >>>>> adding a few overrides of default ORM mapping rules into some
> >>>>> behavioural-model classes, that
> >>>> extend
> >>>>> generated data-model classes (getters and setters only).
> >>>>>
> >>>>>
> >>>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_main
> >>>>> .html
> >>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
> >>>>> [3]
> >>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schema
> >>>> tool.html
> >>>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
> >>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
> >>>>> [6]http://www.opendap.org/
> >>>>> [7]http://www.opencrx.org/
> >>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
> >>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
> >>>>>
> >>>>>
> >>>>>
> >>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
> >>>>>
> >>>>> 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.
> >>>>>
> >>>>> 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?
> >>>>>
> >>>>> Thanks,
> >>>>>
> >>>>> Oscar
> >>>>>
> >>>>>
> >>>>> [1] http://roomodeler.com
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> This email and any attachment thereto are confidential and
> priviledged.
> >>>> if
> >>>>> you have received it in error, please delete immediately and
> >>>>> notify the sender. Do not disclose, copy, circulate or in any way
> >>>>> use it. The information contained therein is for the address only,
> >>>>> if you reply on
> >>>> it,
> >>>>> its at your own risk. Emails are not guaranteed to be secure or
> >>>>> error
> >>>> free,
> >>>>> the message and any attachment could be intercepted, corrupted,
> >>>>> lost, delayed, incomplete or ammended. Computer warehouse group
> >>>>> and its
> >>>> divisions
> >>>>> do not accept liability for damage caused by this email or any
> >>>> attachment.
> >>>>> The message you tried to print is protected with Information
> >>>>> Rights Management. You don't have the necessary user rights to
> >>>>> print the
> >>>> message.
> >>>>>
> >>>>>
> >>>>> This email and any attachment thereto are confidential and
> priviledged.
> >>>> if
> >>>>> you have received it in error, please delete immediately and
> >>>>> notify the sender. Do not disclose, copy, circulate or in any way
> >>>>> use it. The information contained therein is for the address only,
> >>>>> if you reply on
> >>>> it,
> >>>>> its at your own risk. Emails are not guaranteed to be secure or
> >>>>> error
> >>>> free,
> >>>>> the message and any attachment could be intercepted, corrupted,
> >>>>> lost, delayed, incomplete or ammended. Computer warehouse group
> >>>>> and its
> >>>> divisions
> >>>>> do not accept liability for damage caused by this email or any
> >>>> attachment.
> >>>>> The message you tried to print is protected with Information
> >>>>> Rights Management. You don't have the necessary user rights to
> >>>>> print the
> >>>> message.
> >>>>
> >
>
>
>
> ---
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
>
>

Re: Thinking about re-introducing UML in our workflow

Posted by Óscar Bou - GOVERTIS <o....@govertis.com>.
For you to know.

I was just reading about “AgileJ” [1] (the video at [2] is excellent. It perfectly summarizes the points-of-view expressed here about the evolution last years of UML usage in dev teams).

But I’ve also found the Papyrus Eclipse project [3]. Seems to be really alive (there has been a conference this month).

And It also seems to have full code synch from Java … See [4].

Any experience out there with Papyrus? 
Could it be a good match for Apache Isis?


Cheers,

Oscar


[1] http://www.agilej.com
[2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0
[3] http://www.eclipse.org/papyrus/
[4] https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diagrams-ordinary-java-developers




> El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS <o....@govertis.com> escribió:
> 
> 
> Hi all.
> 
> First of all, the good news for all romantics: 
> 
> Together is still alive !!! See [1].
> 
> [2] says it fully supports Eclipse.
> 
> Really interesting, Jeroen, introducing Lombok.
> Look how clear and concise is the Aggregate in [3] expressed in C#.
> 
> 
> For me, my immediate need is to have a visual depiction of the new features developers must work on.
> So an Agile diagramming tool would be ok for it.
> 
> I’m used to drag-n-drop like interfaces, and I'm there are “visual” tools out there that support plantuml, so it would be ok to be based on it.
> 
> Also agree that the model "must be" the code (and not “the code is the model” MDA approach, despite my experience with Bold for Delphi/Capable Objects was REALLY really good).
> 
> 
> 
> Regards,
> 
> Oscar
> 
> 
> 
> [1] http://www.borland.com/en-GB/Products/Requirements-Management/Together
> [2[ http://www.borland.com/en-GB/Products/Requirements-Management/Together/Plugins-and-integrations
> [3] https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggregates/Register/RegistrationState.cs
> 
> 
> 
>> El 16 nov 2015, a las 10:57, Mike Burton <mi...@mycosystems.co.uk> escribió:
>> 
>> Hi Jeroen,
>> 
>> My experience is similar. I was always suspicious of the "code generation " approach, inevitably gives 2 "sources" that get out of step. 
>> 
>> The only good exception I saw was TogetherJ where "the code is the model"
>> 
>> Best Regards
>> 
>> Mike Burton
>> (Sent from my iPhone)
>> 
>> 
>> 
>>> On 15 Nov 2015, at 23:44, Jeroen van der Wal <je...@stromboli.it> wrote:
>>> 
>>> All very interesting!
>>> 
>>> Over the years I tried numerous modelling tools and only the low-tech ones
>>> stayed: drawing on a whiteboard, using coloured index cards [1] (learned
>>> from Dan) or using a simple online tool like yUML [2]. And I only use them
>>> to communicate the broad picture or for explorative purposes.
>>> 
>>> I gave up on code generators: I always ended up fighting the generated
>>> code. And the impression that they support rapid application development
>>> proved wrong: at the point where you had to work on more advanced stuff
>>> velocity came to a halt. If an application is built on lots of repeating
>>> code snippets then my conclusion is that the underlying framework is not
>>> good enough.
>>> 
>>> I love source code that tells the story of the application. Where
>>> everything that could be left out of the code is eliminated. Very DRY,
>>> convention over code. This has drawn me to Naked Objects and made me decide
>>> to spend my time on Apache Isis.
>>> 
>>> As you imagine by now I would not take the route from diagram to code. For
>>> me the code editor is the sole canvas to express your ideas. And I think
>>> that if we keep improving Apache Isis on a few points there will never be a
>>> need for an additional tool:
>>> 
>>> 1) Reduce boilerplate and make writing an application skeleton as easy as
>>> the easiest modelling tool. This has the advantage that a software
>>> architect can sketch the application and leave it to his developers to fill
>>> in details. But everyone is working on the same code base using the same
>>> tools. In this area we started using Lombok. Also Dan had an idea to make
>>> it possible to create your own custom annotations which can combine
>>> multiple annotations.
>>> 
>>> 2) Visualise the meta model. With contributions and mixins the application
>>> logic can come from anywhere. This is architecturally sane but makes an
>>> application hard to grasp. It would love to see a maven plugin that
>>> generates appealing documentation from the meta model of an Isis
>>> application.
>>> 
>>> 3) When taking the visualisation concept a bit further it would be very
>>> powerful to explore and navigate the meta model within the IDE. Any plugin
>>> developers here?
>>> 
>>> That's just my two cents.
>>> 
>>> Cheers,
>>> 
>>> Jeroen
>>> 
>>> 
>>>> On 15 November 2015 at 21:01, David Tildesley <da...@yahoo.co.nz> wrote:
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
>>>> dan@haywood-associates.co.uk> wrote:
>>>>> Thanks for this James.
>>>> 
>>>>> My observation re: using the (relational) data model as the initial input
>>>>> though is that this is likely to lead to rather coupled code, ultimately
>>>>> not maintainable.
>>>> 
>>>> Couldn't agree more.
>>>> 
>>>> 
>>>>> So, while going from the database up to the domain is fine for a single
>>>>> module of 10 or so entities, any app that is bigger than this really
>>>> should
>>>>> be modelled from the domain down to the database.
>>>> 
>>>> Quite right. Any business app that is non trivial should be domain
>>>> modelled.
>>>> 
>>>> David.
>>>> 
>>>>> Dan
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> On 14 November 2015 at 15:00, James Agada <Ja...@cwg-plc.com> wrote:
>>>>> 
>>>>> I actually tested out using Telosys to generate an isis app from database
>>>>> definition. It did work but of course it meant i did the ER first. I used
>>>>> MySQL, did the ER modelling on the workbench, forward engineered into the
>>>>> database and then used telosys scripts to generate a functional Isis
>>>>> application. Did it as a PoC but we will come back to it later.
>>>>> James Agada
>>>>> Chief Technology Officer
>>>>> 
>>>>> 
>>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS <o....@govertis.com>
>>>>> wrote:
>>>>> 
>>>>> Many thanks, Stephen for this detailed explanation.
>>>>> 
>>>>> The problem I’m facing is that I intent to communicate the developers
>>>>> what’s the model to implement.
>>>>> 
>>>>> And I usually don’t find big mistakes in action code, but what mostly
>>>>> forces us to refactor is miscommunication regarding the Domain Entities,
>>>>> attributes and actions names, including typos  (think my team speak
>>>> Spanish
>>>>> but they’re modeling in English) or wrong or missing relationships
>>>> between
>>>>> those entities.
>>>>> 
>>>>> All that could be avoided by firstly agree in a common UML Class Diagram.
>>>>> 
>>>>> If it can potentially generate automatically the Java skeleton with
>>>> Apache
>>>>> Isis annotations is a big plus, as it will avoid mistakes when moving
>>>> from
>>>>> design to implementation.
>>>>> 
>>>>> And if it could potentially reverse engineer Java (incl. Apache Isis
>>>>> idioms) a really good feature.
>>>>> 
>>>>> Any ideas about what tools could best adapt to the workflow (that could
>>>> be
>>>>> potentially customized to cover the last 2 whishes) ?
>>>>> 
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> Oscar
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> El 14 nov 2015, a las 2:03, Stephen Cameron <st...@gmail.com>
>>>>> escribió:
>>>>> 
>>>>> Hi Oscar,
>>>>> 
>>>>> In a qualified way I think your idea has merit. I have never used UML for
>>>>> design, but a few years ago I decided to take a good look at it and see
>>>> it
>>>>> if was useful. The idea of being able to draw a diagram and generate code
>>>>> from it seemed sensible, after all that is what is done by most other
>>>>> 'design' professions, such as building architects and engineers.
>>>>> 
>>>>> To cut a long story short I realised after some reading that it was not
>>>>> that simple, and that OO languages themselves are really all that are
>>>>> needed for the process of designing a system. This is "the code is the
>>>>> design" school of thought, mainly attributed to Jack Reeves [1].
>>>>> 
>>>>> I found that  keeping code and UML diagrams in sync in a top-down 'UML to
>>>>> code' design process will always be problematic (maybe why there are
>>>>> apparently no open-source tools that claim to do this). Then I read about
>>>>> Domain Driven Design which seemed to agree with this premise, and from
>>>>> there found Apache Isis via Dan's  book.
>>>>> 
>>>>> So now for me UML class diagrams do have an after the fact use for
>>>>> documentation purposes and if a solution implement was capable of that
>>>>> reverse generation of diagrams from code it would be a good thing to
>>>> have.
>>>>> Entity Framework can do this, its their "code first" approach.
>>>>> 
>>>>> Given that the-code-is-the-design is true, I think that UML class
>>>> diagrams
>>>>> real main value is as a data model, the question then is why not use a
>>>>> purely data-modeling tool and generate Java classes off it. Then the
>>>>> diagrams 'designed' could have a usefulness to programmers and to system
>>>>> users, something like those created SchemaSpy [2]  for example.
>>>>> 
>>>>> There are already useful and free Java class generation (binding) tools
>>>>> from off data-models, of one sort or another, such as JAXB, DataNucleus'
>>>>> schemaGen[3], even CAM [4].
>>>>> 
>>>>> Here is my vision of what I think would be really useful: to have a
>>>> design
>>>>> tool that can be used by non-programmers to create a simple data-model,
>>>> and
>>>>> then to have that create a working Apache Isis based CRUD system. This
>>>>> could serve your purpose (I guess) and also find a wider use.
>>>>> 
>>>>> The means of achieving this would I think, require something like the
>>>>> "dynamic classes" in available in the Moxy framework [5], that is, map
>>>>> based so that no Java class compilation is needed. Instead, a data-model
>>>>> configuration file (a schema) is read-in to configure the system. This is
>>>>> not a strange idea, in fact its the data-driven programming paradigm that
>>>>> is the basis of the original browser concept (before it was turned into
>>>> OO
>>>>> application framework via addition of Javascript). In the browser the
>>>> data
>>>>> is HTML that is turned into an in-memory Document Object Model (DOM) for
>>>>> rendering.
>>>>> 
>>>>> As a blended solution between Apache Isis as it is currently (heavily
>>>>> influence by naked objects, an OO modelling based approach for creating
>>>>> custom *behavioural* applications) and this additional mainly data
>>>> focused
>>>>> approach, I think a programmer developing a business application would
>>>>> start off with these dymanic classes and then in time 'harden' the design
>>>>> by generating and compiling real Java classes from off the model. [A
>>>>> non-programmer wouldn't get past the first design 'phase' usually, but
>>>>> still end up with a useable UI.]
>>>>> 
>>>>> In addition, by having separate abstract model-generated classes, that
>>>> can
>>>>> be overwritten if the data-model changes, and concrete implementation
>>>>> classes, where you put all your behavioural code and that are never
>>>>> overwritten, you get close to the 'round-tripping' that would seem to me
>>>> to
>>>>> be the only valid way to use UML *for design*. I think this is how the
>>>>> Eclipse Ecore models work, that there are model classes and
>>>> implementation
>>>>> classes that extend the model classes. The IDE will often warn you when
>>>>> these two sub-models have inconsistencies. This duality also offers an
>>>>> alternative means to achieving the goals of Lombok it would seem.
>>>>> 
>>>>> Of course, sitting in the middle of all this is a meta-model, that
>>>> creates
>>>>> the dynamic classes, generates and compiles the 'hardened' model classes
>>>>> (when used) and maps either of these means to a UI 'viewer'.
>>>>> 
>>>>> For such data-management frameworks, the complicated aspect isn't so much
>>>>> going from the designed data-model to Java, there are lots of examples of
>>>>> that, instead its being able to have also, a dynamic query capability. So
>>>>> that a person unfamiliar with the dataset, can, via its data-model, start
>>>>> querying it (and also maybe integrating it in real-time with other online
>>>>> resources, the idea of a data-browser appeals!).
>>>>> 
>>>>> In the science domain, where I worked for a few years building
>>>>> data-management infrastructure, there are highly advanced systems for
>>>>> online data access and querying e.g. [6], but at the same time a common
>>>>> tool used for small databases is still Microsoft Access. Access has many
>>>>> strengths as a desktop database, including form generation and also
>>>> dynamic
>>>>> query-by-form, but the problems arise when you want to make such data
>>>>> publicly available, in the sense of being findable and searchable in real
>>>>> time. You might as well have used a web-based system from the start and
>>>>> then been able to easily open it to the world at the appropriate time.
>>>>> 
>>>>> Having though about this problem for a number of years and spent alot of
>>>>> time working on a XForms based solution as well. I'd be very interested
>>>> to
>>>>> see Apache Isis broaden its scope to offer what I have described, in fact
>>>>> its doesn't seem to need very much more than what is already present in
>>>> the
>>>>> Isis meta-model and Wicket viewer. The Restful objects support already
>>>>> provides a generic 'generated' web programming interface.
>>>>> 
>>>>> In summary I know that there are some Java projects that make very
>>>>> effective use of a Model Driven Architecture approach (e.g [7]), but I am
>>>>> now not sure that UML is the 'be-all-and-end-all' basis of that.
>>>> Actually I
>>>>> think that data-models are the basis of most of MDAs efficiency dividends
>>>>> and that there are other approaches, specifically that conceptual models
>>>>> offer more versatility in terms of who and how you can make use of them.
>>>>> This thinking goes way back, such as Sowa's Conceptual Graphs [8] and
>>>> even
>>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather) is the W3C
>>>>> semantic web, but he was thinking of database design and query way back.
>>>>> 
>>>>> Apart from some additions to Isis, another interesting aspect is looking
>>>> at
>>>>> the mapping to data-stores, using a graph database of one sort or another
>>>>> to avoid the complexity of ORM is a simple answer to that I feel. Again,
>>>>> the hardening of a design might mean manually adding a few overrides of
>>>>> default ORM mapping rules into some behavioural-model classes, that
>>>> extend
>>>>> generated data-model classes (getters and setters only).
>>>>> 
>>>>> 
>>>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_main.html
>>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
>>>>> [3]
>>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html
>>>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
>>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
>>>>> [6]http://www.opendap.org/
>>>>> [7]http://www.opencrx.org/
>>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
>>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>>>>> 
>>>>> 
>>>>> 
>>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
>>>>> 
>>>>> 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.
>>>>> 
>>>>> 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?
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> Oscar
>>>>> 
>>>>> 
>>>>> [1] http://roomodeler.com
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> This email and any attachment thereto are confidential and priviledged.
>>>> if
>>>>> you have received it in error, please delete immediately and notify the
>>>>> sender. Do not disclose, copy, circulate or in any way use it. The
>>>>> information contained therein is for the address only, if you reply on
>>>> it,
>>>>> its at your own risk. Emails are not guaranteed to be secure or error
>>>> free,
>>>>> the message and any attachment could be intercepted, corrupted, lost,
>>>>> delayed, incomplete or ammended. Computer warehouse group and its
>>>> divisions
>>>>> do not accept liability for damage caused by this email or any
>>>> attachment.
>>>>> The message you tried to print is protected with Information Rights
>>>>> Management. You don't have the necessary user rights to print the
>>>> message.
>>>>> 
>>>>> 
>>>>> This email and any attachment thereto are confidential and priviledged.
>>>> if
>>>>> you have received it in error, please delete immediately and notify the
>>>>> sender. Do not disclose, copy, circulate or in any way use it. The
>>>>> information contained therein is for the address only, if you reply on
>>>> it,
>>>>> its at your own risk. Emails are not guaranteed to be secure or error
>>>> free,
>>>>> the message and any attachment could be intercepted, corrupted, lost,
>>>>> delayed, incomplete or ammended. Computer warehouse group and its
>>>> divisions
>>>>> do not accept liability for damage caused by this email or any
>>>> attachment.
>>>>> The message you tried to print is protected with Information Rights
>>>>> Management. You don't have the necessary user rights to print the
>>>> message.
>>>> 
> 


Re: Thinking about re-introducing UML in our workflow

Posted by Óscar Bou - GOVERTIS <o....@govertis.com>.
Hi all.

First of all, the good news for all romantics: 

Together is still alive !!! See [1].

[2] says it fully supports Eclipse.

Really interesting, Jeroen, introducing Lombok.
Look how clear and concise is the Aggregate in [3] expressed in C#.


For me, my immediate need is to have a visual depiction of the new features developers must work on.
So an Agile diagramming tool would be ok for it.

I’m used to drag-n-drop like interfaces, and I'm there are “visual” tools out there that support plantuml, so it would be ok to be based on it.

Also agree that the model "must be" the code (and not “the code is the model” MDA approach, despite my experience with Bold for Delphi/Capable Objects was REALLY really good).



Regards,

Oscar



[1] http://www.borland.com/en-GB/Products/Requirements-Management/Together
[2[ http://www.borland.com/en-GB/Products/Requirements-Management/Together/Plugins-and-integrations
[3] https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggregates/Register/RegistrationState.cs



> El 16 nov 2015, a las 10:57, Mike Burton <mi...@mycosystems.co.uk> escribió:
> 
> Hi Jeroen,
> 
> My experience is similar. I was always suspicious of the "code generation " approach, inevitably gives 2 "sources" that get out of step. 
> 
> The only good exception I saw was TogetherJ where "the code is the model"
> 
> Best Regards
> 
> Mike Burton
> (Sent from my iPhone)
> 
> 
> 
>> On 15 Nov 2015, at 23:44, Jeroen van der Wal <je...@stromboli.it> wrote:
>> 
>> All very interesting!
>> 
>> Over the years I tried numerous modelling tools and only the low-tech ones
>> stayed: drawing on a whiteboard, using coloured index cards [1] (learned
>> from Dan) or using a simple online tool like yUML [2]. And I only use them
>> to communicate the broad picture or for explorative purposes.
>> 
>> I gave up on code generators: I always ended up fighting the generated
>> code. And the impression that they support rapid application development
>> proved wrong: at the point where you had to work on more advanced stuff
>> velocity came to a halt. If an application is built on lots of repeating
>> code snippets then my conclusion is that the underlying framework is not
>> good enough.
>> 
>> I love source code that tells the story of the application. Where
>> everything that could be left out of the code is eliminated. Very DRY,
>> convention over code. This has drawn me to Naked Objects and made me decide
>> to spend my time on Apache Isis.
>> 
>> As you imagine by now I would not take the route from diagram to code. For
>> me the code editor is the sole canvas to express your ideas. And I think
>> that if we keep improving Apache Isis on a few points there will never be a
>> need for an additional tool:
>> 
>> 1) Reduce boilerplate and make writing an application skeleton as easy as
>> the easiest modelling tool. This has the advantage that a software
>> architect can sketch the application and leave it to his developers to fill
>> in details. But everyone is working on the same code base using the same
>> tools. In this area we started using Lombok. Also Dan had an idea to make
>> it possible to create your own custom annotations which can combine
>> multiple annotations.
>> 
>> 2) Visualise the meta model. With contributions and mixins the application
>> logic can come from anywhere. This is architecturally sane but makes an
>> application hard to grasp. It would love to see a maven plugin that
>> generates appealing documentation from the meta model of an Isis
>> application.
>> 
>> 3) When taking the visualisation concept a bit further it would be very
>> powerful to explore and navigate the meta model within the IDE. Any plugin
>> developers here?
>> 
>> That's just my two cents.
>> 
>> Cheers,
>> 
>> Jeroen
>> 
>> 
>>> On 15 November 2015 at 21:01, David Tildesley <da...@yahoo.co.nz> wrote:
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
>>> dan@haywood-associates.co.uk> wrote:
>>>> Thanks for this James.
>>> 
>>>> My observation re: using the (relational) data model as the initial input
>>>> though is that this is likely to lead to rather coupled code, ultimately
>>>> not maintainable.
>>> 
>>> Couldn't agree more.
>>> 
>>> 
>>>> So, while going from the database up to the domain is fine for a single
>>>> module of 10 or so entities, any app that is bigger than this really
>>> should
>>>> be modelled from the domain down to the database.
>>> 
>>> Quite right. Any business app that is non trivial should be domain
>>> modelled.
>>> 
>>> David.
>>> 
>>>> Dan
>>> 
>>> 
>>> 
>>> 
>>> 
>>>> On 14 November 2015 at 15:00, James Agada <Ja...@cwg-plc.com> wrote:
>>>> 
>>>> I actually tested out using Telosys to generate an isis app from database
>>>> definition. It did work but of course it meant i did the ER first. I used
>>>> MySQL, did the ER modelling on the workbench, forward engineered into the
>>>> database and then used telosys scripts to generate a functional Isis
>>>> application. Did it as a PoC but we will come back to it later.
>>>> James Agada
>>>> Chief Technology Officer
>>>> 
>>>> 
>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS <o....@govertis.com>
>>>> wrote:
>>>> 
>>>> Many thanks, Stephen for this detailed explanation.
>>>> 
>>>> The problem I’m facing is that I intent to communicate the developers
>>>> what’s the model to implement.
>>>> 
>>>> And I usually don’t find big mistakes in action code, but what mostly
>>>> forces us to refactor is miscommunication regarding the Domain Entities,
>>>> attributes and actions names, including typos  (think my team speak
>>> Spanish
>>>> but they’re modeling in English) or wrong or missing relationships
>>> between
>>>> those entities.
>>>> 
>>>> All that could be avoided by firstly agree in a common UML Class Diagram.
>>>> 
>>>> If it can potentially generate automatically the Java skeleton with
>>> Apache
>>>> Isis annotations is a big plus, as it will avoid mistakes when moving
>>> from
>>>> design to implementation.
>>>> 
>>>> And if it could potentially reverse engineer Java (incl. Apache Isis
>>>> idioms) a really good feature.
>>>> 
>>>> Any ideas about what tools could best adapt to the workflow (that could
>>> be
>>>> potentially customized to cover the last 2 whishes) ?
>>>> 
>>>> 
>>>> Thanks,
>>>> 
>>>> Oscar
>>>> 
>>>> 
>>>> 
>>>> 
>>>> El 14 nov 2015, a las 2:03, Stephen Cameron <st...@gmail.com>
>>>> escribió:
>>>> 
>>>> Hi Oscar,
>>>> 
>>>> In a qualified way I think your idea has merit. I have never used UML for
>>>> design, but a few years ago I decided to take a good look at it and see
>>> it
>>>> if was useful. The idea of being able to draw a diagram and generate code
>>>> from it seemed sensible, after all that is what is done by most other
>>>> 'design' professions, such as building architects and engineers.
>>>> 
>>>> To cut a long story short I realised after some reading that it was not
>>>> that simple, and that OO languages themselves are really all that are
>>>> needed for the process of designing a system. This is "the code is the
>>>> design" school of thought, mainly attributed to Jack Reeves [1].
>>>> 
>>>> I found that  keeping code and UML diagrams in sync in a top-down 'UML to
>>>> code' design process will always be problematic (maybe why there are
>>>> apparently no open-source tools that claim to do this). Then I read about
>>>> Domain Driven Design which seemed to agree with this premise, and from
>>>> there found Apache Isis via Dan's  book.
>>>> 
>>>> So now for me UML class diagrams do have an after the fact use for
>>>> documentation purposes and if a solution implement was capable of that
>>>> reverse generation of diagrams from code it would be a good thing to
>>> have.
>>>> Entity Framework can do this, its their "code first" approach.
>>>> 
>>>> Given that the-code-is-the-design is true, I think that UML class
>>> diagrams
>>>> real main value is as a data model, the question then is why not use a
>>>> purely data-modeling tool and generate Java classes off it. Then the
>>>> diagrams 'designed' could have a usefulness to programmers and to system
>>>> users, something like those created SchemaSpy [2]  for example.
>>>> 
>>>> There are already useful and free Java class generation (binding) tools
>>>> from off data-models, of one sort or another, such as JAXB, DataNucleus'
>>>> schemaGen[3], even CAM [4].
>>>> 
>>>> Here is my vision of what I think would be really useful: to have a
>>> design
>>>> tool that can be used by non-programmers to create a simple data-model,
>>> and
>>>> then to have that create a working Apache Isis based CRUD system. This
>>>> could serve your purpose (I guess) and also find a wider use.
>>>> 
>>>> The means of achieving this would I think, require something like the
>>>> "dynamic classes" in available in the Moxy framework [5], that is, map
>>>> based so that no Java class compilation is needed. Instead, a data-model
>>>> configuration file (a schema) is read-in to configure the system. This is
>>>> not a strange idea, in fact its the data-driven programming paradigm that
>>>> is the basis of the original browser concept (before it was turned into
>>> OO
>>>> application framework via addition of Javascript). In the browser the
>>> data
>>>> is HTML that is turned into an in-memory Document Object Model (DOM) for
>>>> rendering.
>>>> 
>>>> As a blended solution between Apache Isis as it is currently (heavily
>>>> influence by naked objects, an OO modelling based approach for creating
>>>> custom *behavioural* applications) and this additional mainly data
>>> focused
>>>> approach, I think a programmer developing a business application would
>>>> start off with these dymanic classes and then in time 'harden' the design
>>>> by generating and compiling real Java classes from off the model. [A
>>>> non-programmer wouldn't get past the first design 'phase' usually, but
>>>> still end up with a useable UI.]
>>>> 
>>>> In addition, by having separate abstract model-generated classes, that
>>> can
>>>> be overwritten if the data-model changes, and concrete implementation
>>>> classes, where you put all your behavioural code and that are never
>>>> overwritten, you get close to the 'round-tripping' that would seem to me
>>> to
>>>> be the only valid way to use UML *for design*. I think this is how the
>>>> Eclipse Ecore models work, that there are model classes and
>>> implementation
>>>> classes that extend the model classes. The IDE will often warn you when
>>>> these two sub-models have inconsistencies. This duality also offers an
>>>> alternative means to achieving the goals of Lombok it would seem.
>>>> 
>>>> Of course, sitting in the middle of all this is a meta-model, that
>>> creates
>>>> the dynamic classes, generates and compiles the 'hardened' model classes
>>>> (when used) and maps either of these means to a UI 'viewer'.
>>>> 
>>>> For such data-management frameworks, the complicated aspect isn't so much
>>>> going from the designed data-model to Java, there are lots of examples of
>>>> that, instead its being able to have also, a dynamic query capability. So
>>>> that a person unfamiliar with the dataset, can, via its data-model, start
>>>> querying it (and also maybe integrating it in real-time with other online
>>>> resources, the idea of a data-browser appeals!).
>>>> 
>>>> In the science domain, where I worked for a few years building
>>>> data-management infrastructure, there are highly advanced systems for
>>>> online data access and querying e.g. [6], but at the same time a common
>>>> tool used for small databases is still Microsoft Access. Access has many
>>>> strengths as a desktop database, including form generation and also
>>> dynamic
>>>> query-by-form, but the problems arise when you want to make such data
>>>> publicly available, in the sense of being findable and searchable in real
>>>> time. You might as well have used a web-based system from the start and
>>>> then been able to easily open it to the world at the appropriate time.
>>>> 
>>>> Having though about this problem for a number of years and spent alot of
>>>> time working on a XForms based solution as well. I'd be very interested
>>> to
>>>> see Apache Isis broaden its scope to offer what I have described, in fact
>>>> its doesn't seem to need very much more than what is already present in
>>> the
>>>> Isis meta-model and Wicket viewer. The Restful objects support already
>>>> provides a generic 'generated' web programming interface.
>>>> 
>>>> In summary I know that there are some Java projects that make very
>>>> effective use of a Model Driven Architecture approach (e.g [7]), but I am
>>>> now not sure that UML is the 'be-all-and-end-all' basis of that.
>>> Actually I
>>>> think that data-models are the basis of most of MDAs efficiency dividends
>>>> and that there are other approaches, specifically that conceptual models
>>>> offer more versatility in terms of who and how you can make use of them.
>>>> This thinking goes way back, such as Sowa's Conceptual Graphs [8] and
>>> even
>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather) is the W3C
>>>> semantic web, but he was thinking of database design and query way back.
>>>> 
>>>> Apart from some additions to Isis, another interesting aspect is looking
>>> at
>>>> the mapping to data-stores, using a graph database of one sort or another
>>>> to avoid the complexity of ORM is a simple answer to that I feel. Again,
>>>> the hardening of a design might mean manually adding a few overrides of
>>>> default ORM mapping rules into some behavioural-model classes, that
>>> extend
>>>> generated data-model classes (getters and setters only).
>>>> 
>>>> 
>>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_main.html
>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
>>>> [3]
>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html
>>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
>>>> [6]http://www.opendap.org/
>>>> [7]http://www.opencrx.org/
>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>>>> 
>>>> 
>>>> 
>>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
>>>> 
>>>> 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.
>>>> 
>>>> 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?
>>>> 
>>>> Thanks,
>>>> 
>>>> Oscar
>>>> 
>>>> 
>>>> [1] http://roomodeler.com
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> This email and any attachment thereto are confidential and priviledged.
>>> if
>>>> you have received it in error, please delete immediately and notify the
>>>> sender. Do not disclose, copy, circulate or in any way use it. The
>>>> information contained therein is for the address only, if you reply on
>>> it,
>>>> its at your own risk. Emails are not guaranteed to be secure or error
>>> free,
>>>> the message and any attachment could be intercepted, corrupted, lost,
>>>> delayed, incomplete or ammended. Computer warehouse group and its
>>> divisions
>>>> do not accept liability for damage caused by this email or any
>>> attachment.
>>>> The message you tried to print is protected with Information Rights
>>>> Management. You don't have the necessary user rights to print the
>>> message.
>>>> 
>>>> 
>>>> This email and any attachment thereto are confidential and priviledged.
>>> if
>>>> you have received it in error, please delete immediately and notify the
>>>> sender. Do not disclose, copy, circulate or in any way use it. The
>>>> information contained therein is for the address only, if you reply on
>>> it,
>>>> its at your own risk. Emails are not guaranteed to be secure or error
>>> free,
>>>> the message and any attachment could be intercepted, corrupted, lost,
>>>> delayed, incomplete or ammended. Computer warehouse group and its
>>> divisions
>>>> do not accept liability for damage caused by this email or any
>>> attachment.
>>>> The message you tried to print is protected with Information Rights
>>>> Management. You don't have the necessary user rights to print the
>>> message.
>>> 


Re: Thinking about re-introducing UML in our workflow

Posted by Mike Burton <mi...@mycosystems.co.uk>.
Hi Jeroen,

My experience is similar. I was always suspicious of the "code generation " approach, inevitably gives 2 "sources" that get out of step. 

The only good exception I saw was TogetherJ where "the code is the model"

Best Regards

Mike Burton
(Sent from my iPhone)



> On 15 Nov 2015, at 23:44, Jeroen van der Wal <je...@stromboli.it> wrote:
> 
> All very interesting!
> 
> Over the years I tried numerous modelling tools and only the low-tech ones
> stayed: drawing on a whiteboard, using coloured index cards [1] (learned
> from Dan) or using a simple online tool like yUML [2]. And I only use them
> to communicate the broad picture or for explorative purposes.
> 
> I gave up on code generators: I always ended up fighting the generated
> code. And the impression that they support rapid application development
> proved wrong: at the point where you had to work on more advanced stuff
> velocity came to a halt. If an application is built on lots of repeating
> code snippets then my conclusion is that the underlying framework is not
> good enough.
> 
> I love source code that tells the story of the application. Where
> everything that could be left out of the code is eliminated. Very DRY,
> convention over code. This has drawn me to Naked Objects and made me decide
> to spend my time on Apache Isis.
> 
> As you imagine by now I would not take the route from diagram to code. For
> me the code editor is the sole canvas to express your ideas. And I think
> that if we keep improving Apache Isis on a few points there will never be a
> need for an additional tool:
> 
> 1) Reduce boilerplate and make writing an application skeleton as easy as
> the easiest modelling tool. This has the advantage that a software
> architect can sketch the application and leave it to his developers to fill
> in details. But everyone is working on the same code base using the same
> tools. In this area we started using Lombok. Also Dan had an idea to make
> it possible to create your own custom annotations which can combine
> multiple annotations.
> 
> 2) Visualise the meta model. With contributions and mixins the application
> logic can come from anywhere. This is architecturally sane but makes an
> application hard to grasp. It would love to see a maven plugin that
> generates appealing documentation from the meta model of an Isis
> application.
> 
> 3) When taking the visualisation concept a bit further it would be very
> powerful to explore and navigate the meta model within the IDE. Any plugin
> developers here?
> 
> That's just my two cents.
> 
> Cheers,
> 
> Jeroen
> 
> 
>> On 15 November 2015 at 21:01, David Tildesley <da...@yahoo.co.nz> wrote:
>> 
>> 
>> 
>> 
>> 
>> 
>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
>> dan@haywood-associates.co.uk> wrote:
>>> Thanks for this James.
>> 
>>> My observation re: using the (relational) data model as the initial input
>>> though is that this is likely to lead to rather coupled code, ultimately
>>> not maintainable.
>> 
>> Couldn't agree more.
>> 
>> 
>>> So, while going from the database up to the domain is fine for a single
>>> module of 10 or so entities, any app that is bigger than this really
>> should
>>> be modelled from the domain down to the database.
>> 
>> Quite right. Any business app that is non trivial should be domain
>> modelled.
>> 
>> David.
>> 
>>> Dan
>> 
>> 
>> 
>> 
>> 
>>> On 14 November 2015 at 15:00, James Agada <Ja...@cwg-plc.com> wrote:
>>> 
>>> I actually tested out using Telosys to generate an isis app from database
>>> definition. It did work but of course it meant i did the ER first. I used
>>> MySQL, did the ER modelling on the workbench, forward engineered into the
>>> database and then used telosys scripts to generate a functional Isis
>>> application. Did it as a PoC but we will come back to it later.
>>> James Agada
>>> Chief Technology Officer
>>> 
>>> 
>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS <o....@govertis.com>
>>> wrote:
>>> 
>>> Many thanks, Stephen for this detailed explanation.
>>> 
>>> The problem I’m facing is that I intent to communicate the developers
>>> what’s the model to implement.
>>> 
>>> And I usually don’t find big mistakes in action code, but what mostly
>>> forces us to refactor is miscommunication regarding the Domain Entities,
>>> attributes and actions names, including typos  (think my team speak
>> Spanish
>>> but they’re modeling in English) or wrong or missing relationships
>> between
>>> those entities.
>>> 
>>> All that could be avoided by firstly agree in a common UML Class Diagram.
>>> 
>>> If it can potentially generate automatically the Java skeleton with
>> Apache
>>> Isis annotations is a big plus, as it will avoid mistakes when moving
>> from
>>> design to implementation.
>>> 
>>> And if it could potentially reverse engineer Java (incl. Apache Isis
>>> idioms) a really good feature.
>>> 
>>> Any ideas about what tools could best adapt to the workflow (that could
>> be
>>> potentially customized to cover the last 2 whishes) ?
>>> 
>>> 
>>> Thanks,
>>> 
>>> Oscar
>>> 
>>> 
>>> 
>>> 
>>> El 14 nov 2015, a las 2:03, Stephen Cameron <st...@gmail.com>
>>> escribió:
>>> 
>>> Hi Oscar,
>>> 
>>> In a qualified way I think your idea has merit. I have never used UML for
>>> design, but a few years ago I decided to take a good look at it and see
>> it
>>> if was useful. The idea of being able to draw a diagram and generate code
>>> from it seemed sensible, after all that is what is done by most other
>>> 'design' professions, such as building architects and engineers.
>>> 
>>> To cut a long story short I realised after some reading that it was not
>>> that simple, and that OO languages themselves are really all that are
>>> needed for the process of designing a system. This is "the code is the
>>> design" school of thought, mainly attributed to Jack Reeves [1].
>>> 
>>> I found that  keeping code and UML diagrams in sync in a top-down 'UML to
>>> code' design process will always be problematic (maybe why there are
>>> apparently no open-source tools that claim to do this). Then I read about
>>> Domain Driven Design which seemed to agree with this premise, and from
>>> there found Apache Isis via Dan's  book.
>>> 
>>> So now for me UML class diagrams do have an after the fact use for
>>> documentation purposes and if a solution implement was capable of that
>>> reverse generation of diagrams from code it would be a good thing to
>> have.
>>> Entity Framework can do this, its their "code first" approach.
>>> 
>>> Given that the-code-is-the-design is true, I think that UML class
>> diagrams
>>> real main value is as a data model, the question then is why not use a
>>> purely data-modeling tool and generate Java classes off it. Then the
>>> diagrams 'designed' could have a usefulness to programmers and to system
>>> users, something like those created SchemaSpy [2]  for example.
>>> 
>>> There are already useful and free Java class generation (binding) tools
>>> from off data-models, of one sort or another, such as JAXB, DataNucleus'
>>> schemaGen[3], even CAM [4].
>>> 
>>> Here is my vision of what I think would be really useful: to have a
>> design
>>> tool that can be used by non-programmers to create a simple data-model,
>> and
>>> then to have that create a working Apache Isis based CRUD system. This
>>> could serve your purpose (I guess) and also find a wider use.
>>> 
>>> The means of achieving this would I think, require something like the
>>> "dynamic classes" in available in the Moxy framework [5], that is, map
>>> based so that no Java class compilation is needed. Instead, a data-model
>>> configuration file (a schema) is read-in to configure the system. This is
>>> not a strange idea, in fact its the data-driven programming paradigm that
>>> is the basis of the original browser concept (before it was turned into
>> OO
>>> application framework via addition of Javascript). In the browser the
>> data
>>> is HTML that is turned into an in-memory Document Object Model (DOM) for
>>> rendering.
>>> 
>>> As a blended solution between Apache Isis as it is currently (heavily
>>> influence by naked objects, an OO modelling based approach for creating
>>> custom *behavioural* applications) and this additional mainly data
>> focused
>>> approach, I think a programmer developing a business application would
>>> start off with these dymanic classes and then in time 'harden' the design
>>> by generating and compiling real Java classes from off the model. [A
>>> non-programmer wouldn't get past the first design 'phase' usually, but
>>> still end up with a useable UI.]
>>> 
>>> In addition, by having separate abstract model-generated classes, that
>> can
>>> be overwritten if the data-model changes, and concrete implementation
>>> classes, where you put all your behavioural code and that are never
>>> overwritten, you get close to the 'round-tripping' that would seem to me
>> to
>>> be the only valid way to use UML *for design*. I think this is how the
>>> Eclipse Ecore models work, that there are model classes and
>> implementation
>>> classes that extend the model classes. The IDE will often warn you when
>>> these two sub-models have inconsistencies. This duality also offers an
>>> alternative means to achieving the goals of Lombok it would seem.
>>> 
>>> Of course, sitting in the middle of all this is a meta-model, that
>> creates
>>> the dynamic classes, generates and compiles the 'hardened' model classes
>>> (when used) and maps either of these means to a UI 'viewer'.
>>> 
>>> For such data-management frameworks, the complicated aspect isn't so much
>>> going from the designed data-model to Java, there are lots of examples of
>>> that, instead its being able to have also, a dynamic query capability. So
>>> that a person unfamiliar with the dataset, can, via its data-model, start
>>> querying it (and also maybe integrating it in real-time with other online
>>> resources, the idea of a data-browser appeals!).
>>> 
>>> In the science domain, where I worked for a few years building
>>> data-management infrastructure, there are highly advanced systems for
>>> online data access and querying e.g. [6], but at the same time a common
>>> tool used for small databases is still Microsoft Access. Access has many
>>> strengths as a desktop database, including form generation and also
>> dynamic
>>> query-by-form, but the problems arise when you want to make such data
>>> publicly available, in the sense of being findable and searchable in real
>>> time. You might as well have used a web-based system from the start and
>>> then been able to easily open it to the world at the appropriate time.
>>> 
>>> Having though about this problem for a number of years and spent alot of
>>> time working on a XForms based solution as well. I'd be very interested
>> to
>>> see Apache Isis broaden its scope to offer what I have described, in fact
>>> its doesn't seem to need very much more than what is already present in
>> the
>>> Isis meta-model and Wicket viewer. The Restful objects support already
>>> provides a generic 'generated' web programming interface.
>>> 
>>> In summary I know that there are some Java projects that make very
>>> effective use of a Model Driven Architecture approach (e.g [7]), but I am
>>> now not sure that UML is the 'be-all-and-end-all' basis of that.
>> Actually I
>>> think that data-models are the basis of most of MDAs efficiency dividends
>>> and that there are other approaches, specifically that conceptual models
>>> offer more versatility in terms of who and how you can make use of them.
>>> This thinking goes way back, such as Sowa's Conceptual Graphs [8] and
>> even
>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather) is the W3C
>>> semantic web, but he was thinking of database design and query way back.
>>> 
>>> Apart from some additions to Isis, another interesting aspect is looking
>> at
>>> the mapping to data-stores, using a graph database of one sort or another
>>> to avoid the complexity of ORM is a simple answer to that I feel. Again,
>>> the hardening of a design might mean manually adding a few overrides of
>>> default ORM mapping rules into some behavioural-model classes, that
>> extend
>>> generated data-model classes (getters and setters only).
>>> 
>>> 
>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_main.html
>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html
>>> [3]
>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html
>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
>>> [6]http://www.opendap.org/
>>> [7]http://www.opencrx.org/
>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>>> 
>>> 
>>> 
>>> On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
>>> 
>>> 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.
>>> 
>>> 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?
>>> 
>>> Thanks,
>>> 
>>> Oscar
>>> 
>>> 
>>> [1] http://roomodeler.com
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> This email and any attachment thereto are confidential and priviledged.
>> if
>>> you have received it in error, please delete immediately and notify the
>>> sender. Do not disclose, copy, circulate or in any way use it. The
>>> information contained therein is for the address only, if you reply on
>> it,
>>> its at your own risk. Emails are not guaranteed to be secure or error
>> free,
>>> the message and any attachment could be intercepted, corrupted, lost,
>>> delayed, incomplete or ammended. Computer warehouse group and its
>> divisions
>>> do not accept liability for damage caused by this email or any
>> attachment.
>>> The message you tried to print is protected with Information Rights
>>> Management. You don't have the necessary user rights to print the
>> message.
>>> 
>>> 
>>> This email and any attachment thereto are confidential and priviledged.
>> if
>>> you have received it in error, please delete immediately and notify the
>>> sender. Do not disclose, copy, circulate or in any way use it. The
>>> information contained therein is for the address only, if you reply on
>> it,
>>> its at your own risk. Emails are not guaranteed to be secure or error
>> free,
>>> the message and any attachment could be intercepted, corrupted, lost,
>>> delayed, incomplete or ammended. Computer warehouse group and its
>> divisions
>>> do not accept liability for damage caused by this email or any
>> attachment.
>>> The message you tried to print is protected with Information Rights
>>> Management. You don't have the necessary user rights to print the
>> message.
>> 

Re: Thinking about re-introducing UML in our workflow

Posted by Stephen Cameron <st...@gmail.com>.
"For me the code editor is the sole canvas to express your ideas"

yes!



On Mon, Nov 16, 2015 at 10:44 AM, Jeroen van der Wal <je...@stromboli.it>
wrote:

> All very interesting!
>
> Over the years I tried numerous modelling tools and only the low-tech ones
> stayed: drawing on a whiteboard, using coloured index cards [1] (learned
> from Dan) or using a simple online tool like yUML [2]. And I only use them
> to communicate the broad picture or for explorative purposes.
>
> I gave up on code generators: I always ended up fighting the generated
> code. And the impression that they support rapid application development
> proved wrong: at the point where you had to work on more advanced stuff
> velocity came to a halt. If an application is built on lots of repeating
> code snippets then my conclusion is that the underlying framework is not
> good enough.
>
> I love source code that tells the story of the application. Where
> everything that could be left out of the code is eliminated. Very DRY,
> convention over code. This has drawn me to Naked Objects and made me decide
> to spend my time on Apache Isis.
>
> As you imagine by now I would not take the route from diagram to code. For
> me the code editor is the sole canvas to express your ideas. And I think
> that if we keep improving Apache Isis on a few points there will never be a
> need for an additional tool:
>
> 1) Reduce boilerplate and make writing an application skeleton as easy as
> the easiest modelling tool. This has the advantage that a software
> architect can sketch the application and leave it to his developers to fill
> in details. But everyone is working on the same code base using the same
> tools. In this area we started using Lombok. Also Dan had an idea to make
> it possible to create your own custom annotations which can combine
> multiple annotations.
>
> 2) Visualise the meta model. With contributions and mixins the application
> logic can come from anywhere. This is architecturally sane but makes an
> application hard to grasp. It would love to see a maven plugin that
> generates appealing documentation from the meta model of an Isis
> application.
>
> 3) When taking the visualisation concept a bit further it would be very
> powerful to explore and navigate the meta model within the IDE. Any plugin
> developers here?
>
> That's just my two cents.
>
> Cheers,
>
> Jeroen
>
>
> On 15 November 2015 at 21:01, David Tildesley <da...@yahoo.co.nz> wrote:
>
> >
> >
> >
> >
> >
> > On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
> > dan@haywood-associates.co.uk> wrote:
> > > Thanks for this James.
> >
> > > My observation re: using the (relational) data model as the initial
> input
> > > though is that this is likely to lead to rather coupled code,
> ultimately
> > > not maintainable.
> >
> > Couldn't agree more.
> >
> >
> > > So, while going from the database up to the domain is fine for a single
> > > module of 10 or so entities, any app that is bigger than this really
> > should
> > > be modelled from the domain down to the database.
> >
> > Quite right. Any business app that is non trivial should be domain
> > modelled.
> >
> > David.
> >
> > > Dan
> >
> >
> >
> >
> >
> > On 14 November 2015 at 15:00, James Agada <Ja...@cwg-plc.com>
> wrote:
> >
> > > I actually tested out using Telosys to generate an isis app from
> database
> > > definition. It did work but of course it meant i did the ER first. I
> used
> > > MySQL, did the ER modelling on the workbench, forward engineered into
> the
> > > database and then used telosys scripts to generate a functional Isis
> > > application. Did it as a PoC but we will come back to it later.
> > > James Agada
> > > Chief Technology Officer
> > >
> > >
> > > On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS <o....@govertis.com>
> > > wrote:
> > >
> > > Many thanks, Stephen for this detailed explanation.
> > >
> > > The problem I’m facing is that I intent to communicate the developers
> > > what’s the model to implement.
> > >
> > > And I usually don’t find big mistakes in action code, but what mostly
> > > forces us to refactor is miscommunication regarding the Domain
> Entities,
> > > attributes and actions names, including typos  (think my team speak
> > Spanish
> > > but they’re modeling in English) or wrong or missing relationships
> > between
> > > those entities.
> > >
> > > All that could be avoided by firstly agree in a common UML Class
> Diagram.
> > >
> > > If it can potentially generate automatically the Java skeleton with
> > Apache
> > > Isis annotations is a big plus, as it will avoid mistakes when moving
> > from
> > > design to implementation.
> > >
> > > And if it could potentially reverse engineer Java (incl. Apache Isis
> > > idioms) a really good feature.
> > >
> > > Any ideas about what tools could best adapt to the workflow (that could
> > be
> > > potentially customized to cover the last 2 whishes) ?
> > >
> > >
> > > Thanks,
> > >
> > > Oscar
> > >
> > >
> > >
> > >
> > > El 14 nov 2015, a las 2:03, Stephen Cameron <
> steve.cameron.62@gmail.com>
> > > escribió:
> > >
> > > Hi Oscar,
> > >
> > > In a qualified way I think your idea has merit. I have never used UML
> for
> > > design, but a few years ago I decided to take a good look at it and see
> > it
> > > if was useful. The idea of being able to draw a diagram and generate
> code
> > > from it seemed sensible, after all that is what is done by most other
> > > 'design' professions, such as building architects and engineers.
> > >
> > > To cut a long story short I realised after some reading that it was not
> > > that simple, and that OO languages themselves are really all that are
> > > needed for the process of designing a system. This is "the code is the
> > > design" school of thought, mainly attributed to Jack Reeves [1].
> > >
> > > I found that  keeping code and UML diagrams in sync in a top-down 'UML
> to
> > > code' design process will always be problematic (maybe why there are
> > > apparently no open-source tools that claim to do this). Then I read
> about
> > > Domain Driven Design which seemed to agree with this premise, and from
> > > there found Apache Isis via Dan's  book.
> > >
> > > So now for me UML class diagrams do have an after the fact use for
> > > documentation purposes and if a solution implement was capable of that
> > > reverse generation of diagrams from code it would be a good thing to
> > have.
> > > Entity Framework can do this, its their "code first" approach.
> > >
> > > Given that the-code-is-the-design is true, I think that UML class
> > diagrams
> > > real main value is as a data model, the question then is why not use a
> > > purely data-modeling tool and generate Java classes off it. Then the
> > > diagrams 'designed' could have a usefulness to programmers and to
> system
> > > users, something like those created SchemaSpy [2]  for example.
> > >
> > > There are already useful and free Java class generation (binding) tools
> > > from off data-models, of one sort or another, such as JAXB,
> DataNucleus'
> > > schemaGen[3], even CAM [4].
> > >
> > > Here is my vision of what I think would be really useful: to have a
> > design
> > > tool that can be used by non-programmers to create a simple data-model,
> > and
> > > then to have that create a working Apache Isis based CRUD system. This
> > > could serve your purpose (I guess) and also find a wider use.
> > >
> > > The means of achieving this would I think, require something like the
> > > "dynamic classes" in available in the Moxy framework [5], that is, map
> > > based so that no Java class compilation is needed. Instead, a
> data-model
> > > configuration file (a schema) is read-in to configure the system. This
> is
> > > not a strange idea, in fact its the data-driven programming paradigm
> that
> > > is the basis of the original browser concept (before it was turned into
> > OO
> > > application framework via addition of Javascript). In the browser the
> > data
> > > is HTML that is turned into an in-memory Document Object Model (DOM)
> for
> > > rendering.
> > >
> > > As a blended solution between Apache Isis as it is currently (heavily
> > > influence by naked objects, an OO modelling based approach for creating
> > > custom *behavioural* applications) and this additional mainly data
> > focused
> > > approach, I think a programmer developing a business application would
> > > start off with these dymanic classes and then in time 'harden' the
> design
> > > by generating and compiling real Java classes from off the model. [A
> > > non-programmer wouldn't get past the first design 'phase' usually, but
> > > still end up with a useable UI.]
> > >
> > > In addition, by having separate abstract model-generated classes, that
> > can
> > > be overwritten if the data-model changes, and concrete implementation
> > > classes, where you put all your behavioural code and that are never
> > > overwritten, you get close to the 'round-tripping' that would seem to
> me
> > to
> > > be the only valid way to use UML *for design*. I think this is how the
> > > Eclipse Ecore models work, that there are model classes and
> > implementation
> > > classes that extend the model classes. The IDE will often warn you when
> > > these two sub-models have inconsistencies. This duality also offers an
> > > alternative means to achieving the goals of Lombok it would seem.
> > >
> > > Of course, sitting in the middle of all this is a meta-model, that
> > creates
> > > the dynamic classes, generates and compiles the 'hardened' model
> classes
> > > (when used) and maps either of these means to a UI 'viewer'.
> > >
> > > For such data-management frameworks, the complicated aspect isn't so
> much
> > > going from the designed data-model to Java, there are lots of examples
> of
> > > that, instead its being able to have also, a dynamic query capability.
> So
> > > that a person unfamiliar with the dataset, can, via its data-model,
> start
> > > querying it (and also maybe integrating it in real-time with other
> online
> > > resources, the idea of a data-browser appeals!).
> > >
> > > In the science domain, where I worked for a few years building
> > > data-management infrastructure, there are highly advanced systems for
> > > online data access and querying e.g. [6], but at the same time a common
> > > tool used for small databases is still Microsoft Access. Access has
> many
> > > strengths as a desktop database, including form generation and also
> > dynamic
> > > query-by-form, but the problems arise when you want to make such data
> > > publicly available, in the sense of being findable and searchable in
> real
> > > time. You might as well have used a web-based system from the start and
> > > then been able to easily open it to the world at the appropriate time.
> > >
> > > Having though about this problem for a number of years and spent alot
> of
> > > time working on a XForms based solution as well. I'd be very interested
> > to
> > > see Apache Isis broaden its scope to offer what I have described, in
> fact
> > > its doesn't seem to need very much more than what is already present in
> > the
> > > Isis meta-model and Wicket viewer. The Restful objects support already
> > > provides a generic 'generated' web programming interface.
> > >
> > > In summary I know that there are some Java projects that make very
> > > effective use of a Model Driven Architecture approach (e.g [7]), but I
> am
> > > now not sure that UML is the 'be-all-and-end-all' basis of that.
> > Actually I
> > > think that data-models are the basis of most of MDAs efficiency
> dividends
> > > and that there are other approaches, specifically that conceptual
> models
> > > offer more versatility in terms of who and how you can make use of
> them.
> > > This thinking goes way back, such as Sowa's Conceptual Graphs [8] and
> > even
> > > to Codd [9]. A modern expression of Sowa's thoughts (I gather) is the
> W3C
> > > semantic web, but he was thinking of database design and query way
> back.
> > >
> > > Apart from some additions to Isis, another interesting aspect is
> looking
> > at
> > > the mapping to data-stores, using a graph database of one sort or
> another
> > > to avoid the complexity of ORM is a simple answer to that I feel.
> Again,
> > > the hardening of a design might mean manually adding a few overrides of
> > > default ORM mapping rules into some behavioural-model classes, that
> > extend
> > > generated data-model classes (getters and setters only).
> > >
> > >
> > > [1]
> http://www.developerdotstar.com/mag/articles/reeves_design_main.html
> > > [2]http://schemaspy.sourceforge.net/sample/relationships.html
> > > [3]
> > >
> > >
> >
> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html
> > > [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
> > > [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
> > > [6]http://www.opendap.org/
> > > [7]http://www.opencrx.org/
> > > [8]https://en.wikipedia.org/wiki/Conceptual_graph
> > > [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
> > >
> > >
> > >
> > > On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
> > >
> > > 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.
> > >
> > > 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?
> > >
> > > Thanks,
> > >
> > > Oscar
> > >
> > >
> > > [1] http://roomodeler.com
> > >
> > >
> > >
> > >
> > >
> > >
> > > This email and any attachment thereto are confidential and priviledged.
> > if
> > > you have received it in error, please delete immediately and notify the
> > > sender. Do not disclose, copy, circulate or in any way use it. The
> > > information contained therein is for the address only, if you reply on
> > it,
> > > its at your own risk. Emails are not guaranteed to be secure or error
> > free,
> > > the message and any attachment could be intercepted, corrupted, lost,
> > > delayed, incomplete or ammended. Computer warehouse group and its
> > divisions
> > > do not accept liability for damage caused by this email or any
> > attachment.
> > > The message you tried to print is protected with Information Rights
> > > Management. You don't have the necessary user rights to print the
> > message.
> > >
> > >
> > > This email and any attachment thereto are confidential and priviledged.
> > if
> > > you have received it in error, please delete immediately and notify the
> > > sender. Do not disclose, copy, circulate or in any way use it. The
> > > information contained therein is for the address only, if you reply on
> > it,
> > > its at your own risk. Emails are not guaranteed to be secure or error
> > free,
> > > the message and any attachment could be intercepted, corrupted, lost,
> > > delayed, incomplete or ammended. Computer warehouse group and its
> > divisions
> > > do not accept liability for damage caused by this email or any
> > attachment.
> > > The message you tried to print is protected with Information Rights
> > > Management. You don't have the necessary user rights to print the
> > message.
> > >
> >
>

Re: Thinking about re-introducing UML in our workflow

Posted by Jeroen van der Wal <je...@stromboli.it>.
All very interesting!

Over the years I tried numerous modelling tools and only the low-tech ones
stayed: drawing on a whiteboard, using coloured index cards [1] (learned
from Dan) or using a simple online tool like yUML [2]. And I only use them
to communicate the broad picture or for explorative purposes.

I gave up on code generators: I always ended up fighting the generated
code. And the impression that they support rapid application development
proved wrong: at the point where you had to work on more advanced stuff
velocity came to a halt. If an application is built on lots of repeating
code snippets then my conclusion is that the underlying framework is not
good enough.

I love source code that tells the story of the application. Where
everything that could be left out of the code is eliminated. Very DRY,
convention over code. This has drawn me to Naked Objects and made me decide
to spend my time on Apache Isis.

As you imagine by now I would not take the route from diagram to code. For
me the code editor is the sole canvas to express your ideas. And I think
that if we keep improving Apache Isis on a few points there will never be a
need for an additional tool:

1) Reduce boilerplate and make writing an application skeleton as easy as
the easiest modelling tool. This has the advantage that a software
architect can sketch the application and leave it to his developers to fill
in details. But everyone is working on the same code base using the same
tools. In this area we started using Lombok. Also Dan had an idea to make
it possible to create your own custom annotations which can combine
multiple annotations.

2) Visualise the meta model. With contributions and mixins the application
logic can come from anywhere. This is architecturally sane but makes an
application hard to grasp. It would love to see a maven plugin that
generates appealing documentation from the meta model of an Isis
application.

3) When taking the visualisation concept a bit further it would be very
powerful to explore and navigate the meta model within the IDE. Any plugin
developers here?

That's just my two cents.

Cheers,

Jeroen


On 15 November 2015 at 21:01, David Tildesley <da...@yahoo.co.nz> wrote:

>
>
>
>
>
> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
> dan@haywood-associates.co.uk> wrote:
> > Thanks for this James.
>
> > My observation re: using the (relational) data model as the initial input
> > though is that this is likely to lead to rather coupled code, ultimately
> > not maintainable.
>
> Couldn't agree more.
>
>
> > So, while going from the database up to the domain is fine for a single
> > module of 10 or so entities, any app that is bigger than this really
> should
> > be modelled from the domain down to the database.
>
> Quite right. Any business app that is non trivial should be domain
> modelled.
>
> David.
>
> > Dan
>
>
>
>
>
> On 14 November 2015 at 15:00, James Agada <Ja...@cwg-plc.com> wrote:
>
> > I actually tested out using Telosys to generate an isis app from database
> > definition. It did work but of course it meant i did the ER first. I used
> > MySQL, did the ER modelling on the workbench, forward engineered into the
> > database and then used telosys scripts to generate a functional Isis
> > application. Did it as a PoC but we will come back to it later.
> > James Agada
> > Chief Technology Officer
> >
> >
> > On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS <o....@govertis.com>
> > wrote:
> >
> > Many thanks, Stephen for this detailed explanation.
> >
> > The problem I’m facing is that I intent to communicate the developers
> > what’s the model to implement.
> >
> > And I usually don’t find big mistakes in action code, but what mostly
> > forces us to refactor is miscommunication regarding the Domain Entities,
> > attributes and actions names, including typos  (think my team speak
> Spanish
> > but they’re modeling in English) or wrong or missing relationships
> between
> > those entities.
> >
> > All that could be avoided by firstly agree in a common UML Class Diagram.
> >
> > If it can potentially generate automatically the Java skeleton with
> Apache
> > Isis annotations is a big plus, as it will avoid mistakes when moving
> from
> > design to implementation.
> >
> > And if it could potentially reverse engineer Java (incl. Apache Isis
> > idioms) a really good feature.
> >
> > Any ideas about what tools could best adapt to the workflow (that could
> be
> > potentially customized to cover the last 2 whishes) ?
> >
> >
> > Thanks,
> >
> > Oscar
> >
> >
> >
> >
> > El 14 nov 2015, a las 2:03, Stephen Cameron <st...@gmail.com>
> > escribió:
> >
> > Hi Oscar,
> >
> > In a qualified way I think your idea has merit. I have never used UML for
> > design, but a few years ago I decided to take a good look at it and see
> it
> > if was useful. The idea of being able to draw a diagram and generate code
> > from it seemed sensible, after all that is what is done by most other
> > 'design' professions, such as building architects and engineers.
> >
> > To cut a long story short I realised after some reading that it was not
> > that simple, and that OO languages themselves are really all that are
> > needed for the process of designing a system. This is "the code is the
> > design" school of thought, mainly attributed to Jack Reeves [1].
> >
> > I found that  keeping code and UML diagrams in sync in a top-down 'UML to
> > code' design process will always be problematic (maybe why there are
> > apparently no open-source tools that claim to do this). Then I read about
> > Domain Driven Design which seemed to agree with this premise, and from
> > there found Apache Isis via Dan's  book.
> >
> > So now for me UML class diagrams do have an after the fact use for
> > documentation purposes and if a solution implement was capable of that
> > reverse generation of diagrams from code it would be a good thing to
> have.
> > Entity Framework can do this, its their "code first" approach.
> >
> > Given that the-code-is-the-design is true, I think that UML class
> diagrams
> > real main value is as a data model, the question then is why not use a
> > purely data-modeling tool and generate Java classes off it. Then the
> > diagrams 'designed' could have a usefulness to programmers and to system
> > users, something like those created SchemaSpy [2]  for example.
> >
> > There are already useful and free Java class generation (binding) tools
> > from off data-models, of one sort or another, such as JAXB, DataNucleus'
> > schemaGen[3], even CAM [4].
> >
> > Here is my vision of what I think would be really useful: to have a
> design
> > tool that can be used by non-programmers to create a simple data-model,
> and
> > then to have that create a working Apache Isis based CRUD system. This
> > could serve your purpose (I guess) and also find a wider use.
> >
> > The means of achieving this would I think, require something like the
> > "dynamic classes" in available in the Moxy framework [5], that is, map
> > based so that no Java class compilation is needed. Instead, a data-model
> > configuration file (a schema) is read-in to configure the system. This is
> > not a strange idea, in fact its the data-driven programming paradigm that
> > is the basis of the original browser concept (before it was turned into
> OO
> > application framework via addition of Javascript). In the browser the
> data
> > is HTML that is turned into an in-memory Document Object Model (DOM) for
> > rendering.
> >
> > As a blended solution between Apache Isis as it is currently (heavily
> > influence by naked objects, an OO modelling based approach for creating
> > custom *behavioural* applications) and this additional mainly data
> focused
> > approach, I think a programmer developing a business application would
> > start off with these dymanic classes and then in time 'harden' the design
> > by generating and compiling real Java classes from off the model. [A
> > non-programmer wouldn't get past the first design 'phase' usually, but
> > still end up with a useable UI.]
> >
> > In addition, by having separate abstract model-generated classes, that
> can
> > be overwritten if the data-model changes, and concrete implementation
> > classes, where you put all your behavioural code and that are never
> > overwritten, you get close to the 'round-tripping' that would seem to me
> to
> > be the only valid way to use UML *for design*. I think this is how the
> > Eclipse Ecore models work, that there are model classes and
> implementation
> > classes that extend the model classes. The IDE will often warn you when
> > these two sub-models have inconsistencies. This duality also offers an
> > alternative means to achieving the goals of Lombok it would seem.
> >
> > Of course, sitting in the middle of all this is a meta-model, that
> creates
> > the dynamic classes, generates and compiles the 'hardened' model classes
> > (when used) and maps either of these means to a UI 'viewer'.
> >
> > For such data-management frameworks, the complicated aspect isn't so much
> > going from the designed data-model to Java, there are lots of examples of
> > that, instead its being able to have also, a dynamic query capability. So
> > that a person unfamiliar with the dataset, can, via its data-model, start
> > querying it (and also maybe integrating it in real-time with other online
> > resources, the idea of a data-browser appeals!).
> >
> > In the science domain, where I worked for a few years building
> > data-management infrastructure, there are highly advanced systems for
> > online data access and querying e.g. [6], but at the same time a common
> > tool used for small databases is still Microsoft Access. Access has many
> > strengths as a desktop database, including form generation and also
> dynamic
> > query-by-form, but the problems arise when you want to make such data
> > publicly available, in the sense of being findable and searchable in real
> > time. You might as well have used a web-based system from the start and
> > then been able to easily open it to the world at the appropriate time.
> >
> > Having though about this problem for a number of years and spent alot of
> > time working on a XForms based solution as well. I'd be very interested
> to
> > see Apache Isis broaden its scope to offer what I have described, in fact
> > its doesn't seem to need very much more than what is already present in
> the
> > Isis meta-model and Wicket viewer. The Restful objects support already
> > provides a generic 'generated' web programming interface.
> >
> > In summary I know that there are some Java projects that make very
> > effective use of a Model Driven Architecture approach (e.g [7]), but I am
> > now not sure that UML is the 'be-all-and-end-all' basis of that.
> Actually I
> > think that data-models are the basis of most of MDAs efficiency dividends
> > and that there are other approaches, specifically that conceptual models
> > offer more versatility in terms of who and how you can make use of them.
> > This thinking goes way back, such as Sowa's Conceptual Graphs [8] and
> even
> > to Codd [9]. A modern expression of Sowa's thoughts (I gather) is the W3C
> > semantic web, but he was thinking of database design and query way back.
> >
> > Apart from some additions to Isis, another interesting aspect is looking
> at
> > the mapping to data-stores, using a graph database of one sort or another
> > to avoid the complexity of ORM is a simple answer to that I feel. Again,
> > the hardening of a design might mean manually adding a few overrides of
> > default ORM mapping rules into some behavioural-model classes, that
> extend
> > generated data-model classes (getters and setters only).
> >
> >
> > [1]http://www.developerdotstar.com/mag/articles/reeves_design_main.html
> > [2]http://schemaspy.sourceforge.net/sample/relationships.html
> > [3]
> >
> >
> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html
> > [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
> > [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
> > [6]http://www.opendap.org/
> > [7]http://www.opencrx.org/
> > [8]https://en.wikipedia.org/wiki/Conceptual_graph
> > [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
> >
> >
> >
> > On Fri, Nov 13, 2015 at 8:45 PM, Ó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.
> >
> > 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.
> >
> > 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?
> >
> > Thanks,
> >
> > Oscar
> >
> >
> > [1] http://roomodeler.com
> >
> >
> >
> >
> >
> >
> > This email and any attachment thereto are confidential and priviledged.
> if
> > you have received it in error, please delete immediately and notify the
> > sender. Do not disclose, copy, circulate or in any way use it. The
> > information contained therein is for the address only, if you reply on
> it,
> > its at your own risk. Emails are not guaranteed to be secure or error
> free,
> > the message and any attachment could be intercepted, corrupted, lost,
> > delayed, incomplete or ammended. Computer warehouse group and its
> divisions
> > do not accept liability for damage caused by this email or any
> attachment.
> > The message you tried to print is protected with Information Rights
> > Management. You don't have the necessary user rights to print the
> message.
> >
> >
> > This email and any attachment thereto are confidential and priviledged.
> if
> > you have received it in error, please delete immediately and notify the
> > sender. Do not disclose, copy, circulate or in any way use it. The
> > information contained therein is for the address only, if you reply on
> it,
> > its at your own risk. Emails are not guaranteed to be secure or error
> free,
> > the message and any attachment could be intercepted, corrupted, lost,
> > delayed, incomplete or ammended. Computer warehouse group and its
> divisions
> > do not accept liability for damage caused by this email or any
> attachment.
> > The message you tried to print is protected with Information Rights
> > Management. You don't have the necessary user rights to print the
> message.
> >
>

Re: Thinking about re-introducing UML in our workflow

Posted by David Tildesley <da...@yahoo.co.nz>.




On Sunday, 15 November 2015 5:37 AM, Dan Haywood <da...@haywood-associates.co.uk> wrote:
> Thanks for this James.

> My observation re: using the (relational) data model as the initial input
> though is that this is likely to lead to rather coupled code, ultimately
> not maintainable.

Couldn't agree more.


> So, while going from the database up to the domain is fine for a single
> module of 10 or so entities, any app that is bigger than this really should
> be modelled from the domain down to the database.

Quite right. Any business app that is non trivial should be domain modelled.

David.

> Dan





On 14 November 2015 at 15:00, James Agada <Ja...@cwg-plc.com> wrote:

> I actually tested out using Telosys to generate an isis app from database
> definition. It did work but of course it meant i did the ER first. I used
> MySQL, did the ER modelling on the workbench, forward engineered into the
> database and then used telosys scripts to generate a functional Isis
> application. Did it as a PoC but we will come back to it later.
> James Agada
> Chief Technology Officer
>
>
> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS <o....@govertis.com>
> wrote:
>
> Many thanks, Stephen for this detailed explanation.
>
> The problem I’m facing is that I intent to communicate the developers
> what’s the model to implement.
>
> And I usually don’t find big mistakes in action code, but what mostly
> forces us to refactor is miscommunication regarding the Domain Entities,
> attributes and actions names, including typos  (think my team speak Spanish
> but they’re modeling in English) or wrong or missing relationships between
> those entities.
>
> All that could be avoided by firstly agree in a common UML Class Diagram.
>
> If it can potentially generate automatically the Java skeleton with Apache
> Isis annotations is a big plus, as it will avoid mistakes when moving from
> design to implementation.
>
> And if it could potentially reverse engineer Java (incl. Apache Isis
> idioms) a really good feature.
>
> Any ideas about what tools could best adapt to the workflow (that could be
> potentially customized to cover the last 2 whishes) ?
>
>
> Thanks,
>
> Oscar
>
>
>
>
> El 14 nov 2015, a las 2:03, Stephen Cameron <st...@gmail.com>
> escribió:
>
> Hi Oscar,
>
> In a qualified way I think your idea has merit. I have never used UML for
> design, but a few years ago I decided to take a good look at it and see it
> if was useful. The idea of being able to draw a diagram and generate code
> from it seemed sensible, after all that is what is done by most other
> 'design' professions, such as building architects and engineers.
>
> To cut a long story short I realised after some reading that it was not
> that simple, and that OO languages themselves are really all that are
> needed for the process of designing a system. This is "the code is the
> design" school of thought, mainly attributed to Jack Reeves [1].
>
> I found that  keeping code and UML diagrams in sync in a top-down 'UML to
> code' design process will always be problematic (maybe why there are
> apparently no open-source tools that claim to do this). Then I read about
> Domain Driven Design which seemed to agree with this premise, and from
> there found Apache Isis via Dan's  book.
>
> So now for me UML class diagrams do have an after the fact use for
> documentation purposes and if a solution implement was capable of that
> reverse generation of diagrams from code it would be a good thing to have.
> Entity Framework can do this, its their "code first" approach.
>
> Given that the-code-is-the-design is true, I think that UML class diagrams
> real main value is as a data model, the question then is why not use a
> purely data-modeling tool and generate Java classes off it. Then the
> diagrams 'designed' could have a usefulness to programmers and to system
> users, something like those created SchemaSpy [2]  for example.
>
> There are already useful and free Java class generation (binding) tools
> from off data-models, of one sort or another, such as JAXB, DataNucleus'
> schemaGen[3], even CAM [4].
>
> Here is my vision of what I think would be really useful: to have a design
> tool that can be used by non-programmers to create a simple data-model, and
> then to have that create a working Apache Isis based CRUD system. This
> could serve your purpose (I guess) and also find a wider use.
>
> The means of achieving this would I think, require something like the
> "dynamic classes" in available in the Moxy framework [5], that is, map
> based so that no Java class compilation is needed. Instead, a data-model
> configuration file (a schema) is read-in to configure the system. This is
> not a strange idea, in fact its the data-driven programming paradigm that
> is the basis of the original browser concept (before it was turned into OO
> application framework via addition of Javascript). In the browser the data
> is HTML that is turned into an in-memory Document Object Model (DOM) for
> rendering.
>
> As a blended solution between Apache Isis as it is currently (heavily
> influence by naked objects, an OO modelling based approach for creating
> custom *behavioural* applications) and this additional mainly data focused
> approach, I think a programmer developing a business application would
> start off with these dymanic classes and then in time 'harden' the design
> by generating and compiling real Java classes from off the model. [A
> non-programmer wouldn't get past the first design 'phase' usually, but
> still end up with a useable UI.]
>
> In addition, by having separate abstract model-generated classes, that can
> be overwritten if the data-model changes, and concrete implementation
> classes, where you put all your behavioural code and that are never
> overwritten, you get close to the 'round-tripping' that would seem to me to
> be the only valid way to use UML *for design*. I think this is how the
> Eclipse Ecore models work, that there are model classes and implementation
> classes that extend the model classes. The IDE will often warn you when
> these two sub-models have inconsistencies. This duality also offers an
> alternative means to achieving the goals of Lombok it would seem.
>
> Of course, sitting in the middle of all this is a meta-model, that creates
> the dynamic classes, generates and compiles the 'hardened' model classes
> (when used) and maps either of these means to a UI 'viewer'.
>
> For such data-management frameworks, the complicated aspect isn't so much
> going from the designed data-model to Java, there are lots of examples of
> that, instead its being able to have also, a dynamic query capability. So
> that a person unfamiliar with the dataset, can, via its data-model, start
> querying it (and also maybe integrating it in real-time with other online
> resources, the idea of a data-browser appeals!).
>
> In the science domain, where I worked for a few years building
> data-management infrastructure, there are highly advanced systems for
> online data access and querying e.g. [6], but at the same time a common
> tool used for small databases is still Microsoft Access. Access has many
> strengths as a desktop database, including form generation and also dynamic
> query-by-form, but the problems arise when you want to make such data
> publicly available, in the sense of being findable and searchable in real
> time. You might as well have used a web-based system from the start and
> then been able to easily open it to the world at the appropriate time.
>
> Having though about this problem for a number of years and spent alot of
> time working on a XForms based solution as well. I'd be very interested to
> see Apache Isis broaden its scope to offer what I have described, in fact
> its doesn't seem to need very much more than what is already present in the
> Isis meta-model and Wicket viewer. The Restful objects support already
> provides a generic 'generated' web programming interface.
>
> In summary I know that there are some Java projects that make very
> effective use of a Model Driven Architecture approach (e.g [7]), but I am
> now not sure that UML is the 'be-all-and-end-all' basis of that. Actually I
> think that data-models are the basis of most of MDAs efficiency dividends
> and that there are other approaches, specifically that conceptual models
> offer more versatility in terms of who and how you can make use of them.
> This thinking goes way back, such as Sowa's Conceptual Graphs [8] and even
> to Codd [9]. A modern expression of Sowa's thoughts (I gather) is the W3C
> semantic web, but he was thinking of database design and query way back.
>
> Apart from some additions to Isis, another interesting aspect is looking at
> the mapping to data-stores, using a graph database of one sort or another
> to avoid the complexity of ORM is a simple answer to that I feel. Again,
> the hardening of a design might mean manually adding a few overrides of
> default ORM mapping rules into some behavioural-model classes, that extend
> generated data-model classes (getters and setters only).
>
>
> [1]http://www.developerdotstar.com/mag/articles/reeves_design_main.html
> [2]http://schemaspy.sourceforge.net/sample/relationships.html
> [3]
>
> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html
> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
> [6]http://www.opendap.org/
> [7]http://www.opencrx.org/
> [8]https://en.wikipedia.org/wiki/Conceptual_graph
> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>
>
>
> On Fri, Nov 13, 2015 at 8:45 PM, Óscar Bou - GOVERTIS <o....@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.
>
> 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.
>
> 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?
>
> Thanks,
>
> Oscar
>
>
> [1] http://roomodeler.com
>
>
>
>
>
>
> This email and any attachment thereto are confidential and priviledged. if
> you have received it in error, please delete immediately and notify the
> sender. Do not disclose, copy, circulate or in any way use it. The
> information contained therein is for the address only, if you reply on it,
> its at your own risk. Emails are not guaranteed to be secure or error free,
> the message and any attachment could be intercepted, corrupted, lost,
> delayed, incomplete or ammended. Computer warehouse group and its divisions
> do not accept liability for damage caused by this email or any attachment.
> The message you tried to print is protected with Information Rights
> Management. You don't have the necessary user rights to print the message.
>
>
> This email and any attachment thereto are confidential and priviledged. if
> you have received it in error, please delete immediately and notify the
> sender. Do not disclose, copy, circulate or in any way use it. The
> information contained therein is for the address only, if you reply on it,
> its at your own risk. Emails are not guaranteed to be secure or error free,
> the message and any attachment could be intercepted, corrupted, lost,
> delayed, incomplete or ammended. Computer warehouse group and its divisions
> do not accept liability for damage caused by this email or any attachment.
> The message you tried to print is protected with Information Rights
> Management. You don't have the necessary user rights to print the message.
>

Re: Thinking about re-introducing UML in our workflow

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
Thanks for this James.

My observation re: using the (relational) data model as the initial input
though is that this is likely to lead to rather coupled code, ultimately
not maintainable.

For example, typically we would model a  one:many relationship will a
simple foreign key.  But if that was to be unidirectional one:many, we
would probably want a join table.  That would be quite unnatural to model
if starting from the database.

Even more significantly, it would be very hard to model relationships to
interfaces, to allow decoupling via dependency inversion principle.  Now
this is supportable by relational databases, and we have an isis addon -
the  isis-module-poly addon [1] - that formalises the pattern.  But again,
one would never model those as tables if starting from the database.

So, while going from the database up to the domain is fine for a single
module of 10 or so entities, any app that is bigger than this really should
be modelled from the domain down to the database.

This experience is based (a) on Estatio, which is 80 or so entities, but
also on the (.NET) Naked Objects app in Ireland, which is rather larger
(over 1000 entities).  It was on that Irish project that the
isis-module-poly pattern was initially developed.

My 2c, anyway.

Dan


[1] https://github.com/isisaddons/isis-module-poly



On 14 November 2015 at 15:00, James Agada <Ja...@cwg-plc.com> wrote:

> I actually tested out using Telosys to generate an isis app from database
> definition. It did work but of course it meant i did the ER first. I used
> MySQL, did the ER modelling on the workbench, forward engineered into the
> database and then used telosys scripts to generate a functional Isis
> application. Did it as a PoC but we will come back to it later.
> James Agada
> Chief Technology Officer
>
>
> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS <o....@govertis.com>
> wrote:
>
> Many thanks, Stephen for this detailed explanation.
>
> The problem I’m facing is that I intent to communicate the developers
> what’s the model to implement.
>
> And I usually don’t find big mistakes in action code, but what mostly
> forces us to refactor is miscommunication regarding the Domain Entities,
> attributes and actions names, including typos  (think my team speak Spanish
> but they’re modeling in English) or wrong or missing relationships between
> those entities.
>
> All that could be avoided by firstly agree in a common UML Class Diagram.
>
> If it can potentially generate automatically the Java skeleton with Apache
> Isis annotations is a big plus, as it will avoid mistakes when moving from
> design to implementation.
>
> And if it could potentially reverse engineer Java (incl. Apache Isis
> idioms) a really good feature.
>
> Any ideas about what tools could best adapt to the workflow (that could be
> potentially customized to cover the last 2 whishes) ?
>
>
> Thanks,
>
> Oscar
>
>
>
>
> El 14 nov 2015, a las 2:03, Stephen Cameron <st...@gmail.com>
> escribió:
>
> Hi Oscar,
>
> In a qualified way I think your idea has merit. I have never used UML for
> design, but a few years ago I decided to take a good look at it and see it
> if was useful. The idea of being able to draw a diagram and generate code
> from it seemed sensible, after all that is what is done by most other
> 'design' professions, such as building architects and engineers.
>
> To cut a long story short I realised after some reading that it was not
> that simple, and that OO languages themselves are really all that are
> needed for the process of designing a system. This is "the code is the
> design" school of thought, mainly attributed to Jack Reeves [1].
>
> I found that  keeping code and UML diagrams in sync in a top-down 'UML to
> code' design process will always be problematic (maybe why there are
> apparently no open-source tools that claim to do this). Then I read about
> Domain Driven Design which seemed to agree with this premise, and from
> there found Apache Isis via Dan's  book.
>
> So now for me UML class diagrams do have an after the fact use for
> documentation purposes and if a solution implement was capable of that
> reverse generation of diagrams from code it would be a good thing to have.
> Entity Framework can do this, its their "code first" approach.
>
> Given that the-code-is-the-design is true, I think that UML class diagrams
> real main value is as a data model, the question then is why not use a
> purely data-modeling tool and generate Java classes off it. Then the
> diagrams 'designed' could have a usefulness to programmers and to system
> users, something like those created SchemaSpy [2]  for example.
>
> There are already useful and free Java class generation (binding) tools
> from off data-models, of one sort or another, such as JAXB, DataNucleus'
> schemaGen[3], even CAM [4].
>
> Here is my vision of what I think would be really useful: to have a design
> tool that can be used by non-programmers to create a simple data-model, and
> then to have that create a working Apache Isis based CRUD system. This
> could serve your purpose (I guess) and also find a wider use.
>
> The means of achieving this would I think, require something like the
> "dynamic classes" in available in the Moxy framework [5], that is, map
> based so that no Java class compilation is needed. Instead, a data-model
> configuration file (a schema) is read-in to configure the system. This is
> not a strange idea, in fact its the data-driven programming paradigm that
> is the basis of the original browser concept (before it was turned into OO
> application framework via addition of Javascript). In the browser the data
> is HTML that is turned into an in-memory Document Object Model (DOM) for
> rendering.
>
> As a blended solution between Apache Isis as it is currently (heavily
> influence by naked objects, an OO modelling based approach for creating
> custom *behavioural* applications) and this additional mainly data focused
> approach, I think a programmer developing a business application would
> start off with these dymanic classes and then in time 'harden' the design
> by generating and compiling real Java classes from off the model. [A
> non-programmer wouldn't get past the first design 'phase' usually, but
> still end up with a useable UI.]
>
> In addition, by having separate abstract model-generated classes, that can
> be overwritten if the data-model changes, and concrete implementation
> classes, where you put all your behavioural code and that are never
> overwritten, you get close to the 'round-tripping' that would seem to me to
> be the only valid way to use UML *for design*. I think this is how the
> Eclipse Ecore models work, that there are model classes and implementation
> classes that extend the model classes. The IDE will often warn you when
> these two sub-models have inconsistencies. This duality also offers an
> alternative means to achieving the goals of Lombok it would seem.
>
> Of course, sitting in the middle of all this is a meta-model, that creates
> the dynamic classes, generates and compiles the 'hardened' model classes
> (when used) and maps either of these means to a UI 'viewer'.
>
> For such data-management frameworks, the complicated aspect isn't so much
> going from the designed data-model to Java, there are lots of examples of
> that, instead its being able to have also, a dynamic query capability. So
> that a person unfamiliar with the dataset, can, via its data-model, start
> querying it (and also maybe integrating it in real-time with other online
> resources, the idea of a data-browser appeals!).
>
> In the science domain, where I worked for a few years building
> data-management infrastructure, there are highly advanced systems for
> online data access and querying e.g. [6], but at the same time a common
> tool used for small databases is still Microsoft Access. Access has many
> strengths as a desktop database, including form generation and also dynamic
> query-by-form, but the problems arise when you want to make such data
> publicly available, in the sense of being findable and searchable in real
> time. You might as well have used a web-based system from the start and
> then been able to easily open it to the world at the appropriate time.
>
> Having though about this problem for a number of years and spent alot of
> time working on a XForms based solution as well. I'd be very interested to
> see Apache Isis broaden its scope to offer what I have described, in fact
> its doesn't seem to need very much more than what is already present in the
> Isis meta-model and Wicket viewer. The Restful objects support already
> provides a generic 'generated' web programming interface.
>
> In summary I know that there are some Java projects that make very
> effective use of a Model Driven Architecture approach (e.g [7]), but I am
> now not sure that UML is the 'be-all-and-end-all' basis of that. Actually I
> think that data-models are the basis of most of MDAs efficiency dividends
> and that there are other approaches, specifically that conceptual models
> offer more versatility in terms of who and how you can make use of them.
> This thinking goes way back, such as Sowa's Conceptual Graphs [8] and even
> to Codd [9]. A modern expression of Sowa's thoughts (I gather) is the W3C
> semantic web, but he was thinking of database design and query way back.
>
> Apart from some additions to Isis, another interesting aspect is looking at
> the mapping to data-stores, using a graph database of one sort or another
> to avoid the complexity of ORM is a simple answer to that I feel. Again,
> the hardening of a design might mean manually adding a few overrides of
> default ORM mapping rules into some behavioural-model classes, that extend
> generated data-model classes (getters and setters only).
>
>
> [1]http://www.developerdotstar.com/mag/articles/reeves_design_main.html
> [2]http://schemaspy.sourceforge.net/sample/relationships.html
> [3]
>
> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html
> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
> [6]http://www.opendap.org/
> [7]http://www.opencrx.org/
> [8]https://en.wikipedia.org/wiki/Conceptual_graph
> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>
>
>
> On Fri, Nov 13, 2015 at 8:45 PM, Óscar Bou - GOVERTIS <o....@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.
>
> 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.
>
> 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?
>
> Thanks,
>
> Oscar
>
>
> [1] http://roomodeler.com
>
>
>
>
>
>
> This email and any attachment thereto are confidential and priviledged. if
> you have received it in error, please delete immediately and notify the
> sender. Do not disclose, copy, circulate or in any way use it. The
> information contained therein is for the address only, if you reply on it,
> its at your own risk. Emails are not guaranteed to be secure or error free,
> the message and any attachment could be intercepted, corrupted, lost,
> delayed, incomplete or ammended. Computer warehouse group and its divisions
> do not accept liability for damage caused by this email or any attachment.
> The message you tried to print is protected with Information Rights
> Management. You don't have the necessary user rights to print the message.
>
>
> This email and any attachment thereto are confidential and priviledged. if
> you have received it in error, please delete immediately and notify the
> sender. Do not disclose, copy, circulate or in any way use it. The
> information contained therein is for the address only, if you reply on it,
> its at your own risk. Emails are not guaranteed to be secure or error free,
> the message and any attachment could be intercepted, corrupted, lost,
> delayed, incomplete or ammended. Computer warehouse group and its divisions
> do not accept liability for damage caused by this email or any attachment.
> The message you tried to print is protected with Information Rights
> Management. You don't have the necessary user rights to print the message.
>

Re: Thinking about re-introducing UML in our workflow

Posted by Óscar Bou - GOVERTIS <o....@govertis.com>.
Really interesting, James.

I didn’t knew about it … I’ll take a look.

Thanks,

Oscar




> El 14 nov 2015, a las 16:00, James Agada <Ja...@CWG-PLC.COM> escribió:
> 
> I actually tested out using Telosys to generate an isis app from database definition. It did work but of course it meant i did the ER first. I used MySQL, did the ER modelling on the workbench, forward engineered into the database and then used telosys scripts to generate a functional Isis application. Did it as a PoC but we will come back to it later.
> James Agada
> Chief Technology Officer
> 
> 
> 
>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS <o.bou@govertis.com <ma...@govertis.com>> wrote:
>> 
>> Many thanks, Stephen for this detailed explanation.
>> 
>> The problem I’m facing is that I intent to communicate the developers what’s the model to implement.
>> 
>> And I usually don’t find big mistakes in action code, but what mostly forces us to refactor is miscommunication regarding the Domain Entities, attributes and actions names, including typos  (think my team speak Spanish but they’re modeling in English) or wrong or missing relationships between those entities.
>> 
>> All that could be avoided by firstly agree in a common UML Class Diagram.
>> 
>> If it can potentially generate automatically the Java skeleton with Apache Isis annotations is a big plus, as it will avoid mistakes when moving from design to implementation.
>> 
>> And if it could potentially reverse engineer Java (incl. Apache Isis idioms) a really good feature.
>> 
>> Any ideas about what tools could best adapt to the workflow (that could be potentially customized to cover the last 2 whishes) ?
>> 
>> 
>> Thanks,
>> 
>> Oscar
>> 
>> 
>> 
>> 
>>> El 14 nov 2015, a las 2:03, Stephen Cameron <steve.cameron.62@gmail.com <ma...@gmail.com>> escribió:
>>> 
>>> Hi Oscar,
>>> 
>>> In a qualified way I think your idea has merit. I have never used UML for
>>> design, but a few years ago I decided to take a good look at it and see it
>>> if was useful. The idea of being able to draw a diagram and generate code
>>> from it seemed sensible, after all that is what is done by most other
>>> 'design' professions, such as building architects and engineers.
>>> 
>>> To cut a long story short I realised after some reading that it was not
>>> that simple, and that OO languages themselves are really all that are
>>> needed for the process of designing a system. This is "the code is the
>>> design" school of thought, mainly attributed to Jack Reeves [1].
>>> 
>>> I found that  keeping code and UML diagrams in sync in a top-down 'UML to
>>> code' design process will always be problematic (maybe why there are
>>> apparently no open-source tools that claim to do this). Then I read about
>>> Domain Driven Design which seemed to agree with this premise, and from
>>> there found Apache Isis via Dan's  book.
>>> 
>>> So now for me UML class diagrams do have an after the fact use for
>>> documentation purposes and if a solution implement was capable of that
>>> reverse generation of diagrams from code it would be a good thing to have.
>>> Entity Framework can do this, its their "code first" approach.
>>> 
>>> Given that the-code-is-the-design is true, I think that UML class diagrams
>>> real main value is as a data model, the question then is why not use a
>>> purely data-modeling tool and generate Java classes off it. Then the
>>> diagrams 'designed' could have a usefulness to programmers and to system
>>> users, something like those created SchemaSpy [2]  for example.
>>> 
>>> There are already useful and free Java class generation (binding) tools
>>> from off data-models, of one sort or another, such as JAXB, DataNucleus'
>>> schemaGen[3], even CAM [4].
>>> 
>>> Here is my vision of what I think would be really useful: to have a design
>>> tool that can be used by non-programmers to create a simple data-model, and
>>> then to have that create a working Apache Isis based CRUD system. This
>>> could serve your purpose (I guess) and also find a wider use.
>>> 
>>> The means of achieving this would I think, require something like the
>>> "dynamic classes" in available in the Moxy framework [5], that is, map
>>> based so that no Java class compilation is needed. Instead, a data-model
>>> configuration file (a schema) is read-in to configure the system. This is
>>> not a strange idea, in fact its the data-driven programming paradigm that
>>> is the basis of the original browser concept (before it was turned into OO
>>> application framework via addition of Javascript). In the browser the data
>>> is HTML that is turned into an in-memory Document Object Model (DOM) for
>>> rendering.
>>> 
>>> As a blended solution between Apache Isis as it is currently (heavily
>>> influence by naked objects, an OO modelling based approach for creating
>>> custom *behavioural* applications) and this additional mainly data focused
>>> approach, I think a programmer developing a business application would
>>> start off with these dymanic classes and then in time 'harden' the design
>>> by generating and compiling real Java classes from off the model. [A
>>> non-programmer wouldn't get past the first design 'phase' usually, but
>>> still end up with a useable UI.]
>>> 
>>> In addition, by having separate abstract model-generated classes, that can
>>> be overwritten if the data-model changes, and concrete implementation
>>> classes, where you put all your behavioural code and that are never
>>> overwritten, you get close to the 'round-tripping' that would seem to me to
>>> be the only valid way to use UML *for design*. I think this is how the
>>> Eclipse Ecore models work, that there are model classes and implementation
>>> classes that extend the model classes. The IDE will often warn you when
>>> these two sub-models have inconsistencies. This duality also offers an
>>> alternative means to achieving the goals of Lombok it would seem.
>>> 
>>> Of course, sitting in the middle of all this is a meta-model, that creates
>>> the dynamic classes, generates and compiles the 'hardened' model classes
>>> (when used) and maps either of these means to a UI 'viewer'.
>>> 
>>> For such data-management frameworks, the complicated aspect isn't so much
>>> going from the designed data-model to Java, there are lots of examples of
>>> that, instead its being able to have also, a dynamic query capability. So
>>> that a person unfamiliar with the dataset, can, via its data-model, start
>>> querying it (and also maybe integrating it in real-time with other online
>>> resources, the idea of a data-browser appeals!).
>>> 
>>> In the science domain, where I worked for a few years building
>>> data-management infrastructure, there are highly advanced systems for
>>> online data access and querying e.g. [6], but at the same time a common
>>> tool used for small databases is still Microsoft Access. Access has many
>>> strengths as a desktop database, including form generation and also dynamic
>>> query-by-form, but the problems arise when you want to make such data
>>> publicly available, in the sense of being findable and searchable in real
>>> time. You might as well have used a web-based system from the start and
>>> then been able to easily open it to the world at the appropriate time.
>>> 
>>> Having though about this problem for a number of years and spent alot of
>>> time working on a XForms based solution as well. I'd be very interested to
>>> see Apache Isis broaden its scope to offer what I have described, in fact
>>> its doesn't seem to need very much more than what is already present in the
>>> Isis meta-model and Wicket viewer. The Restful objects support already
>>> provides a generic 'generated' web programming interface.
>>> 
>>> In summary I know that there are some Java projects that make very
>>> effective use of a Model Driven Architecture approach (e.g [7]), but I am
>>> now not sure that UML is the 'be-all-and-end-all' basis of that. Actually I
>>> think that data-models are the basis of most of MDAs efficiency dividends
>>> and that there are other approaches, specifically that conceptual models
>>> offer more versatility in terms of who and how you can make use of them.
>>> This thinking goes way back, such as Sowa's Conceptual Graphs [8] and even
>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather) is the W3C
>>> semantic web, but he was thinking of database design and query way back.
>>> 
>>> Apart from some additions to Isis, another interesting aspect is looking at
>>> the mapping to data-stores, using a graph database of one sort or another
>>> to avoid the complexity of ORM is a simple answer to that I feel. Again,
>>> the hardening of a design might mean manually adding a few overrides of
>>> default ORM mapping rules into some behavioural-model classes, that extend
>>> generated data-model classes (getters and setters only).
>>> 
>>> 
>>> [1]http://www.developerdotstar.com/mag/articles/reeves_design_main.html <http://www.developerdotstar.com/mag/articles/reeves_design_main.html>
>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html <http://schemaspy.sourceforge.net/sample/relationships.html>
>>> [3]
>>> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html <http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html>
>>> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
>>> [6]http://www.opendap.org/
>>> [7]http://www.opencrx.org/
>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph
>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
>>> 
>>> 
>>> 
>>> On Fri, Nov 13, 2015 at 8:45 PM, Óscar Bou - GOVERTIS <o....@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.
>>>> 
>>>> 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.
>>>> 
>>>> 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?
>>>> 
>>>> Thanks,
>>>> 
>>>> Oscar
>>>> 
>>>> 
>>>> [1] http://roomodeler.com
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>> 
>> This email and any attachment thereto are confidential and priviledged. if you have received it in error, please delete immediately and notify the sender. Do not disclose, copy, circulate or in any way use it. The information contained therein is for the address only, if you reply on it, its at your own risk. Emails are not guaranteed to be secure or error free, the message and any attachment could be intercepted, corrupted, lost, delayed, incomplete or ammended. Computer warehouse group and its divisions do not accept liability for damage caused by this email or any attachment. The message you tried to print is protected with Information Rights Management. You don't have the necessary user rights to print the message.
> 
> This email and any attachment thereto are confidential and priviledged. if you have received it in error, please delete immediately and notify the sender. Do not disclose, copy, circulate or in any way use it. The information contained therein is for the address only, if you reply on it, its at your own risk. Emails are not guaranteed to be secure or error free, the message and any attachment could be intercepted, corrupted, lost, delayed, incomplete or ammended. Computer warehouse group and its divisions do not accept liability for damage caused by this email or any attachment. The message you tried to print is protected with Information Rights Management. You don't have the necessary user rights to print the message.


Re: Thinking about re-introducing UML in our workflow

Posted by James Agada <Ja...@CWG-PLC.COM>.
I actually tested out using Telosys to generate an isis app from database definition. It did work but of course it meant i did the ER first. I used MySQL, did the ER modelling on the workbench, forward engineered into the database and then used telosys scripts to generate a functional Isis application. Did it as a PoC but we will come back to it later.
James Agada
Chief Technology Officer

[cid:03079D33-D6EF-43C4-BC68-409961ED49D7][cid:0A85BA30-39DD-4C9D-AF4D-6ECD6761CB96]

On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS <o....@govertis.com>> wrote:

Many thanks, Stephen for this detailed explanation.

The problem I’m facing is that I intent to communicate the developers what’s the model to implement.

And I usually don’t find big mistakes in action code, but what mostly forces us to refactor is miscommunication regarding the Domain Entities, attributes and actions names, including typos  (think my team speak Spanish but they’re modeling in English) or wrong or missing relationships between those entities.

All that could be avoided by firstly agree in a common UML Class Diagram.

If it can potentially generate automatically the Java skeleton with Apache Isis annotations is a big plus, as it will avoid mistakes when moving from design to implementation.

And if it could potentially reverse engineer Java (incl. Apache Isis idioms) a really good feature.

Any ideas about what tools could best adapt to the workflow (that could be potentially customized to cover the last 2 whishes) ?


Thanks,

Oscar




El 14 nov 2015, a las 2:03, Stephen Cameron <st...@gmail.com>> escribió:

Hi Oscar,

In a qualified way I think your idea has merit. I have never used UML for
design, but a few years ago I decided to take a good look at it and see it
if was useful. The idea of being able to draw a diagram and generate code
from it seemed sensible, after all that is what is done by most other
'design' professions, such as building architects and engineers.

To cut a long story short I realised after some reading that it was not
that simple, and that OO languages themselves are really all that are
needed for the process of designing a system. This is "the code is the
design" school of thought, mainly attributed to Jack Reeves [1].

I found that  keeping code and UML diagrams in sync in a top-down 'UML to
code' design process will always be problematic (maybe why there are
apparently no open-source tools that claim to do this). Then I read about
Domain Driven Design which seemed to agree with this premise, and from
there found Apache Isis via Dan's  book.

So now for me UML class diagrams do have an after the fact use for
documentation purposes and if a solution implement was capable of that
reverse generation of diagrams from code it would be a good thing to have.
Entity Framework can do this, its their "code first" approach.

Given that the-code-is-the-design is true, I think that UML class diagrams
real main value is as a data model, the question then is why not use a
purely data-modeling tool and generate Java classes off it. Then the
diagrams 'designed' could have a usefulness to programmers and to system
users, something like those created SchemaSpy [2]  for example.

There are already useful and free Java class generation (binding) tools
from off data-models, of one sort or another, such as JAXB, DataNucleus'
schemaGen[3], even CAM [4].

Here is my vision of what I think would be really useful: to have a design
tool that can be used by non-programmers to create a simple data-model, and
then to have that create a working Apache Isis based CRUD system. This
could serve your purpose (I guess) and also find a wider use.

The means of achieving this would I think, require something like the
"dynamic classes" in available in the Moxy framework [5], that is, map
based so that no Java class compilation is needed. Instead, a data-model
configuration file (a schema) is read-in to configure the system. This is
not a strange idea, in fact its the data-driven programming paradigm that
is the basis of the original browser concept (before it was turned into OO
application framework via addition of Javascript). In the browser the data
is HTML that is turned into an in-memory Document Object Model (DOM) for
rendering.

As a blended solution between Apache Isis as it is currently (heavily
influence by naked objects, an OO modelling based approach for creating
custom *behavioural* applications) and this additional mainly data focused
approach, I think a programmer developing a business application would
start off with these dymanic classes and then in time 'harden' the design
by generating and compiling real Java classes from off the model. [A
non-programmer wouldn't get past the first design 'phase' usually, but
still end up with a useable UI.]

In addition, by having separate abstract model-generated classes, that can
be overwritten if the data-model changes, and concrete implementation
classes, where you put all your behavioural code and that are never
overwritten, you get close to the 'round-tripping' that would seem to me to
be the only valid way to use UML *for design*. I think this is how the
Eclipse Ecore models work, that there are model classes and implementation
classes that extend the model classes. The IDE will often warn you when
these two sub-models have inconsistencies. This duality also offers an
alternative means to achieving the goals of Lombok it would seem.

Of course, sitting in the middle of all this is a meta-model, that creates
the dynamic classes, generates and compiles the 'hardened' model classes
(when used) and maps either of these means to a UI 'viewer'.

For such data-management frameworks, the complicated aspect isn't so much
going from the designed data-model to Java, there are lots of examples of
that, instead its being able to have also, a dynamic query capability. So
that a person unfamiliar with the dataset, can, via its data-model, start
querying it (and also maybe integrating it in real-time with other online
resources, the idea of a data-browser appeals!).

In the science domain, where I worked for a few years building
data-management infrastructure, there are highly advanced systems for
online data access and querying e.g. [6], but at the same time a common
tool used for small databases is still Microsoft Access. Access has many
strengths as a desktop database, including form generation and also dynamic
query-by-form, but the problems arise when you want to make such data
publicly available, in the sense of being findable and searchable in real
time. You might as well have used a web-based system from the start and
then been able to easily open it to the world at the appropriate time.

Having though about this problem for a number of years and spent alot of
time working on a XForms based solution as well. I'd be very interested to
see Apache Isis broaden its scope to offer what I have described, in fact
its doesn't seem to need very much more than what is already present in the
Isis meta-model and Wicket viewer. The Restful objects support already
provides a generic 'generated' web programming interface.

In summary I know that there are some Java projects that make very
effective use of a Model Driven Architecture approach (e.g [7]), but I am
now not sure that UML is the 'be-all-and-end-all' basis of that. Actually I
think that data-models are the basis of most of MDAs efficiency dividends
and that there are other approaches, specifically that conceptual models
offer more versatility in terms of who and how you can make use of them.
This thinking goes way back, such as Sowa's Conceptual Graphs [8] and even
to Codd [9]. A modern expression of Sowa's thoughts (I gather) is the W3C
semantic web, but he was thinking of database design and query way back.

Apart from some additions to Isis, another interesting aspect is looking at
the mapping to data-stores, using a graph database of one sort or another
to avoid the complexity of ORM is a simple answer to that I feel. Again,
the hardening of a design might mean manually adding a few overrides of
default ORM mapping rules into some behavioural-model classes, that extend
generated data-model classes (getters and setters only).


[1]http://www.developerdotstar.com/mag/articles/reeves_design_main.html
[2]http://schemaspy.sourceforge.net/sample/relationships.html
[3]
http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html
[4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
[5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
[6]http://www.opendap.org/
[7]http://www.opencrx.org/
[8]https://en.wikipedia.org/wiki/Conceptual_graph
[9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania



On Fri, Nov 13, 2015 at 8:45 PM, Óscar Bou - GOVERTIS <o....@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.

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.

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?

Thanks,

Oscar


[1] http://roomodeler.com






This email and any attachment thereto are confidential and priviledged. if you have received it in error, please delete immediately and notify the sender. Do not disclose, copy, circulate or in any way use it. The information contained therein is for the address only, if you reply on it, its at your own risk. Emails are not guaranteed to be secure or error free, the message and any attachment could be intercepted, corrupted, lost, delayed, incomplete or ammended. Computer warehouse group and its divisions do not accept liability for damage caused by this email or any attachment. The message you tried to print is protected with Information Rights Management. You don't have the necessary user rights to print the message.

This email and any attachment thereto are confidential and priviledged. if you have received it in error, please delete immediately and notify the sender. Do not disclose, copy, circulate or in any way use it. The information contained therein is for the address only, if you reply on it, its at your own risk. Emails are not guaranteed to be secure or error free, the message and any attachment could be intercepted, corrupted, lost, delayed, incomplete or ammended. Computer warehouse group and its divisions do not accept liability for damage caused by this email or any attachment. The message you tried to print is protected with Information Rights Management. You don't have the necessary user rights to print the message.

Re: Thinking about re-introducing UML in our workflow

Posted by Óscar Bou - GOVERTIS <o....@govertis.com>.
Many thanks, Stephen for this detailed explanation.

The problem I’m facing is that I intent to communicate the developers what’s the model to implement.

And I usually don’t find big mistakes in action code, but what mostly forces us to refactor is miscommunication regarding the Domain Entities, attributes and actions names, including typos  (think my team speak Spanish but they’re modeling in English) or wrong or missing relationships between those entities.

All that could be avoided by firstly agree in a common UML Class Diagram.

If it can potentially generate automatically the Java skeleton with Apache Isis annotations is a big plus, as it will avoid mistakes when moving from design to implementation.

And if it could potentially reverse engineer Java (incl. Apache Isis idioms) a really good feature.

Any ideas about what tools could best adapt to the workflow (that could be potentially customized to cover the last 2 whishes) ?


Thanks,

Oscar




> El 14 nov 2015, a las 2:03, Stephen Cameron <st...@gmail.com> escribió:
> 
> Hi Oscar,
> 
> In a qualified way I think your idea has merit. I have never used UML for
> design, but a few years ago I decided to take a good look at it and see it
> if was useful. The idea of being able to draw a diagram and generate code
> from it seemed sensible, after all that is what is done by most other
> 'design' professions, such as building architects and engineers.
> 
> To cut a long story short I realised after some reading that it was not
> that simple, and that OO languages themselves are really all that are
> needed for the process of designing a system. This is "the code is the
> design" school of thought, mainly attributed to Jack Reeves [1].
> 
> I found that  keeping code and UML diagrams in sync in a top-down 'UML to
> code' design process will always be problematic (maybe why there are
> apparently no open-source tools that claim to do this). Then I read about
> Domain Driven Design which seemed to agree with this premise, and from
> there found Apache Isis via Dan's  book.
> 
> So now for me UML class diagrams do have an after the fact use for
> documentation purposes and if a solution implement was capable of that
> reverse generation of diagrams from code it would be a good thing to have.
> Entity Framework can do this, its their "code first" approach.
> 
> Given that the-code-is-the-design is true, I think that UML class diagrams
> real main value is as a data model, the question then is why not use a
> purely data-modeling tool and generate Java classes off it. Then the
> diagrams 'designed' could have a usefulness to programmers and to system
> users, something like those created SchemaSpy [2]  for example.
> 
> There are already useful and free Java class generation (binding) tools
> from off data-models, of one sort or another, such as JAXB, DataNucleus'
> schemaGen[3], even CAM [4].
> 
> Here is my vision of what I think would be really useful: to have a design
> tool that can be used by non-programmers to create a simple data-model, and
> then to have that create a working Apache Isis based CRUD system. This
> could serve your purpose (I guess) and also find a wider use.
> 
> The means of achieving this would I think, require something like the
> "dynamic classes" in available in the Moxy framework [5], that is, map
> based so that no Java class compilation is needed. Instead, a data-model
> configuration file (a schema) is read-in to configure the system. This is
> not a strange idea, in fact its the data-driven programming paradigm that
> is the basis of the original browser concept (before it was turned into OO
> application framework via addition of Javascript). In the browser the data
> is HTML that is turned into an in-memory Document Object Model (DOM) for
> rendering.
> 
> As a blended solution between Apache Isis as it is currently (heavily
> influence by naked objects, an OO modelling based approach for creating
> custom *behavioural* applications) and this additional mainly data focused
> approach, I think a programmer developing a business application would
> start off with these dymanic classes and then in time 'harden' the design
> by generating and compiling real Java classes from off the model. [A
> non-programmer wouldn't get past the first design 'phase' usually, but
> still end up with a useable UI.]
> 
> In addition, by having separate abstract model-generated classes, that can
> be overwritten if the data-model changes, and concrete implementation
> classes, where you put all your behavioural code and that are never
> overwritten, you get close to the 'round-tripping' that would seem to me to
> be the only valid way to use UML *for design*. I think this is how the
> Eclipse Ecore models work, that there are model classes and implementation
> classes that extend the model classes. The IDE will often warn you when
> these two sub-models have inconsistencies. This duality also offers an
> alternative means to achieving the goals of Lombok it would seem.
> 
> Of course, sitting in the middle of all this is a meta-model, that creates
> the dynamic classes, generates and compiles the 'hardened' model classes
> (when used) and maps either of these means to a UI 'viewer'.
> 
> For such data-management frameworks, the complicated aspect isn't so much
> going from the designed data-model to Java, there are lots of examples of
> that, instead its being able to have also, a dynamic query capability. So
> that a person unfamiliar with the dataset, can, via its data-model, start
> querying it (and also maybe integrating it in real-time with other online
> resources, the idea of a data-browser appeals!).
> 
> In the science domain, where I worked for a few years building
> data-management infrastructure, there are highly advanced systems for
> online data access and querying e.g. [6], but at the same time a common
> tool used for small databases is still Microsoft Access. Access has many
> strengths as a desktop database, including form generation and also dynamic
> query-by-form, but the problems arise when you want to make such data
> publicly available, in the sense of being findable and searchable in real
> time. You might as well have used a web-based system from the start and
> then been able to easily open it to the world at the appropriate time.
> 
> Having though about this problem for a number of years and spent alot of
> time working on a XForms based solution as well. I'd be very interested to
> see Apache Isis broaden its scope to offer what I have described, in fact
> its doesn't seem to need very much more than what is already present in the
> Isis meta-model and Wicket viewer. The Restful objects support already
> provides a generic 'generated' web programming interface.
> 
> In summary I know that there are some Java projects that make very
> effective use of a Model Driven Architecture approach (e.g [7]), but I am
> now not sure that UML is the 'be-all-and-end-all' basis of that. Actually I
> think that data-models are the basis of most of MDAs efficiency dividends
> and that there are other approaches, specifically that conceptual models
> offer more versatility in terms of who and how you can make use of them.
> This thinking goes way back, such as Sowa's Conceptual Graphs [8] and even
> to Codd [9]. A modern expression of Sowa's thoughts (I gather) is the W3C
> semantic web, but he was thinking of database design and query way back.
> 
> Apart from some additions to Isis, another interesting aspect is looking at
> the mapping to data-stores, using a graph database of one sort or another
> to avoid the complexity of ORM is a simple answer to that I feel. Again,
> the hardening of a design might mean manually adding a few overrides of
> default ORM mapping rules into some behavioural-model classes, that extend
> generated data-model classes (getters and setters only).
> 
> 
> [1]http://www.developerdotstar.com/mag/articles/reeves_design_main.html
> [2]http://schemaspy.sourceforge.net/sample/relationships.html
> [3]
> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html
> [4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
> [6]http://www.opendap.org/
> [7]http://www.opencrx.org/
> [8]https://en.wikipedia.org/wiki/Conceptual_graph
> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania
> 
> 
> 
> On Fri, Nov 13, 2015 at 8:45 PM, Óscar Bou - GOVERTIS <o....@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.
>> 
>> 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.
>> 
>> 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?
>> 
>> Thanks,
>> 
>> Oscar
>> 
>> 
>> [1] http://roomodeler.com
>> 
>> 
>> 
>> 
>> 


Re: Thinking about re-introducing UML in our workflow

Posted by Stephen Cameron <st...@gmail.com>.
Hi Oscar,

In a qualified way I think your idea has merit. I have never used UML for
design, but a few years ago I decided to take a good look at it and see it
if was useful. The idea of being able to draw a diagram and generate code
from it seemed sensible, after all that is what is done by most other
'design' professions, such as building architects and engineers.

To cut a long story short I realised after some reading that it was not
that simple, and that OO languages themselves are really all that are
needed for the process of designing a system. This is "the code is the
design" school of thought, mainly attributed to Jack Reeves [1].

I found that  keeping code and UML diagrams in sync in a top-down 'UML to
code' design process will always be problematic (maybe why there are
apparently no open-source tools that claim to do this). Then I read about
Domain Driven Design which seemed to agree with this premise, and from
there found Apache Isis via Dan's  book.

So now for me UML class diagrams do have an after the fact use for
documentation purposes and if a solution implement was capable of that
reverse generation of diagrams from code it would be a good thing to have.
Entity Framework can do this, its their "code first" approach.

Given that the-code-is-the-design is true, I think that UML class diagrams
real main value is as a data model, the question then is why not use a
purely data-modeling tool and generate Java classes off it. Then the
diagrams 'designed' could have a usefulness to programmers and to system
users, something like those created SchemaSpy [2]  for example.

There are already useful and free Java class generation (binding) tools
from off data-models, of one sort or another, such as JAXB, DataNucleus'
schemaGen[3], even CAM [4].

Here is my vision of what I think would be really useful: to have a design
tool that can be used by non-programmers to create a simple data-model, and
then to have that create a working Apache Isis based CRUD system. This
could serve your purpose (I guess) and also find a wider use.

The means of achieving this would I think, require something like the
"dynamic classes" in available in the Moxy framework [5], that is, map
based so that no Java class compilation is needed. Instead, a data-model
configuration file (a schema) is read-in to configure the system. This is
not a strange idea, in fact its the data-driven programming paradigm that
is the basis of the original browser concept (before it was turned into OO
application framework via addition of Javascript). In the browser the data
is HTML that is turned into an in-memory Document Object Model (DOM) for
rendering.

As a blended solution between Apache Isis as it is currently (heavily
influence by naked objects, an OO modelling based approach for creating
custom *behavioural* applications) and this additional mainly data focused
approach, I think a programmer developing a business application would
start off with these dymanic classes and then in time 'harden' the design
by generating and compiling real Java classes from off the model. [A
non-programmer wouldn't get past the first design 'phase' usually, but
still end up with a useable UI.]

In addition, by having separate abstract model-generated classes, that can
be overwritten if the data-model changes, and concrete implementation
classes, where you put all your behavioural code and that are never
overwritten, you get close to the 'round-tripping' that would seem to me to
be the only valid way to use UML *for design*. I think this is how the
Eclipse Ecore models work, that there are model classes and implementation
classes that extend the model classes. The IDE will often warn you when
these two sub-models have inconsistencies. This duality also offers an
alternative means to achieving the goals of Lombok it would seem.

Of course, sitting in the middle of all this is a meta-model, that creates
the dynamic classes, generates and compiles the 'hardened' model classes
(when used) and maps either of these means to a UI 'viewer'.

For such data-management frameworks, the complicated aspect isn't so much
going from the designed data-model to Java, there are lots of examples of
that, instead its being able to have also, a dynamic query capability. So
that a person unfamiliar with the dataset, can, via its data-model, start
querying it (and also maybe integrating it in real-time with other online
resources, the idea of a data-browser appeals!).

In the science domain, where I worked for a few years building
data-management infrastructure, there are highly advanced systems for
online data access and querying e.g. [6], but at the same time a common
tool used for small databases is still Microsoft Access. Access has many
strengths as a desktop database, including form generation and also dynamic
query-by-form, but the problems arise when you want to make such data
publicly available, in the sense of being findable and searchable in real
time. You might as well have used a web-based system from the start and
then been able to easily open it to the world at the appropriate time.

Having though about this problem for a number of years and spent alot of
time working on a XForms based solution as well. I'd be very interested to
see Apache Isis broaden its scope to offer what I have described, in fact
its doesn't seem to need very much more than what is already present in the
Isis meta-model and Wicket viewer. The Restful objects support already
provides a generic 'generated' web programming interface.

In summary I know that there are some Java projects that make very
effective use of a Model Driven Architecture approach (e.g [7]), but I am
now not sure that UML is the 'be-all-and-end-all' basis of that. Actually I
think that data-models are the basis of most of MDAs efficiency dividends
and that there are other approaches, specifically that conceptual models
offer more versatility in terms of who and how you can make use of them.
This thinking goes way back, such as Sowa's Conceptual Graphs [8] and even
to Codd [9]. A modern expression of Sowa's thoughts (I gather) is the W3C
semantic web, but he was thinking of database design and query way back.

Apart from some additions to Isis, another interesting aspect is looking at
the mapping to data-stores, using a graph database of one sort or another
to avoid the complexity of ORM is a simple answer to that I feel. Again,
the hardening of a design might mean manually adding a few overrides of
default ORM mapping rules into some behavioural-model classes, that extend
generated data-model classes (getters and setters only).


[1]http://www.developerdotstar.com/mag/articles/reeves_design_main.html
[2]http://schemaspy.sourceforge.net/sample/relationships.html
[3]
http://www.datanucleus.org/products/accessplatform_2_1/rdbms/schematool.html
[4]http://camprocessor.sourceforge.net/wiki/index.php/Main_Page
[5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic
[6]http://www.opendap.org/
[7]http://www.opencrx.org/
[8]https://en.wikipedia.org/wiki/Conceptual_graph
[9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania



On Fri, Nov 13, 2015 at 8:45 PM, Óscar Bou - GOVERTIS <o....@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.
>
> 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.
>
> 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?
>
> Thanks,
>
> Oscar
>
>
> [1] http://roomodeler.com
>
>
>
>
>