140 likes | 212 Views
UMLX: a pragmatic solution to documenting design Ernest Micklei emicklei@PhilemonWorks.com. Motivation. keep design (UML) and code better synchronized single point of definition separate view from model textual readable/writeable notation but not yet another UML tool. Typical iteration.
E N D
UMLX: a pragmatic solution to documenting design Ernest Micklei emicklei@PhilemonWorks.com Ernest Micklei, PhilemonWorks.com
Motivation • keep design (UML) and code better synchronized • single point of definition • separate view from model • textual readable/writeable notation • but not yet another UML tool Ernest Micklei, PhilemonWorks.com
Typical iteration Code Design Doc Ernest Micklei, PhilemonWorks.com
Motivation (ii) • Extracting design from code is impossible • need original abstraction level • implementation diagrams are not of interest (to us) • Keep design info where the code is • UMLX in class methods or in files • Use (external) tools to create diagrams • e.g. SUMO Ernest Micklei, PhilemonWorks.com
UML "formats" • Rose-mdl/petal, XMI, UXF, others... • Targeted at exchange between Tools • Proprietary • Not meant for "maintenance" by hand • All in one big file (views and models) Ernest Micklei, PhilemonWorks.com
UMLX • UML notation in XML, but ... • Readable by developer • Writable by developer • Simplest structure possible • no xml namespaces • Separate files, external to IDE • MyClass.class.umlx • MyPackage.package.umlx • MyModel.model.umlx Ernest Micklei, PhilemonWorks.com
Class in UMLX <class name="Point3D" superclass="Point"> <attribute name="x" type="Number"/> <operation name="rotateBy" return="Point3D"> <parameter name="rotationPoint" type="Point3D"/> </operation> </class> Ernest Micklei, PhilemonWorks.com
Package in UMLX <package name="ExpressionSupport"> <class file="MessageSendNode.class.umlx"/> <class file="ArgumentsNode.class.umlx"/> <class file="ExpressionNode.class.umlx"/> <class file="ConstantNode.class.umlx"/> <class file="BracketedNode.class.umlx"/> <class file="VariableNode.class.umlx"/> <class file="UnaryNode.class.umlx"/> <class file="FunctionNode.class.umlx"/> <class file="BinaryNode.class.umlx"/> <class file="ExpressionParser.class.umlx"/> </package> Ernest Micklei, PhilemonWorks.com
Design in UMLX <model name="Wizard Design"> <package file="WizardSupport" /> <association class1="Wizard" class2="WizardProgram" role2="program" cardinality2="1" /> </model> Ernest Micklei, PhilemonWorks.com
Diagram • is just a representation (view) on a design • can have multiple diagrams on single design • can be separated from the design specification • not part of UMLX • building it is a time-consuming activity Ernest Micklei, PhilemonWorks.com
Using UMLX producing UMLX - using a text editor - generating jumpstarts from classes - collecting strings using methods Diagrams making a Diagram - read UMLX files - decide which elements to show - layout them + export HTML,GIF,SVG XML-files Ernest Micklei, PhilemonWorks.com
Using UMLX (ii) • store as class methods in classes,packages • export to files • generate from code and edit (strip) manually • UMLClassBuilder • input for tools to build diagrams from UMLX • e.g. SUMO • input for tools to generate initial source code • converter (XSL) to/from XMI • ... Ernest Micklei, PhilemonWorks.com
Status • UMLX for class diagrams • UMLX documentation ( Open ) • http://www.philemonworks.com/UMLX • http://philemon.swiki.net for comments • SUMO, simple UMLX diagramming tool ( Free ) • http://www.philemonworks.com/SUMO • OMA, an archive of reusable models • http://www.philemonworks.com/OMA • SDK on its way (exporter,classes,meta model) • http://www.philemonworks.com/UMLX Ernest Micklei, PhilemonWorks.com
Thanx • Get it from http://www.philemonworks.com • Send comments to emicklei@philemonworks.com Ernest Micklei, PhilemonWorks.com