Specifying and Verifying Collaborative Behavior in Component-Based Systems

In a parameterized collaboration design, one views software as a collection of components that play specific roles in interacting, giving rise to collaborative behavior. From this perspective, collaboration designs revolve around reusing collaborations that typify certain design patterns. Unfortunately, verifying that active, concurrently executing components obey the synchronization and communication requirements needed for the collaboration to work is a serious problem. At least two major complications arise in concurrent settings: (1) it may not be possible to analytically identify components that violate the synchronization constraints required by a collaboration, and (2) evolving participants in a collaboration independently often gives rise to unanticipated synchronization conflicts. This work presents a solution technique that addresses both of these problems. Local (that is, role-to-role) synchronization consistency conditions are formalized and associated decidable inference mechanisms are developed to determine mutual compatibility and safe refinement of synchronization behavior. More specifically, given generic parameterized collaborations and components with specific roles, mutual compatibility analysis verifies that the provided and required synchronization models are consistent and integrate correctly. Safe refinement, on the other hand, guarantees that the local synchronization behavior is maintained consistently as the roles and the collaboration are refined during development. This form of local consistent is necessary, but insufficient to guarantee a consistent collaboration overall. As a result, a new notion of global consistency (that is, among multiple components playing multiple roles) is introduced: causal process constraint analysis. A method for capturing, constraining, and analyzing global causal processes, which arise due to causal interference and interaction of components, is presented. Principally, the method allows one to: (1) represent the intended causal processes in terms of interactions depicted in UML collaboration graphs; (2) formulate constraints on such interactions and their evolution; and (3) check that the causal process constraints are satisfied by the observed behavior of the component(s) at run-time.

[1]  Donald Firesmith Testing Object-Oriented Software , 1993, TOOLS.

[2]  Roy S. Freedman,et al.  Testability of Software Components , 1991, IEEE Trans. Software Eng..

[3]  Edward V. Berard,et al.  Essays on object-oriented software engineering , 1992 .

[4]  Tsong Yueh Chen,et al.  Dynamic data flow analysis for C++ , 1995, Proceedings 1995 Asia Pacific Software Engineering Conference.

[5]  S. Bookheimer,et al.  Form and Content Dissociating Syntax and Semantics in Sentence Comprehension , 1999, Neuron.

[6]  Yair Wand,et al.  Choosing classes in conceptual modeling , 1997, CACM.

[7]  David Chenho Kung,et al.  Design recovery for software testing of object-oriented programs , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[8]  Thomas A. Henzinger,et al.  Interface automata , 2001, ESEC/FSE-9.

[9]  Stephen H. Edwards A formal model of software subsystems , 1995 .

[10]  John D. McGregor,et al.  Incremental testing of object-oriented class structures , 1992, ICSE '92.

[11]  Edward Addy The Application of V&V within Reuse-Based Software Engineering , 1996 .

[12]  Stephen H. Edwards Representation inheritance: a safe form of "white box" code inheritance , 1996, Proceedings of Fourth IEEE International Conference on Software Reuse.

[13]  Daniel M. Yellin,et al.  Protocol specifications and component adaptors , 1997, TOPL.

[14]  Bruce W. Weide,et al.  Behavioral relationships between software components , 1997 .

[15]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[16]  Douglas C. Schmidt,et al.  Active object: an object behavioral pattern for concurrent programming , 1996 .

[17]  Grady Booch,et al.  Object-Oriented Analysis and Design with Applications , 1990 .

[18]  Murali Sitaraman,et al.  Special feature: component-based software using resolve , 1994 .

[19]  Mary Shaw Alphard: Form and Content , 1981, Springer New York.

[20]  Xavier Pintado,et al.  Gluons and the cooperation between software components , 1995 .

[21]  Rubén Prieto-Díaz,et al.  Software reusability , 1993 .

[22]  Alexander L. Wolf,et al.  Succeedings of the 8th international workshop on software specification and design , 1996, SOEN.

[23]  Barbara G. Ryder,et al.  Interprocedural Def-Use Associations for C Systems with Single Level Pointers , 1994, IEEE Trans. Software Eng..

[24]  Reiko Heckel,et al.  A methodology for specifying and analyzing consistency of object-oriented behavioral models , 2001, ESEC/FSE-9.

[25]  Douglas C. Schmidt An architectural overview of the ACE framework: a case study of successful cross-platform systems software reuse , 1999 .

[26]  John D. McGregor,et al.  A note on inheritance and state machines , 1993, SOEN.

[27]  David P. Gluch,et al.  Model-Based Verification: A Technology for Dependable System Upgrade , 1998 .

[28]  Edmund M. Clarke,et al.  Model checking and abstraction , 1994, TOPL.

