isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Óscar Bou - GOVERTIS <o....@govertis.com>
Subject Re: Thinking about re-introducing UML in our workflow
Date Thu, 26 Nov 2015 10:09:03 GMT

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 <dan@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 <steve.cameron.62@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 <cesar.lugo@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
>>>>>>> <cesar.lugo@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.bou@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
>>>>>>>>>> <mikeb@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
>>>>>>>>>>> <jeroen@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
>>>>>>>>>>>> <davotnz@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
>>>>>>>>>>>>> <James.agada@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.bou@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_
>>>>>>>>>>>>> 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
>>>> 
>>>> 
>>>> 
>>> 
>> 



Mime
View raw message