11/24/99 - Status is beginning implementation, document under construction - Go
Back
Links to the web are used to keep the guide download small.
UHR is a technology of effects, principles and mechanisms as expressed in the UHR Technology Grid (web). The closest it comes to a product is a reference implementation. This is the second generation of that implementation, called "Gen2" for short.
Gen2 has great improvements over Gen1 such as no separate kernel, very customizable core, cleaner architecture, elimination of the many optional command interfaces, elimination of use of reflection, suitability for embedded work, and removal of the MessageRouters from Message senders. It is a 100% redesign and rewrite based on the work of Steve Alexander and Jack Harich, plus various other contributors. This implementation does not yet reflect full systhesis with Steve's parallel implementation which is also in progress.
See Downloads for Generation 2 (web).
These are brief. They are in order of comprehension rather than alphabetical. For much more see the UHR Glossary (web) which is not as up to date as the definitions here.
Part - An
entrypoint to a body of software designed for high reuse. Systems are assembled from parts.
DK - Declares
how a part should behave in a particular reuse case. Short for Declarative Knowledge.
Container Part
- Commonly called a "container". Contains zero or more parts, which can be container and/or leaf parts.
A container part cannot contain itself.
Leaf Part
- Commonly called a "leaf". Cannot contain other parts.
System Tree
- The container and leaf parts that make up an entire system, organized as a tree. The topmost container is the
"root". All containers have a parent container except the root container.
Container DK
- The type of DK used by containers.
Leaf DK -
The type of DK used by leaves. (Called Part DK in the UHR Glossary)
System DK
- The total container and leaf DK that describes a complete system.
Param - The
data structure that contains a part's DK. Both container and leaf DK is parsed from XML text into a Param. A Param
contains nested key values. For example param.getInt("Policies/Timeout") returns 2000, param.isTrue("Policies/ExclusiveUse")
returns false and param.getString("Policies/Administrators/Martha/UserID") returns "mharich".
Parameter Driven
- The ability to vary behavior in each reuse case by using parameters to determine what to do. A parameter driven
part receives its Param just after it is created, and then initializes itself for this particular reuse case. Parameters
is a synonym for DK.
Datatron
- What parts send to each other to collaborate. This allows Anonymous Collaboration. PartA never knows about PartB.
Part reuse is much higher because a part can be reused in any context that satisfies the Datatrons a part sends
and receives.
Message -
A message is a type of datatron. The only difference is it has a name for understanding and routing purposes.
See the website (web) for a full treatment of UHR. In general, read the rest of the website first or if all this isn't clear. Here's a summary:
UHR stands for Ultra High Reuse. UHR is a collection of best practices rolled into a carefully thoughtout framework that allows assembly of systems from reusable parts, which greatly increases productivity. UHR has also been called a "framework for frameworks". This is a small open source project.
The three essential elements of UHR are:
The outstanding features of UHR leading to higher productivity are:
(This is not yet possible with Gen2 since the implementation is barely started. The current status is only the Minmal Core version 1 is done, and being redesigned and rewritten for version 2.)
(later)
(later)
1. Datatron layer. (done, including lightweight XML parser for other layers)
2. Part role layer. (done)
3. Resolve large issues in Circuit Based layer. (done as of 11/24/99)
4. Structure and Lifecycle layer without DK or Messages, Minimal Core.
5. DK layer using XML and simple text files, DK Core.
6. Circuit Based layer, Full Core.
------ Convert generation 1 systems -----
Various, lots of work to convert data framework
------ Next are Visual Tools -----
These are part systems. They begin to build our part inventory.
1. MainMenu, System Tree. No file mgt at first.
2. DK Editor, text style.
3. Inspector.
4. SystemTree file mgt. Tricky.
5. DK Editor look and choose, with DTDs or such. Difficult.