Universal Systems Language
Unlike traditional languages, the Universal Systems Language (USL) is a computer system language based on a preventive instead of a curative paradigm.[1] Based on systems theory, to a great extent derived from lessons learned from the Apollo onboard flight software effort, USL has evolved over several decades (originally called 001AXES) and taken on multiple dimensions as a systems engineering approach.
USL is a completely different way to think about systems: instead of object-oriented and model-driven systems, the designer thinks in terms of system-oriented objects (SOOs) and system-driven models. Much of what seems counter-intuitive with traditional approaches, which tend to be software-centric, becomes intuitive with this systems-centric approach.
USL was created by Margaret Hamilton for designing systems with significantly increased reliability, higher productivity, and lower risk. It was designed to achieve the following objectives:
- reduce complexity and bring clarity into the thinking process;
- ensure correctness by inherent, universal, built-in language properties;
- ensure seamless integration from systems to software;
- ensure traceability and evolvability,
- develop unambiguous requirements, specifications, and design;
- ensure that there are no interface errors in a system design and its derivatives;
- maximize inherent reuse;
- ensure that every model captures real-time execution semantics (for example, asynchronous and distributed);
- establish automatic generation of much of design, reducing the need for designers’ involvement in implementation details;
- establish automatic generation of 100 percent, fully production-ready code, from system specifications, for any kind or size of software application; and
- eliminate the need for a high percentage of testing without compromising reliability.
USL, together with its automation,[2] can address these objectives because of the systems theory that forms its foundations. It also takes roots from other sources–other real-world systems and formal linguistics, methods, and object technologies.
Apollo beginnings
USL had as its origin its creators' study of the Apollo program flight software development.[1] This study included the errors that took place during verification and validation of the Apollo software.
The interface errors were analyzed in greater detail first, because they not only accounted for the majority of errors, they also were often the most subtle and most difficult to find. Each interface error was placed into a category identifying the means to prevent it by way of system definition. This process led to a set of six axioms, forming the basis for a new mathematical theory for designing systems that would, among other things, eliminate the entire class of interface errors just by the way a system is defined.
Given the ongoing evaluation of the Apollo effort, it became clear that a new kind of language was needed and that this mathematical theory could provide its core. Results of the analysis took on many dimensions, not just for space missions but for applications in general, and not just for software but systems in general–the results of which were not readily apparent for many years to come.
Lessons learned from this effort continue today: Systems are asynchronous, distributed, and event-driven in nature, and this should be reflected inherently in the language used to define them and the tools used to build them. This implies that a system’s definition should characterize natural behavior in terms of real-time execution semantics, and designers should no longer need to explicitly define schedules of when events are to occur. Instead, events should occur when objects interact with other objects so that by defining such interactions the schedule of events is inherently defined. Most importantly, it became clear that the root problem with traditional approaches is that they support users in “fixing wrong things up” rather than in “doing things in the right way in the first place”. Combined with further research, as this became more widely understood, it became clear that the characteristics of good design could be reused by incorporating them into a language for defining systems.
USL captures the lessons learned from Apollo. When a model is defined with USL, correctness is accomplished by the very way a system is defined, by built-in language properties inherent in the grammar. Whereas the traditional software development approach is curative, testing for errors late into the life cycle, USL’s development-before-the-fact philosophy is preventive, not allowing errors in the first place. A USL definition models both its application (for example, an avionics or banking system) and properties of control into its own life cycle.[3] Each SOO definition has built-in constraints that support the designer and developer, yet they do not take away flexibility in fulfilling requirements. A SOO inherently integrates all aspects of a system (for example, function-, object-, and timing-oriented). Every system is an object, every object a system.
Mathematical approaches are known to be difficult to understand and are limited in their use for nontrivial systems as well as for much of the system’s life cycle. Unlike formal languages that are not friendly or practical, and friendly or practical languages that are not formal, its users consider USL to be not only formal but also practical and friendly.[4][5] Unlike other mathematically based formal methods, USL extends traditional mathematics with a unique concept of control: universal real-world properties internal to its grammar–such as those related to time and space–are inherent, enabling USL to support the definition and realization of any kind or size of system. The formalism along with its unfriendliness is “hidden” by language mechanisms derived in terms of that formalism.
General systems theory
A formalism for representing the mathematics of systems, USL is based on a set of axioms of the general systems theory and formal rules for their application. All representations of a system are defined in terms of a function map (FMap) and a type map (TMap). Every SOO is defined in terms of a set of FMaps and TMaps. Three primitive structures derived from the set of axioms and non-primitive structures derived ultimately in terms of the primitive structures specify each map. Primitive functions, corresponding to primitive operations on types defined in a TMap, reside at the bottom nodes of an FMap. Primitive types, each defined by its own set of axioms, reside at the bottom nodes of a TMap. Each primitive function (or type) can be realized as a top node of a map on a lower (more concrete) layer of the system.
Providing a mathematical framework within which objects, their interactions, and their relationships can be captured, USL–a metalanguage–has “metamechanisms” for defining systems. USL’s philosophy is that all objects are recursively reusable and reliable; reliable systems are defined in terms of reliable systems; only reliable systems are used as building blocks; and only reliable systems are used as mechanisms to integrate these building blocks to form a new system. Designers can then use the new system, along with more primitive ones, to define (and build) more comprehensive reliable systems. If a system is reliable, all the objects in all its levels and layers are reliable.
Six axioms of control
We must visualize a system definition both by what it does (level by level, e.g., a parent node in a hierarchy is on a higher level than its children nodes) and how it does it layer by layer, e.g., a specification is on a higher layer than its implementation). However, a hierarchical definition runs the risk of not being reliable unless there are explicit rules that ensure each decomposition is valid; for example, the behavior of a successive lower level (or layer) completely replaces the behavior of that which it replaces. A SOO can be defined from its most general state to its most detailed states. Objects, related properly, can replace other objects. An object is decomposed until the primitive objects by which it has been defined have been reached.
At the base of every USL system is a set of six axioms–universally recognized truths–and the assumption of a universal set of objects.[6] [7] The axioms provide the formal foundation for a USL “hierarchy”–referred to as a map, which is a tree of control that spans networks of relations between objects. Explicit rules for defining a map have been derived from the axioms, where–among other things–structure, behavior, and their integration are captured.
Resident at every node on a map is the same kind of object (for example, a function on every node of an FMap and a type on a TMap). The object at each node plays multiple roles; for example, the object can serve as a parent (in control of its children) or a child (being controlled by its parent). Whereas each function on an FMap has a mapping from its input to output (domain to codomain), each type on a TMap has a relation between its domain and codomain.
Each axiom defines a relation of immediate domination of a parent over its children. The union of these relations is control. Among other things, the axioms establish the relationships of an object for invocation in time and space, input and output (domain and codomain), input access rights and output access rights (domain access rights and codomain access rights), error detection and recovery, and ordering during its developmental and operational states. Every system can ultimately be defined in terms of three primitive control structures, each of which is derived from the six axioms–resulting in a universal semantics for defining systems.
Universal primitive control structures
A structure relates each parent and its children according to the set of rules derived from the axioms of control. A primitive structure provides a relationship of the most primitive form (finest grain) of control. All maps are defined ultimately in terms of the primitive structures and therefore abide by the rules associated with each structure: A parent controls its children to have a dependent (Join), independent (Include), or decision-making relationship (Or).
Figure 1 shows the rules used in defining each of the three primitive structures, using a syntax that can be shared by FMaps and TMaps. Because it is defined in terms of these structures, every SOO has control properties, inherently providing seamless integration, maximizing its own reliability and flexibility to change, capitalizing on its own parallelism, and maximizing the potential for its own reuse and automation. The structures ensure that all interface errors–approximately 75 to 90 percent of all errors normally found during testing in a traditional development–are eliminated at the definition phase.
Any system can be defined completely using only primitive structures, but less primitive structures defined by and derived from the primitive structures–and therefore governed by the control axioms–accelerate the definition and understanding of a system. The defined structure, a powerful form of template-like reuse, provides a mechanism to define a map without explicitly defining some of its elements. An FMap structure has placeholders for variable functions; a TMap structure has placeholders for variable types; a universal structure has placeholders for functions or types. Async is an example of a real-time, distributed, communicating FMap structure with both asynchronous and synchronous behavior. An example of a TMap structure is TreeOf, a collection of the same type of objects ordered using a tree indexing system. Each TMap structure assumes its own set of possible relations for its parent and children types. Abstract types decomposed with the same TMap structure inherit the same primitive operations and therefore the same behavior (each of which is available to FMaps that have access to members of each of its TMap’s types). As researchers gain experience with new and different types of applications, new reusable structures emerge.
With USL. all functions in a system and their relationships are defined with a set of FMaps. Similarly, all types in a system and their relationships are defined with a set of TMaps. FMaps represent the dynamic (doing) world of action by capturing functional and temporal (including priority) characteristics. TMaps represent the static (being) world of objects by capturing spatial characteristics–for example, containment of one object by another or relationships between locations of objects in space. FMaps are inherently integrated with TMaps.
The process of developing a software system with USL together with its automation, the 001 Tool Suite (001), is as follows; define the system with USL, automatically analyze the definition with 001's analyzer to ensure that USL was used correctly, automatically generate much of the design and all of the implementation code, production-ready, with 001's generator.[8][9][10][11]
Most of today's systems are defined with a language(s) originally intended for software. These systems are built using a programming or specification language created specifically for a computer, a syntax-first, syntax-dependent approach. USL, based on a formal systems theory derived from real-world system, a semantics-first, syntax-independent approach, was originally created for defining systems in general, where the goal was to combine mathematical perfection with engineering precision.
Unlike languages where language mechanisms, rules, and tools are added after the fact as more is learned about a class of systems, USL derives its language mechanisms and tools from its core set of primitive mechanisms. Because of this flexibility, USL can be used as it gracefully evolves as well as have the ability to lend its formal support to other languages.[12] By inheriting its preventive philosophy, the potential exists to “solve” (prevent) a given problem as early in the life cycle as possible.
References
- 1 2 M. Hamilton and W. R. Hackler, "Universal Systems Language: Lessons Learned from Apollo", IEEE Computer, Dec. 2008.
- ↑ 001 Tool Suite (1986-2015)
- ↑ Dolha, Steve, Chiste, Dave, "A Remote Query System for the Web: Managing the Development of Distributed Systems.", Chapter 32, Internet Management, Editor Jessica Keyes, Auerbach, 2000.
- ↑ Middleton, Frank, "USL For Fun and Profit", The IEEE Newsletter May 2009, IEEE North Jersey Section Computer Society Chapter, May 19, 2009.
- ↑ Krut, Jr., B., “Integrating 001 Tool Support in the Feature-Oriented Domain Analysis Methodology” (CMU/SEI-93-TR-11, ESC-TR-93-188), Pittsburgh, SEI, Carnegie Mellon University, 1993.
- ↑ Hamilton, M., “Inside Development Before the Fact”, cover story, Special Editorial Supplement, 8ES-24ES. Electronic Design, Apr. 1994.
- ↑ Hamilton, M., “001: A FULL LIFE CYCLE SYSTEMS ENGINEERING AND SOFTWARE DEVELOPMENT ENVIRONMENT Development Before The Fact In Action”, cover story, Special Editorial Supplement, 8ES-24ES. Electronic Design, Apr. 1994.
- ↑ Ouyang, M., Golay, M.W. 1995, An Integrated Formal Approach for Developing High Quality Software of Safety-Critical Systems, Massachusetts Institute of Technology, Cambridge, MA, Report No. MIT-ANP-TR-035.
- ↑ Software Productivity Consortium, (SPC) (1998), Object-Oriented Methods and Tools Survey, Herndon, VA.SPC-98022-MC, Version 02.00.02, December 1998.
- ↑ Max Schindler (1990) Computer Aided Software Design, John Wiley & Sons, 1990.
- ↑
- Department of Defense (1992). Software engineering tools experiment-Final report, Vol. 1, Experiment Summary, Table 1, p. 9. Strategic Defense Initiative, Washington, D.C.
- ↑ Hamilton, M. Hackler, W.R., “A Formal Universal Systems Semantics for SysML, 17th Annual International Symposium, INCOSE 2007, San Diego, CA, June 2007.
Further reading
- Hamilton, M., Zeldin, S. (1976), “Higher Order Software — A Methodology for Defining Software,” IEEE Transactions on Software Engineering, vol. SE-2, no. 1, Mar. 1976.
- Hamilton, M., Hackler, W.R.. (2004), Deeply Integrated Guidance Navigation Unit (DI-GNU) Common Software Architecture Principles (revised dec-29-04), DAAAE30-02-D-1020 and DAAB07-98-D-H502/0180, Picatinny Arsenal, NJ, 2003-2004.
- Hamilton, M. and Hackler, W.R. (2007), “Universal Systems Language for Preventative [sic] Systems Engineering,” Proc. 5th Ann. Conf. Systems Eng. Res. (CSER), Stevens Institute of Technology, Mar. 2007, paper #36.
External links
Wikimedia Commons has media related to Universal Systems Language. |