Chapter 4 high quality software development
Chapter 1 of this book describes the basic concept of "Software Quality" and explains the top ten attributes of software quality. These ten quality attributes are classified into functional and non-functional attributes, including correctness, robustness, and reliability. non-functional attributes include performance, usability, clarity, security, scalability, compatibility, and portability.
1.1 Basic concepts of software quality
In this section, the author puts forward the idea of "zero defect.
"No wrong program is hard to find in the world ". We often say that "zero defect" is just an ideal state. However, when people do one thing, there are many uncertainties, and it is generally impossible to achieve the goal by 100%. Strict requirements have only advantages and no disadvantages, so there is a "zero defect" concept.Without the quality concept of "zero defect", there may be numerous defects.This is the so-called "depending on it, depending on it; depending on it, depending on its bottom; depending on its bottom, there is no income ."
1.2 elaborate on software quality attributes
Correctness, robustness, and reliability
This is the basic requirement of our developers when developing products! The importance of correctness is self-evident. Wrong things will not only have no value, but will lead to losses. Robustness and reliability are the guarantee for the availability of software products. From time to time, software users who crash or are unfriendly will certainly be reluctant to use them.
Performance
Performance usually refers to the "time-space" Efficiency of the software, rather than the running speed of the software.
Especially in the industry I am currently engaged in, because massive data processing is often required, performance is a common concern. To solve the performance problem, the key task is to identify the performance bottleneck. Do not be too busy. For me, the most common problem is the excessive time efficiency and space efficiency. Therefore, it is common to adopt the "space-for-time" approach. (It may be because the hardware cost is reduced, and large memory is relatively easy to obtain ).
Ease of use
Ease of use is most important to the design of software products by the demand personnel (or product designers.
Clarity (readability and maintainability)
Martin flower's refactoring book says, "Any fool can write code that a computer can understand. Only good programmers can write code that is easy to understand ." The importance of readability is visible! Only readable code can be maintained.
Security, scalability, compatibility, and portability. From the perspective of my current industry, compatibility and scalability are more important. Compatible with the same strong software in the same industry and between versions.
Experience shows that if "high quality" is "patched", there is no doubt that it will lead to low productivity and high costs. If some good methods can be developed and built into the development process with high quality and productivity, the development cost can be naturally reduced, which is the goal of software process improvement.
1.3 people focus not only on quality.
Software companies strive to achieve "fish, bear's paw, wine ".
High quality is not only the technical pursuit of software developers, but also the requirement of professional ethics.
There is a complementary relationship between quality and productivity. However,High productivity must be subject to qualified quality.
In a chaotic enterprise, after a group of people finished their products, they were immediately overwhelmed by quality problems.
1.4 basic methods for high-quality software development
The author discusses the basic process of software development from eight aspects, including establishing software process specifications, reusing, separating and administering, optimization and compromise, technical review, testing, quality assurance, and error correction.
The software development process is a long-term complex activity. A set of specifications and processes suitable for the actual situation should be established and a system should be formed, this process is guaranteed by the system.
"Standardization" is the fundamental symbol of the difference between "Regular Army" and "guerrillas.
"Please do not invent the same wheel ." Is a desire for reuse. Reuse helps improve quality, increase productivity, and reduce costs.
Optimization is not a dispensable task, but a necessary task.
There is a causal relationship between process quality and product quality. Generally, "Good process" produces "good products", while "poor process" produces "poor products ". Of course, the separate "Quality assurance" does not guarantee the quality. Technical Review and testing focus on product quality. Technical Review and testing can make up for the deficiencies in quality assurance. The three are complementary quality management methods.
1.5 some common knowledge and Thoughts on software development
In this section, the author answers the following questions from his own perspective:
1. Is there the best programming language?
2. Is programming an art?
3. Should I use more programming skills?
4. Can I change the computer speed or the algorithm speed?
5. Should errors be classified?
He also gave his own views on some wrong ideas.