Properties of Software Systems Synthesized from Components

Software components are today the most promising approach to dealing with the complexity and uneven quality of software systems. The design-using-components paradigm has been extremely successful in almost every engineering field, with its benefits of rapid, routine, reliable system construction. The central dilemma of software design using components is that component developers cannot know how their components will be used and so cannot describe component properties for an unknown, arbitrary situation; but if the component customer (system designer) must determine relevant properties of each component before using it, component-based development loses much of its appeal. In technical terms, component behavior depends on the operational profile the component sees when in place in a larger system; in turn, that profile depends both on system usage and the internal structure of the system, neither of which can be known to the component developer. A solution to the dilemma is presented in a new theory of component-based design. The component developer performs measurements and provides a component description in such a way that the component buyer can later factor in usage information without repeating the measurements. The heart of the theory is a method of calculating how an operational profile is transformed by one component to be presented to the next component in a system. The theory originated in an investigation of system reliability to be calculated from component reliabilities. It then became apparent that similar methods applied to other system properties, such as its run time and its security properties. Each of these properties can be measured for components by conventional testing and these measurements enter into calculations of the composite system properties. The system designer does not construct or experiment with a trial system, but uses a CAD tool to make predictions of how the system will behave. Preliminary validation experiments support the theory.

[1]  B. Littlewood Software Reliability Model for Modular Program Structure , 1979, IEEE Transactions on Reliability.

[2]  Joseph A. Goguen,et al.  Software Engineering with Obj: Algebraic Specification In Action , 2010 .

[3]  Roger C. Cheung,et al.  A User-Oriented Software Reliability Model , 1978, IEEE Transactions on Software Engineering.

[4]  C. A. R. Hoare,et al.  Proof of correctness of data representations , 1972, Acta Informatica.

[5]  Scott W. Ambler,et al.  Mastering Enterprise JavaBeans , 2004 .

[6]  Dick Hamlet Component Synthesis Theory: The Problem of Scale , 2001 .

[7]  John D. Musa,et al.  Operational profiles in software-reliability engineering , 1993, IEEE Software.

[8]  Denise M. Woit,et al.  Probabilistic program analysis for software component reliability , 2002 .

[9]  Bernard Sufrin,et al.  Principles of Computer Programming: A Mathematical Approach , 1989 .

[10]  John D. McGregor Measuring Component Reliability , 2003 .

[11]  Hany H. Ammar,et al.  Scenario-based reliability analysis of component-based software , 1999, Proceedings 10th International Symposium on Software Reliability Engineering (Cat. No.PR00443).

[12]  Harlan D. Mills,et al.  Theory of Modules , 1987, IEEE Transactions on Software Engineering.

[13]  Swapna S. Gokhale,et al.  Reliability simulation of component-based software systems , 1998, Proceedings Ninth International Symposium on Software Reliability Engineering (Cat. No.98TB100257).

[14]  Fintan Bolton Pure CORBA , 2001 .

[15]  Manuel Blum,et al.  Designing programs that check their work , 1989, STOC '89.

[16]  Peter G. Bishop,et al.  Rescaling reliability bounds for a new operational profile , 2002, ISSTA '02.

[17]  George T. Heineman,et al.  Component-Based Software Engineering: Putting the Pieces Together , 2001 .

[18]  William E. Howden,et al.  Methodology for the Generation of Program Test Data , 1975, IEEE Transactions on Computers.

[19]  Ralf H. Reussner,et al.  Reliability prediction for component-based software architectures , 2003, J. Syst. Softw..

[20]  Aaron G. Cass,et al.  Testing a safety-critical application , 1994, ISSTA '94.

[21]  Clemens Szyperski,et al.  Component software , 1997 .

[22]  Bojan Cukic,et al.  A Bayesian approach to reliability prediction and assessment of component based systems , 2001, Proceedings 12th International Symposium on Software Reliability Engineering.

[23]  Paul Ammann,et al.  Data Diversity: An Approach to Software Fault Tolerance , 1988, IEEE Trans. Computers.

[24]  Dick Hamlet,et al.  Software Component Dependability - a Subdomain-based Theory , 1996 .

[25]  Gary James Jason,et al.  The Logic of Scientific Discovery , 1988 .

[26]  Richard G. Hamlet,et al.  Theory of software reliability based on components , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[27]  David Lorge Parnas,et al.  On a 'Buzzword': Hierarchical Structure , 2001, IFIP Congress.

[28]  Dick Hamlet Experiments with Composing Component Properties , 2003 .

[29]  Gregory Kulczycki,et al.  Performance specification of software components , 2001, SSR '01.

[30]  William E. Howden,et al.  Reliability of the Path Analysis Testing Strategy , 1976, IEEE Transactions on Software Engineering.

[31]  John H. R. May,et al.  Building a system failure rate estimator by identifying component failure rates , 1999, Proceedings 10th International Symposium on Software Reliability Engineering (Cat. No.PR00443).

[32]  Ralf H. Reussner Using Parameterised Contracts to Predict Properties of Component Based Software Architectures , 2002 .

[33]  Michael R. Lyu,et al.  What is software reliability? , 1994, Proceedings of COMPASS'94 - 1994 IEEE 9th Annual Conference on Computer Assurance.

[34]  Richard G. Hamlet On subdomains: Testing, profiles, and components , 2000, ISSTA '00.

[35]  Hoang Pham Software Reliability , 1999 .

[36]  Mrv Michel Chaudron,et al.  Scenario-based prediction of run-time resource consumption in component-based software systems , 2003 .