Good software design, not development

Source: Internet
Author: User

Not long ago, I saw an article: "The quality of software is made, not tested." He cited many examples, from machinery manufacturing to construction to it, it illustrates the importance of "doing" software. In a word, it is a center: as long as you carefully work, one line of code and one line of code to repeat, the software quality will be fully guaranteed.
After reading this article, I thought for a long time and thought it was biased. Software testing is the last mark in the software development cycle. This mark is very important and well grasped. After the product leaves the factory, there will be fewer bugs and the system will become more stable. However, software, from demand research, demand analysis, outline design, to detailed design, to development and testing, is a huge system project, it will bring about significant losses. Like a football match, the goalkeeper is the final guardian in front of the ball. His weight is of course important, but he emphasizes the importance of the goalkeeper on one side, however, if we ignore the cooperation of the forward, middle, and backguard, the strong goalkeeper may not help. The same is true for an excellent software. Every link must be fully communicated, communicated, and cooperated. If we emphasize one link on one side and ignore other links, it is impossible to "optimize" it. Of course, it is impossible to put all these steps on the balance for weighing. Depending on different nature, different types of software, its focus may also be different, for example, a team, if this team is defensive, the selection of its players, regular training, and technical and tactical arrangements on the court may all be centered around the defense. Otherwise, if it is a defensive team, all focuses may be on attacks. In terms of the various processes of software development, I think that "good software is designed, rather than being unable to be done ".
Software design includes: demand research, demand analysis, outline design, and detailed design. From this perspective, its importance is self-evident, we can also see from the industrial division of labor and remuneration.
When talking about demand research, many people may wonder whether design and demand research can work together? Please pay attention to my premise: to build an excellent software product for excellent software, I think that the personnel engaged in demand research, only by having rich software experience and skilled business knowledge can users fully understand what they really want and understand local laws, regulations, and industry standards, the market conditions are all integrated into the demand. This is a complete requirement. In this way, we can provide the analysis and design personnel with more information and complete the architecture design and detailed design. For example, to develop a set of financial software, if you do not understand the financial system or accounting standards, it is hard to imagine the market prospects produced by the financial software. For example, to develop a set of Foreign Trade software, there are also some industry rules, such as financial software. Many companies require two sets of accounts and one set of real accounts (for company management ), A set of fake accounts (for customs declaration and tax filing, for future reference). If you cannot implement it, he will not pay the ticket. However, in demand research, users generally do not tell you, and we need our demand research personnel to understand and explore. However, the status quo is not optimistic. Many project teams did not fully understand the importance of demand research. They sent a secretary or clerk to communicate with the user and brought back what the user said without missing a word, even if the demand research is completed. In fact, this is far from enough. Many users do not know how the computer works or what information is required to complete this function, there may be some trivial and scattered things. They also take it for granted that you know. This is precisely what we don't know. At this time, use our technologies and experience to explore and confirm the requirements. The winner, your experience is strong enough, and you can also give users some guiding opinions, help them sort out the process, correct the shortcomings and vulnerabilities in daily work, which is conducive to software development, it is also conducive to user improvement to achieve a real win-win situation.
Requirement analysis refers to the process of turning user requirements into software requirements. These two processes are complementary to requirement research, further research is required during the analysis process. Clarify the business model, business logic, and operation process.
The architecture design and detailed design are self-evident. The person in charge of this link is generally well-known, familiar with the essence of many languages and the trend of software development. Based on these characteristics, plan a new generation of products and make excellent products. Software and hardware environment, selection of development platforms, Division of subsystems, planning of input, output, product and operation processes, the database, use case implementation diagram, sequence diagram, and activity diagram are generated in this process.

Software development only implements the functions designed in detail one by one in the established language on the established platform. There is no need for too much innovation, or you do not need to think about the business logic and user operation processes. You can simply do it step by step as needed. Of course, many detailed designs may not be detailed enough. programmers should also consider program algorithms. In addition, unit testing is also essential and requires that all the obvious bugs be eliminated to the unit testing stage. This test is a white box test and is most likely to cause potential problems, is the role that the program must perform. Just as the machinery industry wants to produce a pole, it has to go through several major processes, such as crude vehicles, precision vehicles, and grinding. The operator must first check each process, whether the request is met, rather than relying entirely on the examiner to help him.

It can be seen that, during the entire development cycle of the software, the design occupies a large amount of weight, which determines the prospects of a product and the vitality of a product, it determines the applicability, convenience, security, and stability of a product. There are many projects, and they are killed in the cradle because their design is not well done, the preparations in the early stage were not fully completed. There are also many companies, from research, analysis, design, development to the final test, are completed by one person, the documents in these processes are only the program source code, the rest of the things, all in his mind, such a process is actually quite dangerous. Therefore, if we want to improve the software and make the software alive and satisfying the users, we should use our minds to focus on design.

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: 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.