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 <[email protected]> > 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> wrote: >>>> >>>> >>>> >>>> >>>> >>>> >>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood < >>>> [email protected]> 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 <[email protected]> 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 <[email protected]> >>>>> 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 <[email protected]> >>>>> 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 < >>>> [email protected]> >>>>> 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. >>>> >
