This course is given during Spring 2010. If you would like to take a similar course, contact the course leader.
Good knowledge of Object-Oriented programming and basic design patterns from the GoF book.
The idea of using patterns to document expertise, giving a common terminology, is now a mainstream technique in software practice. In this course we look at how the pattern idea has come into use in the software field, ideas for how to write and use patterns, and the use of patterns in various fields, not only for programming.
Görel Hedin, gorel AT cs.lth.se
For each week, read articles, write a 2-3 page summary, and meet and discuss with the other participants. The summary should include:
- issues that are important, interesting and/or controversial
- things that might be interesting to discuss or investigate further
- references to relevant articles
The summary doesn't have to be research paper prose, but it should be written in such a way that a person with some knowledge of patterns could understand it. The idea is that you and your class mates should be able to understand it in a couple of years time, when you have forgotten about the exact course details.
Mail the summary to each other plus Görel the day before the meeting. At the meeting, one person is discussion leader and writes a half page summary of the discussion and mails to all participants.
Optionally, do a specialized study at the end of the course, and write up an essay/report about it. If several people participate, a writer's workshop might be held to give feedback on the report.
4.5 hp for participating in the weekly meetings. An additional 3 hp for doing the in-depth study. (4.5 hp nominally corresponds to 3 weeks, i.e., 15 full work days, considering an academic year of 40 weeks. So, spend around 2 days on each of the 7 items.)
- Friday Feb 5, 2010, 13:15
- Friday Feb 12, 2010, 15:15 (after KW's lic)
- Friday Feb 19, 2010, 13:15
- Friday Feb 26, 2010, 13:15
- Friday Mar 5, 2010, 13:15
- Friday Mar 12, 2010, 13:15
- Friday Mar 19, 2010, 13:15
- Alma Orucevic-Alagic: Alma.Orucevic-Alagic AT cs.lth.se
- Kim Weyns: Kim.Weyns AT cs.lth.se
- Markus Borg: markus AT cs.lth.se
Woudl you like to join? Email gorel AT cs.lth.se on Feb 1 at the latest. Note that the first summary should be mailed on Feb 4.
1. THE ORIGINS OF PATTERNS
C. Alexander. A Pattern Language. Oxford, 1977. C. Alexander is an architect and came up with the idea of using patterns to document how to design towns and building to achieve the "quality without a name". He came up with 253 patterns organized as a "pattern language" which are documented in this book. Read the introduction to the book and three of these patterns.
Read about Christopher Alexander on Wikipedia.
Find out and think about the following:
- What is meant by a pattern?
- What is meant by a pattern language?
- What is Alexander's goal with patterns?
- What is the goal of design patterns in software?
Discuss. How are Alexanders' patterns similar and different to some typical GoF patterns?
2. THE INTRODUCTION OF PATTERNS IN SOFTWARE
- K. Beck & W. Cunningham. Using Pattern Languages for Object-Oriented Programs. OOPSLA-98 workshop on Specification and Design for OOP. http://c2.com/doc/oopsla87.html
- R. Rochat & W. Cunningham. The Vision of the Pattern Language of Programs. OOPSLA-88 workshop on the Specification and Design for OOP, 1988.
- Gamma, Helm, Johnson, Vlissides. Design Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994. Read the introduction.
- Erich Gamma, Richard Helm, Ralph E. Johnson, John M. Vlissides: Design Patterns: Abstraction and Reuse of Object-Oriented Design. ECOOP 1993: 406-431
Read about design patterns on wikipedia.
Discuss. What is the difference between a pattern language and a pattern catalog? What do you think about the design pattern categories? Which of the GoF patterns are the most important?
What is the important thing about patterns in software? In what ways are they useful?
3. DIFFERENT PATTERN STYLES. WHAT IS A GOOD PATTERN?
- C. Alexander. The timeless way of building. Read about the "Alexandrian form" of patterns. In particular, chapter 14. A quick browse through chapters 10-13 is also recommended.
- G. Meszaros and J. Doble. A Pattern Language for Pattern Writing
- R. Johnson and B. Foote. Evolving Frameworks: A Pattern Language for Developing Object-Oriented Frameworks. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.46.8767&rep=rep1&type=pdf
- J. O. Coplien, B. Woolf. A Pattern Language for Writer's Workshops, 1997.
Try to find some more information about what people think is important when writing software patterns.
Find out and discuss.
- What is meant by "forces"?
- What is the difference between different forms of patterns?
- When can something be called a pattern? How fundamentalist are people about this? What is the definition of a pattern?
- Are there several conflicting definitions?
- What is a "writer's workshop"? How is it used in pattern writing?
4. PATTERNS AND SOFTWARE ARCHITECTURE
- P. Kruchten. The 4+1 view model of architecture. IEEE Software, 1995.
- K. Beck, R. Johnson. Patterns generate architecture. ECOOP 1994.
- F. Buschmann et al. Pattern-Oriented Software Architecture, Wiley 1996.
Read the introduction, and browse through some of the patterns.
Search on the internet and put together a list of important architectural patterns.
- What is software architecture?
- What is an architectural pattern?
- Is there a difference between design patterns and architectural patterns?
- What architectural patterns have you found?
- What is the relation between software architecture and patterns?
5. ORGANIZATIONAL PATTERNS
- W. Cunningham. Episodes. In PLoP 1995.
- K. Beck. Extreme Programming article in IEEE Software 1999.
- K. Beck. TDD patterns. Excerpt from book.
Find some additional paper on organizational patterns.
- How is XP related to the Episodes pattern language?
- How is the agile movement related to the pattern community?
- Are XP practices patterns? In what way? In what way not?
- How do the TDD patterns compare to other patterns? Do they follow the typical pattern structure?
6. USE OF DESIGN PATTERNS
- K. Beck, et al. Industrial experience with design patterns. Proceedings of the 18th ICSE, 1996.
- A. Cornils, E. Agerbo. How to preserve the benefits of design patterns. OOPSLA 1998.
- A. Cornils, G. Hedin. Statically checked documentation with design patterns. TOOLS'00.
Try to find some more paper about the experience of using design patterns, or on coupling design patterns to programming languages and code.
- Can patterns be captured in programming langauges?
- Is it useful to capture them in programming languages?
- Which patterns are inherent patterns, and which are just solutions for overcoming deficiencies in the programming language?
7. OTHER KINDS OF PATTERNS & LOOKING BACK AND FORWARD
- Antipatterns. Find out and read about some antipatterns. Which are the typical antipatterns in software?
- Open source patterns. Find out and read about patterns for open source development.
- Pedagogical patterns.
- Find out about other uses of the pattern idea in Software Engineering.
What role do patterns play today in software development? What is their role in the future? Reflect on your own area.
- Design Patterns 15 years later: An interview with Erich Gamma, Richard Helm, and Ralph Johnson, Oct 22 2009, InformIT, http://www.informit.com/articles/article.aspx?p=1404056