Refinement |
: (See also selectivity for a non-computer science meaning.)
In formal methods, refinement is the formal verification transformation of an abstract (high-level) formal specification into a concrete (low-level) executable program. Stepwise refinement allows this process to be done in stages. Logically, refinement normally involves implication, but there can be additional complications. Data refinement is used to convert an abstract data model (in terms of set for example) into implementable data structures (such as Array). Operation refinement converts a specification of an operation on a system into an implementable computer program (e.g., a Procedure (computer science)). The Postcondition can be strengthened and/or the Precondition weakened in this process. This reduces any nondeterminism in the specification, typically to a completely deterministic implementation.
For example, x ∈ {1,2,3} (where x is the value of the .
The term Reification#Alternative uses is also sometimes used (coined by Cliff Jones). Retrenchment is an alternative technique when formal refinement is not possible. The opposite of refinement is Abstraction (computer science), something that many computer science students find very difficult!|
|