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 <[email protected] > wrote: > > > On Tue, Nov 24, 2015 at 9:19 AM, Cesar Lugo <[email protected]> > 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:[email protected]] >> Sent: Monday, November 23, 2015 2:37 PM >> To: [email protected] >> 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 < >> [email protected]> 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 <[email protected]> >> > 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:[email protected]] >> >> Sent: Monday, November 23, 2015 4:42 AM >> >> To: [email protected] >> >> 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 < >> >> [email protected] >> >>> 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 >> >>> <[email protected]> >> >>> 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:[email protected]] >> >>>> 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 >> >>>>> <[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/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 >> >>>>>> <[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_ >> >>>>>>>>> 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 < >> >>>>>>>> [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. >> >>>>>>>> >> >>>>> >> >>>> >> >>>> >> >>>> >> >>>> --- >> >>>> 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 >> >> >> >
