# Reference model

A reference model—in systems, enterprise, and software engineering—is an abstract framework or domain-specific ontology consisting of an interlinked set of clearly defined concepts produced by an expert or body of experts to encourage clear communication. A reference model can represent the component parts of any consistent idea, from business functions to system components, as long as it represents a complete set. This frame of reference can then be used to communicate ideas clearly among members of the same community.
Reference models are often illustrated as a set of concepts with some indication of the relationships between the concepts.

## Overview

According to OASIS (Organization for the Advancement of Structured Information Standards) a reference model is "an abstract framework for understanding significant relationships among the entities of some environment, and for the development of consistent standards or specifications supporting that environment. A reference model is based on a small number of unifying concepts and may be used as a basis for education and explaining standards to a non-specialist. A reference model is not directly tied to any standards, technologies or other concrete implementation details, but it does seek to provide a common semantics that can be used unambiguously across and between different implementations."
There are a number of concepts rolled up into that of a 'reference model.' Each of these concepts is important:
* Abstract: a reference model is abstract. It provides information about environments of a certain kind. A reference model describes the type or kind of entities that may occur in such an environment, not the particular entities that actually do occur in a specific environment. For example, when describing the architecture of a particular house (which is a specific environment of a certain kind), an actual exterior wall may have dimensions and materials, but the concept of a wall (type of entity) is part of the reference model. One must understand the concept of a wall in order to build a house that has walls.
* Entities and relationships: A reference model describes both types of entities (things that exist) and their relationships (how they connect, interact with one another, and exhibit joint properties). A list of entity types, by itself, doesn't provide enough information to serve as a reference model.
* Within an environment: A reference model does not attempt to describe "all things." A reference model is used to clarify "things within an environment" or a problem space. To be useful, a reference model should include a clear description of the problem that it solves, and the concerns of the stakeholders who need to see the problem get solved.
* Technology agnostic: A reference model's usefulness is limited if it makes assumptions about the technology or platforms in place in a particular computing environment. A reference model typically is intended to promote understanding a class of problems, not specific solutions for those problems. As such, it must assist the practitioner by aiding the process of imagining and evaluating a variety of potential solutions. That does not preclude the development of a reference model that describes a set of software applications, because the problem space may be "how to manage a set of software applications."

## The uses of a reference model

There are many uses for a reference model. One use is to create standards for both the objects that inhabit the model and their relationships to one another. By creating standards, the work of engineers and developers who need to create objects that behave according to the standard is made easier. Software can be written that meets a standard. When done well, a standard can make use of design patterns that support key qualities of software, such as the ability to extend the software in an inexpensive way.
Another use of a reference model is to educate. Using a reference model, leaders in software development can help break down a large problem space into smaller problems that can be understood, tackled, and refined. Developers who are new to a particular set of problems can quickly learn what the different problems are, and can focus on the problems that they are being asked to solve, while trusting that other areas are well understood and rigorously constructed. The level of trust is important to allow software developers to efficiently focus on their work.
A third use of a reference model is to improve communication between people. A reference model breaks up a problem into entities, or "things that exist all by themselves." This is often an explicit recognition of concepts that many people already share, but when created in an explicit manner, a reference model is useful by defining how these concepts differ from, and relate to, one another. This improves communication between individuals involved in using these concepts.
A fourth use of a reference model is to create clear roles and responsibilities. By creating a model of entities and their relationships, an organization can dedicate specific individuals or teams, making them responsible for solving a problem that concerns a specific set of entities. For example, if a reference model describes a set of business measurements needed to create a balanced scorecard, then each measurement can be assigned to a specific business leader. That allows a senior manager to hold each of their team members responsible for producing high quality results.
A fifth use of a reference model is to allow the comparison of different things. By breaking up a problem space into basic concepts, a reference model can be used to examine two different solutions to that problem. In doing so, the component parts of a solution can be discussed in relation to one another. For example, if a reference model describes computer systems that help track contacts between a business and their customers, then a reference model can be used by a business to decide which of five different software products to purchase, based on their needs. A reference model, in this example, could be used to compare how well each of the candidate solutions can be configured to meet the needs of a particular business process.

## Examples

Instances of reference models include, among others:
* Agent Systems Reference Model,
* Core Architecture Data Model reference model of DoDAF
* Federal Enterprise Architecture Framework reference model of the FEA
* HP Information Security Service Management (ISSM) - Reference Model (RM)
* IBM Information Framework, a reference model for financial services
* NIST Enterprise Architecture Model reference models from several Federal Enterprise Architectures
* OGC Reference Model (Open Geospatial Consortium),
* OpenReference, an open reference model for business performance, processes and practices
* Open Systems Interconnection Basic Reference Model
* IEEE 802 reference model
* Purdue Enterprise Reference Architecture
* Real-time Control System for real-time control problem domains
* Reference Model of Open Distributed Processing,
* TAFIM was the 1990 reference model of the earlier version of the DoDAF, and
* Von Neumann architecture as a reference model for sequential computing
* Digital Library Reference Model
* ENVRI (Environmental Research Infrastructures) Reference Model
* NGO REFERENCE MODEL