Descriptions for the Patterns used in this
Survey
Patterns for Requirement
Analysis
Description: A Pattern for Requirement
Analysis describes techniques and processes for capturing and validating the
behavioural and non-behavioural requirements of a software
system.
Example: Customer Rapport. How do you build and establish
a good relationship with a customer.
References:
- Creel, C. "Requirements by Patterns", Internet:
http://www.sdmagazine.com/articles/1999/9912/9912d/9912d.htm, 01-03-21.
- Whitenack, B. "RAPPeL: A Requirements-Analysis-Process Pattern Language
for Object-Oriented Development", in Coplien, J., and Schmidt, D., eds.
"Pattern Languages of Program Design", pp. 259-291, Wokingham: Addison-Wesley
Publishing, 1995.
Analysis
Patterns
Description: Analysis Patterns are concepts
that represent a common construction in analysis or business
modelling.
Example: Organisation Hierarchies. This pattern
describes the modelling of (multiple) organisational hierarchies in an
object-oriented class diagram.
Reference:
- Fowler, M. "Analysis Patterns: Reuseable Object Models", Menlo Park:
Addison Wesley Longman, 1997.
Architectural
Patterns
Description: Architectural Patterns help you
to specify the fundamental structure of a software
system.
Example: Layers. The Layers pattern helps to structure
applications that can be decomposed into groups of subtasks in which each group
of subtasks is at a particular level of
abstraction.
References:
- Buschmann, F., et al. "Pattern-Oriented Software Architecture, Volume 1: A
System of Patterns", New York: John Wiley & Sons, 1996.
- Martin, R., et al., eds. "Pattern Languages of Program Design 3",
Wokingham: Addison Wesley Longman, 1998.
Design
Patterns
Description: A Design Pattern is an effective
solution to a recurring problem in the design stage. Object-oriented Design
Patterns consist of a specification of class and object interactions and their
underlying intent.
Example: Observer. Defines a one-to-many
dependency between objects so that when one object changes state, all its
dependents are notified and updated
automatically.
References:
- Gamma, E., et al. "Design Patterns: elements of reuseable object-oriented
software", Wokingham: Addison-Wesley Publishing Company, 1994.
- Mowbray, T., Malveau, R. "Corba Design Patterns", New York: John Wiley
& Sons, 1997.
Idioms (Implementation
Patterns)
Description: An Idiom is a pattern defined
for a specific programming language on a low level of abstraction. It describes
how to implement particular aspects of components and their relationships in a
programming language.
Example: Virtual Constructor. How to build
an object of known abstract type, but of unknown concrete type, without
violating the encapsulation of the inheritance
hierarchy.
References:
- Buschmann, F., et al. "Pattern-Oriented Software Architecture, Volume 1: A
System of Patterns", New York: John Wiley & Sons, 1996.
- Coplien, J. "C++ Idioms", Internet:
http://www.bell-labs.com/user/cope/Patterns/C++Idioms/EuroPLoP98.html,
01-07-02.
Patterns for
Testing
Description: Patterns for Testing are related
to Design Patterns. A Pattern for Testing accompanying a Design Pattern defines
a configuration of objects needed to test the interactions between classes that
are integrated according to the design described by the Design
Pattern.
Example: ObserverTestPattern. This pattern allows for
testing the correct implementation of the Design Pattern Observer. It pays
special attention to the completeness of notifications, the correctness of
queries sent by the Observers and the consistency of the data in the Subject and
the Observers.
Reference:
- McGregor, J. "Test Patterns: Please Stand By", ?in: Journal of
Object-Oriented Programming, pp. 14-19, June 1999.
Patterns for
Maintenance
Description: Patterns for Maintenance
describe techniques for typical maintenance activities as optimisation,
stabilisation or dealing with depreciation.
Example: Consolidate
the Program to Support Evolution and Reuse. Insight gained during the prototype
and consolidation phases can be employed to refactor the software
system.
References:
- Dewar, R., et al. "Identifying and Communication Expertise in Systems
Engineering: A Patterns Approach", in: IEEE Software, pp. 145 - 152, Volume
146 Issue 3, 1999.
- Foote, B., and Opdyke, W. "Lifecycle and Refactoring Patterns That Support
Evolution and Reuse", in Coplien, J., and Schmidt, D., eds. "Pattern Languages
of Program Design", pp. 239-257, Wokingham: Addison-Wesley Publishing,
1995.
Process
Patterns
Description: A process pattern is a collection
of general techniques, actions, and/or tasks (activities) for developing
software systems within a software development
organisation.
Example: The Selfish Class. Describes how to
overcome psychological problems related to the reuse of existing artifacts (e.g.
source code).
References:
- Ambler, S. "An Introduction to Process Patterns", Internet:
http://www.ambysoft.com/processPatterns.pdf, 01-07-05
- Foote, B., and Yoder, J. "The Selfish Class", in Martin, R., et al., eds.
"Pattern Languages of Program Design 3", pp. 451-470, Wokingham: Addison
Wesley Longman, 1998.
Organisational
Patterns
Description: Organisational Patterns describe
the structure and practices of human software development
organisations.
Example: Design by Team. A general pattern that
describes how people can work together to design and develop
software.
References:
- Harrison, N. "Organizational Patterns for Teams", in Coplien, J., and
Schmidt, D., eds. "Pattern Languages of Program Design 2", pp. 345-352,
Wokingham: Addison-Wesley Publishing, 1996.
- "Organizational Patterns", Internet:
http://www.bell-labs.com/cgi-user/OrgPatterns/OrgPatterns?OrganizationalPatterns,
01-03-21
Educational
Patterns
Description: Educational Patterns describe
proven techniques used for teaching technical knowledge.
Example:
Iterative Course Development. Describes the use of iterative improvement to
develop a course that takes the needs of all kinds of students into
account.
Reference:
- Anthony, D. "Patterns for Classroom Education", in: Coplien, J., and
Schmidt, D., eds. "Pattern Languages of Program Design 2", pp. 391-406,
Wokingham: Addison-Wesley Publishing, 1996.
Patterns on Pattern
Writing
Description: Patterns on Pattern Writing
describe and demonstrate writing practices which have been observed to be
particularly effective.
Example: Code Samples. Describes the use
of code samples to improve the quality of a pattern
description.
Reference:
- Meszaros, G., and Doble, J. "A Pattern Language for Pattern Writing",
Internet: http://www.hillside.net/patterns/Writing/pattern_index.html,
01-07-05