fbpx
Wikipedia

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.

Program refinement

In formal methods, program refinement is the verifiable transformation of an abstract (high-level) formal specification into a concrete (low-level) executable program.[citation needed] 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

Data refinement is used to convert an abstract data model (in terms of sets for example) into implementable data structures (such as arrays).[citation needed] 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

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.

Refinement types

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.

See also

References

  1. ^ 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.
  2. ^ 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.
  3. ^ 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.
  4. ^ Denney, E. (1998). "Refinement types for specification". Proceedings of the IFIP International Conference on Programming Concepts and Methods. Vol. 125. Chapman & Hall. pp. 148–166. CiteSeerX 10.1.1.22.4988.

refinement, computing, this, article, needs, additional, citations, verification, please, help, improve, this, article, adding, citations, reliable, sources, unsourced, material, challenged, removed, find, sources, refinement, computing, news, newspapers, book. This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Refinement computing news newspapers books scholar JSTOR September 2010 Learn how and when to remove this template message 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 Contents 1 Program refinement 2 Data refinement 3 Refinement calculus 4 Refinement types 5 See also 6 ReferencesProgram refinement EditIn formal methods program refinement is the verifiable transformation of an abstract high level formal specification into a concrete low level executable program citation needed 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 EditData refinement is used to convert an abstract data model in terms of sets for example into implementable data structures such as arrays citation needed 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 EditRefinement 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 Refinement types EditMain article Refinement type 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 f N n N n gt 5 displaystyle f mathbb N rightarrow n mathbb N n gt 5 Refinement types are thus related to behavioral subtyping See also EditReification computer science References Edit 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 Vol 125 Chapman amp Hall pp 148 166 CiteSeerX 10 1 1 22 4988 This software engineering related article is a stub You can help Wikipedia by expanding it vte Retrieved from https en wikipedia org w index php title Refinement computing amp oldid 1000094446, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.