Content deleted Content added
m →top: bold |
Fixing language name history |
||
Line 1:
'''Universal Systems Language''' is a [[modeling language]] and [[formal method]] for the specification and design of software and other complex systems. It was designed by [[Margaret Hamilton (scientist)|Margaret Hamilton]] based on her experiences writing flight software for the [[Apollo program]].<ref name="USL">[[Margaret Hamilton (scientist)|M. Hamilton]] and W. R. Hackler, "[http://www.htius.com/Articles/r12ham.pdf Universal Systems Language: Lessons Learned from Apollo]", IEEE Computer, Dec. 2008.</ref> The language is implemented through the 001 Tool Suite software by Hamilton Technologies, Inc.<ref>[http://www.htius.com 001 Tool Suite (1986-
==Philosophy==
USL was inspired by Hamilton's recognition of patterns or categories of errors occurring during Apollo software development. Errors at the interfaces between subsystem boundaries accounted for the majority of errors and 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 mathematical constructive logical theory of control for designing systems that would eliminate
Certain correctness guarantees are embedded in the USL grammar. In contrast to reactive approaches to program verification, 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.<ref>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.</ref> 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.
|