[29]  David Cordes,et al.  Automated flow graph-based testing of object-oriented software modules , 1993, J. Syst. Softw..

[30]  Jeffrey M. Voas Object-Oriented Software Testability , 1996 .

[31]  Oscar Nierstrasz,et al.  Formalizing Composable Software Systems — A Research Agenda , 1997 .

[32]  D. J. Robson,et al.  Object-oriented programming-the problems of validation , 1990, Proceedings. Conference on Software Maintenance 1990.

[33]  Bruce W. Weide,et al.  On Local Certifiability of Software Components , 1994 .

[34]  Michael Papathomas,et al.  Concurrency in object-oriented programming languages , 1995 .

[35]  J. A. Graham,et al.  The verification, validation and testing of object oriented systems : Object oriented technology , 1993 .

[36]  D.R. Wallace,et al.  Software verification and validation: an overview , 1989, IEEE Software.

[37]  Jean-Marc Jézéquel,et al.  Making Components Contract Aware , 1999, Computer.

[38]  Gerald Baumgartner,et al.  Compiler and tool support for debugging object protocols , 2000, SIGSOFT '00/FSE-8.

[39]  Jane Huffman Hayes Testing of Object-Oriented Programming Systems (OOPS): A Fault-Based Approach , 1994, ISOOMS.

[40]  Richard G. Hamlet,et al.  Data Abstraction, Implementation, Specification, and Testing , 1981, TOPL.

[41]  Ivar Jacobson,et al.  Object-oriented software engineering - a use case driven approach , 1993, TOOLS.

[42]  D. J. Robson,et al.  The Testing of Object-Oriented Programs , 1993 .

[43]  Boris Beizer,et al.  Software testing techniques (2. ed.) , 1990 .

[44]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[45]  David Chenho Kung,et al.  On object state testing , 1994, Proceedings Eighteenth Annual International Computer Software and Applications Conference (COMPSAC 94).

[46]  David J. Robson,et al.  The state-based testing of object-oriented programs , 1993, 1993 Conference on Software Maintenance.

[47]  David Garlan,et al.  Architectural Mismatch: Why Reuse Is So Hard , 1995, IEEE Softw..

[48]  Chi-Ming Chung,et al.  Object-oriented programming testing methodology , 1992, Proceedings Fourth International Conference on Software Engineering and Knowledge Engineering.

[49]  David G. Hays Chomsky hierarchy , 2003 .

[50]  José Luiz Fiadeiro,et al.  Verifying for Reuse: Foundations of Object-Oriented System Verification , 1994, Theory and Formal Methods.

[51]  Nicholas R. Jennings,et al.  On agent-based software engineering , 2000, Artif. Intell..

[52]  Alfred Strohmeier,et al.  The Problematics of Testing Object-Oriented Software , 1970 .

[53]  Jeffrey D. Ullman,et al.  Introduction to Automata Theory, Languages and Computation , 1979 .

[54]  Doug Lea,et al.  PSL: Protocols and Pragmatics for Open Systems , 1995 .

[55]  Gail E. Kaiser,et al.  Adequate testing and object-oriented programming , 1990 .

[56]  Grady Booch,et al.  Object-Oriented Design with Applications , 1990 .

[57]  R. M. Poston Automated testing from object models : Object-oriented software testing , 1994 .

[58]  Jeannette M. Wing,et al.  Model checking software systems: a case study , 1995, SIGSOFT FSE.

[59]  José Meseguer,et al.  Extensions and foundations of object-oriented programming , 1986, OOPWORK '86.

[60]  Jean Hartmann,et al.  UML-Based integration testing , 2000, ISSTA '00.

[61]  David Chenho Kung,et al.  Developing an object-oriented software testing and maintenance environment , 1995, CACM.

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

[63]  John D. McGregor,et al.  Integrated object-oriented testing and development processes , 1994, CACM.

[64]  D. J. Robson,et al.  A framework for testing object-oriented programs , 1992 .

[65]  Phyllis G. Frankl,et al.  The ASTOOT approach to testing object-oriented programs , 1994, TSEM.

[66]  Edward Yourdon,et al.  Object-oriented analysis (2nd ed.) , 1991 .

[67]  Jeannette M. Wing,et al.  Specifications and their use in defining subtypes , 1993, OOPSLA '93.

[68]  Thomas J. Cheatham,et al.  Testing object-oriented software systems , 1990, CSC '90.

[69]  W. A. Hegazy The requirements of testing a class of reusable software modules , 1990 .

[70]  Claes Wohlin,et al.  Certification of Software Components , 1994, IEEE Trans. Software Eng..

[71]  Elizabeth A. Kendall,et al.  Role modeling for agent system analysis, design, and implementation , 2000, IEEE Concurr..

