Hongzhi Engineer: Some Principles of System Design
Time:2018-04-04 01:03:32
What is a good system design? This issue seems controversial, but almost every software engineer and architect pursues excellent system design. Of course, system design does not represent results. It is not just the work of architects or lead programmers. Good system design must go through good project management and team effort. After analyzing requirements, design, development, testing, distribution, maintenance, and iterative or refactoring processes, no matter which part of the middle a problem occurs, the best design will be Loss of success. Well, today's article we mainly talk about some principles in the system design.
The most suitable is the best
The road to Jane is suitable for the best. Software is also a kind of service. This system is designed to serve the needs of some users who have not yet been satisfied. If you can exactly meet these unmet needs and can provide such services at a lower cost, then this is The best system. Because the source of the system design is commercial demand, and the business pursues the maximization of benefits. The genius of high-level designers is to be able to design software that exactly meets the needs of customers, and to maximize the benefits of developers and customers, rather than designing the most advanced software at all costs.
Maintaining the status quo
The architecture is the first element of the system design. The detailed design phase of the work such as user interface design, database design, module design, data structure design, etc., is carried out after the architecture is determined, and programming and testing are the last tasks.
Scalability, flexibility
Extensibility refers to the ease with which software extends new features. The better the scalability, the stronger the software's ability to adapt to "changes." Undoubtedly, an advanced system design is highly scalable and flexible because the current business needs change rapidly. If every minor change leads to a large number of system changes, such an architecture will undoubtedly fail. So architects must take the initiative to meet future changes and design a flexible and scalable architecture.
Reusability
Reuse refers to "reusing what already exists." Reuse is not a manifestation of human laziness, but a manifestation of wisdom. Reuse can help improve the quality of products, increase production efficiency and reduce costs. From experience, we can see that in a new system, most of the content is mature, and only a small part is innovative.
User friendliness
After all, design must be people-centered and end up serving humanity. Customers and users still pay attention to the interface effect. They do not understand how advanced your system is. They only look at whether the interface is beautiful, standard, smooth operation, and have a good user experience. The interface is ready, the customer is satisfied, and you are half successful. Otherwise, if the internal system is advanced, customers will think that the system is very bad and the user experience is very bad. Therefore, usability design is especially important in this era of Web 2.0.
The points listed above are some of the principles of system design. When designing a system, we must not only consider the functional requirements of the software, but also consider non-functional requirements, such as software performance, scalability, system stability, and deployment. And updates, maintainability, version management, system security, interface friendliness, availability, and more. To cover all requirements and achieve a simple and excellent system, it's hard to come by.