A '''Reference model''' is a model of something that embodies the basic goal or idea of something and can then be looked at as a reference for various purposes.
A '''Reference model''' is a computer science term that describes 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.<ref>[http://www.oasis-open.org/committees/soa-rm/faq.php OASIS definition of Reference Model]</ref>
== Understanding a Reference Model ==
Line 10:
== The Uses of a Reference Model ==
There are many uses for a reference model, as implied by the OASIS definition quoted above. 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, and developers can copy that software to use it again, or build a [[software factory]] that generates that code. 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.