Impact of Object Oriented Design Patterns On Software Development3
Impact of Object Oriented Design Patterns On Software Development3
ISSN 2229-5518
Abstract —Software design patterns are a bonanza for building large Object Oriented (OO) software systems. They provide well-tested
and proven solutions to recurring problems that developers address. There are several benefits of using patterns. They can speed up the
software development process. Design patterns consolidate learning with an aim to make it easier for designers to use well-known and
successful designs developed from expert experience. At the same time software design patterns are too abstract and remain an art that
has to be mastered over time with experience. This paper seeks to evaluate the advantages and disadvantages of design patterns.
Index Terms— design patterns, analysis, selection, software development, object oriented, pattern catalog, pattern usage
—————————— ——————————
O
not necessarily result in direct reuse of algorithms, detailed
BJECT oriented programming (OOP) has evolved to designs, interfaces, or implementations [4], [5]. It
improve the quality of the programs. However, systematically explains a general design that addresses a
IJSER
interesting concepts such as inheritance and recurring design problem in object-oriented systems. Design
polymorphism were also introduced in OOP to enhance patterns also describe the problem, the solution, when to
reusability. Object oriented design patterns have been apply it, plus the consequences associated with that specific
introduced in mid 1990s as a catalog of common solutions to solution. It also gives implementation hints and examples as
common design problems, and are considered as standard of well as a description or template for how to solve a problem
‘‘good’’ software designs [1]. There are several methodologies that can be used in many different situations. The solution is
in Object Oriented Development, of which design patterns is customized and implemented to solve the problem in a
one of them. Due to the fact that Object Oriented Design is particular context. In the Gang of Four (GoF) book, patterns
complex, it is of paramount importance that software typically have these major elements: Intent, Motivation, and
developers build on the experience of others by making use of Applicability, Structure, Participants, Collaborations,
frameworks or design patterns. The notion of patterns was Consequences, Implementation, Sample Code, Known Uses
first introduced by Christopher Alexander, who identified and and Related Patterns [6]. Although the terminology may differ
proposed solutions to common architectural problems. In his with the author, all Object oriented design patterns are written
work he dealt with the question whether quality in following the aforementioned factors.
architecture can be objective. By examining several This paper is categorized into eight sections; with section 2
architectural artifacts he discovered that ‘‘good’’ quality representing the related work outline, section 3 explaining
designs shared some common characteristics, or shared basic classes of the design pattern catalog, section 4 design
‘‘common solutions to common problems’’ [2]. A design pattern selection, section 5 outlines how to use design
pattern represents a recurring solution to a design problem patterns, section 6 describing the advantages and
within a particular domain such as business data processing, disadvantages of design patterns in 7, section 8 concluding the
telecommunications, graphical user interfaces, databases, and paper.
distributed communication software [3].
Design patterns facilitate architectural level reuse by 2 RELATED WORK
providing “blueprints” that guide the definition, composition, Object oriented design pattern is an active area of research
and evaluation of key components in a software system. in software development. Ackerman L and Gonzalez C
———————————————— explore the benefits of implementing patterns in software
• Dr. R Subburaj is a Professor and Consultant in the Department of designs [7]. The article introduces developers and architects to
Information Technology at SRM University, Chennai., India,. E- the idea of a pattern implementation which is an artifact that
mail: [email protected] allows the codification of a pattern specification for a specific
• Gladman Jekese is an M.Tech student in Information Technology at SRM
University, Chennai, India, E-mail: [email protected] environment and can be created and used for different phases
• Chiedza Hwata is an M.Tech student in Information Technology at SRM in the software development lifecycle [7]. Rising. L analyzes
University, Chennai, India, E-mail: [email protected] an example from a small development team and discovers that
a novice pattern, called the Mediator, is a perfect fit for the
design challenges that they had just spent hours battling [8].
IJSER © 2015
http://www.ijser.org
International Journal of Scientific & Engineering Research, Volume 6, Issue 2, February-2015 962
ISSN 2229-5518
In [9], an analysis was done to verify the reusability of There are 3 basic classes of design patterns;
design patterns and software packages, which uncovered Structural design patterns
some advantages and disadvantages of design patterns. Three This group of design patterns eases software design by
examples employing design patterns were developed, identifying a simple way to realize relationships between
accompanied by alternative designs that solve the same entities. Such patterns are all about Class and Object
problem, plus a tool to calculate the scores of extensibility was composition. Structural class-creation patterns use inheritance
used and it suggested that in most scenarios the patterns to compose interfaces while structural object-patterns define
provide a solution that is most extensible although the ways to compose objects to obtain new functionality.
conclusion cannot be generalized for all patterns in [10]. A Examples of structural design patterns include adapter,
team at Erricson developed frameworks based on design decorator, bridge, composite, flyweight, façade and proxy.
patterns for two years, according to [4], [11]. The history of Creational design patterns
design patterns and some developments characterizing the These design patterns are basically concerned with class
advantages and disadvantages of design patterns are instantiation and are composed of two dominant ideas. One is
presented in [12]. Appostollos 2006 evaluates usage of object encapsulating knowledge about which concrete classes the
oriented design patterns in game development, proving system uses and the other hides how instances of these
maintainability although the research was biased towards concrete classes are created and combined [1]. Creational
game development only [13]. design patterns are further categorized into Object-creational
Yacoub, S. A., Ammar, H. H., & Mili A., teaches developers patterns and Class-creational patterns, where Object-creational
about the abstraction benefits of design patterns. The paper patterns deal with Object creation and Class-creational
explains the benefits that include understanding the patterns deal with Class-instantiation. In greater details,
dependencies and collaboration between participating Object-creational patterns defer part of its object creation to
patterns while hiding implementation details. Douglas C. another object, while Class-creational patterns defer its object
Schmidt and Paul Stephenson present a case study illustrating creation to subclasses Gang of Four [17]. The examples of
the implementation of design patterns (Reactor and Acceptor) creational design patterns are; abstract factory, builder, factory
IJSER
in object-oriented telecommunication software framework method, singleton and prototype.
across UNIX and Windows NT OS platforms and discuss the Behavioral design patterns
techniques, benefits, and limitations of applying a design Behavioral design patterns identify common
pattern-based reuse strategy to commercial communication patterns between objects and realize the
telecommunication software systems [4]. assignment of responsibilities between objects. By doing so,
Fowler, M. (2003), explains the value of patterns as teaching these patterns increase flexibility in carrying out this
tools. Written patterns help educate other team members for communication because they shift focus away from flow of
building and reviewing software and some developers declare control and concentrate just on the way objects are
patterns as good or bad instead of appropriate or not [14]. T interconnected. Observer, chain of responsibility, interpreter,
Cline, M.P. (1996), focuses on the advantages and iterator, memento, template method, command, visitor,
disadvantages of adopting and applying design patterns, strategy and mediator are some of the examples of behavioral
which are a valuable tool for practicing software professionals. design patterns.
The paper presents the practical benefits of design patterns as
well as inhibitors to pattern applications, which proves is 4 HOW TO SELECT A DESIGN PATTERN
beneficial to IT professionals who want to learn more or desire With many design patterns to choose from; it may be
to promote the use of design patterns [15]. difficult to find one that addresses a particular problem,
especially if the list is new and unfamiliar. The problem of
3 DESIGN PATTERN CATALOG searching patterns is defined as the effort of getting
Design patterns can speed up the development process by information about existing patterns; whereas pattern selection
providing tested, proven development paradigms. Effective is described as the problem of deciding which pattern to
software design requires considering issues that may not choose among all available solutions. Below is an outline of
become visible until later in the implementation. Reusing approaches that can be used to find the design pattern that
design patterns helps to prevent subtle issues that can cause suits a particular problem.
major problems and improves code readability for developers According to the GoF book, there are five main approaches
and architects familiar with the patterns. It has taken years to for searching and selecting design patterns namely; pattern
establish common vocabulary on patterns. One of the repositories and pattern catalogues, recommendation systems,
drawbacks to design patterns is that the same names are used formal languages, search engines and other approaches [10].
for different patterns. For example the Value Object pattern In [18], [19], [20], [21], the authors create online pattern
(Fowler, Value Object, 2002) described as a pattern for storing repositories in order to increase the availability of patterns. In
mutable data is preferred by Fowler for static and immutable such repositories patterns can be retrieved through searching
data while he uses the Data Transfer Object pattern(Fowler, criteria and by manual browsing among various patterns.
Data Transfer Object, 2002) for the former purpose [1], [16]. Furthermore, in [22], [23] several recommendation systems are
Design patterns can be grouped according to their usage. suggested in order to suggest the appropriate pattern,
IJSER © 2015
http://www.ijser.org
International Journal of Scientific & Engineering Research, Volume 6, Issue 2, February-2015 963
ISSN 2229-5518
according to the problem that the developer wants to solve. in the pattern relate to one another needs to be achieved.
There are also several papers that describe approaches that use Studying the code helps in learning how to implement the
formal languages in order to represent design patterns and pattern, and this is done by looking at the sample code section
select patterns according to such a representation [24], [25] to find concrete examples of the design pattern in the code.
[26]. Selecting patterns through search engines corresponds to Choice of names for pattern participants is very important
searches through keywords in engines that crawl and index because they ought to be meaningful in the application
pattern descriptions. Finally, there are several other context. They are usually too abstract to appear directly in an
approaches that cannot be classified in any of the above application. Nevertheless, it's useful to incorporate the
categories such as [6], [27]. participant name into the name that appears in the
According to [28], ways have been proposed that enable application, as this helps make the pattern more explicit
software developers to find the adequate design pattern(s) for during the implementation. For example, usage of the Strategy
a given design problem. It remains, thus, a measure avoiding pattern for a text composition algorithm might mean having
the impact of the vast amount of design patterns present in classes such as Simple-Layout-Strategy or Text-Layout-
different design pattern catalogues. Strategy [1]. The next stage involves defining the classes,
Consider how design patterns solve design problems: According declaring their interfaces, establishing their inheritance
to the GoF textbook discussion, design patterns help find relationships, and defining the instance variables that
appropriate objects, determine object granularity, specify represent data and object references. Identifying existing
object interfaces, and several other ways in which design classes in the application that the pattern will affect and
patterns solve design problems. modifying them accordingly can also be included.
Scan Intent sections from all the patterns in the catalog: Each Defining application-specific names for operations in the
pattern's intent is to be considered to find one or more that pattern generally depends on the application. Responsibilities
sound relevant to the current problem. A classification scheme and collaborations associated with each operation should be
can be used to narrow the search. used as a guide. Consistency in the naming conventions is
Study how patterns interrelate: Considering and studying important, for example, using the "Create-" prefix consistently
IJSER
relationships between design patterns can help direct denotes a factory method. Implementing the operations is now
developers to the right pattern or group of patterns. done to carry out the responsibilities and collaborations in the
Study patterns of like purpose: Each catalog classifies design pattern. The Implementation section offers hints to guidance
patterns as creational, structural, or behavioral patterns. Each in the implementation. The examples in the Sample Code
will include introductory comments on the patterns and section may be of help as well [1].
concludes with a section that compares and contrasts them.
These sections give insight into similarities and differences 6 ADVANTAGES OF DESIGN PATTERNS
between patterns of like purpose. The following are some of the benefits of OO design
Examine causes of redesign: Examining the causes of redesign patterns.
in most designs to see if the current problem involves one or They can reduce development time as known solutions are used
more of such and then looking at the patterns that help in instead of reinventing the wheel thereby improving delivery speed.
avoiding the causes of redesign. Design patterns promote discovery and learning with an
Consider what should be variable in the design: This approach aim to make it easier for designers to use well-known and
is the opposite of focusing on the causes of redesign. Instead successful designs developed from expert experience (Chang,
of considering what might force a change to a design, 2011) [5]. According to Rising (2010) [8], there is a debate
consideration is to be done, so as to realize what has to be about the merits of providing developers with formal training
changed without redesign. The focus is on encapsulating the versus simply having access to a large searchable repository
concept that diverges from the themes of many design within which to search for a pattern to address some sticky
patterns. Consider aspects in which design patterns allow problem. According to Bleistein (2003), engineers find
independent variance thereby letting the designer change themselves under increasing pressure to deliver solutions with
them without redesign. a high degree of quality in a timely manner [29]. As the Project
Triangle (2011) describes, project management can only focus
5 HOW TO USE DESIGN PATTERNS on two of the following three facets of a development effort:
Once a design pattern has been selected, the question is (a) speed, (b) quality, and (c) cost [30]. 'Each pattern describes
now on the approach that is to be used to apply the design a problem which occurs over and over again in our
pattern effectively. The following are the steps that can be environment, and then describes the core of the solution to
employed in the use of a design pattern: that problem, in such a way that you can use the solution a
The design pattern has to be read through at least once for million times over, without ever doing it the same way twice’
an overview. While reading, particular attention should be [31].
paid to the applicability and consequences sections to ensure Design patterns provide flexibility and extensibility.
that the pattern is right for that specific problem. The Tichy (1998) describes the concept of flexibility as how
structure, participants and collaborations sections must be design patterns can improve the structure of software, speed
revisited and an understanding of how the classes and objects up implementation, simplify maintenance, and help avoid
IJSER © 2015
http://www.ijser.org
International Journal of Scientific & Engineering Research, Volume 6, Issue 2, February-2015 964
ISSN 2229-5518
architectural drift. Future changes (extensibility) consistent characteristics that allow a system to be reapplied to a new
with one of these hinges are relatively inexpensive, but forcing problem without significant effort”, (Bansiya and Davis, 2002)
the software to change in other ways is like bending your [35]. Design patterns capture expertise and make it accessible
elbow backwards; the system normally breaks [32].It is also to non-experts in a standard form. Therefore patterns help in
beneficial to use known solutions that are tried and tested. identifying common solutions to recurring problems. The
Patterns make the communication of development teams easier. solution is really what the pattern is, yet the problem is a vital
Because design patterns capture distilled experience, they part of the context. A pattern cannot be fully understood
can provide a communication tool throughout the software without understanding the problem, and the problem is
development lifecycle and across diverse communities of essential to helping people find a pattern when they need it
designers and programmers (Cline, 1996) [15]. This improved [15].
communication among software developers is a benefit that Design patterns can be used to provide a software hinge or
can empower less experienced developers to produce high- adaptability point
quality designs. According to Fowler (2003) [33], an expert on Design patterns constrain maintenance programmers by
a team can use written design patterns to help educate other reducing the chance of breaking a design pattern’s
team members as they work through software requirement, adaptability point (or software hinge). Object-oriented design
design, and review. patterns specify the relationships between the participating
Patterns are underspecified classes and determine their collaboration. Such solutions are
Design patterns are underspecified since they generally do especially geared to improve adaptability, by modifying the
not over constrain implementations. This is beneficial since initial design in order to ease future changes [1]. Each pattern
patterns permit flexible solutions that are customizable to allows some aspect of the system structure to change
account for application requirements and constraints imposed independently of other aspects.
by the application development. Because they are They make it easier to reuse successful designs and avoid
underspecified, implementing a pattern on your own for a alternatives that diminish reusability
particular purpose is one of the best ways to learn about it [4]. Design patterns capture the static and dynamic structures
IJSER
Design patterns capture knowledge that is implicitly understood of solutions that occur repeatedly when developing
Once developers are exposed to, and properly motivated applications in a particular context [1], [17], [36].
by, design patterns they are eager to adopt the pattern Systematically incorporating design patterns into the software
nomenclature and concepts. This stems from the fact that development process helps improve software quality since
patterns codify knowledge that is already understood patterns address a fundamental challenge in large-scale
intuitively. Therefore, once basic concepts, notations, and software development: communication of architectural
pattern template formats are mastered, it is straightforward to knowledge among developers. Patterns can also be used in
document and reason about many portions of a system’s software architecture and, if applied properly, increase
architecture and design using patterns [34]. flexibility and reusability of the underlying system. Each
They promote a structured means of documenting software pattern allows some aspect of the system structure to change
architectures independently of other aspects [13].
This is done by capturing the structure and collaboration of Improved IT process and communication
participants in a software architecture at a higher level than Design patterns coordinate the entire process and
source code. This abstraction process is beneficial since it community through a common vocabulary. They assist in
captures the essential architectural interactions while improving software communication quality since they address
suppressing unnecessary details [4]. Design patterns make it a fundamental challenge in large-scale software development;
easier to reuse successful designs and architectures. communication of architectural knowledge among developers
Expressing proven techniques as design patterns makes them [4].
more accessible to developers of new systems. Design patterns Constrain maintenance programmers
help in the choice of design alternatives that make a system Require maintenance programmers to understand and
reusable and avoid alternatives that compromise reusability. preserve the integrity of the design patterns during
Design patterns can even improve the documentation and maintenance changes. This therefore ensures preservation of
maintenance of existing systems by furnishing an explicit the credibility of the quality of design patterns.
specification of class and object interactions and their Design patterns can be used reactively and proactively through
underlying intent. Put simply, design patterns help a designer fragmenting and abstraction of design.
get a design "right" faster [1]. Patterns improve the Design patterns can be used reactively as a documentation
documentation and maintenance of existing systems by tool to classify the fragments of a design and proactively to
furnishing an explicit specification of class and object build robust designs with design-level parts that have well
interactions and their underlying intent. understood trade-offs [15].
Patterns are a known solution for building software systems, and Design patterns can turn a trade-off into a win-win situation by
provide solutions to recurring problems allowing multiple facets of quality that are often viewed as mutually
Developers employ design patterns because they make use exclusive.
of tested solutions. According to Bansyia et al; “Software The notion of patterns was first introduced by Christopher
reusability reflects the presence of object-oriented Alexander, who identified and proposed solutions to common
IJSER © 2015
http://www.ijser.org
International Journal of Scientific & Engineering Research, Volume 6, Issue 2, February-2015 965
ISSN 2229-5518
architectural problems. In his work he dealt with the question The need for patterns results from using computer
whether quality in architecture can be objective. By examining languages or techniques with insufficient abstraction ability
several architectural artifacts he discovered that ‘‘good’’ [37]. Under ideal factoring, a concept should not be copied,
quality designs shared some common characteristics, or but merely referenced. But if something is referenced instead
shared ‘‘common solutions to common problems’’ [2]. of copied, then there is no "pattern" to label and catalog.
Adaptability must be explicitly designed into the software in Conway’s law suggests that “organizations which design
designated places. systems are constrained to produce designs which are copies
of the communication structures of these organizations”
7 DISADVANTAGES OF DESIGN PATTERNS (Conway, 1968) [38]. Although Conway’s law was not verified
The following provides the views of critics; at the time of its publishing it was heavily cited for decades
Remains an art which can only be mastered after using it for and recent studies from Harvard Business School (McCormack
many years et al., 2008) and Microsoft research (Agape et al., 2008) confirm
Developers can still make a mistake of employing a design it [39].
pattern where it is not necessary, for example given a Use of design patterns does not necessarily improve quality
subsystem does not necessarily qualify the usage of a proxy Many studies in the literature are based on the premise that
pattern. It is dependent on experience of usage by the design patterns improve the quality of object-oriented
developers. According to Manolescu (2007), adoption rates are programs. Yet, some studies suggest that the use of design
still low for IT organizations due to lack of discovery and patterns does not always result in “goo” designs. For example,
limited education around how to apply design patterns to a tangled implementation of patterns impacts negatively the
specific domain contexts. A survey from Manolescu (2007) quality that these patterns claim to improve. Also, patterns
indicates that only half of the developers and architects in IT generally ease future enhancement at the expense of
organizations use patterns. Additionally, ninety percent of simplicity. Thus, evidence of quality improvements through
respondents that claim to be pattern practitioners hadn’t taken the use of design patterns consists primarily of intuitive
any educational courses on design patterns. Manolescu statements and examples. There is little empirical evidence to
IJSER
attributes this low adoption rate to the fact that finding support the claims of improved reusability, expandability and
patterns relevant to a particular problem isn’t trivial and understandability as put forward in when applying design
because the design pattern world doesn’t have an patterns. Also, the impact of design patterns on other quality
authoritative index [16]. This challenge is, in part, due to the attributes is unclear.
nature of how patterns often match a problem domain and Developers and managers must recognize that learning a
each domain needs a distinct approach (Bleistein, 2003) [29]. collection of patterns is no substitute for design and implementation
Over engineering and under-engineering skills
Using patterns and languages of patterns to generate In fact, patterns often lead team members to think they
architectures may lead to over-engineering the design of a know more about the solution to a problem than they actually
program. Over-engineering happens when a design or a piece do. For example, recognizing the structure and participants in
of code is more flexible or sophisticated than it should be, a pattern (such as the Reactor or Acceptor patterns)
most likely in preparation for future extensions that may or Design patterns may increase complexity
may not come. Over-engineering is the opposite of under- Design pattern flexibility often comes at a price of
engineering, which occurs when a programmer chooses the complexity as dynamic, highly parameterized software is
path of least resistance to design and implement a program, harder to understand and document (Wendorff, 2001).
leading to a solution that is suboptimal and that must be Patterns are said to be half-baked, that means one always have
changed to adapt to foreseeable changes. Under-engineering is to finish the development and adapt it to their own
much more frequent than over-engineering, because environment. The research indicates that the poor judgments
programmers often work under time and cost pressures and, of individual software developers often add complexity
thus, cannot spend the required time to carefully think and without benefit which results in designs that become difficult
craft their changes. Time and cost pressures often lead to the to alter or remove [40].
decay of the program design and implementation. A solution Conventional pattern catalogs are too abstract
to both under- and over-engineering is to apply refactoring One of the main concerns with conventional pattern
prior to modifying the design or the code of the program. The catalogs [1], [17], however, is that they are too abstract.
refactoring step is necessary to clean up the program and According to research, overly abstract pattern descriptions
makes it ready for change, at the right time and with the right make it difficult for developers to understand and apply a
amount of work. Refactoring to or away from patterns is thus particular pattern to systems they were building in most cases.
a preliminary step before modifying the program, like dusting Use of inappropriate design patterns
a room is before painting it. It contributes to the change by As usual, however, restraint and a good sense of aesthetics
making it easy and safe to perform, even though it is not the are required to resist the temptation of elevating complex
change per se [12]. concepts and principles to the level of hyperbole. There is a
They target the wrong problem sometimes tendency for some developers to adopt a tunnel vision where
they would try to apply patterns that were inappropriate,
simply because they were familiar with the patterns. For
IJSER © 2015
http://www.ijser.org
International Journal of Scientific & Engineering Research, Volume 6, Issue 2, February-2015 966
ISSN 2229-5518
example, the Reactor pattern may be an inefficient event de- of Reusable Object-Oriented Software’, Addison-Wesley Professional, MA,
multiplexing model for a multi-processor platform since it 1994.
serializes application concurrency at a fairly coarse-grained 4. Douglas C. Schmidt and Paul Stephenson, ‘Experience using Design Patterns
level [33]. to Evolve Communication Software across Diverse OS Platforms’,
Pattern overload Proceedings of the 9th European Conference on Object-Oriented
A drawback to the intuitive nature of patterns is a Programming, 1995.
phenomenon we termed pattern overload. In this situation, so 5. C H Chang, C W Lu and P A Hsiung, ‘Pattern-based framework for
many aspects of the project are expressed as patterns that the modularized software development and evolution robustness’, Information
concept becomes diluted. This situation occurs when existing & Software Technology, 2011.
development practices are relabeled as patterns without 6. D.C. Kung, H. Bhambhani, R. Shah and G. Pancholi, ‘An expert system for
significantly improving them. Likewise, developers may suggesting design patterns: a methodology and a prototype’, Series in
spend their time recasting mundane concepts (such as binary Engineering and Computer Science: Software Engineering with
search or building a linked list) into pattern form. Although Computational Intelligence, Kluwer International, 2003.
this is intellectually satisfying, it becomes counter-productive 7. Ackerman. L and Gonzalez. C, ‘The value of pattern implementations’, The
if it does not lead to software quality improvements [41]. World of Software Development Journal, Computer Science Vol.32 Issue. 6,
Expectation management pp. 28-32, 2011.
Many of the problems with patterns discussed above are 8. L. Rising, ‘The benefits of patterns’, IEEE software, Vol. 27 Issue. 5, 2011.
related to managing the expectations of development team 9. Apostolos Ampatzoglou, Apostolos Kritikos, George Kakarontzas and
members. As usual, patterns are no silver bullet that will Ioannis Stamelos, ‘An Empirical Investigation on the Reusability of Design
magically absolve developers from having to wrestle with Patterns and Software Packages’, Department of Informatics, Journal of
tough design and implementation issues. Systems and Software, Vol. 84, 2011.
Languages of Patterns 10. Apostolos Ampatzoglou, Georgia Frantzeskou, Ioannis Stamelos, ‘A
Often, a pattern considered and used in isolation does not Methodology to Assess the Impact of Design Patterns on Software Quality’,
fulfill all the programmer's needs or does not give all the Department of Informatics, Information and Communication Systems
IJSER
potential of its QWAN (Quality Without A Name). A pattern Engineering, University of the Aegean, Samos, Greece, 2012.
must be used by programmers in collaboration with other 11. D. C. Schmidt and T. Suda, ‘An Object-Oriented Frameworkfor Dynamically
patterns. Such consistent set of patterns form language of Configuring Extensible Distributed Communication Systems’, IEE/BCS
patterns. A well-known language of patterns is the language Distributed Systems Engineering Journal (Special Issue on Configurable
defined by Alexander in his work, for example the language of Distributed Systems), Vol. 2, pp. 280–293, 1994.
pattern related to building houses or the one related to 12. Yann-GaÄel Gueheneuc Professor, ‘Empirical Studies on the Impact of
planning a city. In software engineering, there exist many Design Patterns on Quality’, Departement de genie informatique et genie
languages of patterns, even though none is currently more logiciel Ecole Polytechnique de Montreal, Quebec, Canada, 2010.
well-known as the language defined in the GoF's book. 13. Apostolos Ampatzoglou and Alexander Chatzigeorgiou, ‘Evaluation of
Languages of patterns exist also for different functional and object-oriented design patterns in game development’, Department of
non-functional contexts, for example security patterns form a Applied Informatics, University of Macedonia, Thessaloniki, Greece, 2006.
language of patterns dedicated to preventing security issues in 14. Fowler. M, ‘Patterns’, IEEE software, 20(2).Retrieved May 8, 2011 from
programs [41]. http://www.se.rit.edu/~se362/Misc/FowlerOnPatterns-IEEESoftware-Mar-
2003.
8 CONCLUSION AND FUTURE WORK 15. Cline M. P, ‘The pros and cons of adopting and applying design patterns in
From the analysis carried out based on the previous the real world’, Communications of the ACM, 2011.
published work, a conclusion is reached that design patterns 16. D Manolescu, W Kozaczynski, A Miller and J Hogg, ‘The growing divide in
are not a panacea. In as much as there are advantages, they the patterns world’, IEEE software, Vol. 24 Issue. 4, 2011.
also tend to pose a lot of disadvantages if not applied 17. F. Buschmann, R. Meunier, H. Rohnert and M. Stal, ‘Pattern-Oriented
correctly. In this paper a brief overview of OO design patterns Software Architecture - A Pattern System’, Wileys and Sons, 1995.
is given with catalog of design patterns, how to select and use 18. M. Weiss and A. Birukou, ‘Building a pattern repository: Benefiting from the
them and their advantages and disadvantages in OO analysis open, lightweight, and participative nature of wikis’ International
and design. Much work is still to be done on design patterns Symposium on Wikis (WikiSym), 2007.
to make them understandable to new users because currently 19. L. Welicki, J.M.C. Lovelle and L.J. Aguilar, ‘Patterns meta-specification and
usage depends on the developer’s expertise. cataloging: Towards a more dynamic patterns life cycle’ International
Workshop on Software Patterns, IEEE, 2007.
REFERENCES 20. J. Deng, E. Kemp and E.G. Todd, ‘Managing UI pattern collections’
Proceedings of the 6th ACM SIGCHI New Zealand Chapter’s International
1. Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, ‘Design Conference on Computer-Human Interaction: Making CHI Natural (CHINZ
Patterns: Elements of Reusable Object-Oriented Software’, Addison-Wesley,
‘05), ACM, pp. 31–38.
1995.
21. L. Rising, ‘The Pattern Almanac’, Addison-Wesley Longman Publishing,
2. C. Alexander, S. Ishikawa and M. Silverstein, ‘A Pattern Language – Town, 2000.
Buildings, Construction’, Oxford University Press, New York, 1977. 22. P. Gomes, F.C. Pereira, P. Paiva, N. Seco, P. Carreiro, J.L. Ferreira and C.
3. E. Gamma, R. Helms, R. Johnson and J. Vlissides, ‘Design Patterns: Elements Bento, ‘Using CBR for automation of software design patterns’, 6th European
IJSER © 2015
http://www.ijser.org
International Journal of Scientific & Engineering Research, Volume 6, Issue 2, February-2015 967
ISSN 2229-5518
Conference on Advances in Case-Based Reasoning, Springer, pp. 534–548. 31. Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson,
23. G. Shu-Hang, L. Yu-Qing, J. Mao-Zhong, G. Jing and L. Hong-Juan, ‘A Ingrid Fiksdahl and King Shlomo Angel, ‘A Pattern Language: Towns,
requirement analysis pattern selection method for e-business project Buildings, Construction’, 1977.
situation’, IEEE International Conference on E-Business Engineering 32. W. Tichy, ‘A catalogue of general-purpose software design patterns’, UIUC
(ICEBE’07), IEEE, pp. 347–350, 2007. Pattern Group V, 2011.
24. U. Zdun, ‘Systematic pattern selection using pattern language grammars and 33. Martin Fowler, ‘Thoughts Design Patterns’, IEEE Computer Society, pp., 2003.
design space analysis’, Software: Practice & Experience 37 pp. 983–1016, 2007. 34. G. Goos, J. Hartmains and J.van Leeuwen, ‘ECOOP, Object-oriented
25. M. Weiss and H. Mouratidis, ‘Selecting security patterns that fulfill security Programming: 9th European Conference’, Vol. 9, pp. 421, 1995.
requirements’, 16th International Conference on Requirements Engineering 35. Bansiya J and Davis C, ‘A hierarchical model for object-oriented design
(RE’08), IEEE, pp. 169–172, 2008. quality assessment’, Transaction on Software Engineering, IEEE Computer
26. H. Albin-Amiot, P. Cointe, Y.-G. Gueheneuc and N. Jussien, ‘Instantiating and Society 28, Vol. 1, 2002.
detecting design patterns: putting bits and pieces together’, International 36. Zakaria Moudama and Noureddine Chenfour, ‘Design Pattern Support
Conference on Automated Software Engineering (ASE’ 01), ACM, pp. 166– System: Help Making Decision in the Choice of Appropriate Pattern’,
173, 2001. Published by Elsevier Ltd, 2011.
27. O. Zimmermann, U. Zdun, T. Gschwind and F. Leymann, ‘Combining 37. http://www.paulgraham.com/icad.html... Revenge of the nerds. Essay, Paul
pattern languages and reusable architectural decision models into a Graham.
comprehensive and comprehensible design method’, Proceedings of the 7th 38. Melvin E. Conway and M Conway, ‘How do Committees Invent
Working IEEE/IFIP Conference on Software Architecture (WICSA 2008), Datamation’, Vol. 14, pp28-31, 1968.
IEEE, 2008. 39. Apostolos Ampatzoglou, Apostolos Kritikos, George Kakarontzas and
28. Zakaria Moudama and Noureddine Chenfoura, ‘Design Pattern Support Ioannis Stamelos, ‘An Empirical Investigation on the Reusability of Design
System: Help Making Decision in the Choice of Appropriate Pattern’, Patterns and Software Packages’, Department of Informatics, Journal of
Computer Science Department Faculty of Sciences Dhar Mehraz, University Systems and Software, Vol. 84, Greece, 2011.
Sidi Mohammed Ben Abdellah,Fez, Morocco, 2012. 40. P Wendorff, ‘Assessment of design patterns during software reengineering:
29. Bleistein, S. J, Aurum, A., Cox, K., and Ray, P. K, ‘Linking requirements goal Lessons learned from a large commercial project’, IEEE Computer Society,
IJSER
modelling techniques to strategic e-business patterns and best practices’, 2001.
AWRE, 3., 2011. 41. Nobukazu Yoshioka, Hironori Washizaki and Katsuhisa Maruyama, ‘A
30. Project triangle. Wikipedia (2011). Retrieved May suvery on security patterns’, Department of Computer Science, Ritsumeikan
1,2011,from,http://en.wikipedia.org/wiki/Project_triangle. University, National Institute of Informatics, 2008.
IJSER © 2015
http://www.ijser.org