Universal Systems Language: Difference between revisions

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.&nbsp;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-20152016)]</ref> PreviousUSL iterationsevolved from 001AXES which in turn evolved from AXES all of thewhich conceptare havebased beenon knownHamilton's asaxioms 001AXES,of control. The 001 Tool Suite uses the preventative concept of Development Before Thethe Fact, or(DBTF) Higherfor Orderits Softwarelife-cycle development process. DBTF eliminates errors as early as possible during the development process removing the need to look for errors after-the-fact.
 
==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 the entire classclasses of interface errors just by the way a system is defined.<ref>{{cite web|title=”Universal Systems Language and its Automation, the 001 Tool Suite, for Designing and Building Systems and Software” Lockheed Martin/IEEE Computer Society Webinar Series|author= Margaret H. Hamilton, Hamilton Technologies|date=September 27, 2012|url=https://media.computer.org/sponsored/podcast/lmco/lmco-089-p.mp4?_kip_ipx=966916323-1480349712}}</ref>
 
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.