[72]  Narain H. Gehani,et al.  Software Specification Techniques , 1985 .

[73]  M. Sitaraman,et al.  INTRODUCTION TO THE SPECIAL SECTION , 1997 .

[74]  William Landi,et al.  Interprocedural Def-Use associations in C programs , 1991, TAV4.

[75]  Wei-Tek Tsai,et al.  Hierarchical Data Flow Analysis for O-O Programs , 1994, J. Object Oriented Program..

[76]  Claude Petitpierre Synchronous C++: A Language for Interactive Applcations , 1998, Computer.

[77]  Rebecca Wirfs-Brock,et al.  Designing object-oriented software , 1990 .

[78]  Levent Yilmaz Automated object-flow testing of dynamic process interaction models , 2001, Proceeding of the 2001 Winter Simulation Conference (Cat. No.01CH37304).

[79]  Dorothea Blostein,et al.  A survey of graph grammars: theory and applications , 1992, Proceedings., 11th IAPR International Conference on Pattern Recognition. Vol.II. Conference B: Pattern Recognition Methodology and Systems.

[80]  Oscar Nierstrasz,et al.  Regular types for active objects , 1993, OOPSLA '93.

[81]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.

[82]  Wolfgang Weck,et al.  A Plea for Grey-Box Components , 1997 .

[83]  李幼升,et al.  Ph , 1989 .

[84]  J. C. Knight,et al.  Certification of Reusable Software Parts , 1993 .

[85]  Shekhar H. Kirani,et al.  Embryonic Classes: Enabling Selective Multiple Inheritance. , 1994 .

[86]  Lars Mathiassen Object-oriented Analysis & Design , 2000 .

[87]  C. Arapis A temporal perspective of composite objects , 1995 .

[88]  Walter Mann,et al.  Correction to "Specification and Analysis of System Architecture Using Rapide" , 1995, IEEE Trans. Software Eng..

[89]  Chrysanthos Dellarocas,et al.  Software Component Interconnection Should Be Treated as a Distinct Design Problem , 1997 .

[90]  Yilmaz Levent A Taxonomical Review of Object-Oriented Simulation Model Verification and Validation Techniques , 1998 .

[91]  Dean Allemang Design Rationale and Reuse , 1996 .

[92]  Daniel E. O'Leary,et al.  Verification of object-oriented systems: Domain-dependent and domain-independent approaches , 1995, J. Syst. Softw..

[93]  Stephen H. Edwards,et al.  A framework for detecting interface violations in component-based software , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[94]  Roy H. Campbell,et al.  The specification of process synchronization by path expressions , 1974, Symposium on Operating Systems.

[95]  Kathi Fisler,et al.  Modular verification of collaboration-based software designs , 2001, ESEC/FSE-9.

[96]  Marc J. Balcer,et al.  The category-partition method for specifying and generating fuctional tests , 1988, CACM.

[97]  Paul C. Jorgensen,et al.  Object-oriented integration testing , 1994, CACM.

[98]  Nicholas R. Jennings On Agent-Based Software Engineering" Artificial Intelligence , 2000 .

[99]  P. David Stotts,et al.  Daistish: systematic algebraic testing for OO programs in the presence of side-effects , 1996, ISSTA '96.

[100]  David Chenho Kung,et al.  Class Firewall, Test Order, and Regression Testing of Object-Oriented Programs , 1995, J. Object Oriented Program..

[101]  Olaf Owe,et al.  ANNA A Language for Annotating Ada Programs , 1987, Lecture Notes in Computer Science.

[102]  Joseph A. Goguen,et al.  Reusing and Interconnecting Software Components , 1986, Computer.

[103]  Stephen J. Mellor,et al.  Object lifecycles: modeling the world in states , 1992 .

[104]  Chrysanthos Dellarocas,et al.  Toward a design handbook for integrating software components , 1997, Proceedings Fifth International Symposium on Assessment of Software Tools and Technologies.

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

[106]  Richard J. LeBlanc,et al.  Class Testing by Examining Pointers , 1994, J. Object Oriented Program..

[107]  Richard E. Nance,et al.  Documentation Production Under Next Generation Technologies , 1989 .

[108]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[109]  Jainendra K. Navlakha,et al.  Verification of programs with procedure-type parameters , 2004, Acta Informatica.

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

[111]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

[112]  Gary T. Leavens Modular specification and verification of object-oriented programs , 1991, IEEE Software.

[113]  Sandro Bologna,et al.  Guest editor's corner achieving quality in software , 1997, J. Syst. Softw..

[114]  John D. McGregor,et al.  Understanding object-oriented: a unifying paradigm , 1990, CACM.

[115]  Gregg Rothermel,et al.  Performing data flow testing on classes , 1994, SIGSOFT '94.