Excellent system to build a most difficult thing is not the coding (coding), but in early to make the design (design) on the decision. Designed software development life cycle are the key stage, good design can produce good products, but not when the design will affect the quality of the final product. The importance of design has gained recognition, this lively discussion from the people and research and design model will be able to look out. Design patterns are designed with many years of experience give us the experience of people pass on, it is as the introduction of the recommendations of experts, and it's really the power behind are its real-world abstraction. If we do not have enough experience, it is difficult to make a good design, but experienced developers and designers to design mode the form of their experience to us, and had these experiences, we can also make good The design came. Moreover, design patterns also improve our level of software reuse, resulting in improved production efficiency.

A brief history of models and classification

    Software design model idea from the field of architecture (Christopher Alexander) evolved. Kent Beck and Ward Cunningham to Christopher Alexander's idea applied to the software, they note some of the initial model (UI aspects); first published about the use of models in the development of the writings are Erich Gamma in 1991 and published in one papers; and best-known GOF's Design Patterns (1995) had.

In accordance with the development stage, models can be classified as analytical model (analysis patterns), architecture models (architecture patterns), design patterns (design patterns) and Idiom:

1, analysis model - analysis of needs, including through the surface to understand the nature of the problem. Analytical model is the business model of a set of basic structure of the expression of a common concept.
2, architecture model - a software architecture model of the expression of the basic structural organization of the system model. It provides a set of predefined subsystems and components, explains their functions, but also for the organization of the relationship between them and the rules and guiding principles.
3, Design Patterns - A design pattern provides a model, this model of a software system for refining subsystems or components. It describes a generic reusable components, this component solves a specific design context of the general problem.
4, Idiom - of a language peculiar to a low-level model. For instance some models can only use the language of the expression of multiple inheritance (c + +).

Patterns of use of the status quo

    Discussion of existing design patterns books books and records are often introduce design patterns, and few have discussed how to develop new applications in the system to use these reusable designs.

Can be used in the application of design patterns is divided into two levels:

1, occasionally used.
2, the system to use. Systematic use of design patterns goes beyond just the use of a particular model, it can be divided into:

A, Pattern Language (Pattern Languages). A pattern language provides a specific area to solve a series of questions model. It not only provides a design pattern itself, but also provide the relationship between design patterns. They apply this model of language means that fully address specific problem areas of the process.
B, the development process (Development processes). A systematic development process model defines a combination of methods, analysis and design steps, design models and automated instrument development steps.

Systematic development process is the only design patterns can be the development of the practice (common practice) approach. To this end, we need to make:

1. The definition of synthesis technology. This technique can be used to composite design pattern to construct the system.
2. The use of appropriate modeling language to support the synthesis technology.

Poad

In the face of a new complex system, when applied at a number of our design patterns to solve practical problems, we will encounter some challenges:

1, What is the proof of a model can be used as a design component? How to integrate other models, our model of how to define the interface?
2, we can design patterns to combine separate applications? A lot of applications to use a number of design patterns. Challenge whether the adhesion through the application of design patterns to build these models how to interface, the adequacy of existing models, and should use what type of model.
3, how do we model the systematic application of design development and application.

And Poad to solve these problems: POAD - Pattern-Oriented Analysis and Design (Pattern-Oriented Analysis and Design), which uses the structure of the synthesis at high-level design on adhesive (glue) design pattern, which is based on this premise : In some design-level, applies to applications for design pattern there is enough awareness of, and not be subject to Designer mode interior design details. Poad provide logical view as a model to express the application of portfolio design, but also provides the necessary means to track these patterns of participants to the application of the final class diagram inside. Poad of uses include:

1, and promote model-based development.
2, systematic approach to improve the adhesion (glue) mode.
3, development and design framework. Designed by using the model as a framework for development and design building blocks make it easy.
4, improve design quality.

