Learning architecture from 0-historical background and purpose of architecture design

Learning architecture from 0-historical background and purpose of architecture design

The history of programming language development

Machine Language -> Assembly Language -> High Level Language.

The scale and complexity of software have increased greatly, and there have been two software crises.

  • The First Software Crisis and Structured Programming (1960s-1970s)
  • The Second Software Crisis and Object Orientation (1980s)

Historical background of software architecture

As the size of a software system increases, computation-related algorithms and data structures no longer constitute major design
issues ; when a system is composed of many parts, the organization of the entire system, known as the "software Series
New Design Issues.

Larger scale software systems face problems related to software architecture:

  • The scale of the system is huge, the internal coupling is serious, and the development efficiency is low;
  • The system coupling is serious, and the whole body is mobilized by one action, making subsequent modification and expansion difficult;
  • The logic of the system is complex, prone to problems, and it is difficult to troubleshoot and repair after problems occur.

小结:

  • The software development process includes multiple links such as analysis, design, implementation, testing, verification, deployment, and operation and maintenance.
  • In the software design process, modules, objects, and components are essentially "splitting" methodologies for a certain scale of software at different granularities and levels, and
    software architecture is a method for "organizing" software.
  • Architectural design cannot be separated from factors that have nothing to do with the technology itself, such as business, actual company conditions, staffing, budget, and time investment, but are factors that affect and even determine the direction of architectural design. Therefore, there is no best, only more suitable.

Architecture Design Misunderstandings

  • Because the structure is very important, so do the structure design
  • The system cannot run without architecture design
  • Architecture design can improve development efficiency
  • Well-designed architecture can promote business development
  • Every system needs to be architected
  • The company's process requires that there must be architecture design in the system development process
  • For high performance, high availability, and scalability, architecture design is required

The real purpose of architectural design

架构设计的主要目的是为了解决软件系统复杂度带来的问题。

How to do architectural design

  • Through familiarity and understanding of requirements, identify where the complexity of the system lies, and then design the architecture for these complex points
  • Architecture design does not need to be comprehensive. It is not necessary for every architecture to have the characteristics of high performance, high availability, and high scalability. Instead, it is
    necessary to identify complex points and then solve problems in a targeted manner.
  • Understand the complex points that need to be solved behind each architectural solution, and then compare your own business complex points and refer to
    solutions with similar complex points.
  • If the complexity of the system is not in the performance part, it is useless to achieve 100,000 TPS
  • Taobao's architecture is designed to solve the complexity of Taobao's business. The complexity of Taobao's business is not the same as our business complexity
    . The number of users of most businesses cannot be as large as that of Taobao.
  • Docker is not a panacea, it is only designed to solve resource reuse and dynamic allocation. If the complexity of our system is
    not in this area, it is meaningless to introduce Docker.

小结

The business architecture and business level are extracted from the actual application scenarios of each specific project.

Business architecture is the refinement and abstraction of business requirements. The development of software must meet business requirements, otherwise it is a castle in the air.
The complexity of software system business can be solved by dividing the work interface from the perspective of business architecture .

To design the software architecture, the first thing is to ensure that it can be aligned with the business architecture. This is also the process of shifting from business logic to code logic, so the design of software architecture points out the direction for development.

In addition, the architectural design also lays the foundation for the subsequent division of development work.

The business level is manifested in storage capacity, throughput capacity, and fault tolerance, etc., mainly due to the complexity of the business during the software operation and maintenance period.

When doing software architecture design, it is necessary to ensure that the software has the ability to support its business-level requirements. If the software expires during its operational life, all previous work will be in vain.

The complexity of the corresponding software architecture is different for different business levels, so for different projects, the business level is different, and the architecture design is also different.

The business architecture must match the actual application scenarios it faces. Since the business scenarios of each product or project are
different , each time before doing new software development, the software architecture must be designed first, trying to apply it directly without analysis The previous architecture plan
, nine out of ten, will cause the current system to report a big problem at a certain point and lead to overthrow and restart, let alone directly use someone else's ready-made
architecture plan.

Therefore, before each software is developed, it must design a software architecture suitable for itself in combination with its own application scenarios. The ready-made architecture solutions
can only be used for reference and cannot be directly applied.

In addition, because the business architecture and business volume will continue to adjust or grow, the software architecture is not fixed once and for all, and will
continue to adjust with the business.

Guess you like

Origin blog.csdn.net/qq_35385687/article/details/131552039