Software architects are also called software architects.ProgramPersonnel's technical development direction (programmers can also manage), and then how can software architects design a software architecture?
First, understand the significance of the software architecture. For software (including product and project), architecture is the skeleton of software. If the architecture is poor, it is like a person suffering from cartilage disease. The architecture is the core of our software, so that our software can survive for a longer period of time and make our software stronger.
Secondly, do a good job in conception and demand research. The purpose of any software is to solve business problems and serve the business. The software architecture depends on the specific business. If the business is wrong, the good software is meaningless, and the software architecture has no value, of course, such an architecture may have the value of research.
For example, the concept is emphasized in both the Envision stage in MSF and the initialize stage in UP. The purpose of the idea is to discuss the value of the software and how it can be implemented. For project managers, project plans, implementation methods, and project resources are generally conceived. For the architect, the overall architecture of the software should be conceived at this time, namely, B \ s, C \ s, smart client, or hybrid. Of course, the core of any architecture is defined based on the customer's specific business needs. In most cases, the customer may have defined an architecture style, such as B \ s. What the architect needs to do at this time is how to better implement the architecture based on the business.
Third, focus on the non-functional requirements of the software. Non-functional requirements are an important embodiment of software elegance. The main difference between a senior architect and a non-senior architect is the processing of non-functional software. The main manifestation of the software architecture lies in the non-functional requirements.
So what are the non-functional requirements of software? Non-functional requirements mainly refer to security, scalability, reliability, availability, performance, user experience, and regional support.
Security is generally classified into program security, system security, and data security. Program security refers to whether the developed program is secure and whether there are security vulnerabilities in the program, such as servers in Web development.CodeThe input parameters are not verified, causing the client robot to easily obtain data. System Security refers to the overall security of the system, such as the security granularity and whether unauthorized users can easily access illegal data. Data security is the protection of data, whether the data in the database has been reviewed, and whether data is cross-data between users.
Scalability refers to how to provide the system load capability without modifying the code when the system reaches the bottleneck. scalability is generally divided into scale up and scale out. Generally, we use up and out. For example, increasing the server performance can improve the processing capability of the system, but any computer has a certain bottleneck. When increasing the server performance cannot improve the system performance, we should consider extending the server horizontally, that is, scale out. In scale out, our system generally needs to be state independent, that is, statless.
Reliability is generally available in pairs. The reliability consideration is that the system is reliable and will not be crach, availability means that even if the system crashes, the system can be revived in a short period of time or be transferred to another server based on the cluster technology to continue providing services.
Performance is generally associated with scalability. When performance cannot be met, scalability is required. To improve system performance, users generally need to reduce the number of requests, request data volume, and cache. The database performance passes the index, hash table and other technologies.
Fourth, the overall design. Because any software has dead line. Therefore, the architect should discuss with PM after analyzing the functional and non-functional requirements of the system. The architecture design is comprehensively considered based on the resources and end time of the time item. When designing the architecture, consider: 1. Technical Risks. Try not to use new technologies. 2. personnel and personnel flow and personnel level. 3. Open-Source ideas: Try to absorb some open-source ideas in the architecture.