Implementing according to a specification is the common task in software engineering.
A typical example is the implementation of an accounting system for a business company. E.g., an automotive company starts a project for an IT-system which computes and distributes each month all invoices for the cars they selled.
- After the company has made a requirements analysis for the accounting system a group of business consultants in cooperation with the accountants of the company design the accounting system in a domain specific language using concepts like customer, order, car, invoice, price list, etc.
- IT-consultants transform this textual specification into a formal language like UML (Unified Modeling Language) which uses several formal models like datamodel or class model, usecases, and process models like BPMN (Business Process Model and Notation).
- Eventually, a group of programmers generates and codes the UML-specification into a programming language like java: They implement the specification as the required IT-system.
One may call the method scetched above a model theoretic approach. Its degree of formalization depends on the problem under consideration. For a real world problem like above I consider the approach semi-formal: Its degree of formalization depends on how much final code can be generated from the UML model.