Software architecture design - five view Methodology

In practice, we often hear the "architecture" and "architect" This term is not new, but always make a lot just getting started 

In practice, we often hear the "architecture" and "architect" This term is not new, but always make a lot of people just started feeling very mysterious, even mystical. Few people on the "architecture" have a comprehensive knowledge and understanding and be able to say clearly what architecture is, let alone master. In fact, only a handful of people can become to be known as such or title "architect." To this end, the author summarizes some understanding of architecture, hoping to supplement the lack of understanding of many of the early entry of people in this area, to correct some misconceptions. Experts and veterans to skip it.

Category Architecture

For the "architecture" is concerned, theoretically divide five architectural view are: logical framework, development framework, operational framework, physical infrastructure, data architecture . According to the name, we could probably have guessed that their focus and meaning. Here first with a popular character was introduced to simple, easy to understand you, you do not have to tangle these concepts and theories.

  • Logical architecture: logical architecture is concerned that features, including user directly visible function, as well as implicit system function. Or more popular to describe the logical architecture is more interested in our everyday understanding of "layered", the project is divided into a "presentation layer, business logic, data access layer," this classic "three-tier architecture."
  • Development architecture: the architecture is more concerned with the development of the package, not just our own written procedures, also including application depends SDK, third-party libraries, such as the central parity. Especially as the current mainstream Java, .NET and other languages ​​and rely on virtual machine platforms, applications and database-based, are more concerned about the mainstream. And logical architecture are closely linked.
  • Run architecture: As the name suggests, is more concerned about some of the problems running applications that may arise. Such as concurrency issues brought more common "thread synchronization" problems, deadlock, object creation and destruction (lifecycle management) issues and so on. Development framework, more concerned before the plane took off some preparatory work, in the stationary state will be able to do good planning, and operational architecture, more consideration is some of the problems that may occur after the plane took off.
  • Physical infrastructure: physical architecture, the system is more concerned about, networks, servers and other infrastructure. For example: how to deploy and configure the server through the network environment to achieve "Scalability, high availability" applications. Or, to take a practical example of how architecture infrastructure, to protect the site can simultaneously support online 10W, 7 * 24 hours, when more than or less than 10W 10W person online, you can easily adjust the deployment architecture to support.
  • Data architecture: data architecture, data is more concerned about the persistent problem and the storage level may also include issues of distributed data, replication and synchronization. More appropriate in terms of how to choose a relational database needs, the popular NOSQL, how to protect data stored level performance, high availability, disaster recovery, and so on. In many cases, physical infrastructure and are closely linked, but it is more concerned about the level of data storage, the physical infrastructure is more concerned about the overall level of infrastructure deployment.

The above talked about so much, I believe that there is little domestic company is in strict accordance with the division of labor and to view the five designs. In fact, in the eyes of the author, architecture roughly divided into two types: software architecture, system architecture. The first three views can be summarized as software architecture, then two architectures, it is classified as system architecture. It is also more in line with most of the domestic status of small and medium sized Internet companies.

Depending on the application characteristics, the focus of attention may be different. For example, the use of certain Internet portals classes, read and write less business is relatively simple, is more concerned about the aspects of "high performance, scalability, availability," and so on. For more complex applications, such as large-scale electricity business class transactional applications, and more concerned about every aspect of every level will be. For business-type systems, such as ERP some of the production-oriented enterprises to use, or only some of the MIS, OA applications within the enterprise use, usually more concerned about functionality and complexity of the business and the implementation and expansion, while the performance and other aspects they may not be too high, such applications are more concerned about pure software architecture level. Here, do not expand discussed in detail. So often, the architect also needs to be a team, not a man "full-stack."

What is architecture design in the end

In the long-term technical job interview, I found in the eyes of many people, is a layered architecture, architecture design is the "three-tier" (or four, five ... anyway, the more it shows the more layered and complex projects and architecture more cattle), perhaps influenced by the sample project such as a PetShop, there being a reason not to pursue.

Before've corrected a lot of misconceptions - not just architecture software architecture. Talk about understanding popular point:

