Software Architecture Evolution and Maintenance - The Road of Architects (16)

1. Software Architecture Evolution and Definition

The evolution of software architecture is a process of modifying and improving the architecture. In order to adapt to environmental changes, it is a process of continuous iteration such as error correction modification and perfect modification.

The evolution process covers the whole life cycle of software architecture, including the acquisition of software architecture requirements, software architecture modeling, software architecture documentation, software architecture implementation, and software architecture maintenance.

The evolution of software architecture can reduce the cost of software evolution.

The definition of software architecture includes three elements: components, connectors, and constraints. The evolution of software architecture mainly focuses on adding, modifying, and deleting among the three.

2. Object-oriented software architecture evolution

Object evolution: In the sequence diagram, the entity of the component is an object, including AddObject and DeleteObject, AO and DO.

Message evolution: In addition to AO and DO, there are

There are five types of SwapMessageOrder (SMO), OvertrueMessage (OM), and ChangeMessageModule (CMM).

SMO is the time sequence of exchanging two messages.

The OM is the object that reverses sending and receiving messages.

CMM is to change the receiving message and sending message object.

Compound Fragment Evolution:

A compound fragment is a control flow description of an object interaction relationship, and belongs to the category of connectors.

AddFragment(AF)、DeleteFragment(DF)、FragmentTypeChange(FTC)和

FragmentConditionChange(FCC)

AF: Added compound clips,

DF: Delete compound fragments.

FTC: Change compound clip type.

FCC: Change the internal execution conditions of compound fragments.

Constrained evolution:

Add and delete directly to constraint evolution, ADD Constraint, Delete Constraint.

Whether the evolution process is in the automatic operation of the system can be divided into static evolution and dynamic evolution.

Periods of software architecture evolution: design-time evolution, pre-run evolution, constrained runtime evolution, and runtime evolution.

Five steps of static evolution: software understanding, requirement change analysis, evolution planning, system refactoring and system testing .

Maintainability of architecture evolution is based on component diagrams (component diagrams) representing software architectures.

Reliability evolution is based on use case diagrams, deployment diagrams and sequence diagrams .

There are only four aspects to dynamic evolution:

Attribute renaming: At runtime, the user redefines the attribute.

Behavior changes: Changes in user needs or adjustments to the system's own service quality will trigger changes in software behavior.

Topology changes: adding and deleting components, changing component associations.

Style change: After normal evolution, the architectural style should remain unchanged. Even if the evolution is from two-tier C/S to three-tier C/S.

Dynamic software architecture DSA: allows the dynamic evolution of the framework structure and the modification of the architecture during the running process.

DR dynamic reconfiguration: Allows adding and deleting components, modifying connection relationships, etc. during operation. (such as service degradation, such as nacos dynamic configuration file reading)

Dynamic reconfiguration modes: master-slave mode, central control mode, client/server mode and distributed control mode.

3. Evaluation of Software Architecture Evolution

The evaluation process is divided into: the evaluation of known evolution process and the evaluation of unknown evolution process.

If it is known, the change of each version and the distance of each version change are known.

If it is unknown, measure it through the architecture before and after evolution, and compare the results after the two measurements.

Specifically include: impact analysis of architecture modification, monitoring evolution process, and analysis of key evolution process .

Guess you like

Origin blog.csdn.net/ke1ying/article/details/132567144