Abstract
In the design phase of software development, the designer must make many fundamental design decisions concerning the architecture of the system. Incorrect decisions are relatively easy and inexpensive to fix if caught during the design process, but the difficulty and cost rise significantly if problems are not found until after coding begins. Unfortunately, it is not always possible to find incorrect design decisions during the design phase. To reduce the cost of expensive corrections, it would be useful to have the ability to defer some design decisions as long as possible, even into the coding stage. Failing that, tool support for automating design changes would give more freedom to revisit and change these decisions when needed. This article shows how a design-pattern-based programming system based on generative design patterns can support the deferral of design decisions where possible, and automate changes where necessary. A generative design pattern is a parameterized pattern form that is capable of generating code for different versions of the underlying design pattern. We demonstrate these ideas in the context of a parallel application written with the CO2P3S pattern-based parallel programming system. We show that CO2P3S can defer the choice of execution architecture (shared-memory or distributed-memory), and can automate several changes to the application structure that would normally be daunting to tackle late in the development cycle. Although we have done this work with a pattern-based parallel programming system, it can be generalized to other domains.
- Alur, D., Crupi, J., and Malks, D. 2003. Core J2EE Patterns: Best Practices and Design Strategies, Second ed. Sun Microsystems Press. Google Scholar
Digital Library
- Amza, C., Cox, A., Dwarkadas, S., Keleher, P., Lu, H., Rajamony, R., Yu, W., and Zwaenepoel, W. 1996. TreadMarks: Shared memory computing on networks of workstations. IEEE Comput. 29, 2, 18--28. Google Scholar
Digital Library
- Anvik, J. 2002. Evaluating generative parallel design patterns. M.S. thesis, Department of Computing Science, University of Alberta.Google Scholar
- Anvik, J., MacDonald, S., Szafron, D., Schaeffer, J., Bromling, S., and Tan, K. 2002. Generating parallel programs from the wavefront design pattern. In Proceedings of 7th International Workshop on High-Level Parallel Programming Models and Supportive Environments (HIPS'02).Google Scholar
- Apache Jakarta Project. 2005. http://jakarta.apache.org/velocityGoogle Scholar
- Baniassad, E., Murphy, G., and Schwanninger, C. 2003. Design pattern rationale graphs: Linking design to source. In Proceedings of the 25th International Conference on Software Engineering. 352--362. Google Scholar
Digital Library
- Bosch, J. 1998. Design patterns as language constructs. J. Obj.-Orient. Program. 11, 2, 18--32.Google Scholar
- Bromling, S. 2001. Meta--programming with parallel design patterns. M.S. thesis, Department of Computing Science, University of Alberta.Google Scholar
- Bromling, S., MacDonald, S., Anvik, J., Schaeffer, J., Szafron, D., and Tan, K. 2002. Pattern-based parallel programming. In Proceedings of the International Conference on Parallel Processing (ICPP'02). 257--265. Google Scholar
Digital Library
- Bryant, A., Catton, A., De Volder, K., and Murphy, G. 2002. Explicit programming. In Proceedings of the 1st International Conference on Aspect-Oriented Software Development. 10--18. Google Scholar
Digital Library
- Budinsky, F., Finnie, M., Vlissides, J., and Yu, P. 1996. Automatic code generation from design patterns. IBM Syst. J. 35, 2, 151--171. Google Scholar
Digital Library
- Chalabine, M. and Kessler, C. 2005. Parallelisation of sequential programs by invasive composition and aspect weaving. In Proceedings of the 6th International Workshop on Advanced Parallel Processing Technologies. Lecture Notes in Computer Science, vol. 3756. Springer-Verlag, 131--140. Google Scholar
Digital Library
- Chalabine, M. and Kessler, C. 2006. Crosscutting concerns in parallelization by invasive software composition and aspect weaving. In Proceedings of the 39th Annual Hawaii International Conference on System Sciences. Google Scholar
Digital Library
- Chalabine, M. and Kessler, C. 2007. A formal framework for automated round-trip software engineering in static aspect weaving and transformations. In Proceedings of the 29th International Conference on Software Engineering. 137--146. Google Scholar
Digital Library
- Chen, J. 2004. RMA: A pattern--based J2EE development tool. M.S. thesis, School of Computer Science, University of Waterloo.Google Scholar
- Chen, J. and MacDonald, S. 2005. RoadMapAssembler: A new pattern-based J2EE development tool. In Proceedings of the IBM Center for Advanced Studies Conference. 113--127. Google Scholar
Digital Library
- Chen, J. and MacDonald, S. 2006. Exploiting roles and responsibilities to generate code in a distributed design-pattern-based programming system. In Proceedings of the 2006 International Conference on Parallel and Distributed Processing Techniques and Applications. 17--23.Google Scholar
- Dietz, S., Chamberlain, B., and Snyder, L. 2004. Abstractions for dynamic data distribution. In Proceedings of the 9th International Workshop on High--Level Parallel Programming Models and Supportive Environments (HIPS'04). 42--51.Google Scholar
- Earl, P. 2004. Types and code generation for use in generative design patterns. M.S. thesis, Department of Computing Science, University of Alberta.Google Scholar
- Florijn, G., Meijers, M., and van Winsen, P. 1997. Tool support for object--oriented patterns. In Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP'97). Lecture Notes in Computer Science, vol. 1241. Springer--Verlag, 472--495.Google Scholar
Cross Ref
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1994. Design Patterns: Elements of Reusable Object--Oriented Software. Addison-Wesley. Google Scholar
Digital Library
- Geist, A., Beguelin, A., Dongarra, J., Jiang, W., Manchek, R., and Sunderam, V. 1994. PVM: Parallel Virtual Machine: A Users' Guide and Tutorial for Networked Parallel Computing. MIT Press. Google Scholar
Digital Library
- Goswami, D., Singh, A., and Preiss, B. 2001. Building parallel applications using design patterns. In Advances in Software Engineering: Topics in Comprehension, Evolution and Evaluation. Springer--Verlag, Chapter 12, 243--265. Google Scholar
Digital Library
- Goswami, D., Singh, A., and Preiss, B. 2002. From design patterns to parallel architectural skeletons. J. Parall. Distribut. Comput. 62, 4, 669--695. Google Scholar
Digital Library
- Guo, Z. 2003. Developing network server applications using generative design patterns. M.S. thesis, Department of Computing Science, University of Alberta.Google Scholar
- Hammouda, I. and Harsu, M. 2004. Documenting maintenance tasks using maintenance patterns. In Proceedings of the 8th European Conference on Software Maintenance and Reengineering. 37--47. Google Scholar
Digital Library
- Hammouda, I. and Koskimies, K. 2002. A pattern-based J2EE application development environment. J. Nordic Comput. 9, 3, 248--260. Google Scholar
Digital Library
- Hammouda, I., Koskinen, J., Pussinen, M., Katara, M., and Mikkonen, T. 2004. Adaptable concern-based framework specialization in UML. In Proceedings of the 19th International Conference on Automated Software Engineering. 78--87. Google Scholar
Digital Library
- Hannemann, J. and Kiczales, G. 2002. Design pattern implementation in Java and AspectJ. In Proceedings of 17th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). 161--173. Google Scholar
Digital Library
- Harbulot, B. and Gurd, J. 2004. Using AspectJ to separate concerns in parallel scientific Java code. In Proceedings of the 3rd International Conference on Aspect-Oriented Software Development. 122--131. Google Scholar
Digital Library
- Jansen, A. and Bosch, J. 2004. Evaluation of tool support for architectural evolution. In Proceedings of the 19th IEEE International Conference on Automated Software Engineering. 375-- 378. Google Scholar
Digital Library
- Jansen, A. and Bosch, J. 2005. Software architecture as a set of architectural design decisions. In Proceedings of the 5th Working IEEE/IFIP Conference on Software Architecture. 109--120. Google Scholar
Digital Library
- Johnson, R. and Foote, B. 1988. Designing reusable classes. Journal of Object-Oriented Programming 1, 2, 22--35.Google Scholar
- Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., and Griswold, W. 2001. An overview of AspectJ. In Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP'01). Lecture Notes in Computer Science, vol. 2072. Springer--Verlag, 327--353. Google Scholar
Digital Library
- Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. V., Loingtier, J.-M., and Irwin, J. 1997. Aspect-oriented programming. In Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP97). Lecture Notes in Computer Science, vol. 1241. Springer-Verlag, 220--242.Google Scholar
- Klusener, S., Lämmel, R., and Verhoef, C. 2005. Architectural modifications to deployed software. Sci. Comput. Program. 54, 143--211. Google Scholar
Digital Library
- Lu, P. 2000. Implementing scoped behaviour for flexible distributed data sharing. IEEE Concurrency 8, 3, 63--73. Google Scholar
Digital Library
- MacDonald, S. 2002. From patterns to frameworks to parallel programs. Ph.D. thesis, Department of Computing Science, University of Alberta.Google Scholar
- MacDonald, S., Anvik, J., Bromling, S., Schaeffer, J., Szafron, D., and Tan, K. 2002. From patterns to frameworks to parallel programs. Parall. Comput. 28, 12, 1663--1683. Google Scholar
Digital Library
- MacDonald, S., Szafron, D., and Schaeffer, J. 1999. Object-oriented pattern--based parallel programming with automatically generated frameworks. In Proceedings of the 5th USENIX Conference on Object-Oriented Technology and Systems (COOTS'99). 29--43. Google Scholar
Digital Library
- MacDonald, S., Szafron, D., Schaeffer, J., Anvik, J., Bromling, S., and Tan, K. 2002. Generative design patterns. In Proceedings of the 17th IEEE International Conference on Automated Software Engineering (ASE2002). 23--34. Google Scholar
Digital Library
- MacDonald, S., Szafron, D., Schaeffer, J., and Bromling, S. 2000. Generating parallel program frameworks from parallel design patterns. In Proceedings of the 6th International Euro-Par Conference. Lecture Notes in Computer Science, vol. 1900. Springer--Verlag, 95--104. Google Scholar
Digital Library
- Mattson, T., Sanders, B., and Massingill, B. 2004. Patterns for Parallel Programming. Addison-Welsey. Google Scholar
Digital Library
- McNaughton, M., Redford, J., Schaeffer, J., and Szafron, D. 2003. Pattern-based AI scripting using ScriptEase. In Proceeding of the 16th Canadian Conference on Artificial Intelligence. 35--49. Google Scholar
Digital Library
- Mehta, P., Amaral, J., and Szafron, D. 2006. Is MPI suitable for a generative design-pattern system? Parall. Comput. 32, 7-8, 616--626. Google Scholar
Digital Library
- Murphy, G., Lai, A., Walker, R., and Robillard, M. 2001. Separating features in source code: An exploratory study. In Proceedings of the 23rd International Conference on Software Engineering. 275--284. Google Scholar
Digital Library
- Object Technology International, Inc. 2006. Eclipse platform technical overview. http://www.eclipse.org/articles/Whitepaper-Platform-3.1/eclipse-platform-whitepaper.html.Google Scholar
- Pollack, M. 2000. Code generation using JavaDoc. http://www.javaworld.com/javaworld/jw-0818-javadoc_p.html.Google Scholar
- Schach, S. 2007. Object-Oriented and Classical Software Engineering, Seventh ed. McGraw-Hill. Google Scholar
Digital Library
- Schaeffer, J., Szafron, D., Lobe, G., and Parsons, I. 1993. The enterprise model for developing distributed applications. IEEE Parall. Distrib. Techn. 1, 3, 85--96. Google Scholar
Digital Library
- Schmidt, D., Stal, M., Rohnert, H., and Buschmann, F. 2000. Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects. Vol. 2. Wiley & Sons. Google Scholar
Digital Library
- Siikarla, M. and Systä, T. 2006. Transformational pattern system—some assembly required. In Proceedings of the 5th International Workshop on Graph Transformation and Visual Modeling Techniques. 57--68.Google Scholar
- Singh, A., Schaeffer, J., and Szafron, D. 1998. Experience with parallel programming using code templates. Concurrency: Practice and Experience 10, 2, 91--120.Google Scholar
Cross Ref
- Siu, S., Simone, M. D., Goswami, D., and Singh, A. 1996. Design patterns for parallel programming. In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA'96). 230--240.Google Scholar
- Snir, M., Otto, S., Hess-Lederman, S., Walker, D., and Dongarra, J. 1996. MPI: The Complete Reference. MIT Press. Google Scholar
Digital Library
- Sun Microsystems Inc. 2001. Jini architectural overview. http://wwws.sun.com/software/jini/whitepapers/architecture.pdf.Google Scholar
- Tan, K. 2003. Pattern-based parallel programming in a distributed memory environment. M.S. thesis, Department of Computing Science, University of Alberta.Google Scholar
- Tan, K., Szafron, D., Schaeffer, J., Anvik, J., and MacDonald, S. 2003. Using generative design patterns to generate parallel code for a distributed memory environment. In Proceedings of the 9th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 2003). 203--215. Google Scholar
Digital Library
- van Gurp, J. and Bosch, J. 2002. Design erosion: Problems and causes. J. Syst. Softw. 61, 2, 105--119. Google Scholar
Digital Library
- van Winsen, P. 1996. (re)engineering with object-oriented design patterns. M.S. thesis, Department of Information and Computing Sciences, Utrecht University.Google Scholar
- Viljamaa, A. and Viljamaa, J. 2002. Creating framework specialization instructions for tool environments. In Proceedings of the Nordic Workshop on Software Development Tools and Techniques.Google Scholar
- Vlissides, J. 1998. Pattern Hatching: Design Patterns Applied. Addison-Wesley. Google Scholar
Digital Library
- von Dincklage, D. 2003. Making patterns explicit with metaprogramming. In Proceedings of the Second International Conference on Generative Programming and Component Engineering. Lecture Notes in Computer Science, vol. 2830. Springer-Verlag, 287--306. Google Scholar
Digital Library
- Witkin, A. and Kass, M. 1991. Reaction--diffusion textures. In Proceedings of the Conference on Computer Graphics (SIGGRAPH'91) 25, 4, 299--308. Google Scholar
Digital Library
Index Terms
Deferring design pattern decisions and automating structural pattern changes using a design-pattern-based programming system
Recommendations
Investigating design anti-pattern and design pattern mutations and their change- and fault-proneness
AbstractDuring software evolution, inexperienced developers may introduce design anti-patterns when they modify their software systems to fix bugs or to add new functionalities based on changes in requirements. Developers may also use design patterns to ...
On the appropriate rationale for using design patterns and pattern documentation
QoSA '13: Proceedings of the 9th international ACM Sigsoft conference on Quality of software architecturesSoftware design patterns are proven solutions for recurring design problems. Decisions on the use of a pattern in a software design form a specific but important class of design decisions. However, despite their importance, these design decisions are ...
Is MPI suitable for a generative design-pattern system?
Algorithmic skeletonsGenerative parallel design patterns can be used to improve the productivity of parallel program development. However many of the generative design-pattern systems are developed for target languages that are not widely used by the high-performance ...






Comments