Design Patterns and Pattern Languages

From COMMDP
Jump to: navigation, search

Christopher Alexander et al. defined a pattern as a reusable solution to a reoccurring problem.[1] Kent Beck and Ward Cunningham started to apply the concept of pattern languages to software engineering in 1987,[2] and the idea was later popularized by Eric Gamma et al. with their landmark language of 23 patterns.[3] Since then, pattern languages have been documented for many areas of software engineering, including architectural design,[4][5] user-interface design,[6] event handling,[7][8][9] and concurrency.[10][11] [12][13][14][15][16] There are even patterns specifically for distributed computing,[17] distributed objects,[18][19][20] communication software,[21][22] RESTful and SOAP web services,[23] cloud computing,[24] and distributed real-time and embedded systems.[25] However, to date, no pattern language has been published specifically for ACPs.

There are two hoped-for benefits of pattern languages that are important to ACP design. First, they create a vocabulary that enables developers to discuss complex ideas in a few words.[20] Second, they allow developers of all experience levels to benefit from expert reusable solutions.[26]

Return to Theoretical Background and further reading

References

  1. C. Alexander, S. Ishikawa, M. Silverstein, M. Jacobson, I. Fiksdahl-King, and S. Angel, A Pattern Language: Towns, Buildings, Construction. New York: Oxford University Press, 1977.
  2. K. Beck and W. Cunningham, “Using Pattern Languages for Object-Oriented Programs,” in Object-Oriented Programming, Systems, Languages, and Application, Sep. 1987.
  3. E. Gamma, R. Helm, R. Johnson, J. Vlissides, and G. Booch, Design Patterns: Elements of Reusable Object-Oriented Software, 1 edition. Addison-Wesley Professional, 1994.
  4. F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal, Pattern-Oriented Software Architecture Volume 1: A System of Patterns, Volume 1 edition. Chichester ; New York: Wiley, 1996.
  5. D. Schmidt, M. Stal, H. Rohnert, and F. Buschmann, Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects, Volume 2 edition. Chichester England ; New York: Wiley, 2000.
  6. J. Tidwell, Designing Interfaces, 2 edition. Sebastopol, CA: O’Reilly Media, 2011.
  7. D. C. Schmidt, “Reactor: An Object Behavioral Pattern for Concurrent Event Demultiplexing and Dispatching,” in Pattern Languages of Program Design, New York, NY, USA: ACM Press/Addison-Wesley Publishing Co., 1995, pp. 529-545.
  8. I. Pyarali, T. Harrison, and D. Schmidt, “Asynchronous Completion Token: an Object Behavioral Pattern for Efficient Asynchronous Event Handling,” in Proc. 3rd Annual Conference on The Pattern Languages Programs, 1997, pp. 1-7.
  9. I. Pyarali, T. Harrison, D. C. Schmidt, and T. D. Jordan, “Proactor - An Object Behavioral Pattern for Demultiplexing and Dispatching Handlers for Asynchronous Events,” in Pattern Languages of Program Design (J. O. Coplien and D. C. Schmidt, eds.), Reading, MA: Addison-Wesley, 1995.
  10. M. K. Douglas C. Schmidt, “Leader/Followers - A Design Pattern for Efficient Multi-threaded Event Demultiplexing and Dispatching,” in 7th Pattern Languages of Programs Conference, Allerton Park, Illinois, 2000.
  11. D. C. Schmidt, “Strategized locking, thread-safe interface, and scoped locking,” C Rep., vol. 11, no. 9, 1999.
  12. R. G. Lavender and D. C. Schmidt, “Active Object an Object Behavioral Pattern for Concurrent Programming” in Pattern Languages of Program Design 2 edited by John Vlissides, Jim Coplien, and Norm Kerth., Boston, MA: Addison-Wesley, 1996.
  13. D. C. Schmidt, “Monitor Object,” in Pattern-Oriented Software Architecture (F. Buschmann, K. Henney, D. C. Schmidt), vol. 4, West Sussex PO19 8SQ, England: John Wiley & Sons Ltd, 2007, pp. 368-369.
  14. D. C. Schmidt and C. D. Cranor, “Half-Sync/Half-Async,” presented at the Second Pattern Languages of Programs, Monticello, Illinois, 1995.
  15. D. C. Schmidt, N. Pryce, and T. H. Harrison, “Thread-Specific Storage for C/C+,” More C Gems, vol. 17, p. 337, 2000.
  16. D. C. Schmidt and T. Harrison, “Double-checked locking,” in Pattern languages of program design, vol. 3, 1997, pp. 363–375.
  17. F. Buschmann, K. Henney, and D. C. Schmidt, Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing, Volume 4 edition. Wiley, 2007.
  18. L. Rising, Design Patterns in Communications Software, 1 edition. Cambridge ; New York: Cambridge University Press, 2001.
  19. P. Jain and D. C. Schmidt, “Service Configurator: A Pattern for Dynamic Configuration of Services,” in Proceedings of the 3rd Conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3, Berkeley, CA, USA, 1997, pp. 16–16.
  20. 20.0 20.1 R. C. Martin, D. Riehle, and F. Buschmann, Pattern Languages of Program Design 3, 1 edition. Reading, Mass: Addison-Wesley Professional, 1997.
  21. L. Rising, Design Patterns in Communications Software, 1 edition. Cambridge ; New York: Cambridge University Press, 2001.
  22. D. C. Schmidt, “Using design patterns to develop reusable object-oriented communication software,” Commun. ACM, vol. 38, no. 10, pp. 65–74, 1995.
  23. R. Daigneau, Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services, 1 edition. Upper Saddle River, NJ: Addison-Wesley Professional, 2011.
  24. C. Fehling, F. Leymann, R. Retter, W. Schupeck, and P. Arbitter, Cloud Computing Patterns: Fundamentals to Design, Build, and Manage Cloud Applications. Springer Science & Business Media, 2014.
  25. “Patterns for Distributed Real-time and Embedded Systems.” [Online]. Available: https://www.dre.vanderbilt.edu/~schmidt/patterns-ace.html. [Accessed: 04-Mar-2016].
  26. E. Gamma, R. Helm, R. Johnson, J. Vlissides, and G. Booch, Design Patterns: Elements of Reusable Object-Oriented Software, 1 edition. Addison-Wesley Professional, 1994.