Except for changing everything, it cannot last long. --- Shirley
When I was a child, I envy my senior students who could write with a pen. Sometimes I use a pencil to take up the ink bottle. In addition to leaving a tan of ink, I wrote a pencil. However, the advantage of writing with a pencil is that if you write a mistake, you can use an eraser to overwrite it. This is only known after you have a pen.
When writing a program, you often need to set some variables, local variables, and global variables. Compared with constants, variables have a benefit. You can modify the values involved in the calculation at any time when you use them in the place where you need to calculate them. It is a bit like a pencil that can be erased and rewritten when needed. You do not have to modify the computing expression in the program when you need to change the value involved in the calculation.
The words written in a pencil adapt to changes better than the pen. Variables are more adaptable to changes than constants.
If a system can quickly adapt to changes in user needs, it can modify unsuitable functions like modifying pencil words, and quickly adapt to new requirements of the system like variables, this system is a very adaptive system for changes. What are the benefits of a system that is highly adaptable to changes? Let's take an example.
When I was writing with a pen, the teacher always asked me to write it in a square lattice. There was no typo, no mistake, or a mistake. If it was wrong, I had to rewrite the whole page. If the wrong word is written in the first line, the rewriting will be torn down. There are not many written lines. If an error occurs in the last line, you still need to tear it down and rewrite it, but that is not suitable. For a project or system, if problems or inaccurate requirements are found at the initial stage of the project or when the software is just put into use, the cost of making some changes may be lower. If the project has been put into use in the later stage or the system has been in use for a period of time, and the problem is discovered or new modification requirements are raised, for systems with low adaptability to changes, it is equivalent to overthrowing redo! If you do not overwrite the Redo, but modify the original code, the cost may be several or even dozens of times that of the original project.
There are three major changes to a system: business, system architecture, and program implementation.
1. Business Layer: There are many solutions to changes in requirements at the business layer. For example, the workflow management system uses Visual Process customization tools to adapt to changes in user business processes, you can dynamically modify the system process model based on your business changes to meet your needs. In the SCA architecture, an SCA Domain is similar to a process definition in a workflow management system. SCA Domain is the most granular component model in the SCA architecture. It can provide business functions through assembly. SCA Domain is composed of any composite component. Composite provides basic business functions and logic. SCA Domain combines composite into business logic through assembly. When the business changes, the SCA Domain can quickly respond to changes in the business.
2. Architecture: SCA is a component-Oriented Architecture. Therefore, the standard architecture model is embodied in the architecture layer. The essence of SCA is to provide a flexible, pluggable, and alternative mechanism for the business and implementation layers through the architecture layer. In the architecture layer, the composte component can include existing components into new components to make them part of new components and provide some functions for new components. The benefits of doing so are:
A. New components can only access existing components through the unique method, that is, services provided by existing components
B. The use of new components for existing components is black box multiplexing, and the internal details of existing components are invisible to new components.
C. This type of reuse supports packaging.
D. Low coupling and less dependency.
E. Each new component can focus on one task with clear responsibilities.
F. Reuse can be performed dynamically during running, and components can dynamically reference other implementations to complete the same or different system behaviors.
G. You can use promote to select external services and enhance the replaceable and selectable mechanisms.
When business processes or system performance requirements change, you can increase (expand) or change system behavior by replacing, selecting, and combining them, of course, some must provide the necessary support at the implementation level to complete.
3. Implementation Layer: with the support of component, various languages and specifications can be implemented for the architecture layer. We can leverage the advantages of various languages, frameworks, and specifications to maximize the use of their best features. Component is like an adapter that connects any component-supported implementation (if not, it can be implemented by itself) to composite to provide implementation for the architecture layer.
The adaptability of the three different layers to changes provides the system with flexible and reliable adaptability to changes brought about by business and system performance requirements. The Assembly description of the business layer, the improvement and Combination Mechanism of the Architecture layer, and the different implementations supported by the Implementation Layer for different types of language frameworks ensure that the system changes as needed.