How the Software design is made (1)--what is a good design? _ Software Design

Source: Internet
Author: User
Tags time limit


A project of the design of the document review meeting, the road technology Daniel has a "warm" discussion, the focus of discussion is how the design is beautiful. There is a "heated" debate about how Oo, how high cohesion is low coupling, how to reverse control, and so on. If this is the case, will this review turn into a "fairy meeting"? What kind of design is called excellent design.


1. What is an excellent design.
2. Excellent design can save the project workload
3. Excellent design starts with analyzing requirements
4. The software system is not barrel type
5. Software Design "The sermon"
6. Planning system Skeleton--Architecture design
7. Create the inside story of the system--database design
8. Details determine success or failure--detailed design
9. Users feel good is really good--user experience Design
10. Continuous improvement of design level

1. What is an excellent design.

A project of the design of the document review meeting, the road technology Daniel has a "warm" discussion, the focus of discussion is how the design is beautiful. There is a "heated" debate about how Oo, how high cohesion is low coupling, how to reverse control, and so on.

Do you think the following criteria can be the standard of "beautiful" design?

1) Efficient
2) Reliable
3) Ease of use
4) Security
5) can be extended
6) Strong compatibility
7) Strong transplant

If each design document review, we are using the above criteria to review, do you think this design review will have effect.

At that time, I took part in such a design review meeting, I feel that the atmosphere is very wrong, as it goes on, this review will not become a "fairy assembly."

So I asked two questions:

1 who can talk about the main needs of the project.
2 These requirements, design is how to consider the implementation.

As a result, no one can answer it.

The "universal" design standards we see from books are, to say the least, nonsense. There is basically no substantive use for the actual project work.

Take a look at the following 4 examples, think about the 4 cases of software design ideas, you will find the above "beautiful design standard", really is nonsense.

Case 1: A project requires a very short period of time to complete, and the customer's current understanding of the system is relatively preliminary, how you intend to design the system.

Case 2: A software company has a "webpage + database" type of project, which has been done many, but this time the business is new, how do you consider the project design.

Case 3: A software company has successfully made a management system for n hospitals and now needs to do a similar system for a new big hospital, how would you consider the design of the system.

Case 4: You received a task to do an instant strategy game, the goal is to find in the current game market to kill a way out, how you consider the game design.

Each of the 4 cases has its own characteristics, representing 4 "typical":

Case 1: The demand is very dim, the duration is very tight, the technology is basically not accumulated.

Case 2: The requirement is new, but the technical architecture of "Web + database" can be reused.

Case 3: The requirements are similar and the technical architecture is similar, believing that you will directly reuse the previous system.

Case 4: This is a creative and High-tech game, and game software needs and technologies are challenging.

In the above 4 cases, I believe you take the design strategy is not the same, you may find that the so-called excellent design does not have a fixed standard.

If you simply want to come up with a good design criteria.

I will say this: is to do cost-effective design.

An excellent design should have the following characteristics:

1 Excellent design is demand-driven, not familiar with the requirements on the design is not reliable;
2 Excellent design should be the current team can understand can be achieved, too advanced design project team do not come out, this design can only be a device;
3 Excellent design should take full account of the current constraints, appropriate balance, to ensure the achievement of the objectives of the project:
4 Excellent design can minimize the overall workload of the project, so that the whole project more controllable.

2. Excellent design can save the project workload

The topic of software design, if detached from some actual case discussion, it is easy to become empty and powerless academic discussion, so this article will list a lot of cases for your reference.

Design case: Develop an online community website

Background: A community has organized a number of salon activities, in order to expand the influence of Sharon, so that more friends to benefit, establish a good brand, in the future to achieve profitability, it is necessary to establish a online community website.

The site should have this feature:

1 Publish various activities information.
2) Release the industry news.
3) can carry out on-line salon activities, including online video salon.
4 have SNS community, can gather popularity.
5 each member has own blog, can maintain own personal page.
6 Support Simplified Chinese, Traditional Chinese, English three languages at any time switch.
7) Support Full-text search.

How do you plan to design the system?

You may ask, is there a duration limit?

You tell me. Real projects are bound to have time limits, and this project has a duration of only 1 months.

You may say: You think I am Immortal, 1 months may be how to die can not die ah.

This time can help you is the excellent design, the excellent design may let you use the very little work to make, the outstanding design also does not necessarily need you all from the zero development, we may copycat. There are many open source software can basically meet the above requirements, we can directly use, so you need to pay a lot less work.

I used to do a website like this with an open source software, but found that there is no full-text search function, the result I think of a "opportunistic" approach, I do not write a code, directly using Google's search function "site: Domain name keyword", let Google help me finish full text search. Of course, the effect of this is not perfect, but at least I can make a very short period of time, if the development of their own will not necessarily be able to make such an effect.


Limited by the time limit, limited by the capacity constraints, perfect design is basically difficult to do, but if because of the timing of the software in the design of time-saving or even directly ignore this step, in fact, is not worth the candle. In the software Design "save" 1 hours, may let you invest in the future more than doubled project time, the more the duration is tight, the more need to think calmly the design of software, the appropriate design can greatly reduce the project workload, so that your later work a lot easier.

This article is just the first article in this series, software design is not so simple, this is just the beginning oh ...

Author: Zhang

Lecturer, Innovation Workshop Entrepreneurship Class (Agile course)

Senior Advisor on software Research and development management

CMMI Chief Expert

"Fireball--UML War Demand Analysis" author

Founder of the

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.