Composing pattern-based components and verifying correctness

Abstract Designing large software systems out of reusable components has become increasingly popular. Although liberal composition of reusable components saves time and expense, many experiments indicate that people will pay for this (liberal composition) sooner or later, sometimes paying even a higher price than the savings obtained from reusing components. Thus, we advocate that more rigorous analysis methods to check the correctness of component composition would allow combination problems to be detected early in the development process so that people can save the considerable effort of fixing errors downstream. In this paper we describe a rigorous method for component composition that can be used to solve combination and integration problems at the (architectural) design phase of the software development lifecycle. In addition, we introduce the notion of composition pattern in order to promote the reuse of composition solutions to solve routine component composition problems. Once a composition pattern is proven correct, its instances can be used in a particular application without further proof. In this way, our proposed method involves reusing compositions as well as reusing components. We illustrate our approach through an example related to the composition of design patterns as design components. Structural and behavioral correctness proofs about the composition of design patterns are provided. Case studies are also presented to show the applications of the composition patterns.

[1]  Kevin Lano,et al.  Object-oriented specification case studies , 1994 .

[2]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[3]  Paulo S. C. Alencar,et al.  Automating the analysis of design component contracts , 2006, Softw. Pract. Exp..

[4]  Jin Song Dong,et al.  An object-oriented approach to the semantics of programming languages , 1994 .

[5]  B. J. Ferro Castro,et al.  Pattern-Oriented Software Architecture: A System of Patterns , 2009 .

[6]  David Chek Ling Ngo,et al.  Formal specification of design pattern combination using BPSL , 2003, Inf. Softw. Technol..

[7]  Motoshi Saeki,et al.  Behavioral specification of GOF design patterns with LOTOS , 2000, Proceedings Seventh Asia-Pacific Software Engeering Conference. APSEC 2000.

[8]  Paulo S. C. Alencar,et al.  Ensuring structure and behavior correctness in design composition , 2000, Proceedings Seventh IEEE International Conference and Workshop on the Engineering of Computer-Based Systems (ECBS 2000).

[9]  Amnon H. Eden,et al.  Principles in formal specification of object oriented design and architecture , 2001, CASCON.

[10]  Paulo S. C. Alencar,et al.  A behavioral analysis and verification approach to pattern-based design composition , 2003, Software and Systems Modeling.

[11]  Gordon A. Rose,et al.  Object-Z , 1992, Object Orientation in Z.

[12]  Pamela Zave Classification of research efforts in requirements engineering , 1997, ACM Comput. Surv..

[13]  Paulo S. C. Alencar,et al.  A pattern-based approach to structural design composition , 1999, Proceedings. Twenty-Third Annual International Computer Software and Applications Conference (Cat. No.99CB37032).

[14]  Martín Abadi,et al.  Composing Specifications , 1989, REX Workshop.

[15]  Joanne M. Atlee,et al.  Towards automated detection of feature interactions , 1994, FIW.

[16]  David P. Gluch,et al.  Workshop on the State Of the Practice in Dependably Upgrading Critical Systems April 16-17,1997 , 1997 .

[17]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture Volume 1: A System of Patterns , 1996 .

[18]  Ronald A. Olsson,et al.  Reverse Engineering of Design Patterns from Java Source Code , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[19]  Leslie Lamport,et al.  The temporal logic of actions , 1994, TOPL.

[20]  Gary McGraw,et al.  Building Secure Software : ソフトウェアセキュリティについて開発者が知っているべきこと , 2006 .

[21]  Tommi Mikkonen,et al.  Formalizing design patterns , 1998, Proceedings of the 20th International Conference on Software Engineering.

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

[23]  Kang Zhang,et al.  VisDP: a Web service for visualizing design patterns on demand , 2005, International Conference on Information Technology: Coding and Computing (ITCC'05) - Volume II.

[24]  Jim Q. Ning A Component-Based Software Development Model , 1996, Proceedings of 20th International Computer Software and Applications Conference: COMPSAC '96.

[25]  Carl E. Landwehr,et al.  Basic concepts and taxonomy of dependable and secure computing , 2004, IEEE Transactions on Dependable and Secure Computing.

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

[27]  Scott A. Hissam Experience report: correcting system failure in a COTS information system , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[28]  Paulo S. C. Alencar,et al.  A Formal Approach to Architectural Design Patterns , 1996, FME.

[29]  Jin Song Dong,et al.  Blending Object-Z and Timed CSP: an introduction to TCOZ , 1998, Proceedings of the 20th International Conference on Software Engineering.

[30]  Neelam Soundarajan,et al.  Responsibilities and rewards: specifying design patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[31]  Xiaolei Qian,et al.  Correct Architecture Refinement , 1995, IEEE Trans. Software Eng..

[32]  Martin Fowler,et al.  Analysis patterns - reusable object models , 1996, Addison-Wesley series in object-oriented software engineering.

[33]  Nael B. Abu-Ghazaleh,et al.  Using automatable proof obligations for component-based design checking , 1999, Proceedings ECBS'99. IEEE Conference and Workshop on Engineering of Computer-Based Systems.

[34]  Wolfgang Pree,et al.  Design Patterns for Object-Oriented Software Development , 1994, Proceedings of the (19th) International Conference on Software Engineering.

[35]  Kang Zhang,et al.  A model transformation approach for design pattern evolutions , 2006, 13th Annual IEEE International Symposium and Workshop on Engineering of Computer-Based Systems (ECBS'06).

[36]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[37]  Roger Duke,et al.  An object-Z specification of a mobile phone system , 1994 .

[38]  James O. Coplien,et al.  Pattern languages of program design , 1995 .

[39]  Dirk Riehle Composite design patterns , 1997, OOPSLA '97.

[40]  Paulo S. C. Alencar,et al.  A Logical Theory of Interfaces and Objects , 2002, IEEE Trans. Software Eng..

[41]  Jing Dong,et al.  DP-Miner: Design Pattern Discovery Using Matrix , 2007, 14th Annual IEEE International Conference and Workshops on the Engineering of Computer-Based Systems (ECBS'07).

[42]  Toufik Taibi,et al.  Formalising design patterns composition , 2006, IEE Proc. Softw..

[43]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[44]  Roger Duke,et al.  Object-Z: a specification language advocated for the description of standards , 1995 .

[45]  David Garlan,et al.  Architectural Mismatch or Why it's hard to build systems out of existing parts , 1995, 1995 17th International Conference on Software Engineering.

[46]  Oscar Nierstrasz,et al.  Component-oriented software technology , 1995 .

[47]  Rudolf K. Keller,et al.  Design components: towards software composition at the design level , 1998, Proceedings of the 20th International Conference on Software Engineering.

[48]  Oscar Nierstrasz,et al.  Object-oriented software composition , 1995 .