Software Design Principles

Source: Internet
Author: User

Software Design Principles
-- Success, 2006-10-04

================================== Theoretical documents: ==================================
1. Define the problem.
The definition of the problem is intuitive and important for software development, because no software is simply an independent service.
It is necessary to develop software to better solve the problem to solve some problems. Therefore, the definition of the problem for the successful development of software and
The application is critical, but at the same time, the problem definition is also the most difficult part to solve. I believe that I have worked for a few years, or I have read <your light is on

?>
This book will certainly have a deep understanding and understanding of the definition of the problem. The main purpose of the definition of the problem is to let us understand
What a software system does is sufficient. It also allows us to consider what aspects of the system's future functions can be expanded.
The problem is defined. This seems easy to do, but we have to spend a lot of time and energy on it.
I hope that you can make it simple, beautiful, and neat. In the future development, your strength will not be wasted.

2. Basic functions.
If the problem is defined, it means that we have already planned, or talked with Party A about what our system needs to implement and what it needs.
What to do? The basic function is the core embodiment of our software system. If your software does not solve the problem for them, they are
It means that your software will lose money. Therefore, the basic functions of the system are implemented. For any software,
Or software developers are the embodiment of the basic quality. We have the obligation and pressure to complete the basic functions of our system.
Of course, there are many good standards, such as correctness, scalability, high performance, and other standards. I hope we can all stand on
Is it better for us to look at our software from a higher perspective?

3. Handling extreme situations.
As for why, we need to put "extreme situation processing" here. The main reason is that many software reviewers
The requirements are high. In addition, the adaptability of software is good. Therefore, we must deal with these extreme situations. Here the 2-8 principle is embodied here.
A lot of code that accounts for 80% of the system is dealing with 20% of the system's accidents. In extreme cases, as <your light is on> said, If you
If you fail to find at least three possible accidents for your solution, your solution will not become a problem.

4. Customer Experience.
The main service target of the software is people. That's why we say "customer experience above ".

5. The position of the system in the entire large system and its external interface are very important.
If the system has powerful functions, it means that our software may provide better services for others
More Customers Purchase our system. The whole system will be redeployed to other locations, and our system is very good
Is it powerful enough? In this case, we need to consider more external system interfaces, just like many words: a hero
It is not a hero. The success created together is truly worth celebrating. If our system is powerful, it is an isolated island.
Then, if our system wants to play its powerful role, it will become more and more difficult. Therefore, in order for our software system
It is necessary for us to provide better services to our customers and for our software systems to get better returns.
Make more improvements.
Just like a lot of well-known software, the key role is that it integrates the boundary fields not covered by many others.
Therefore, it has been well developed and promoted.

6. encapsulation function, loose change. (that is, high cohesion, low coupling. open-closed principle)
In the process of object-oriented programming, we often encounter the "open-closed" principle. In fact, this principle is not just an application.
In our daily work, many things require these principles to ensure that we can more efficiently
Develop software to improve service efficiency. encapsulate functions independently, increase fan-out, and reduce fan-in. At the same time, we disable the internal services,
The external network provides good interfaces to provide more services. This is also an embodiment of cohesion and low coupling.
For example, in a J2EE application, the service class is fully encapsulated. This encapsulation only achieves the component effect.
It is a good application. However, when there are many changes in the action/web layer, you can use an independent solution.
It provides some code reuse, but if you want to do better, you need to find a better solution.

7. Loading/unloading, configurable;
The completion of any software is accomplished as an independent product. However, the software also contains multiple
Module, each module is more or less coupled. However, the coupling of these functions should be in a more ideal stage.
It is configurable and can be loaded and unloaded. The removal of any module does not affect other functions. In addition, more features are configured

,
That is to say, each module is like building blocks. You can replace or remove one of them, but it cannot be affected.
Other functions. Software that can be configured and loaded will surely be a more ideal development model for future software. This is for system maintenance,
And demand changes are very adaptive.

8. reviews and evaluates software availability, usability, and other features from the user's perspective;
Improve the quality of software products;

9. Do not consider too many external factors.
Software is first of all its own factors. Second, consider associations and interfaces with other systems;

Only when the quality of the software is high can the interfaces of other systems be provided without any problems;

10. functional and non-functional requirements of the software;

The functional requirements of software are the development issues that should be considered by programmers (software designers). At this stage, we mainly
Centralized processing rate, software implementation considerations.

The non-functional requirements of the software are mainly reflected in the customer's considerations. From the user's perspective, the ease of use, efficiency, and capacity of the software

Errors.

What's more, the non-functional requirements of the software are mainly reflected in the document. What problems do we think of for customers? Are we customers?

Solved all current problems? Processing of non-functional requirements is intuitive and important for the use and promotion of software. After we complete

After the functional requirements are met, developers should be divided into two groups, considering both functional and non-functional requirements.
And measurement software. This will further improve the software quality, increase the market share, and increase the value of the software. Improve Our value.

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: info-contact@alibabacloud.com 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.