Refinement (computing)

**Refinement** is a generic term of computer science that encompasses various approaches for producing correct computer programs and simplifying existing programs to enable their formal verification.

In formal methods, **program refinement** is the verifiable 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.

The progressive just-in-time preparation of the product backlog (requirements list) in agile software development approaches, such as Scrum, is also commonly described as refinement.^{[1]}

**Data refinement** is used to convert an abstract data model (in terms of sets for example) into implementable data structures (such as arrays).^{[]} Operation refinement converts a specification of an operation on a system into an implementable program (e.g., a procedure). 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 variable *x* after an operation) could be refined to *x* ? {1,2}, then *x* ? {1}, and implemented as *x* := 1. Implementations of *x* := 2 and *x* := 3 would be equally acceptable in this case, using a different route for the refinement. However, we must be careful not to refine to *x* ? {} (equivalent to *false*) since this is unimplementable; it is impossible to select a member from the empty set.

The term reification 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.

Refinement calculus is a formal system (inspired from Hoare logic) that promotes program refinement. The FermaT Transformation System is an industrial-strength implementation of refinement. The B-Method is also a formal method that extends refinement calculus with a component language: it has been used in industrial developments.

In type theory, a **refinement type**^{[2]}^{[3]}^{[4]} is a type endowed with a predicate which is assumed to hold for any element of the refined type. Refinement types can express preconditions when used as function arguments or postconditions when used as return types: for instance, the type of a function which accepts natural numbers and returns natural numbers greater than 5 may be written as . Refinement types are thus related to behavioral subtyping.

**^**Cho, L (2009). "Adopting an Agile Culture A User Experience Team's Journey".*Agile Conference*: 416. doi:10.1109/AGILE.2009.76. ISBN 978-0-7695-3768-9.**^**Freeman, T.; Pfenning, F. (1991). "Refinement types for ML" (PDF).*Proceedings of the ACM Conference on Programming Language Design and Implementation*. pp. 268-277. doi:10.1145/113445.113468.**^**Hayashi, S. (1993). "Logic of refinement types".*Proceedings of the Workshop on Types for Proofs and Programs*. pp. 157-172. CiteSeerX 10.1.1.38.6346 . doi:10.1007/3-540-58085-9_74.**^**Denney, E. (1998). "Refinement types for specification".*Proceedings of the IFIP International Conference on Programming Concepts and Methods*.**125**. Chapman & Hall. pp. 148-166. CiteSeerX 10.1.1.22.4988 .

This software-engineering-related article is a stub. You can help defaultlogic.com resource by . |

This article uses material from the Wikipedia page available here. It is released under the Creative Commons Attribution-Share-Alike License 3.0.

What We've Done

Led Digital Marketing Efforts of Top 500 e-Retailers.

Worked with Top Brands at Leading Agencies.

Successfully Managed Over $50 million in Digital Ad Spend.

Developed Strategies and Processes that Enabled Brands to Grow During an Economic Downturn.

Taught Advanced Internet Marketing Strategies at the graduate level.

Manage research, learning and skills at defaultLogic. Create an account using LinkedIn or facebook to manage and organize your Digital Marketing and Technology knowledge. defaultLogic works like a shopping cart for information -- helping you to save, discuss and share.

Visit defaultLogic's partner sites below: