Hi Mark, interesting conversation you've started, especially on the UML based Java development process. Here's another experience review on that topic (mine).
First some feedback on your process: as you design the implementing code using UML you run, at some point, into a phase where you have some initial transition from UML to code. From that phase on the problems with keeping code and (implementation) model in sync begin. Because of ArgoUMLs CG shortcomings (or the shortcomings of the CG modules), this can be hard/impossible. Do you think that the benefit from starting with UML leads to better designed code? I'm asking because I have a different approach. IDEs are capable of managing a good structure, so I start my implementation work in the IDE, not with UML (which doesn't mean that I overall start with code, more about this later). There, it's no problem to rename/move packages and containing classes/interfaces. Also, the structure is often straightforward because I've got experienced over time. So, as I found CG to not be very useful (not only in ArgoUML), I'm using a more RE based approach in the implementation phase. From the code, I reverse engineer right into my (diagram-less) implementation model. Always reliably gives the same result, no problem with manually post-processing. The only issue is with manually cleaning up the model when deleting/renaming appears in the code. Also, like you, I only RE parts, not the whole code base. It's easy to add further parts to the model though. Based on the implementation model (without diagrams, gained by RE), I then manually create diagrams. ArgoUML has good support for class diagrams and sequence diagrams here. I create only those diagrams I need, so they are just selected views on the implementation. Especially for class diagrams, it's fun how these diagrams automatically get updated when I do further RE runs! Of course I start my project with some analysis work, not with implementation. For this, UML is perfect. The outcome is a (constantly maintaines) analysis model (I start with use case diagrams). I keep it strictly separated from the implementation model! By this I avoid the need to keep it synchronized with my code. It's amazing how small the overlapping between analysis model and implementation model is! Also, I believe that I can maximize the benefit from both models with that approach. Regarding modeling and team/collaboration: I never worked on implementation models in teams. But of course I did with analysis models. Unfortunately, not using ArgoUML here, because team support is not succifiently available (I used Sparx EA here). In May there will be another EA based project on my new job, I'm exited how it will be like. Back on implementation models and teamwork: what I experienced is, that only one team member takes over the task to maintain the model at once, so team support of the UML tool is not really needed here. There's less frequent activities here, compared to working on the code directly. Ah, I was not very succesful in convincing colleague using ArgoUML, btw. :-) Hope sharing my experiences is somewhat helpful, otherwise just ignore it. Best Regards, Thomas -------- Original-Nachricht -------- > Datum: Sun, 1 Apr 2012 12:29:37 -0700 > Von: Mark Fortner <[email protected]> > An: [email protected] > Betreff: Re: [argouml-dev] Usability Observations > Hi Bob, > Thanks for clarifying things. > > At some point I'd like to create a simple web app to make design reviews > easier to do. Something which will render the model, but also allow > people > to comment on the model and provide feedback. > > I've used RE in the past on small portions of larger projects (usually on > a > package or module) but rarely the whole application. And I've also > noticed > (as you pointed out) that we get inundated with detail. It would be nice > to be able to turn off getters and setters, constructors, and > implementations of interface methods to cut down on some of the visual > noise that you see. > > When you create the document and share it with others, do you send it via > email, or is it on a shared server or checked in somewhere for people to > view? Also, do you also keep track of changes that people suggest and > whether or not those changes were acted upon? The reason I ask, is that > I'm > planning on incorporating Commons VFS with the ArgoPrint, and with the new > code generation stuff I've been tinkering with, and I wanted to know if it > would be useful to be able to save documents into a WebDAV repository -- > something VFS currently supports. > > Mark > > > On Sun, Apr 1, 2012 at 12:02 PM, Bob Tarling <[email protected]> > wrote: > > > Mark Said > > > > These sound like really good ideas. If I'm adding attributes and now I'm > >> finished and want to add operations, what would I need to do? > >> > > > > Imaging first another missing feature. > > > > If you have multiple attribute and operations in a class you should be > > able click on the first attribute to just select it (which you can). > > > > If you then press down arrow the attribute below that should become > > selected instead (this is currently a missing feature and if you try it > you > > will see a defect with the current attribute) > > > > Pressing down arrow on the last attribute should then move to the first > > operation. > > > > Your question was what if there is no operation - in that case ArgoUML > > should create one and place it in edit mode. > > > >> > >>> I don't do CG/RE > >>> > >> > >> Why not? (Sorry if that sounds like a very pointed question, but I'm > >> curious about the answer). > >> > > > > CG - As you've rightly pointed out. It doesn't generate code for Java > that > > is close enough to how it should look. I applaud your attempts to > improve > > this. > > > > RE - This tends to give me too much detail. Usually I only want > > documentation for a fraction of the full system. I don't want every > class, > > I don't want every getter/setter method. I usually just have a section > of > > some design document where I describig one particular issue and I only > want > > my diagram and classes to shown the few classes that are relevant. I > would > > rarely show all the methods for those classes. > > > > Sound like you use it when brainstorming ideas with yourself. Does that > >> mean that you don't use ArgoUML in a team environment? For design > reviews, > >> for instance? If that's the case, have you shown ArgoUML to any of the > >> people that you collaborate with, and what do they think of it? > >> > >> > > Generally I am working things out for myself as you say - usually I am > > working solo. Eventually this will form part of some document that I > will > > send off to some other team. They tend to give me general feedback on > the > > whole document and I amend according to that feedback. > > > > Cheers > > > > Bob > > > > > > ------------------------------------------------------ > http://argouml.tigris.org/ds/viewMessage.do?dsForumId=450&dsMessageId=2943412 > > To unsubscribe from this discussion, e-mail: > [[email protected]]. > To be allowed to post to the list contact the mailing list moderator, > email: [[email protected]] -- NEU: FreePhone 3-fach-Flat mit kostenlosem Smartphone! Jetzt informieren: http://mobile.1und1.de/?ac=OM.PW.PW003K20328T7073a ------------------------------------------------------ http://argouml.tigris.org/ds/viewMessage.do?dsForumId=450&dsMessageId=2943676 To unsubscribe from this discussion, e-mail: [[email protected]]. To be allowed to post to the list contact the mailing list moderator, email: [[email protected]]
