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 Mon, 16 Nov 2015 10:52:41 GMT

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.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/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 <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_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.
>>>> 
> 


Mime
View raw message