|
 |
 | |  |
|
Collaborative Meta-Programming Framework ("CMF")
A CMF is a framework that lets users collaboratively create software products using templates for the corresponding product families. There are many abstract terms in this definition:
- Product families: Families of products are characterized by some commonality in their capabilities and/or design/implementation and/or the set of components they use. More generally, they target the same domain. For example, games like Chess, Go and Chinese Checkers can be considered a family of games called "board games."
- Templates for product families: A template for a product family implements just the commonality among the products in the family. Typically, it consists of several software modules that are parameterized. The parameters to the modules represent the variance among the products. For example, a template for board games may have parameters that may have different values for different games - for example, the board, the pieces and the games rules - while implementing common behaviour (such as the code for moving a piece from one position to another and checking if a move keeps a piece within the bounds of the board).
- Create software products: Creating an actual software product from a product family is just the process of supplying the requisite parameters to the product family template. The process also involves supplying product specific digital assets such as graphics, sound and video, which are used by the product.
- Collaboratively: A team of users can cooperate over a network in the creation of a software product from the product family template. Collaboration allows people to combine their likes, dislikes, knowledge, and expectations for a system when creating a new software product.
The process of designing and implementing the product family template would involve extensive analysis of the target domain to identify the commonalities among the different products and efficient encapsulation of them.
Engine
An Engine is a component module that performs a specific task in the system. For example, a simulation engine is responsible for implementing the simulation logic in a system. An engine is essentially made up of a blackboard and a number of agents that act on the blackboard.
Federate
Each simulation that is combined to form a federation is a federate.
Federation
A named set of federate applications and a common federation object model that are used to achieve some specific objective
High Level Architecture ("HLA")
HLA is a standard technical architecture that is intended to promote interoperability among computer simulations and simulation reuse. It was developed by the U.S. Department of Defence ("DoD") under the direction of one DoD department; namely the U.S. Defense Modeling and Simulation Office ("DMSO").
Meta-Model
A meta-model is a model describing a model. In essence, it describes the grammar for a model. A Unified Modeling Language ("UML") meta-model is a language that describes the entities, the constraints on them, and the relationships among them. The UML specification essentially acts as a meta-model for UML models. Meta-meta-model describes a meta-model. The idea of meta-meta-model arose from the realization that one specific modeling language would not be sufficient to model all kinds of systems. A meta-meta-model provides a way to define new modeling languages like UML. The OMG initiative is known as the Meta-Object-Facility ("MOF"), which is a language to describe languages. XMI is the XML way of describing a MOF model.
Meta-Programming
Meta-programming is the process of specifying generic software templates from which new software components can be automatically instantiated by providing the requisite configuration parameters. Meta-programming greatly facilitates software reuse by producing "families" of software systems rather than a single system. A developer, therefore, writes a framework that can create varying software systems when supplied with different parameters. The meta-programs supply these parameters to the framework and instantiate a specific product from the generic framework. They are called meta-programs because they are little programs about programs.
Module
A module is a unit of decomposition of software that can be separately compiled and independently called from other programs. It typically encapsulates methods and related data structures. Modular design is a powerful technique for engineering software systems as it enhances re-usability, maintainability and flexibility of software.
MORPH
This is an acronym for "Metanode Organized Prototype Hierarchy." The idea behind MORPH is to specify a template for the organization of Information Models of computer systems. It is intended to provide a standard way for developers to produce domain models utilizing two powerful concepts--meta-node and the prototype pattern. One can think of MORPH as a meta-modeling language that can describe the models in the classic four-layer architecture propounded by OMG.
Object Model
In OMT terminology an Object Model refers to the structure of objects in a system. It is graphically represented using class diagrams depicting the classes that the objects in a system belong to and the relationships among them.
System
In Magnetar architecture, a System is a collection of Engines. A system offers domain-specific functionality to its users by assembling a group of related engine components and configuring their object models for the target domain
Software Product Line
"A software product line is a set of software-intensive systems sharing a common, managed set of features that satisfy the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way." (Source: Carnegie-Mellon Software Engineering Institute)
Extensible Markup Language ("XML")
This has become an industry-wide standard for storing data in human-readable format. GameXML is an early-stage Magnetar project and is a collection of XML specifications which describe and script computer simulation engines. Developed by the XML Game Consortium ("XGC"), it is an on-going project to create a reusable, standards-based architecture that can be applied toward computer games and simulations.
| |
 | |  |
|
|
|  |