Author: Xiamen Dragon Software Engineering Co., Ltd. Lulin Sheng Third, the structural considerations when running the program: 1, in line with the requirements: correctness, completeness; functional requirements, non-functional main goal is to meet the needs of software projects client needs. When the architecture is performed, you consider which run platforms, compile language, development environments, database management systems, etc., for insufficient considering related to customer needs, not enough system. If you can't satisfy your customer's clear functional demand or non-functional demand, you should be coordinated in the project scope and demand specifications. Otherwise, the architecture design should be to meet the most basic goals of all customers, try to meet their implicit needs. (Customer non-functional demand may include interface, system security, reliability, transplantability, scalability, etc., in other sub-sections), in general, functional requirements determine business framework, non-functional demand, technical framework, The change case determines the range of the framework. Demand knowledge tells us that functional demand defines what software can do. We need to design business architecture based on business needs to enable future software to meet customer needs. Non-functional demand defines some of the performance and efficiency of some constraints, rules. And our technical framework must meet these constraints and rules. The change case is an estimate of the possible changes in the future, combined with functional requirements and non-functional needs, we can determine the range of demand, and then determine a frame range. (This section "This section is here to tell the small example of the system performance and reliability problem due to certain errors in the previous year: This system is relatively simple, that is, All historical files for a business in the city store, so that you can query according to the name. The customer said that the customer said that the card has approximately 200,000, demand surveillars, for verifying the total amount of data for the customer's trust. Since it is a small and medium amount of data, the future data does not increase, after calculating the total capacity of 200,000 cards, it is decided to use a small and medium-sized database management system that can be used in the network. When the system completes the start of the data, it is found to have at least 600,000 data, so that the small and medium-sized database management system will not only cause system performance, but the reliability is very fragile, and the system has to be redesigned. From this small lesson, it can be seen that the demand phase not only is clearly investigated for customers, but also some data implicitly non-functional needs should also be investigated, and as the basis for architectural design. For the correctness of the functional requirements, it may not be good to verify in the architecture document (need to manually, labor). For functional demand integrity, the demand function should be used to track traceability with the corresponding module control table. For non-functional demand correctness and integrity, you can use the requirements non-function and the corresponding design policy control table to track traceability evaluation. "Software design work is only possible based on user needs." 2, the overall performance performance is also part of customer demand, of course, there are many, there are many implied, here are separate columns Out of explanation. Performance is an important criterion for design. It is not a single client performance, but should consider the total overall performance of the system; performance design should be considered from the following aspects: memory management, database organization and content, non-database information, Task parallelism, network multiplayer operation, key algorithm, influence of network, hardware, and other system interfaces; Note: Algorithm optimization and load balancing are the direction of performance optimization. The modules that are often called must be paid to optimization. The variables that occupy more memory will be cleaned up in time. The web topic file that needs to be downloaded is too large to decompose into several parts, allowing users to display the main part first. 3, the architecture design of running the manageable system should be in order to prevent the system to predict the system failure, prevent problems.
The current system is gradually complicated, large-scale development, alone, alone or several people, has been distinct, and the response to certain emergencies is not enough. Therefore, through a reasonable system architecture planning system running resources, it is easy to control system operation, monitor system status, effective error handling; in order to achieve the above objectives, the module communication should be as simple as possible, and establish a reasonable and detailed system running log, the system passes Automatic audit operation log, understand the system running status, perform effective error handling; (Different run manageability and maintainability) 4, compatibility with other system interface compatibility (explained) 5, with network, hardware interface compatibility, performance (Explanation) 6. System security With the continuous in-depth and expand of computer applications, the sectors and information involved are increasing, with a large number of confidential information to transmit on the network, so the considering of system security has become a system The key to design needs to be considered from all aspects and angles to ensure the absolute safety of the data. 7. The reliability of the system reliability system is an important feature of the modern information system. Since people's daily work is increasingly dependent on system dependence, the system must be reliable. System architecture design can consider the redundancy of the system, avoid single point failure as much as possible. The system reliability is the probability of successfully running the program in design requirements under a given time interval and a given environmental conditions. Successfully run not only to ensure that the system can operate correctly, meet functional needs, and also require that the system can restore normal operation as soon as possible, the data is not damaged. 8. The adjustability of the business process should consider the possible changes in the customer business process, so try to eliminate the business process when designing the system architecture, that is, work in the process as an independent object, design Separate modules or components, fully consider the interfaces of them with other business object modules or components, implement various services through the mutual calls of the business object module, so that when the business process changes (each If the business module itself has no change in business logic), it is possible to easily modify the call relationship between the system program module or component to achieve new needs. If this call relationship is designed to store the data dictionary stored in the configuration library, even the program code does not have to modify it, just modify the module or component call rules in the data dictionary. 9. Adjustability of business information should consider the possible changes in customer business information, so it is necessary to reduce the impact of business information for code modules when designing the system architecture. 10. Easy to use convenience is an inevitable demand that does not need to be mentioned, while the use of convenience and system architecture is closely related. The failure of wince (1.0) and the success of the improved version will explain this problem. WinCE (1.0) has too many levels of window and menu, and users prefer simple interfaces and fast operations. Failure should be corrected in time, but it is best not to wait until the failure is changed, which will waste huge financial resources, so it is best to consider the factors that need to be considered during the system architecture. Of course, the use of convenience must be harmonized with the system security, and the use of convenience must also be unified with the adjustability of the business process and the adjustable coordination of business information. "Meet the user's needs, making it easy for users to use, while making the operation process as simple as possible. This is the foundation of the design." 11. The architectural style of the architecture of the architecture is similar to the architectural style (such as Chinese style, Goth Vintage style, Greece). Software architectures can be divided into data streaming patterns, call return architecture, stand-alone component architects, with data-centric architectural style and virtual mechanism style, each style can also be divided into several child styles.
The consistency of architecture is not required to require a software system to use a style, just like the building style can be combined with Chinese and Western, software systems can also have heterogeneous framework (divided into local heterogeneous, hierarchical heterogeneous, and different Quality), that is, a combination of a variety of styles, but such synthesis should consider certain aspects of consistency and coordination. Each style has its own timing that should be selected based on the most emphasized quality attributes of the system. Fourth, the organizational structure of the source code is considered: 1. Develop manageability facilitators (module independence, the load balance of development work, optimization, prevention personnel flow on the development of the development: a good architecture should have Advance the pressure and tension of the project team, improve software development efficiency), facilitating the rationality of configuration management, size, moderate complexity; 1) Easy to divide the division of labor - module independence, hierarchical module independence, hierarchical is to ensure The relative independence between the project development member works, the module connection mode should be longitudinally instead of the transverse direction, the module should be a tree structure rather than a mesh structure or a cross-structure, so that the communication, module between the developers can The development constraint is minimized. At the same time, the module independence is also conducive to configuration management work. More and more software development is now carried out in different places, and a member of a development group may be in different cities, even in different countries, so it is necessary to operate the source code organization of personnel to develop from differently developed. 2) Easy to divide the labor-development work balance is not only the software system developed by the software system needs load balancing, and the load balance of work tasks between the members of the development group during the development process is not important. The load balancing of the so-called work tasks is to assign tasks in accordance with the characteristics of the developer through reasonable tasks, and try to make each person in the project group each time. This requires the need to fully consider the human resources of the project team when designing the architecture, and achieve the load balance of development work on the basis of customer needs to improve overall development efficiency. 3) Easy to divide the division - progress arrangement optimization; the premise of progress arrangement is the module independence and engage in the relationship between module development. Using the work decomposition structure to decompose all program coding work, you can get the input, output, desired resources, duration, before, before completion of work, and work after completion. Then estimated that each module needs time, analyzes the parallel and serial (sequential constraints) of each module, plotting the network diagram, identifying a key module affecting the overall progress, calculating a critical path, and finally adjusting the network map to make progress arrangements optimize. There is a household-known intelligence title to barbecue strategies: Johnson has a barbecue rack that can bake two pieces of meat at the same time at the same time, and take 10 minutes to roast each piece of meat. a family of three. The problem is how to get three pieces of meat in the shortest time. The general approach spent 20 minutes before roasting the first two pieces, and it took 20 minutes to get the third piece. There is a better way to save 10 minutes, everyone thinks. 4) Easy to divide the division of labor - preventing the flow of employee people's influence in the development of the software industry is a common risk, which is already a common risk. As one of the effective countermeasures for this risk, it can take into account the influence of employee personnel flow in the structure. The main idea is to pursue high-end phenomenal coupling on the independence of the module), and componentization is currently popular. 5) Conservative Configuration Management (independence, hierarchical) is conducive to configuration management and faculty facilitators. In addition to logical module components, the deployment of source code files in the physical source code, the directory structure, and various modules should also be beneficial to personnel division and configuration management. (Although now the management tool has a strong function, a clear source split and module segmentation is very beneficial).
6) The rationality and moderate complexity of the size of the size and moderate complexity can make the load balancing of development work, which can make the system to reduce unnecessary memory resources at runtime. There is also a certain benefit to the readability of the code and the maintenanceability of the system. In addition, excessive modules are often insufficient system decomposition, and too small modules may reduce the independence of the module, resulting in complex system interfaces. 2. Maintainability is easy to find the cause and source location of the fault and source code location when the system is faulty, and can be easily changed, cut; (different can be maintained and running manageable) 3, expandability : The upgrade, expansion, expansion performance system of the system program will have a long running cycle after completion. In this cycle, the application is increasing, the application is continuously upgraded, so the structural design and other schemes are fully considered Upgrade, expansion, expansion feasibility and convenience 4, portable different clients, application servers, database management systems: If the client used by the potential customers may use different operating systems or browsers, their portability must be considered The portability of the client program, or try not to make business logic on the client; the data processing is available in the database management system, but if the customer group cannot be determined in the same database If the management system, the business logic cannot be in the database management system; reaching the portability must pay attention to standardization and openness: only widely adopted international standards, develop an open-enabled product can ensure full of various types of systems Internet, so that the product is more market competitive, and it provides the foundation for future system transplants and upgrade expansions. 5. The requirements of the compliance of the requirements are mainly compliant with the requirements of the organizational structure of the source code mainly considering the software code and the minimum redundancy of the framework for the possible changes in the user's demand (and also makes the system have certain scalability). V. Issue, the problem of writing system architecture should be considered, the work should be carried out at approximately 80% of the demand development, do not have to wait until the demand development is completed, and the project manager needs to evaluate whether it is enough to start building a software architecture at this time. . Give a consistent contour: system overview. A system architecture requires an outlined description, and developers can establish a consistent contour from thousands of details or even dozens of modules or object classes. The objective of the architecture should be able to clearly illustrate the system concept, the architecture should be as simple as possible, the best framework should be simple, short, clear and unscrupulous, and the solution is natural. The architecture should first define the main subsystem of the upper layer, and the task of each subsystem should be described, and the preliminary list of each module or object class in each subsystem is provided. The architecture should describe how to communicate between different subsystems, and a good architecture should minimize communication relationship between subsystems. An important feature of the success framework is to indicate the most likely changed field, and the most likely changed part of the program should be listed, and how the other parts of the architecture should be indicated. Reuse analysis, outsourcing: shortening software development cycles, and reducing cost effective programs may not be self-developing software, and can be reused or proof of existing software. The effects of its on the frame should be considered. In addition to the problem of system organization, the architecture should focus on design decisions on the comprehensive impact, in-depth decision-making areas: external software interface (compatibility, communication method, transfer data structure), user interface (user interface and system level division), database Organization and content, non-database information, key algorithm, memory management (configuration strategy), parallelism, security, portability, multiplayer operation, error handling. To ensure the traceability of the demand, that is, each requirement function has a corresponding module to implement. The architecture cannot be designed only according to static system objectives, and the dynamic development process, such as the situation of human resources, the progress requirements, and the satisfaction of the development environment.