I have several points to explain about the infrastructure. At the end of a single team, the system will be established early
The key first version. This is an executable version, which is called the architecture baseline version. Establish a shelf
It may take several iterations before creating a baseline, but after completing the baseline, it will confirm your assumptions and system development methods,
This can reduce the risk. Based on this architecture, the development speed of other parts will be greatly accelerated.
A good architecture should ensure that different types of concerns are independent from each other. When one of them changes
Other components that affect the system. Architects should be committed to creating an elastic architecture, that is, different types of attention.
Points remain independent, and when a part of the system changes, the impact on the rest is minimized. Architecture design is required
Must meet the performance, reliability and other system concerns.
A good architecture requires that each focus be separated from each other, so that changes in the first part of the system do not affect other parts.
Points, even if there is a certain impact, it is necessary to clearly identify what needs to be changed, if you need to expand the architecture, the impact should be
To minimize the number of items that can work, you can continue.
1. Separation of functional requirements
In general, we want to keep functional requirements separated. The menu shows the concerns of different end users, and
Independent Development, so I don't want a function change to affect others. Functional requirements are generally asked
Therefore, we naturally hope that the specific functions of the system will be separated from the domain.
The system is adapted to a similar field. On the other hand, some functional requirements will be defined in the form of extension of other functional requirements,
In this way, they need to be independent from each other.
2. Remove non-functional requirements from functional requirements
Non-functional requirements usually identify the expected system quality attributes: security, performance, reliability, and so on.
For example, some authorization, verification, and encryption mechanisms are required to achieve security.
Cache and load balancing mechanisms to meet performance requirements. Generally, these infrastructure mechanisms need to add a small part to many classes.
Behavior Division (method), which means that changes made to the infrastructure will have a huge impact. Therefore,
To separate functional and non-functional requirements.
3. Separating platform features
The current system runs on a variety of technologies. For example, the infrastructure mechanism of identity authentication may have many optional technologies.
Technology, these technologies are often related to the manufacturer. When a vendor upgrades its technology to a new and better version
If your system is closely dependent on the previous version of this technology, it is not that easy to upgrade,
Therefore, the platform features must be independent from the system.
4. Separate the test from the tested unit.
As part of completing a test, you must adopt some control measures and methods (debugging, tracking, logging
), These control measures are to ensure that the system operation process meets the test requirements. These methods are used to execute
To confirm that the system is indeed executed according to the expected test process.
These control measures and methods often need to be inserted into the system during the test.
The code will be deleted after the wipe is completed. Therefore, we hope to separate the implementation of the test from the tested system.