Refinement is reviewed, highlighting in particular the distinction between its use as a specification constructor at a high level, and its use as an implementation mechanism at a low level. Some of its shortcomings as specification constructor at high levels of abstraction are pointed out, and these are used to motivate the adoption of retrenchment for certain high level development steps. Basic properties of retrenchment are described, including a justification of the operation proof obligation, simple examples, its use in requirements engineering and model evolution, and simulation properties. The interaction of retrenchment with refinement notions of correctness is overviewed, as is a range of other technical issues. Two case study scenarios are presented. One is a simple digital redesign control theory problem, the other is an overview of the application of retrenchment to the Mondex Purse development.
More on the
doi: 10.1016/j.scico.2007.04.002 | local copy
@article(SS-SCP-07, author = "Richard Banach and Michael Poppleton and Czeslaw Jeske and Susan Stepney", title = "Engineering and theoretical underpinnings of retrenchment", journal = "Science of Computer Programming", volume = 67, number = "2--3", pages = "301--329", month = jul, year = 2007 )