Hi all, Im doing a little research and I am interested in the design aspect of UML. What I want to know is, do you think as a developer UML is useful and effective or do you find it is just a hinderance?
Any answers would be most appreciated as this is for degree and I need to know what develpers think not just stuffy profs!
I definitely think that UML (even the limited subset that I know) is useful. The important qualifier here is the same as in all other things related to software: It's useful when used appropriately and in moderation.
I use UML class diagrams to communicate ideas when in whiteboarding sessions, and as notes for myself and others when transitioning from design to implementation phases. Beyond this, these diagrams are of very limited use. The simple reason is that in most cases the UML is divorced from the source code, and separately maintained. It leads to one getting priority over the other (hopefully source code over UML, or nothing's getting done!), and the two inevitably falling out of sync.
This is a hard question, and has wider implications. Documentation of any sort, if not directly derived from the source code, will fall into disrepair. The difference is that things like a users' guide will be spit-shined before the release, where the UML probably won't.
Aside from generating source from UML (which is an icky way to program, IMO), you need a way to generate UML from sources and/or classes if you want to extend its natural lifecycle beyond the aforementioned transition between phases.
I've never been on a project that placed high priority on maintaining UML, and I'm sure that speaks volumes...for both arguments.
UML is probably the best known standard for systems design. Most developers can understand basic class and interaction diagrams well enough to code from them, even is UML is only used roughly.
However in my experience most designers have a poor understanding of UML and consequently either create poor diagrams that that require verbose textual supplementation
or they don't do UML at all.
Code generation from UML is a separate issue. It has many issues - should you generate once at the end of a fixed design phase, or round-trip model and code changes? This impinges fundamentally on the development process. Where UML is not properly understood (most places), round tripping is ill advised.
I feel the MDA aspirations of UML, i.e. to allow complete code generation, are over ambitious, since there ought to be a separation between communication tools, i.e. UML, and implementation tools, i.e. code.