Professional Documents
Culture Documents
Outline
Introduction Pattern Classification Classification Criteria Example Classification Schemas Conclusions
Pattern Classification
The increase in the number of patterns made it very important to develop proper methodologies and techniques how to organize them.
Discipline
Scope
Domain
Criteria
Purpose
Paradigm
Granularity
Description
Remember that a pre-conditional state has been achieved for later synchronization. Periodically perform an action. Model different quality-of-service transaction styles, such as remote communications. Execute a periodic liveness check to ensure the application is continuing properly by generating a stroke event for the watchdog orthogonal state component.
Tampere University of Technology Software Systems Institute
Intent
Prevent invoking a constructor that might create invalid data.
Concurrent Distinct Choices Ensure that a mapping from indexes to values is injective. Incremental Solution Locally Defined Global Identifier Opaque Type Compute solutions in an incremental manner. Ensure that a local name is globally unique. Ensure that values of a datatype are hidden.
Tampere University of Technology Software Systems Institute
Scope:
Class representation: uses class inheritance. Object representation: uses object composition.
SimpleCompositor
compositor -> Compose()
TeXCompositor Compose()
ArrayCompositor Compose()
Compose()
Define a family of algorithms, encapsulate each one, and make them interchangeable
8109103 Ohjelmistotuotannon Teoria Tampere University of Technology Software Systems Institute
Several specialized subsystems assemble their knowledge to build a possibly or approximate solution
8109103 Ohjelmistotuotannon Teoria Tampere University of Technology Software Systems Institute
Zimmer Classification
Zimmer Classification [Zimmer95] : New classification of the GOF design patterns. Three kinds of relationship between patterns defined:
Pattern X uses pattern Y in its solution. Pattern X is similar to pattern Y. Pattern X can be combined with pattern Y.
These relationships describe new classification schema for the GOF design patterns.
Iterator
Flyweight
Client
Network
Client
Client
Network
Facade
Client
Process Patterns
Address the problem of structures and processes in organisations especially in domain of software development. [Coplien94] Applicable to whole organisations or only particular projects. Used in many aspects of organisation structure:
Size of the organisation. Tasks scheduling. Assigning tasks to organisation (project) members. Information flow. Assuring quality level.
Solution:
Create a team of about 10 selected members that number should ensure enough workforce, but should not affect communication and profit margins.
8109103 Ohjelmistotuotannon Teoria Tampere University of Technology Software Systems Institute
Solution:
The team should be based on one or two members that are specialists in the domain.
Possible problems:
Absence of even one team member may cause challenges to the project.
8109103 Ohjelmistotuotannon Teoria Tampere University of Technology Software Systems Institute
Solution:
A manager role who shields developers from direct contact from outside, but sustains the information flow.
8109103 Ohjelmistotuotannon Teoria Tampere University of Technology Software Systems Institute
Analysis Patterns
Analysis patterns are used to analyse organisations structures and processes in order to model them in software. [Fowler97] Some Analysis Patterns may be applicable only to one domain (e.g. health care) but many can be used in various domains.
Person
Zero or more [0,*] Zero or one [0,1]
Quantity
amount: Number units: Unit +, -, *, /, =, >, <
Account
balance: Quantity
Exactly one [1,1]
Entry
amount: Quantity whenCharged: Timepoint whenBooked: Timepoint
Zero or more [0,*]
Account Pattern
8109103 Ohjelmistotuotannon Teoria Tampere University of Technology Software Systems Institute
[lmm]
Proposed Action
Implemented Action
Reengineering Patterns
The Reengineering Patterns are used to improve maintainability, performance and to allow further changes to legacy systems. [Demeyer03] For example the Split Up God Class pattern addresses the problem of application functionality being concentrated in only one class, which uses other classes as data structures. Suggested solution includes:
Incrementally moving some functionality of the god class to other classes. Creation of new classes. Finally the god class remains as a facade or can be removed.
8109103 Ohjelmistotuotannon Teoria Tampere University of Technology Software Systems Institute
Performance Patterns
Performance Patterns aim at improving performance and scalability of software. [Smith01] For example the Fast Path pattern improves the response time by reducing processing required to access main functionality. In case of an ATM, money withdrawal can have a shortcut to the withdrawal functionality where frequently used amounts are stored.
8109103 Ohjelmistotuotannon Teoria Tampere University of Technology Software Systems Institute
Maintenance Patterns
Maintenance Patterns or Evolution Patterns describe typical changes during lifetime of a software system. Maintenance Patterns differ from the Reengineering Patterns in a way that the first try to find common general rules how systems evolve, while the Reengineering Patterns describe problematic situations and solutions to them during systems evolution. Maintenance Patterns also document system-specific problems and code points where the system may be maintained.
8109103 Ohjelmistotuotannon Teoria Tampere University of Technology Software Systems Institute
Conclusions
Patterns address various problems from urban architecture problems, through software engineering to organisation structures and management. Patterns can be classified depending on many criteria:
Discipline where they are used. Domain. Granularity.
Patterns can be classified in different ways; even the same patterns may be classified differently for example Zimmers classification of the GOF design patterns.
8109103 Ohjelmistotuotannon Teoria Tampere University of Technology Software Systems Institute
References
[Alexander77] C. Alexander. A Pattern Language. Oxford University Press, New York, (1977). [Antoy02] S. Antoy and M. Hanus. Functional Logic Design Patterns. In Proc. Of the 6th International Symposium on Functional and Logic Programming (FLOPS 2002), Aizu (Japan), Springer LNCS 2441, pp. 67-87, 2002. [Barry03] E. J. Barry, C. F. Kemerer, and S. A. Slaughter. On the uniformity of software evolution patterns. In Proceedings of ICSE03, pages 106 113, Portland, Oregon, May 2003. [Buschmann96] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerland and M. Stal. Pattern-Oriented Software Architecture: A System of Patterns. Wiley , (1996). [Brown00] W. J. Brown, H. W. McCornick III and S. W. Thomas. AntiPatterns in Project Management, Addison-Wesley 2000. [ConservationEconomy04] The Conservation economy WWW site. At URL http://www.conservationeconomy.net/. [Coplien94] J. O. Coplien. A Development Process Generative Pattern Language, In Proceedings of PloP/94, Monticello, 11 August 1994. [Demeyer03] S. Demeyer, S. Ducasse and O. Nierstrasz. Object-oriented Reengineering Patterns, Elsevier Science 2003. [Douglass99] B. P. Douglass. Doing Hard Time: Developing Real-Time Systems with UML, Objects, Frameworks, and Patterns, Addison-Wesley, 19. [Fowler97] M. Fowler.Analysis Patterns, Addison-Wesley 1997. [Gabriel] R. Gabriel: A Timeless Way of Hacking, in Core J2EE Patterns, Pearson Education. [Gamma95] E. Gamma, R. Helm, R. Johnson and J. Vlissides. Design Patterns Elements of Reusable Object-Oriented Software, AddisonWesley 1995. [Marinescu02] F. Marinescu. EJB Design Patterns, Addison-Wesley 2002. [MacDonald02] S. MacDonald, D. Szafron, J. Schaeffer, J. Anvik, S. Bromling and K. Tan.Generative Design Patterns. In Proceedings of the 17th IEEE International Conference on Automated Software Engineering (ASE02) 2002. [Smith01] C. U. Smith and L. G. Williams. Performance Solutions A Practical guide to Creating Responsive, Scalable Software, Addison-Wesley 2001. [Trowbridge03] D. Trowbridge, D. Mancini, D. Quick, G. Hohpe, J. Newkirk and D. Lavigne. Enterprise Solution Patterns Using Microsoft .NET, Microsoft Corporation 2003. [Zimmer95] W. Zimmer. Relationships Between Design Patterns In Pattern Languages of Program Design, J. O. Coplien and D. C. Schmidt (eds.), Reading, MA: Addison-Wesley, 1995, pp. 345
Thank You!
Questions?