Recently, the company has developed an OA system, because it is a project manager, it is involved in the architecture design of the system. I feel like I feel that I pay for paper. Why is there any point in your point? First: Demand Analysis must be careful, the more specifically determined the design of the architecture because the demand determines the software architecture. Second: To consider various factors related to software and software architectures from users, these factors are: 1) Simplification of architecture, this and design machine equipment to ensure simple structure (so you can make users simple maintenance, users are not The principle of understanding machine design !!) is consistent. But this also brings simple complexity, why? For a few: modern PC is small, but the structure and the first computer are generally consistent, but now the general people can use PC, but the first computer must be used by people who can no longer be professional. The reason why people can easily use the PC because the interactive interfaces and hardware maintenance is simple. The architecture of the software is also this reason. Although we look very simple, it is easy to maintain, but developers don't know how to pack several layers of functional code! It is simple to the user, the developer is complex, but the software is ultimately used by the user, so simple is the truth. This is the so-called "there is a need to be lost." 2) Moderativeness: Some developers are willing to engage in "perfectionism", everything is the best, but users only need to function, and users only give you so much time and resources. However, some developers use time and money to use the user unnecessary (domestic developers easy to make this), bringing the progress and cost of the project. Very unwound! So when designing the architecture, I pay attention to the necessary functions I must concentrate on design. I will consider the destruction for anything. 3) Adaptability: The user's business is always changing, so the flexible architecture is used! The design pattern will be a better solution. 4) High-end phenomenal coupling: This is the problem of long talks, but how many people do it? 5) Development cannot be in place: people's thinking model is always from simple to complication, but some developers like a step in place, come up with code! This will cause the result of constant modification in the late stage, so software development is from simple to complication, not for a step. 6) To make good use of auxiliary tools: Some developers think that the software reuse is the development of a component, but which is reused? Many good software design, development methods are integrated in tools such as CASE, code generation, but many developers don't use, they like to start from scratch, but our development software is to show our technology superior or high quality in time Provide available software? People who use tools must be good at understanding users. The purpose of software development determines what developers should have, not technologies. The specific architectural design method for unreasonable contingency will be described in future articles. Please give pointers