[New System Architecture] Chapter 10 - Evolution and Maintenance of Software Architecture

Soft test-system architect knowledge points extraction-system architect tutorial (2nd edition)

  1. Chapter One Introduction
  2. Chapter 2 - Basic knowledge of computer systems (1)
  3. Chapter 2 - Basic knowledge of computer systems (2)
  4. Chapter 3 - Basic knowledge of information systems
  5. Chapter 4 - Basic Knowledge of Information Security Technology
  6. Chapter 5 - Basic knowledge of software engineering (1)
  7. Chapter 5 - Basic knowledge of software engineering (requirements engineering and system analysis and design)
  8. Chapter 5 - Basic knowledge of software engineering (software testing, clean room software engineering, component-based software engineering, software project management)
  9. Chapter 6 - Basic knowledge of database design (basic concepts of database, relational database)
  10. Chapter 6 - Database Design Basics (Database Design)
  11. Chapter 7 - Basic knowledge of system architecture design (architecture-based software development method)
  12. Chapter 7 - Basic knowledge of system architecture design (architecture style, reuse)
  13. Chapter 8 - System Quality Attributes and Architecture Evaluation
  14. Chapter 9 - Software Reliability Fundamentals

Relationship between software architecture evolution and definition

The importance of architectural evolution:

  1. As the skeleton of the software system, the software architecture supports the entire system and is an important guarantee for the software system to have many good features.
  2. As a software blueprint, software architecture provides an effective way for people to macroscopically control the overall complexity and variability of software systems, and the cost of software detection and modification based on software architecture is relatively low

The evolution of software architecture can better ensure the consistency and correctness of software evolution, significantly reduce the cost of software evolution, and make software system evolution more convenient. There are three reasons:

  1. The formalization and visual representation of the software architecture of the system improves the constructability of the software and facilitates the evolution of the software
  2. The overall structural information, configuration information, and constraint information covered by the software architecture design plan help developers fully consider possible future evolution problems, evolution situations, and evolution environments
  3. The coupling description between system components during architecture design is helpful for dynamic adjustment of software systems

Object-Oriented Software Architecture Evolution Process

Object evolution, message evolution, compound fragment evolution, constraint evolution

Classification of Software Architecture Evolution Ways

3 typical classification methods:

  1. According to the implementation method and implementation granularity of software architecture: process-based and function-based evolution, object-oriented evolution, component-based evolution and architecture-based evolution
  2. Classified according to research methods: the first category is support for evolution, the second category is version and engineering management tools, the third category is formal methods for architecture transformation, and the fourth category is cost-benefit analysis of architecture evolution
  3. According to whether the evolution process of the software architecture is in the system runtime: static evolution and dynamic evolution

Periods of software architecture evolution: design-time evolution, pre-running evolution, constrained runtime evolution, runtime evolution

Principles of Software Architecture Evolution

Evolutionary cost control principle, schedule controllable principle, risk controllable principle, main body maintenance principle, overall system structure optimization principle, smooth evolution principle, consistent goal principle, module independent evolution principle, impact controllable principle, complexity controllable principle, Principles that are conducive to refactoring, principles that are conducive to reuse, principles of compliance with design principles, principles of adapting to new technologies, principles of environmental adaptability, principles of standard compliance, principles of good quality, and principles of adapting to new needs

Software Architecture Evolution Evaluation Method

According to whether the evolution process is known, the evaluation process can be divided into: evaluation with known evolution process and evaluation with unknown evolution process

An example of the evolution of large-scale website architecture

Stage 1: Monolithic architecture
Stage 2: Vertical architecture (separation of applications and data)
Stage 3: Caching improves website performance Stage
4: Use service clusters to improve concurrent processing capabilities of websites
Stage 5: Database read-write separation
Stage 6 : Use reverse proxy and CDN to speed up website response
Stage 7: Use distributed file system and distributed database system
Stage 8: Use NoSQL and search engines
Stage 9: Business split
Stage 10: Distributed services

Software Architecture Maintenance

Software architecture maintenance and evolution are inseparable. Maintenance needs to track and control the evolution process of software architecture to ensure that the evolution process of software architecture can meet the requirements. Software architecture maintenance process design architecture knowledge management, architecture modification management, architecture version management, etc.


The above is too theoretical, we still need to be down-to-earth, other articles recommended by the author, welcome to learn:
Based on Spring Boot 3.1.0 series of articles

  1. Spring Boot source code reading initialization environment construction
  2. Detailed explanation of the overall startup process of the Spring Boot framework
  3. Detailed Explanation of Spring Boot System Initializer
  4. Detailed explanation of Spring Boot listener
  5. Detailed explanation of Spring Boot banner
  6. Spring Boot property configuration analysis
  7. Analysis of Spring Boot property loading principle
  8. Spring Boot exception reporter analysis
  9. Build Spring Boot 3.0 native executables with GraalVM
  10. Spring Boot 3.x microservice upgrade experience

Prometheus series of articles

  1. Introduction and installation of Prometheus
  2. Intuitive experience of PromQL and its data types
  3. PromQL selectors and operators
  4. Functions of PromQL
  5. Prometheus alarm mechanism introduction and command interpretation
  6. Prometheus alarm module configuration depth analysis
  7. Prometheus configuration authentication
  8. Prometheus dynamically pulls monitoring services
  9. Prometheus monitors cloud Mysql and self-built Mysql

Grafana series of articles, version: OOS v9.3.1

  1. Introduction and installation of Grafana
  2. Introduction to configuration parameters of Grafana monitoring large screen (1)
  3. Introduction to configuration parameters of Grafana monitoring large screen (2)
  4. Grafana monitors large-screen visualization charts
  5. Grafana query data and transform data
  6. Introduction to Grafana Alarm Module
  7. Grafana alarm access Feishu notification

Guess you like

Origin blog.csdn.net/weixin_40972073/article/details/131533198