ACM Home Page
Please provide us with feedback. Feedback
Deferring design pattern decisions and automating structural pattern changes using a design-pattern-based programming system
Full text PdfPdf (2.17 MB)
Source
ACM Transactions on Programming Languages and Systems (TOPLAS) archive
Volume 31 ,  Issue 3  (April 2009) table of contents
Article No. 9  
Year of Publication: 2009
ISSN:0164-0925
Authors
Steve MacDonald  University of Waterloo, ON, Canada
Kai Tan  University of Alberta, Edmonton, AL, Canada
Jonathan Schaeffer  University of Alberta, Edmonton, AL, Canada
Duane Szafron  University of Alberta, Edmonton, AL, Canada
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 63,   Downloads (12 Months): 316,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1498926.1498927
What is a DOI?

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
 
2
 
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
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
 
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
30
 
31
 
32
 
33
Johnson, R. and Foote, B. 1988. Designing reusable classes. Journal of Object-Oriented Programming 1, 2, 22--35.
 
34
 
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
 
40
 
41
 
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
 
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
 
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

Collaborative Colleagues:
Steve MacDonald: colleagues
Kai Tan: colleagues
Jonathan Schaeffer: colleagues
Duane Szafron: colleagues