On Local Certifiability of Software Components

Large software systems, like other large engineered systems, consist of components that are meant to be independent except at their interfaces. An important aspect of any large system is the need for local certifiability: to be able to establish properties of components out of the context of the larger system(s) in which they are embedded, and to be sure that any properties thus certified are certain to hold even when the components are composed with others to build larger ones. This is especially important for "black-box" reusable components, which need to be prequalified for inclusion in a component library. A good software engineering discipline must support local certifiability of important component properties, or life-cycle costs are inherently doomed to spiral out of control for larger and larger systems. No software engineering discipline in general use today can support local certifiability of most interesting properties. But local certifiability of many important properties — including, crucially, correctness with respect to an abstract specification — is possible in at least one practical discipline (Hollingsworth 92b).

[1]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

[2]  Wolfgang Polak,et al.  Formal Verification of Ada Programs , 1990, IEEE Trans. Software Eng..

[3]  Norman Wilde,et al.  Maintaining object-oriented software , 1993, IEEE Software.

[4]  Bruce W. Weide,et al.  Engineering 'unbounded' reusable ada generics , 1992 .

[5]  Joan Krone,et al.  The role of verification in software reusability , 1988 .

[6]  Joseph Eugene Hollingsworth Software component design-for-reuse: a language-independent discipline applied to ADA , 1992 .

[7]  Peter G. Neumann,et al.  Are dependable systems feasible? , 1993, CACM.

[8]  Stephen H. Edwards Common Interface Models for Reusable Software , 1993, Int. J. Softw. Eng. Knowl. Eng..

[9]  Franz Weber Getting Class Correctness and System Correctness Equivalent (How to get covariance right) , 1992, TOOLS.

[10]  Don S. Batory,et al.  The design and implementation of hierarchical software systems with reusable components , 1992, TSEM.

[11]  Bruce W. Weide,et al.  Copying and Swapping: Influences on the Design of Reusable Software Components , 1991, IEEE Trans. Software Eng..

[12]  David Lorge Parnas,et al.  Software aspects of strategic defense systems , 1985, CACM.

[13]  Friedrich Ludwig Bauer Software Engineering: An Advanced Course , 1973 .

[14]  V. Stavridou,et al.  Abstraction and specification in program development , 1988 .

[15]  Gary T. Leavens,et al.  Reasoning about object-oriented programs that use subtypes , 1990, OOPSLA/ECOOP '90.

[16]  Murali Sitaraman Performance-Parameterized Reusable Software Components , 1992, Int. J. Softw. Eng. Knowl. Eng..

[17]  William F. Ogden,et al.  Modular Verification of Ada Generics , 1991, Comput. Lang..

[18]  Alexander A. Stepanov,et al.  The Ada® Generic Library: Linear List Processing Packages , 1989 .

[19]  CORPORATE Computer Science and Technology Board,et al.  Scaling up: a research agenda for software engineering , 1990, CACM.

[20]  Barbara Liskov,et al.  Abstraction and Specification in Program Development , 1986 .

[21]  Stephen A. Cook,et al.  Soundness and Completeness of an Axiom System for Program Verification , 1978, SIAM J. Comput..

[22]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .