| Design Pattern (computer Science) |
Article Index for Design Pattern |
Website Links For Design |
Information AboutDesign Pattern (computer Science) |
|
HISTORY Patterns originated as an Architectural Concept by Christopher Alexander . In 1987 , Kent Beck and Ward Cunningham began experimenting with the idea of applying patterns to Programming and presented their results at the OOPSLA conference that year. In the following years, Beck, Cunningham and others followed up on this work. Design patterns gained popularity in was published in 1994 (Gamma et al). That same year, the first Pattern Languages Of Programs conference was held and the following year, the Portland Pattern Repository was set up for documentation of design patterns. The scope of the term remained a matter of dispute into the next decade. USES Design patterns can speed up the development process by providing tested, proven development paradigms. Effective software design requires considering issues that may not become visible until later in the implementation. Reusing design patterns helps to prevent subtle issues that can cause major problems and improves code readability for coders and architects familiar with the patterns. Often, people only understand how to apply certain software design techniques to certain problems. These techniques are difficult to apply to a broader range of problems. Design patterns provide general solutions, Documented in a format that doesn't require specifics tied to a particular problem. Design patterns are composed of several sections (see Documentation). Of particular interest are the Structure, Participants, and Collaboration sections. These sections describe a ''design motif'': a prototypical ''micro-architecture'' that developers copy and adapt to their particular designs to solve the recurrent problem described by the design pattern. (A micro-architecture is a set of program constituents (e.g., classes, methods...) and their relationships.) Developers use the design pattern by introducing in their designs this prototypical micro-architecture, which means that micro-architectures in their designs will have structure and organization similar to the chosen design motif. In addition, patterns allow developers to communicate using well-known, well understood names for software interactions. Common design patterns can be improved over time, making them more robust than ad-hoc designs. CLASSIFICATION Design patterns can be classified based on multiple criteria, the most common of which is the basic underlying problem they solve. According to this criterion, design patterns can be classified into various classes, some of which are:
DOCUMENTATION The documentation for a design pattern should contain enough information about the problem that the pattern addresses, the context in which it is used, and the suggested solution. Nonetheless, authors use their own layouts to document design patterns, and these layouts usually resemble the essential parts. The authors usually include additional sections to provide more information, and organize the essential parts in different sections, possibly with different names. A commonly used format is the one used by the Gang Of Four . It contains the following sections:
CRITIQUE The concept of design patterns has been criticized by some in the field of computer science. Design patterns and insufficient abstraction Some feel that the need for patterns results from using computer languages or techniques with insufficient Abstraction ability. Under ideal '' Factoring '', a concept should not be copied, but merely Reference d. But if something is referenced instead of copied, then there is no "pattern" to label and catalog. Paul Graham writes in the essay ''Revenge of the Nerds''.
Peter Norvig provides a similar argument - he demonstrates that 16 out of the 23 patterns in the ''Design Patterns'' book (which is primarily focused on C++) are simplified or eliminated (via direct language support) in Lisp or Dylan . Further arguments along this line are discussed on WikiWikiWeb . Theoretical foundation of design patterns Some theoreticians have suggested that the study of design patterns has been excessively ''ad hoc'', and that the concept sorely needs to be put on a more formal footing. At OOPSLA 1999 , the Gang Of Four were (with their full cooperation) subjected to a Show Trial , in which they were "charged" with numerous crimes against computer science. (They were "convicted" by 2/3 of the "jurors" who attended the trial.) SEE ALSO
REFERENCES
EXTERNAL LINKS
|
|
|