JSEA  Vol.7 No.2 , February 2014
Software Composition Using Behavioral Models of Design Patterns
Abstract: Given a set of requirements structured as design problems, we can apply design patterns to solve each problem individually. Much of the published literature on design patterns addresses this problem—pattern association; however, there is no systematic and practical way that shows how to integrate those individual solutions together. We propose a compositional model based on design patterns by abstracting their behavioral model using role modeling constructs. This approach describes how to transform a design pattern into a role model that can be used to assemble a software application. The role model captures the behavioral relationship between participant components in the design pattern. Our approach offers a complete practical design and implementation strategies, adapted from DCI (Data, Context, and Interaction) architecture. We demonstrate our technique by presenting a simple case study complete with design and implementation code. We also present a simple to follow process that provides guidelines of what to do and how to do it.
Cite this paper: S. Hasso and C. Carlson, "Software Composition Using Behavioral Models of Design Patterns," Journal of Software Engineering and Applications, Vol. 7 No. 2, 2014, pp. 104-117. doi: 10.4236/jsea.2014.72012.

[1]   S. Hasso, “A Uniform Approach to Software Patterns Classification and Software Composition,” Ph.D. Thesis, IIlinois Institute of Technology, 2007.

[2]   E. Gamma, R. Helm, R. Johnson and J. Vlissides, “Design Patterns,” Addison Wesley, Reading, 1995.

[3]   J. Vlissides, “Pattern Hatching: Design Patterns Applied of Software Patterns,” Addison Wesley, Reading, 1998.

[4]   L. Bass, P. Clements and R. Kazman, “Software Architecture in Practice of SEI Series in Software Engineeering,” 2nd Edition, Addison-Wesley Professional, Boston, 2003.

[5]   S. M. Yacoub and H. H. Ammar, “Pattern-Oriented Analysis and Design (POAD): A Structural Composition Approach to Glue Design Patterns,” 34th International Conference on Technology of Object-Oriented Languages and Systems, Santa Barbara, 30 July-04 August 2000, pp. 273-282.

[6]   D. Riehle, “Describing and Composing Patterns Using Role Diagrams,” Proceedings of the 1996 Ubilab Conference, Zurich, 1996.

[7]   T. Taibi, “Formalizing Design Patterns Composition,” The IEE-Proceeding Software, Vol. 153, No. 3, 2006, pp. 127-136.

[8]   H. B. Enderton, “A Mathematical Introduction to Logic,” Academic Press, 2nd Edition, 2000.

[9]   L. Lamport, “The Temporal Logic of Actions,” ACM Transactions on Programming Languages and Systems (TOPLAS), Vol. 16, No. 3, 1994, pp. 872-923.

[10]   OMG, “OMG Unified Modeling Language (OMG UML), Superstructure,” 2.4.1 Edition, Object Management Group, 2011.

[11]   T. Reenskaug and J. O. Coplien, “The DCI Architecture: A New Vision of Object-Oriented Programming,” 2009.

[12]   T. Reenskaug, “Working with Objects: The OOram Software Engineering Method,” Manning Publications, 1996.

[13]   N. Scharli, S. Ducasse, O. Nierstrasz and A. P. Black, “Traits: Composable Units of Behaviour,” Proceedings of European Conference on Object-Oriented Programming (ECOOP’03), Vol. 2743, pp. 248-274.

[14]   J. Coplien and G. Bjornvig, “Lean Architecture: For Agile Software Development,” 1st Edition, Wiley, West Sussex, 2010.

[15]   R. Wirfs-Brock and A. McKean, “Object Design: Roles, Responsibilities, and Collaborations,” Addison-Wesley, Boston, 2003.

[16]   P. Coad, D. North and M. Mayfield, “Object Models: Strategies, Patterns, and Applications,” Yourdon Press, Upper Saddle River, 1997.

[17]   Microsoft Corp, “C# Programming Guide: Extension Methods,” 2012.

[18]   K. Hazzard and J. Bock, “Metaprogramming in .NET,” Manning Publications Co., Shelter Island, 2013.

[19]   K. Phol, G. Bockle and F. van der Linden, “Software Product Line Engineering: Foundations, Principles, and Techniques,” Springer, Heidelberg, 2010.

[20]   C. Wohlin, P. Runeson, M. Host, M. C. Ohlsson, B. Regnell and A. Wesslén, “Experimentation in Software Engineering: An Introduction of the Kluwer International Series in Software Enginerring,” Kluwer Academic Publishers, Boston, 2000.

[21]   S. Hasso, “Design Patterns as Connectors Source Code on GitHub,” 2014.