article in Tech
programming
Unified Modeling Language (UML) - someday, I can replace myself.
With a title like "someday, I can replace myself", I need to reference this "Be Realistic About the UML: It's Simply Not Sufficient" before we go any further into UML. I'm not crazy, I understand that the modeling languages are never going to be able to model everything... and the code generators are not going to be able to translate our models as we would like...but it is a nice dream. ;)
UML is a modeling language used to model many things in software and business. This can include many things: use cases, class diagrams, sequence diagrams, activity diagrams and state machine diagrams,etc.
While at first glance, this may seem like a waste of time...and many times it does feel and look like that. However, this is due to people not understanding the power of really modeling your business applications in a very abstract and specific way.
Instead of paying 10 developers to sit around and code up your application in language X. You first pay 5 developers to sit around and model your application in some modeling language. It is important to note, that you'll still need the other 5 developers because you'll want to do rapid prototyping, modeling isn't going to make your client happy...you need something they can play with and get a feel for. So while this modeling stuff is wonderful, you've got to strike a balance somewhere between modeling and implementation. (this is being agile) What you use for modeling is really not important, though at this point UML looks like it is the winner.
So why should I model all this stuff? Well if you have your developers model instead of code, you end up getting back a model that can be rendered into a sort of template for language X. Now when we decide on the platform or language of implementation, we can develop a code generator to create the stubs for each of our classes, relationships, etc. This allows your developers to focus on writing the code that needs to be written, not on jamming our business ideas into the specifics of the language.
An example of what I'm talking about is easily seen today with many tools that allow you to model your database using a ERD. That ERD is then rendered to a database spec. Usually in SQL with database specific code sprinkled throughout. This means we can write our database model once, and deploy it to any database (writing a code generator, or using an existing one).
Modeling of this type is the ultimate dream tool for the developers. It means we can model and rationalize our ideas, allow the computer to write as much of the code as possible, and code the remaining ideas in the language implementation we've decided on. As a added bonus, we are also creating business documentation for the entire system so that analysis can be done throughout the entire system. During modeling we can comment and notate as much as our heart desires, and those notations can be pushed down to the developers working within the language implementation.
I'm excited overall about the prospect of UML and other modeling languages. However, most CASE tools are really expensive and don't yet provide the code generators. Many of the existing tools are more for business development (fund seeking in nature) and stop at a pretty picture used to get an idea across.
This page will serve as my resource on UML, check back later for more resources and info.
I'm fairly new to all this stuff, but I believe that I'm really talking about Model Driven Architecture(MDA), UML is just one tool needed to get there.
--Dave May 27th, 2006
I tend to favor the open source UML products over the closed source products...this may be because I don't have the money for the nice tools. :)
Resources
http://www.uml.org/ - the homepage.
Umbrello - an open source UML diagram drawing program for KDE.
PHP2XMI - script generates a XMI scheme (1.3) representing your classes and interfaces, can be imported into a UML modeler to browse,print, and think about your existing classes.
Dia - an open source diagram package much like "Visio". It should be noted that there are scripts that do diagram generation and code generation using Dia...check it out
MagicDraw – UML tool | welcome to the world of...
Open Source UML/Open Source CASE tools
ClassBuilder - Modeler for the C++ developer runs in windows.
BOUML - generate code in C++, Java and Idl. It runs under Unix/Linux/Solaris, MacOS X and Windows.
Motion Modeling Core - modeling for eclipse.
StarUML - an open source UML/MDA (looks pretty good)
ArgoUML - java UML modeling tool. (supports xmi)
UMLGraph - Declarative Drawing of UML Diagrams, useful when drawing is tedious.
Fujaba Tool - stands for 'From Uml to Java And Back Again', a UML tool and more.
Commerical Modelers
Poseidon for UML
Documentation / Presentations
Writing Good Use Cases by Jim Heumann, Requirements Evangelist, IBM Rational
Web resources
Code Generation Network
Code Generation Network - Kathleen Dollard interview part one
Code Generation Network - Kathleen Dollard interview part two
SourceForge.net: PyNSource UML & Patterns IDE for Python
Business Process Model and Notation || BPMN
Business Process Model and Notation - Wikipedia, the free encyclopedia
Yaoqiang BPMN Editor - an Open Source BPMN 2.0 Modeler
BPMN Specification - Business Process Model and Notation
Workflow Patterns | Patterns | Control
ondras/wwwsqldesigner: WWW SQL Designer, your online SQL diagramming tool - database diagram
Created: 2006-05-27 06:16:06
Modified: 2017-11-14 04:26:49