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 <steve.cameron...@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...@gmail.com
> > wrote:
>
> >
> >
> > On Tue, Nov 24, 2015 at 9:19 AM, Cesar Lugo <cesar.l...@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....@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...@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.l...@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...@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...@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
> >> >>> <cesar.l...@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....@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
> >> >>>>>>> <jer...@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
> >> >>>>>>>> <davo...@yahoo.co.nz>
> >> >>>> wrote:
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood <
> >> >>>>>>>> d...@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
> >> >>>>>>>>> <james.ag...@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...@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....@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
> >>
> >>
> >>
> >
>

Reply via email to