Software architecture is practical and elegant design, it is not how many points layer, or how many kinds of application design patterns / architectures mode. It should achieve is to meet customer needs as the prerequisite to developers generally accepted as a fundamental, but also to meet the system features and business development needs, from software design point of view, to achieve the level of clear, maintainable, reusable, extended ... very good, and do not need to bother to tangle the number of sub-layers, whether what model, how abstract and so on. Object-oriented design as an example, the basic goal is to "high cohesion, low coupling", for which we may follow some common design principles (such as the classic SOLID design principles). Finally, a little correction, usually what we call model, in fact, is divided into many kinds, not only refers to the "Design Patterns" (there are thousands and thousands of design patterns, not only common GOF 23 design patterns). Usually they include: enterprise architecture model, design patterns, SOA model, enterprise integration patterns and so on.

Emphasize that architecture to emphasize "practical", but developers generally accepted to be in line with the status quo. If not, then "elegant" design, will become a high-cost "superfluous", mechanically and over-design will only make the project "abortion."

Due to the different roles and division of labor, software architecture is a complex whole, software architects impossible in a perspective, all of a sudden it clear that, while the use of multiple methods of software architecture view, one can expand only around a few concepts and techniques are focused on research different aspects of software architecture, the problem is clear and simplified public, which will help software architects to complete the architectural design work.

Therefore, each view software architecture of each focus on different aspects, different goals and purposes. Design of the 5 most commonly used architectural approach to software architecture description view. They are logical architecture, the development of architectures, architecture, data architecture and physical structure.

  • Logical architecture design focuses considering functional requirements, the system should provide what services to users, the main concern is partitioning behavior or responsibilities. Functional logic architecture concerns, including not only user-visible features, but also should include accessibility to implement user functions that must be provided. Static aspects of abstract logic architecture is the division of responsibilities, is to assume the dynamic aspects of the interaction and collaboration between the different functions of logic cells.
  • The design focuses on the development of architecture considering the development of quality attributes, the focus is on software modules (packages) the actual organization, in particular to source files, configuration files in a software development environment, source code, compile the object file after the package directly third-party SDK / framework / library use, and the development of the system will run on its system software or middleware on.
  • Run architecture is designed to run quality attributes important consideration, the focus is on system concurrency, synchronization, communication and other issues, that would involve the concept, and related concurrent run-time processes, threads, and other objects, synchronization, communication and so on. Static aspects of running software architecture attention cell structure of the system is running, the dynamic aspects of the interaction mechanism between the concerned unit is running.
  • Physical architecture design focuses on installation and deployment considerations demand, the focus is on how the target program and its dependent libraries and system software to run the final install or deploy to a physical machine, and how to deploy machines and networks with the reliability of software systems, scalable resistance, continuous availability, performance and security requirements.
  • Data architecture design focuses consider data needs, the focus is on persistent data storage solutions, including not only entities and entity relationship data storage format, and may include data transfer, data replication, data synchronization strategy.

In the use of five methods of architecture design view need to pay attention to two aspects: First, synchronization between multiple architectural views, that is, must be guaranteed between the different views is to explain to each other rather than conflicting; the other is the architecture view the number of questions, in principle, do not need to view the terms of a software system does not involve requirements of a particular area, the number of strict control architecture view, but if necessary, you can view the introduction of the new architecture, which is more prominent and clearly formulate architectural decisions and express specific aspects, such as security.

The different elements that make up each architecture view, these different elements hold up different thinking space, so that each architecture view focuses cover different types of needs, eventually all the semantics comprehensive view expressed in the architecture around together, constitute the software architecture design.

Five view CSDN   https://blog.csdn.net/nnsword/article/details/78109126

Detailed software architecture (drawing) http://www.uml.org.cn/zjjs/zjjs-bk.asp

Some conclusions on software architecture design and understanding of https://blog.csdn.net/cooldragon/article/details/48241965

Architecture design (1) - to talk about architecture https://blog.csdn.net/hguisu/article/details/78258430

Published 60 original articles · won praise 73 · Views 230,000 +

Guess you like

Origin blog.csdn.net/tyyking/article/details/86347999