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
 S. Hasso, “A Uniform Approach to Software Patterns Classification and Software Composition,” Ph.D. Thesis, IIlinois Institute of Technology, 2007.
 E. Gamma, R. Helm, R. Johnson and J. Vlissides, “Design Patterns,” Addison Wesley, Reading, 1995.
 J. Vlissides, “Pattern Hatching: Design Patterns Applied of Software Patterns,” Addison Wesley, Reading, 1998.
 L. Bass, P. Clements and R. Kazman, “Software Architecture in Practice of SEI Series in Software Engineeering,” 2nd Edition, Addison-Wesley Professional, Boston, 2003.
 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.
 D. Riehle, “Describing and Composing Patterns Using Role Diagrams,” Proceedings of the 1996 Ubilab Conference, Zurich, 1996.
 T. Taibi, “Formalizing Design Patterns Composition,” The IEE-Proceeding Software, Vol. 153, No. 3, 2006, pp. 127-136. http://dx.doi.org/10.1049/ip-sen:20050072
 H. B. Enderton, “A Mathematical Introduction to Logic,” Academic Press, 2nd Edition, 2000.
 L. Lamport, “The Temporal Logic of Actions,” ACM Transactions on Programming Languages and Systems (TOPLAS), Vol. 16, No. 3, 1994, pp. 872-923.
 OMG, “OMG Unified Modeling Language (OMG UML), Superstructure,” 2.4.1 Edition, Object Management Group, 2011.
 T. Reenskaug and J. O. Coplien, “The DCI Architecture: A New Vision of Object-Oriented Programming,” 2009.
 T. Reenskaug, “Working with Objects: The OOram Software Engineering Method,” Manning Publications, 1996.
 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.
 J. Coplien and G. Bjornvig, “Lean Architecture: For Agile Software Development,” 1st Edition, Wiley, West Sussex, 2010.
 R. Wirfs-Brock and A. McKean, “Object Design: Roles, Responsibilities, and Collaborations,” Addison-Wesley, Boston, 2003.
 P. Coad, D. North and M. Mayfield, “Object Models: Strategies, Patterns, and Applications,” Yourdon Press, Upper Saddle River, 1997.
 Microsoft Corp, “C# Programming Guide: Extension Methods,” 2012.
 K. Hazzard and J. Bock, “Metaprogramming in .NET,” Manning Publications Co., Shelter Island, 2013.
 K. Phol, G. Bockle and F. van der Linden, “Software Product Line Engineering: Foundations, Principles, and Techniques,” Springer, Heidelberg, 2010.
 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.
 S. Hasso, “Design Patterns as Connectors Source Code on GitHub,” 2014.