Basic concepts of software quality

Source: Internet
Author: User
How to understand the quality of softwareWhat is quality? The definition of a dictionary is: ① A typical or essential feature; ② the inherent or distinctive feature or essence of a thing; ③ a good or outstanding degree. CMM defines quality as: ① the degree to which a system, component, or process meets specific requirements; ② the degree to which a system, component, or process meets the requirements or expectations of the customer or user. The above definition is very abstract, and software developers may be confused after reading it. The quality of the software is hard to tell clearly, but today we have to make it difficult. Just make an analogy with health. Early on, people thought that health was a result of strong health and a large amount of food. This was obviously unscientific. Modern People always determine whether they are healthy by examining various physiological factors, such as measuring height, weight, heartbeat, blood pressure, blood, and body temperature. If all the above factors are qualified, it indicates that this person is healthy. If a factor is unqualified, it indicates that the person is unhealthy in a certain aspect, and the doctor will take the right medicine. Similarly, we can evaluate the quality of software by examining the quality attributes of software, and provide methods to improve the quality of software. When talking about the quality attribute of software, people first think of "correctness ". "Correctness" is really important, but is it high-quality software that runs correctly? Not necessarily, because the software may run very quickly, waste of memory, or even code is written in a mess, and no one except the developer can understand it or use it. It can be seen that correctness is only a factor that reflects the software quality. The software has many quality attributes, such as correctness and accuracy, robustness, reliability, fault tolerance, performance, ease of use, security, scalability, reusability, compatibility, portability, testability, maintainability, flexibility, etc. In addition, we can list more than a dozen new words. The above quality attributes "you have me, I have him ". If developers face so many quality attributes every day, they will soon become peatchy like Kong Yiji. Therefore, it is necessary for us to classify and integrate quality attributes. Quality attributes can be divided into two categories: "functional" and "non-functional", which are sometimes referred to as "capabilities ). From a practical point of view, this chapter focuses on the "10" quality attributes, as shown in Table 1-1. Table 1-1 "10" software quality attributes

Performance Correctness Reliability)
Non-performance Performance usability clarity Security extendibility compatibility portability)
Among them, there are 3 functional quality attributes: correctness, robustness and reliability; 7 non-functional quality attributes: performance, usability, clarity, security, scalability, compatibility and portability. Why does it happen to be "10? It's just easy to remember ). Why does "10" not include testability, maintainability, and flexibility? Aren't they important? They are very important, but they are not the selling points of software products, so they are not in the "10 largest" ranks. I think that if the above "10" quality attributes are completed, the software will naturally have good testability and maintainability. People seldom improve testability and maintainability, and do not reverse the cause and effect. As for flexibility, its benefits also have disadvantages. The flexibility has been covered by other attributes, and the flexibility should not be deliberately pursued. Based on experience, if you want to do everything well, the result is usually not good, and you always have to take the Primary and Secondary measures to do things. What is an important quality attribute depends on the characteristics of a specific product and the application environment. Please do not limit it from the perspective of this book. The simplest way to determine the quality attribute is to check whether it is noticed by users (that is, selling points ). Basic Methods for Improving Software QualityDefects are the opposite of quality, and defects are the things that people do not like or want in products. The more defects there are, the lower the quality, and the smaller the defects, the higher the quality. Bug is the image of a defect. People like to say that a bug can be used as a "scapegoat ". Software defects are clearly caused by humans. With the word bug, you can push the responsibility to the bug-"It is a fault caused by a bug ". Alas, when a bug is really so embarrassing! Is the software defective? Yes, the following story proves.

Errors are serious defects. The mistakes made by doctors will eventually be buried in the ground, and there will be more than a hundred mistakes. However, software errors will not automatically disappear and it will always harass users. According to statistics, for most software products, the workload and cost for testing and error correction will account for 30% of the entire software development cycle, which is a huge waste. If you do not know how to effectively improve the software quality, the project will pay a high price. You (developers) have no credit, and no one appreciates your hard work, all you have is fatigue. How can we improve the quality of software? Let's take a look at the story of Chinese langzhong!

The basic means to improve software quality is to eliminate Software defects. Similar to the above three langzhong treatments, there are also three basic methods to eliminate Software defects: (1) effectively prevent defects caused by work results in the development process, and build high quality in the development process. This is the principle that "Prevention is better than treatment". It is undoubtedly the best way, but developers must understand how to do things correctly (the threshold is relatively high ). The purpose of learning "high quality programming" is to Compile High-Quality programs at one time while working, rather than repairing programs after errors. (2) quality check should be conducted immediately when work results are generated, and defects in work results should be identified and eliminated in a timely manner-this method works well and is generally learned. The most common methods are technical review, testing, and quality assurance (see section 1.4 in this chapter), which have been widely used and achieved remarkable results by enterprises. (3) When the software is delivered to the user, an error occurs when it is used. Ask the developer to remedy the problem. This method has the highest cost. It is ridiculous that when the software system fails with the user, those who successfully remedy the problem on the site become heroes, and good-hearted users even sent a thank-you letter. J "Zero defect" conceptWhat is the highest level of quality? Is perfect, that is, "zero defect ". The concept of "zero defect" comes from some famous hardware manufacturers in the world. Although the software development and hardware production are very different, we can still learn from them and learn from them. When people do one thing, there are many uncertain factors, and it is generally impossible to achieve the goal by 100%. Suppose that ordinary people can achieve 80% of their goals. If a person's goal is 100 points, his final score can reach 80 points. If a person's goal is only 60 points, his final score is only 48 points. We fought a hundred battles in the test room. It is clear that students who only want to pass the test normally fail. Even students who are good at learning often make mistakes, so they have a hard time working. A project usually requires collaboration among multiple people. Assume that the total quality of a system is the product of 10 developers, that is, the maximum value is 1.0, and the minimum value is 0. If each person's quality target is 0.95, the cumulative quality of 10 people will not exceed 0.598. If each person's quality target is 0.9, the cumulative quality of 10 people will not exceed 0.35. The total quality of the system is 1.0 only when everyone achieves 1.0. As long as the quality of one person's work is 0, the total quality of the system becomes 0. It is not uncommon for a machine to crash due to a defect in the system. Although the above metaphor is more rigorous, strict requirements only have advantages and no disadvantages. If you are not strict with yourself, the fall of people will soon happen. Without the quality concept of "zero defect", there may be numerous defects. There is still a certain distance from idea to action. When developing products, enterprises should set quality goals that can be achieved based on their own strength and user expectations. An excessively low quality goal will damage the company's reputation, and an excessively high quality goal may lead to a high cost that will drag the company down (see section 1.3 of this chapter ). This article is excerpted from "high quality programming guide: C ++/C Language"

Edited by Lin Rui and Han Yongquan

Published by Electronic Industry Publishing House

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.