Generally speaking, POAD use UML as modeling language, the definition of a design methodology, it put model as the design of building blocks or component, that the model at the design level by the ability of combinations. Poad defines a particular type of model-based design pattern known as the Construction (constructional design patterns), and the definition of a number of levels of abstract and logical view. Poad also defines how these levels are in accordance with the category (class) has been traced to low-level design.
Here there is an important term "role (Role)", the role of map (Role Diagram) is used to record the conduct of design patterns. Role-based methods consider a model for a collaborative role. A role is a specific act, this act and other roles as a result of the definition of collaboration. A design pattern can be used to capture a group of role models of interactive behavior. Mix for each model have been portrayed as a role graph. Usually we see a description of models are class diagrams, and use the role graph model to describe the time, they will be its higher abstraction, such as for the abstract factory pattern, in the role of the figure is expressed as: Products Factory roles and role. The benefits of role model is to provide a more advanced than the class diagram of the abstract, it abstract the main idea behind the model. Through role models can be combined mode:

1, all existing models using the role graph model.
2, The design uses a prototypical pattern application to derive the composite design pattern. A prototypical application is a concrete application, which is usually represented by an object diagram. It plays the role of the concrete example to be abstracted.
3, the use of applications to select the collaboration diagrams can be used in the application model. The use of each model's role map object map in the application of the role from the role allocated to the object map. Finally, each object was given some from some role model.
4, use the comments off with the role of the object map, create a Designer role relationship matrix. The role relationship matrix is used to analyze how roles are close to each other in terms of the composition constraints. The purpose of this analysis is to discover the pattern interaction synergy and unleash any composite roles. As a result, role equivalent sets that form composite roles are defined. The role relationship matrix is reduced to a final role relationship matrix.
5, finally the role of relationship matrix was used for the composite design pattern to create the role of map (the role diagram for the composite design pattern.).

Introduction Poad give everyone the reason why is because you always see the discussion of a specific design pattern, while the combination of a number of design patterns to build the fine architecture of the system is less discussed. After the essay will be discussed further and you POAD.

Model (analysis model, architecture models and design patterns) is one of our widely discussed topic, research it can in order to improve software reuse (code reuse and design reuse) level. Patterns of development and the development of OO languages, OOAD methodology development, as well as the development of UML are closely related.

In the 20th century, 60 to 70 years, object-oriented language of the period of initial development, Alan Kay (Smalltalk invention people) raised the object-oriented programming, but the theory has not yet formally OOAD raised. Grady Booch until in 1982 published a history of the development OOAD landmark paper "Object-Oriented Design". In the 20th century 80's, OOAD a pioneer in the field have put their OOAD idea, there is relatively well-known Kent Beck, Peter Coad, Don Firesmith, Ivar Jacobson (a UML founder), Steve Mellor, Bertrand Meyer, Jim Rumbaugh (a UML founder) , Rebecca Wirfs-Brock etc..

In the past twenty years, several object-oriented analysis and design (OOAD) methodology has been proposed. These methodologies differ in several respects. They deal with the domain space (domain space) and the creation of analysis and design models in different ways; their analysis created the design process used to capture the output of the model types are also different. At these technologies, the more famous are:

1. Shlaer and Mellor (1988) method.
2. Coad and Yourdon (1990) method.
3. Wirfs-Brock, Wilkerson, Wiener (1990) method.
4. Jacobson's Objectory method.
5. Booch (1994) method.
6. Rumbaugh (1992) method.
7. Hierarchical Object-oriented Design (HOOD) method.
8. Real-Time Object-oriented Modeling language method.
9. Catalysis (1998) method.

A design methodology (design methodology), in general, including three aspects:

1, Technology aspects (technical aspects). Including concepts, symbols and models. Visualized Model Designer expressed idea to solve the problem (model).
2, Process aspects (process). Including the mission and the steps.
3, Organizational aspects (organization). How to Organize in order to be effective methodology.

Above from these theories are put forward to the present 10 years, and in their development process, UML set each director, and finally become the mainstream of the modeling language, while the model has gradually become a hot research topic. But most books about design patterns are mostly writing and recording introduce design patterns, and few have discussed how to develop new applications in the system to use these reusable designs.

How to use the scientific model to improve the level of software reuse? How multiple models combine the use of scientifically? How the systematic use of mode? In order to solve these problems, and the new methodology was proposed, which is POAD - Pattern-Oriented Analysis and Design (Pattern-Oriented Analysis and Design), believed to have someone with this study, the next essay, I Poad will also study a number of study notes and you paste them communicate.