'''Galactic Universal/Unified Modelling Language?''' * '''"GUM != UM".''' In many necks of our woods the fundamental idea of modeling as a declarative means of designing a system is BigDesignUpFront, which in days of TestDrivenDevelopment means '''DEAD'''. Even where BigDesignUpFront is still an ideal, UML is unable to provide sufficient generality to describe much. UML 2 seems to have made the thing more confusing and less generic. Committees are like that. So GumLanguage is not UML. It's not a way of designing code. It's a way of generating tests. I guess there are about 10 "diagrams" in GumLanguage. There could be more if you like - they all have the same form, which is just the GalacticModelingLanguage. All GumLanguage adds is layers. To whit: each layer is an associative directed graph of labelled boxes. Any box in a layer can be associated with any other box. Patterns within a layer's graph are each identified by a single labeled box in the layer above. Because a box or link can be part of more than one pattern of other boxes in its layer, it can be related to more than a single box in the layer above. So the overall structure is a lattice with each layer more abstract than the one below it. What hierarchy of layers do we use? Well, it's up to you. I've been thinking like this: * Intent: What's wanted and by whom prioritized how? * Representation: How is each intent expressed in domain language? * Architecture: What's are the solution principles of each domain language word? * Process: How does the organization of each principle vary statefully over time? * Pattern: What's the class-oriented dependencies of each state? * Class: What's the CRC relationships of an object of each class? * Data: Where do we deploy objects, in what volumes, what loads, what bandwidth? * Message: What formats on the wire, on the disk, in memory, on screen, necessary transformations? * Signal: What empiricism generates each message? How is it sensed or analyzed? How far do you need to flesh out one of these lattices before you start trying to satisfy the thing with machinery? Well, you do it iteratively. A slice through a Gum lattice could be called a gumtree ... which is just a way of representing an aspect qua AspectOrientedProgramming ... and you can still generate yer sequence diagrams / CRC plays here. They're simply time-oriented gumtrees. And so on. --PeterMerel again riffing KenHappel ''Re: "each layer is an associative directed graph of labelled boxes. Any box in a layer can be associated with any other box." -- It sounds like the association is the link between graph nodes, so that would just be a "directed graph". What beyond those directed links between nodes makes it "associative" in addition to a "directed graph"? Similarly, why do you say "lattice"?'' I say associative to distinguish the links within a layer from the links between layers, which are relational. But of course it's possible to take the relations further: a box in a higher layer could be any distinction on the layer below. Distinctions are hard to represent within traditional information structures, however. As for lattice - well, make a DirectedAcyclicGraph and then allow associative links between nodes at the same depth - you tell me what you'd call it. Matroid? Let's not go there. ''Got an example of what this would look like in action?'' Examples? We don't need no steenkeeng examples! ;-) ---- See also: GalacticModelingLanguage UnifiedModelingLanguage (UML)