What is architecture)
Software Architecture is often referred to as architecture, which refers to software framework structures that can be premade and refactored. The architecture is still in the development phase, and the academic community has not yet formed a unified opinion on its definition. Different viewpoints may also lead to different understandings of the software architecture. The following are some mainstream standards.
ANSI/IEEE 610.12-1990 software engineering standard terms for Architecture Definition are: "The architecture is the basic organizational structure of a system based on the relationship between components and components, the relationship between components and the environment, and the principle of the design and evolution of the above content (principle) ".
Mary Shaw and David Garlan hold that the software architecture is a level beyond algorithm design and data structure design in the software design process. Architecture issues include the organization and global control structure of various aspects, communication protocols, synchronization, data storage, assigning specific functions to design elements, and the organization, scale, and performance of design elements, select between different design schemes. The basic idea of Garlan & Shaw models is: Software Architecture = {component, connector, and constraint )}. A component can be a set of code, such as a program module, or an independent program, such as a database server. Connectors can be process calls, pipelines, Remote Procedure Call (RPC), and so on, used to indicate the interaction between components. Constraints are generally rules for object connection, or specify the form and conditions for component connection. For example, upper-layer components can require services of lower-layer components, but not vice versa; the two objects cannot send messages in a regular manner, the consistency constraints of code replication and migration, and the invalid connection conditions.
There are many other ideas about architecture definition, such as the definition of Bass, booch & Rumbaugh & jacbson, Perry & Wolf [7], and Boehm, although the research objects are slightly focused on different definitions of key architectures, the core content is the structure of software systems, represented by the Garlan & Shaw model, it emphasizes that the basic elements of the architecture are components, connectors and their constraints (or connection semantics). Most of these definitions are from the perspective of construction and even software architecture, the definition of IEEE not only emphasizes the basic composition of the system, but also emphasizes the environment of the architecture, that is, the interaction with the outside world.
What is pattern)
Pattern was first proposed by building master Christopher Alexander in 1970s and applied to the construction field. In the 1980s S, Ward cunnheim and Kent Beck introduced his idea into the software field, the Hillside group (initiated by Kent Beck, etc.) and oopsla jointly launched the International plop (Pattern Language of programming) meeting in October 1994. Pattern) it has become a hot topic in the software engineering field. Its Influence in the computer field exceeds that in the construction field.
Christopher Alexander divided the pattern into three parts: the context, which can also be called the context, which indicates the circumstances under which the pattern works; the other is the system of forces ), A solution refers to a problem or an expected goal. A solution refers to a configuration that balances the motives or solves the problems described ). He proposed that the pattern is a rule that represents the relationship between the Zhou environment, the motive, and the solution. Each pattern describes a problem that occurs repeatedly in a certain period of time, as well as the core of the solution to this problem, the pattern is a thing and a process, which not only describes the thing itself, in addition, we propose how to generate this transaction. This definition has been widely accepted by the software industry.
The application of the software model has played a major role in software development, mainly manifested in:
? The software model is a powerful tool for reusing software design methods and process management experience. It is used to extract and abstract a large amount of experience in the long-term practice of software design, management and organization software development, and so on. The pattern is similar to the combination of boxing. It provides a series of thinking routines in software development. For example, the use of the pattern is conducive to a concise and exquisite design in a complex system.
? The software model provides us with a set of concise and general design, management, and organizational terms. At the same time, the model also provides us with a standard to describe abstract things, it can greatly promote communication between people in the software development process, and communication in software development is crucial, "the cause of a failure in a software project can be traced back to the person whose information is not delivered to the person who should receive it in a timely and accurate manner ".
Relationship between architecture and Model
Because architecture and pattern are often mentioned in current software development, many people may confuse these two terms, there is no uniform definition in academia.
Architecture and model should be a process of mutual coverage, but in general architecture is more concerned with the so-called high-level design, the pattern focuses on the application of the "criterion or guiding Scheme" extracted from experience in the design. Therefore, pattern in different problem domains is formed when the problem is considered at different levels. Compared with system analysis, the architecture is proposing a solution to the problem, while system analysis is to solve these problems. Both of them are applied to the model, but the focus is slightly different, the architecture tends to be the architecture mode, while the system analysis is mostly the implementation mode of the design mode and specific language. The architecture emphasizes the structure of the software system and the relationship between each element, while the pattern abstracts the relationship at each layer. For example, during architecture design, design Patterns are some "principles" that have been abstracted by experience. Using these patterns can help you better isolate the relationship between system elements and organizational system elements in architecture design.
Pattern is a "criterion" for extracting experience, which is verified once in practice. There are different patterns at different levels, as small as language implementation (such as Singleton) big to architecture. At different levels, the model provides different levels of guidance, such as architecture design, layer-3 applications, distributed applications, and so on. These technical architecture models provide theoretical reference for architecture design, in the field of program design, the design pattern provides a description of the relationship between each element (in the Object-Oriented field, more refers to the class, gof95's design pattern-Basis for reusable object-oriented software is a classic masterpiece at this level, and the same implementation pattern also appears in the language implementation process, for example. net
The Observer (observer) mode Implementation of the Delegate (delegate) in.
Compared with system analysis or design patterns, the architecture considers problems from a higher level. Therefore, the concerns are reflected in the "unchanged" factors, such as system deployment, the hierarchical and hierarchical design of applications is more important. The deployment scheme proposed on this basis is the focus of architecture consideration. The architecture focuses more on Application Models, more on how to solve the impact of these business differences through technology, whether it is a distributed application, how the system hierarchy is designed, and performance and security, therefore, in this case, a series of technologies such as cluster, load balancing, and Failover will be considered.
It is impossible to differentiate architectures and models by defining them, because they are originally interactive and provide services. For example, the famous MVC (Model-View-Controll) is an example, it is a very classic mode in the design mode and also applies to the architecture. For System Architects familiar with architecture Design, it seems that the relationship between the architecture and the model can be explained in the following example: the architecture is hiht-Level Design, focusing on the common solutions of different businesses, the mode is General Principle (General Principle ).