|
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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Deepak Alur , Dan Malks , John Crupi , Grady Booch , Martin Fowler, Core J2EE Patterns (Core Design Series): Best Practices and Design Strategies, Sun Microsystems, Inc., Mountain View, CA, 2003
|
| |
2
|
Cristiana Amza , Alan L. Cox , Sandhya Dwarkadas , Pete Keleher , Honghui Lu , Ramakrishnan Rajamony , Weimin Yu , Willy Zwaenepoel, TreadMarks: Shared Memory Computing on Networks of Workstations, Computer, v.29 n.2, p.18-28, February 1996
[doi> 10.1109/2.485843]
|
| |
3
|
Anvik, J. 2002. Evaluating generative parallel design patterns. M.S. thesis, Department of Computing Science, University of Alberta.
|
| |
4
|
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).
|
| |
5
|
Apache Jakarta Project. 2005. http://jakarta.apache.org/velocity
|
| |
6
|
|
| |
7
|
Bosch, J. 1998. Design patterns as language constructs. J. Obj.-Orient. Program. 11, 2, 18--32.
|
| |
8
|
Bromling, S. 2001. Meta--programming with parallel design patterns. M.S. thesis, Department of Computing Science, University of Alberta.
|
| |
9
|
S. Bromling , S. MacDonald , J. Anvik , J. Schaeffer , D. Szafron , K. Tan, Pattern-Based Parallel Programming, Proceedings of the 2002 International Conference on Parallel Processing, p.257, August 18-21, 2002
|
 |
10
|
|
| |
11
|
|
| |
12
|
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.
|
| |
13
|
|
| |
14
|
|
| |
15
|
Chen, J. 2004. RMA: A pattern--based J2EE development tool. M.S. thesis, School of Computer Science, University of Waterloo.
|
| |
16
|
|
| |
17
|
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.
|
| |
18
|
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.
|
| |
19
|
Earl, P. 2004. Types and code generation for use in generative design patterns. M.S. thesis, Department of Computing Science, University of Alberta.
|
| |
20
|
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.
|
| |
21
|
|
| |
22
|
Al Geist , Adam Beguelin , Jack Dongarra , Weicheng Jiang , Robert Manchek , Vaidy Sunderam, PVM: Parallel virtual machine: a users' guide and tutorial for networked parallel computing, MIT Press, Cambridge, MA, 1995
|
| |
23
|
|
| |
24
|
|
| |
25
|
Guo, Z. 2003. Developing network server applications using generative design patterns. M.S. thesis, Department of Computing Science, University of Alberta.
|
| |
26
|
|
| |
27
|
|
| |
28
|
|
 |
29
|
Jan Hannemann , Gregor Kiczales, Design pattern implementation in Java and aspectJ, Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, November 04-08, 2002, Seattle, Washington, USA
|
 |
30
|
|
| |
31
|
|
| |
32
|
|
| |
33
|
Johnson, R. and Foote, B. 1988. Designing reusable classes. Journal of Object-Oriented Programming 1, 2, 22--35.
|
| |
34
|
Gregor Kiczales , Erik Hilsdale , Jim Hugunin , Mik Kersten , Jeffrey Palm , William G. Griswold, An Overview of AspectJ, Proceedings of the 15th European Conference on Object-Oriented Programming, p.327-353, June 18-22, 2001
|
| |
35
|
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.
|
| |
36
|
|
| |
37
|
|
| |
38
|
MacDonald, S. 2002. From patterns to frameworks to parallel programs. Ph.D. thesis, Department of Computing Science, University of Alberta.
|
| |
39
|
S. MacDonald , J. Anvik , S. Bromling , J. Schaeffer , D. Szafron , K. Tan, From patterns to frameworks to parallel programs, Parallel Computing, v.28 n.12, p.1663-1683, December 2002
[doi> 10.1016/S0167-8191(02)00190-4]
|
| |
40
|
|
| |
41
|
S. MacDonald , D. Szafron , J. Schaeffer , J. Anvik , S. Bromling , K. Tan, Generative Design Patterns, Proceedings of the 17th IEEE international conference on Automated software engineering, p.23, September 23-27, 2002
|
| |
42
|
|
| |
43
|
|
| |
44
|
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.
|
| |
45
|
|
| |
46
|
Gail C. Murphy , Albert Lai , Robert J. Walker , Martin P. Robillard, Separating features in source code: an exploratory study, Proceedings of the 23rd International Conference on Software Engineering, p.275-284, May 12-19, 2001, Toronto, Ontario, Canada
|
| |
47
|
Object Technology International, Inc. 2006. Eclipse platform technical overview. http://www.eclipse.org/articles/Whitepaper-Platform-3.1/eclipse-platform-whitepaper.html.
|
| |
48
|
Pollack, M. 2000. Code generation using JavaDoc. http://www.javaworld.com/javaworld/jw-0818-javadoc_p.html.
|
| |
49
|
|
| |
50
|
|
| |
51
|
|
| |
52
|
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.
|
| |
53
|
Singh, A., Schaeffer, J., and Szafron, D. 1998. Experience with parallel programming using code templates. Concurrency: Practice and Experience 10, 2, 91--120.
|
| |
54
|
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.
|
| |
55
|
|
| |
56
|
Sun Microsystems Inc. 2001. Jini architectural overview. http://wwws.sun.com/software/jini/whitepapers/architecture.pdf.
|
| |
57
|
Tan, K. 2003. Pattern-based parallel programming in a distributed memory environment. M.S. thesis, Department of Computing Science, University of Alberta.
|
 |
58
|
Kai Tan , Duane Szafron , Jonathan Schaeffer , John Anvik , Steve MacDonald, Using generative design patterns to generate parallel code for a distributed memory environment, Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming, June 11-13, 2003, San Diego, California, USA
|
| |
59
|
|
| |
60
|
van Winsen, P. 1996. (re)engineering with object-oriented design patterns. M.S. thesis, Department of Information and Computing Sciences, Utrecht University.
|
| |
61
|
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.
|
| |
62
|
|
| |
63
|
|
 |
64
|
|
|