SFI: A Refinement Based Layered Software ... - Semantic Scholar

1 downloads 0 Views 45KB Size Report
It serves as the foundation for an object-oriented software architecture and construction method that we refer to as stepwise fea- ture introduction (SFI) [3].
SFI: A Refinement Based Layered Software Architecture Ralph-Johan Back ˚ Abo Akademi and Turku Centre for Computer Science Lemminkainenk 14, 20520 Turku, Finland [email protected]

Abstract. Refinement calculus [1,5] is a formal framework for reasoning about program correctness and correctness preserving program refinements. It serves as the foundation for an object-oriented software architecture and construction method that we refer to as stepwise feature introduction (SFI) [3]. Characteristic for this approach is that each software module is described in terms of thin layers. Each layer extends the software with some new feature, in a way that preserves the features that have been introduced by earlier layers. This amounts to requiring that the new layer is a superposition refinement [4] of the layers below. The modules are interconnected using interface specifications, usually providing a more abstract view of the module state than what will actually be implemented. The implementation is required to be a data refinement [9,6] of the interface specification. SFI is based on structuring software with these two basic mechanisms, modularization and extension, while the refinement calculus provides the formal framework for reasoning about the correctness of software constructed in this way. We use UML [8] to describe the software architecture, with refinement calculus providing a rigorous mathematical semantics for the UML constructs employed. This will also give us a formal framework for reasoning about UML class diagrams, in essence using these as proof schemes when arguing about software properties. SFI goes well in hand with an extreme programming (XP) [7] approach to constructing software, with feature introductions corresponding to the iteration cycles in XP. We can look at SFI as providing a general software architecture for XP, and we can look at XP as providing a software process for SFI. We will report on some experiments where these two approaches have been combined [2]. We will also discuss in more detail how the notions of unit tests in XP can be generalized to requirement specifications in SFI.

References 1. R.J. Back. Correctness Preserving Program Refinements: Proof Theory and Applications, volume 131 of Mathematical Centre Tracts. Mathematical Centre, Amsterdam, 1980. C. George and H. Miao (Eds.): ICFEM 2002, LNCS 2495, pp. 1–2, 2002. c Springer-Verlag Berlin Heidelberg 2002 

2

Ralph-Johan Back 2. R.J. Back, L. Milovanov, I. Porres-Paltor and V. Preoteasa. A Experiment on Extreme Programming and Stepwise Feature Introduction. TUCS Technical Report no 451 (http://www.tucs.fi/Research/Series/techreports/), 2002. 3. R.J. Back. Software Construction by Stepwise Feature Introduction. In ZB 2002: Formal Specification and Development in Z and B, Eds. D. Bert, J. Bowen, M. Henson and K. Robinson, Springer LNCS 2272, 2002. 4. R.J. Back and K. Sere. Superposition Refinement of Reactive Systems. Formal Aspects of Computing, 8(3):324–346, 1996. 5. R.J. Back and J. von Wright. Refinement Calculus: A Systematic Introduction. Springer-Verlag, 1998. 6. R. J. Back and J. von Wright. Encoding, decoding, and data refinement. Formal Aspects of Computing, 2000. 7. K. Beck. Extreme Programming Explained Addison-Wesley, the XP Series, 1999. 8. G. Booch, J. Rumbaugh and I. Jacobson. The Unified Modeling Language User Guide. Addison-Wesley, 1998. 9. W.P. de Roever and K. Engelhardt. Data Refinement: Model-Oriented Proof Methods and their Comparison. Cambridge Tracts in Theoretical Computer Science 47, 1998.