The high-level architecture (HLA) is a general purpose architecture for distributed computer simulation systems. Using HLA, computer simulations can interact (that is, to communicate data, and to synchronize actions) with other computer simulations regardless of the computing platforms. The interaction between simulations is managed by a run-time infrastructure (RTI). HLA is an interoperability standard for distributed simulation used to support analysis, engineering and training in a number of different domains in both military and civilian applications and is the standard technical architecture for all US Department of Defense simulations.
A high-level architecture consists of the following components:
Much of the interactions between federates involve objects and interactions which work in a publish-subscribe model. A federate can register an object, which is instance of a class, and then change the values of the attributes of the object. Other federates that are subscribed to the class can discover the object and then receive attribute value updates. Interactions work in a similar way, except that an interaction is only used once with a specified set of parameters values and then discarded.
The interface specification is object oriented, with specifications for both C++ and Java programming languages plus Ada and FORTRAN for the 1.3 specification.
The interface specification is divided into service groups:
The object model template (OMT) provides a common framework for the communication between HLA simulations. OMT consists of the following documents:
In 1.3 the FOM passed to the RTI by means of a file, called an FDD, in a Lisp-like syntax. In 1516 and 1516-2010 the file is an XML file.
Each FOM must contain a copy of the HLA standard Management Object Model, or MOM, which is a collection of classes and interactions
In order to ensure the proper interaction between simulations, a way of testing federate conformance is defined. This involves ensuring that every class and interaction listed in the SOM for a particular federate is used according to the usage described, "PublishSubscribe", "Publish", "Subscribe" or "None".