I. Software Architecture (Architecture)
Definition of software architecture
Generally, a software architecture is called an architecture, which refers to a software framework 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. For example, ANSI/IEEE610.12-1990 software project standard vocabulary for architecture definition is "architecture is the basic organizational structure of a system based on the relationship between components, components, components and the relationship between the environment and know the principles of design and evolution of the above content (principle) the basic idea of the Garlan & Shaw model is: Software Architecture = {component, connector, constraint )}.
For the development of software projects, a clear software architecture is the first priority. The traditional software development process can be divided into several stages from concept to implementation, including problem definition, demand analysis, software design, software implementation and software testing. The establishment of software architecture lies after requirement analysis and prior to software design. When establishing a software architecture, the system designer mainly analyzes the entire system from the perspective of structure, selects appropriate components, the interaction between components, and their constraints, finally, a system framework is formed to meet users' needs and lay the foundation for software design.
Software Architecture Style
A core issue in software architecture design is whether repeated architecture models can be used, that is, whether software reuse at the structure level can be achieved. That is, whether the same architecture can be used in different software systems. For this purpose, scholars began to study and practice the style of software architecture.
The software architecture style is the usual pattern used to describe the system organization mode of a specific application field. It reflects the full structure and semantics of multiple systems in the field, and guides how to effectively organize modules and subsystems into a complete system. The Research and Practice of the software architecture style promotes the reuse of the design. Some proven solutions can also be used reliably to solve new problems. The unchanged part of the architecture style enables different systems to share an implementation code. The system must be organized in a frequently used and standardized way, so that other designers can easily understand the system structure.
Garlan and Shaw classify General Architecture styles as follows:
(1) data stream style: batch processing sequence, pipeline/filter, etc;
(2) Call/return styles: Main Program/subroutine, object-oriented styles, hierarchies, etc.
(3) Independent Component style: Process Communication and Event System;
(4) Virtual Machine style: Interpreter, rule-based system, etc;
(5) warehouse style: Database System, hypertext system, and Blackboard System.
In recent years, many new Architecture styles have emerged, such as the Client/Server structure, Browser/Server structure, orthogonal structure) structure, layer-3 C/S structure, etc.
Modeling of software architecture
The primary question of studying the software architecture is how to represent the software architecture, that is, how to model the software architecture. Based on different modeling priorities, software architecture models can be divided into five types: structure model, framework model, dynamic model, process model and function model. The most frequently used is the structure model and dynamic model.
Research hotspots
At present, the architecture is still a new research field, and its concept is still quite vague. However, the software architecture, as an integral part of the software project field, has made great strides and has received the attention of most software system design and researchers.
Currently, more active research areas of software architecture include: (1) Research on the basis of Software Architecture Form; (2) (3) Establish a model and method for measuring and evaluating the software architecture. (4) establish a software architecture model library for specialized fields. (5) transition the software architecture from current intuition and experience to theory.
Ii. Mode
Pattern was first proposed by architect christopheralexander in 1970s and applied to the construction field. In the 1980s S, wardcunnhan and kentbeck introduced their ideas into the software field, assumeralexander divides the pattern into three parts:
(1) context refers to the circumstances under which the mode works;
(2) systemofforces indicates the problem or expected goal;
(3) solution refers to a configuration that balances each motive or solves the stated problem ).
He pointed out that the model is a rule that represents the relationship between weeks, motivations, and solutions. Each model 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. It not only describes the thing itself, in addition, we propose how to generate this thing through the process. This definition has been widely accepted by the software industry.
The application of the software model has played a major role in software development. The main table is as follows:
(1) 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 design software and management organization software development practices. Similar to the combination of boxing, the pattern provides a series of thinking routines in software development. For example, the use of patterns is conducive to the creation of concise and static designs in complex systems.
(2) 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 for describing 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 software project failure can be traced back to the person who should receive the software project if the information is not delivered in a timely and accurate manner ".
Iii. Relationship between architecture and Model
Architecture and pattern are often mentioned in current software development. These two terms are easy to confuse and there is no uniform definition in the academic world.
Architecture and model should be a process of mutual coverage, but architecture is more concerned with the so-called high-leveldesign, 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. The goal of the mode is to separate the unchanged and changed parts of the common problems. The unchanged part forms a pattern. Therefore, pattern is a "criterion" for empirical extraction, and has been verified again and again in practice. There are different patterns at different levels, from language implementation (such as Singleton) to architecture. At different levels, the model provides different levels of guidance. Depending on the granularity of the problem to be handled, the mode can be divided into three layers:
(1) Architecture Pattern, design pattern, and implementation pattern ). the architecture pattern is the highest level in the pattern. It describes the main structure organization or outline in the software system. It usually provides a set of pre-defined subsystems and specifies their responsibilities, and provides the rules and guidelines for organizing them together. For example, the user and file system security policy model, the N-layer structure, Component Object Service, and so on, the well-known MVC structure also belongs to the architectural pattern layer. An architecture pattern can often be broken down into multiple design patterns for joint use.
(2) The design pattern is the second level in the pattern to deal with repeated problems in the programming. For example, the 23 basic design patterns-factorypattern and observerpattern summarized in design patterns-the basics of reusable object-oriented software.
(3) The implementation mode is the lowest and most detailed level. It handles issues from details to programming languages. For example, class name, variable name, function name naming rules, exception handling rules, and so on.
Compared with system analysis or design patterns, the architecture has a higher level of consideration, so the concerns are reflected in the "unchanged" factors. For example, during 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 is more concerned with the application model. It is more embodied in solving the impact of these business differences through technology, focusing on whether it is a distributed application, how the system hierarchy is designed, and also on performance and security, therefore, in this case, a series of technologies such as cluster, load balancing, and Failover will be considered.
In short, it is impossible to distinguish between architectures and models by defining them. Because they are originally interactive and provide services, they are actually architecture models rather than design models. In most cases, it is represented by one of the following design patterns: Strategy Mode, mediator mode, composite mode, and observer mode. For System Architects familiar with architecture design, it seems that they can use the following example to explain the relationship between the architecture and the model: the architecture is hight-leveldesign, focusing on the common solution of different businesses, the mode is generalprinciple (General principle ).