|
Apogee Communications Technologies, Inc. |
||||||
|
|
||||||
|
|
||||||
What is 001?
To get the full picture you should visit the Hamilton Technologies Inc, website. For the purposes of this discussion we can focus on some very specific concepts.
Types
There are a limited number of primitive computable types - integer, rational number, Boolean, character, string, etc.
There are a limited number of operations on these types - conversion from one to another, and within a type, things like addition, subtraction, concatenation, etc.
Therefore a library containing every possible operation on the primitive types can be built.
Every possible abstract type (used in 001 to define a concrete object)can be described as a set, tuple, or oneof (think of enumerated types) with tree derived from the others.
With abstract type objects all you need do are create and destroy them, put things in, take things out, and navigate around them.
So if you have a map of types, you can generate code to implement every possible operation on them.
In summary you just need 3 types of structures to define all possible abstract types on a type map (TMap1). This has a vague similarity to a UML class diagram - it conveys similar information but with far less complexity and clutter.
Functions
001 describes the relationship of each primitive operation (on an abstract or primitive type) in a tree of functions (fmapstm) with primitive operations as the leaf nodes and book keeping nodes between. The children of each book keeping node may be completely independent (able to process in parallel), completely dependent (must run sequentially), or may be selected by a selection function (think "switch" statement). There is also a special type of leaf node that may refer to a parent node which implements a recursion or loop. Leaf nodes may also be references to other trees of functions.
With all the information available to it, the 001 Resource Allocation Tool can generate a complete system from the type and function maps in many different languages. It also automatically generates make files, so there are no other special languages to learn.
There is nothing analogous to this in UML, although ObjecTime and Software Through Pictures (StP) have some rudimentary capabilities in this direction. A recent search of the ACM digital library with "UML" and "Code Generation" since 1 Jan 2001 produced 27 hits out of 96,434 searched, so this isn't an area with a lot of activity, and what there is seems to be focussed on the imbedded systems arena.
In summary there are just 3 structure types out of which all other structures can be built, and just 3 types of leaf nodes.
Object Maps
At run time, instances of subtrees in the type system are instantiated and their relationship in time is maintained as Omaps.
This means a system can be tested just with the type map by using a drag and drop OMapEditor. The system developer can automate any part of the system at will, using the Omap editor to implement the rest, so the entire system is always available for testing and/or showing to end users and those busy folks in marketing.
Summary
There are a total of just six (6) structure types. That's it. Nothing else to learn. The tool uses the same tree structures to manage sets of FMaps (a RoadMap) and even sets of projects, so nothing new to learn there. If you consider 001 to be a language, it doesn't even need or have a reference manual. Since the ENTIRE system is defined by these trees, which are text searchable, and not by code, maintenance is very simple. The model remains the system which provides full traceability through the entire life cycle.
What is UML?
UML is a modelling language. Extensions such a ROOM charts (as in ObjecTime) provide a limited capability of generating code from the models. A recent paper by Cheng and Wang2 illustrates the formidable problem of creating code from OMT (Object Modeling Technique), a language that borrows from UML but also has data flow diagrams.
UML version 1 is defined by a 300 or so page manual with at least 8 different drawing types (StP) of dubious traceability. How are state charts correlated with Use Cases? Does anyone even try?
UML version 2 is being defined by committee. It is likely to be of horrendous complexity and end up like the proverbial octocamelphant. Cris Kobryn [Communications of the ACM January 2002 Volume 45 Issue 1] "The UML sits at an architectural crossroad. Will UML 2.0 resolve the problems of UML 1.x or will it succumb to the dreaded second-language syndrome?"
It is rare for the UML to be maintained once coding has started. Has anyone come across a case where this is not true?
You may have to learn several composition editors (Use cases don't look like sequence diagrams at all), the implementation languages of choice, the make syntax, probably one or more text editors and perhaps even a debugger. Lots of languages.
Traceability is almost impossible. StP is capable of maintaining traceability but in a completely arbitrary way. The cycle of DOORS->StP->Mercury Interactive in principle maintains traceability of specifications to test and code. But the price is that in practice the specifications must be complete before UML starts, and so on. A classic waterfall model of software development that also extracts a high price in overhead.
For small, self contained systems built by a CMM level 5 organization, it is possible to use the RUP3 methodology, based on UML, to create highly reliable, relatively defect free, systems. An example is Motorola and their cell phone. Very reliable. But does your project look like the software for a cell phone?
For larger, complex commercial systems, the overhead and complexity of basing the development lifecycle on UML simply does not seem to work.
Conclusions
UML does not appear to achieve the goals of rapid and interactive development, traceability, spiral development process, maintainability, and quality that the software development industry should aim for. eXtreme Programming (XP) if done properly can achieve some of these goals, but at the expense of requiring continuous refactoring which may introduce defects and loss of understanding. 001 has the rapid development capability of PERL, true traceability, XP like construction, and above all, great simplicity. A bold company (such as Citibank or AT&T in the past) might (and did) choose a project that requires robust software, quick turn around, and reduced development and deployment costs and do it in 001, and/or have ApogeeCT do it!
Copyright © 2002 Apogee Communications Technologies Inc., All Rights Reserved. Privacy Statement. Comments or suggestions? Please send email to the site administrator
1001, Type Map, TMap, Object Map, OMap, Function Map, FMap, RoadMap, RMap, OMapEditor are trademarks of Hamilton Technologies, Inc.
2Betty H.C. Cheng and Enoch Y. Yang, “Formalizing and Integrating the Dynamic Model for Object-Oriented Modeling,” IEEE Transactions on Software Engineering, Vol 28. No. 8, August 2002.
3RUP, Rational Unified Process, is a trademark of Rational Corporation.