Software Quality Talks Reprinted Self-Create Software Alliance With the development of social productivity, global trade competition is increasing, and users have put forward more and more stringent requirements for quality. If the company wants to survive in the competition, don't say profit, there is no choice in addition to the quality concept. As a knowledge and intellectual intensive industry, the software industry has some uniqueness relative to traditional industries, such as the invisibility of software products, high-tech content of software development, reflects the characteristics of "human brain" project, give Quality work has been launched a layer of mystery. To this end, this paper tries from the content of software quality, software quality assurance, software engineering standards, and application, software quality is constantly improving, open source ideas on software quality work, etc., is a preliminary discussion on software quality work, and further discuss the readers In-depth understanding of software quality work. I. The quality of the software quality is a necessary condition for a successful software company, and its importance is not too much. For those who have a slight software engineering base knowledge, the concept of "software crisis" is not strange. The typical manifestation is software delivery. The cost is overland, the quality cannot be guaranteed, the famous case is the development of IBM / 360 machine operating system After spending the development cost of thousands of people and constantly revised, the operating system is abandoned because of excessive error, and the performance is unstable. In this phenomenon, in the 1960s, this phenomenon has attracted high emphasis on industry, leading to the birth of software engineering research, and has become an important milestone in the process of software quality. So what is the software quality? In fact, the quality of software quality and the traditional sense is no essential, but it is only adjusted for some features of the software. From the narrow sense, the quality can be defined as "no defect". However, most of the customer-centric companies are far more than these definitions, they are defined according to customer satisfaction. For example, the definition of Motorola's defect with high quality is: "If the customer doesn't like it, the product is defective." Similarly, the US Quality Management Association defines quality as a product or service to meet customer needs. The sum of various features and features related to the ability. These customer-centric definitions have begun to start with customer needs, with customer satisfaction. Software Quality is naturally in line with the above meaning, and the initial custom software system first requires the need to meet the needs of users. To meet the precise definition of the software, performance requirements, in accordance with documentization development standards, it is necessary to give or design some quality characteristics and their combinations as main considerations in software development and maintenance. If these quality features and their combinations can be met in the product, the quality of this software product is high. Software quality reflects the following three aspects: 1. Software demand is the basis for metrics quality. 2. Some development guidelines are defined in various standards to guide software personnel to develop software with engineering methods. If you do not follow these development guidelines, the quality of the software is not guaranteed. 3, there will be some implied demands that are not clearly proposed. If the software only meets the precisely defined needs, the software quality is not guaranteed. It is worth pointing out that the comprehensive quality management thoughts in the 1980s are being applied to the field of creating customer satisfaction, and the basic purpose of today's comprehensive quality action has become fully satisfied, although many companies are not Use "comprehensive quality management", but for most successful companies, customer-driven quality has become a business philosophy of business, requiring companies to view quality problems from strategic heights, and can be understood from the following 9 aspects: 1. Quality should look at the customer's perspective - quality begins with customer needs, and finally understands the customer's understanding. 2, quality is not only reflected in the company's products, but also reflects every behavior of the company. 3. Quality requires all employees to work together - should be satisfied with external customers and internal customers. 4. Quality requires high quality partners - including high quality suppliers and vendors.
5, quality solutions are unable to save inferior products - a mass movement does not replenish product defects. 6, quality is improved - relying on everyone to constantly improve everything. 7. Quality improvements sometimes need a quantity leap - a large improvement must have a new solution and a more savvy work. 8. Quality does not lead to the rise in cost - improved quality requirements "one-time good" to reduce the cost of remediation, correction and redesign, and do not have to say anything in terms of customer satisfaction. 9, quality is necessary but may not be enough - especially when all competitors increase their quality to approximately the same level. Obviously, the above view is extremely important for software companies, but the software quality is more than just defect rates, but also constantly improved, improving internal customer and external customer satisfaction, shorten product development cycle and launch market time, reduce quality cost, etc. Quality concept. In the face of the current development of the world, how to continuously innovate to meet the needs of customers' rapid changes, is an important topic that each software company must solve. Second, software quality assurance to overcome the software crisis and improve software quality, people have conducted a lot of research and practice. The initial focus is to focus on technological innovation, starting from various software tools such as editing, compile, debugging tools, etc., developing into computer-aided software engineering (CASE) environments that have been fully supported by development. At the same time, pay attention to software development "model" research, which is how to divide the software development process, and conduct research, research, design methods, software testing, etc. of technical and methods for research, design engineering, software testing, etc. Through long-term practices, only rely on these tools, models and methodology to improve efficiency and quality, and do not meet the expected goals. However, people gradually realize that if the quality of the software development process can be controlled, the software quality can be greatly improved. Only in the development process is strictly implemented in the development process, the quality of software products is guaranteed. Otherwise, once the development work is processed in the later period, no matter how to test and make holes, it will not help. This is the "software process management" thought in recent years. This kind of thinking is not imagined, but draws on the experience of successfully implementing comprehensive quality management in hardware fields, and has implemented corresponding quality assurance work for software development, and has achieved successful experience. In actual work, you can understand software quality assurance work from two aspects. On the one hand, from the customer's driving point of view, focusing on reviewing and checking methods and ensuring consistency, the key is to need an objective standard to identify and report the quality of software development process and its work results, generally by a separate The group (generally known as the "Software Quality Assurance Group") is completed, and the key steps include: Select the standard that the project should follow. Develop a project development plan to evaluate its integrity and select the standards that the project will adopt. Review software engineering activities. Software engineering activities are reviewed based on the pre-established planning and selection standards. Calibration work results. Calibrate software work results based on the selected criteria. Report results. The result of the above activity (especially deviation) is reported to the appropriate management personnel. Processing deviation. Various deviations will be processed at the appropriate management level, and if necessary, the previous management person is further processed until it is solved. On the other hand, from the manager of the administrator, focusing on determining what must be done for product quality, and establish management and control mechanisms to ensure that these activities can be implemented. It includes determining the necessary quality characteristics of the project product, and work hard to achieve quality requirements and show that quality requirements have been reached. The key steps are as follows: Establish quality objectives. Based on the needs of the customer, establish a quality objective for each checkpoint of the project development cycle (at the end of each phase). Define quality metrics.
Define a variety of quality metrics to measure whether the results of the project activity is to help the evaluation of whether the relevant quality goals are reached. Determine quality activity. For each quality target, it is determined that those activities that can help implement the quality goals and integrate these activities into the software lifecycle model. Execute quality activities. Perform a determined quality activity. Evaluation quality. On the identification checkpoint of the project development cycle, use the relevant quality target to evaluate whether the relevant quality target is achieved. Take a correction action. If the quality goal is not reached, take a correction action. In fact, the above two meanings of software quality assurance are reflected in actual work, and the latter is manifested as a quality policy and quality assurance system from the company, and the former rely on some supervisors who do not directly implement responsibility. The quality system is effectively implemented, and the two are complementary. The ultimate ideal is that everyone can consciously abide by the relevant norms, to launch quality work with the attitude of the ownership, which is also a growing practice in recent years. Many software companies are striving to create a cultural atmosphere of all members to build, maximally The enthusiasm of mobilizing personnel, and this is critical to the quality of software development and the development of enterprises. It is worth mentioning that there is still a lot of misunderstandings for software quality assurance work, such as: As long as developers write as much document as possible, the software quality will be guaranteed. As long as the strict development process is formulated, the software quality problem can be completely resolved. Software quality issues can be completely solved by software testing. Software quality means software quality assurance - just another step in the process of selling products must be the work of software quality assurance groups. These error points have a negative impact on software quality work and must be taken seriously. III, software quality economy and quality continue to improve the importance of quality, but if there is no clear understanding of the important economic significance of software quality, an organization is impossible to make substantive progress in software quality. Obviously, obtaining high profits is critical to each company that is eager to survive and develop. Generally take the following means to obtain better profits: (1) expand marketing, increase sales; (2) Reduce costs by reasonable arrangements; (3) Reduce the amount of investment through rational investment procedures. However, the method of improving product quality is usually ignored. For many software companies, the cost of bad quality is very considerable, which not only includes test, maintenance and complaints, etc., but also include manager, developer, quality assurance personnel, purchasing staff, sales. Personnel, etc., there is no clear cost, due to quality failures, they have to spend a lot of time, such as re-planning, consulting with customers, changing design, meeting, and so on. Studies have shown that there are nearly 18 times more expenses that modify errors in-site modification than defect prevention (such as code review, testing, etc.), and investment in early development phases in design or demand will save 30 to 50 times in the future. cost. Moreover, error coding for product features will lead to sales, or lead customers to the competitors. Experience has shown that systematically takes improvement of quality, and can reduce the cost of quality defects every two years without further investment, and reach the target of profit. As a result, as a software company, an effective quality improvement plan must be developed, and it cannot only solve the code defect, but also solve the problem of design and demand. Most importantly, it must be able to improve the quality you can see, that is, a better quality product and more effective development process is not enough. If these things have not been converted into higher customer satisfaction and Increased income.
The most important thing for a quality improvement plan is that it is practical, it must be committed to reducing defect rate, cutting service costs, improving customer satisfaction, and improving productivity and income. The biggest reason for the failure of the quality improvement plan is the lack of beliefs. If a software company will improve quality, the only way is to go long-term struggle. If there is no clear understanding of the economic significance of quality, the company's high-level leaders cannot stick to the first few years in this plan. Experience shows that the real quality improvement must be established on three fields - technology innovation, process innovation and leadership. Leadership innovations include activities that improve quality in catalysts, and process innovations focus on changing the development process itself, and technological innovation includes helping to improve quality new tools and new creations. Each innovation is built on another innovation basis. General, leaders, processes, technological innovations are in balanced states, and a quality policy will work. A plan that puts all expenses into a type of innovation will produce disorders. For example, too many leaders will lead to a group of issues, too emphasized that the process may lead to bureaucracy, too many techniques that may lead to the lack of technical skills. Process and technological innovation must be supported by leadership. Here is the leadership, not management, because providing funds to buy new tools and support process improvements is only part of things. The leadership of the quality occur in the organization level and require personal belief quality. This means that people must voluntarily stand on quality position, even if the original plan is arranged, the budget is unbalanced or has been widely accepted. At a high level, the leaders mean the tasks that will be willing to undertake changes, that is to say to ensure that quality awareness goes to everyone's ideas and daily working environments, the entire organization needs to constantly consider how to improve the quality of the process and products. If people are not afraid of hearing "quality", there is not enough publicity, and there is a problem with the quality leaders. It can be considered that an institution is impossible to produce world-class software unless the technology, process and leadership supporting software development is also world-class. Quality improvement is like a trip, it requires a quality road map and a compass that tells you at any time, if there is no type of map, people can easily lose courage, and can only be in chaos, so May have a long progress. Fortunately, through many years of continuous research and practice, people have summed up some successful experiences and regularities, forming many standards such as ISO9000, SW-CMM, SPICE, IEEE / EIA 12207, MIL-STD-498, Baldrige, etc. These standards are designed to guide the mechanism for quality improvement. Despite many metrics, it is not very important to decide which standard is not very important. It is important to determine your quality progress strictly. Moreover, there is no rule requires only one measure scale unless it is restricted. The following will be a summary of the current standards. IV. Software Engineering Standards and Applications Currently in the software industry, the standards are widely used, each has its own characteristics, and can be classified in two ways. It can be divided into two categories from standard applications: one is to face all industries, such as ISO9000, Baldrige, etc. In order to adapt to a broader industry application, only some guiding principles are given, relatively abstract; Another class is specifically for software industry, such as SW-CMM, SPICE, IEEE / EIA 12207, MIL-STD-498, etc., which are more detailed for software industry and software development characteristics, relatively specific.
From standard definition mode, you can also be divided into two categories: a class is to clearly define quality management from primary to advanced development phases and feature frames, such as SW-CMM, SPICE, etc., more suitable for corporate arrangements when specific operations Quality Improved schedule; another class, the basic framework definition of successful quality management, such as ISO9000, Baldrige, IEEE / EIA 12207, MIL-STD-498, etc., requires enterprises to determine quality improvement steps and road maps . Regardless of which type of belongs, these standards are basically derived from the needs of critical defense products, and then extend to civilian use, and experience a series of supplements and improvements, therefore the relationship between each other is complicated. It is important to emphasize that companies should not be trapped in the maze of these standards, should be appropriately selected to complete the corporate goal, and adjust the relevant standards. Most of these standards provide the management framework for the software lifecycle process and give some terms definitions available for software industry references. Referring to these standards, unified development processes and document requirements can be established, clarify various roles and their interface relationships, define the types and content requirements of documents, and determine the tasks, stages, baselines, reviews, etc., and learn from the industry. Experience Lessons, avoiding the problems and defects that have emerged in the past, which provide the possibility of continuous improvement of software management, and has provided convenience for software international trade. Since there is no two items, it is not possible to use the standard photo, but should be properly cut. Typically Cut according to the following steps: (1) Determine the project environment - policies, activities, and needs; (2) Collect input - from users, support team, potential bidders; (3) Select process, activities, documents and responsibilities; (4) Record the crop decision and reason to the document. The basic principle of cropping is that the goals and intentions are could not be cropped, can be cropped, the quantity, role, responsibility, document format, report or review of the formal degree / frequency, etc. of the stage / activity. Quality success has become the necessary conditions for any successful success, software companies are no exception. Fortunately, the rich comprehensive quality thoughts and management experiences accumulated in other industries have considerable reference for software companies, here, given a well-known successful enterprise and success in the comprehensive quality management work. Long-distance businesses for comparison of software companies, recognized successful enterprises have a very far-distance enterprise customer-centric development / production as a solid decision-based decision based on different opinions to take measures Action takes action to take action by ways and tools to take action to say that non-specialized leadership amateur leadership includes all functional departments and hierarchy work work focusing on some of the organization's part of the organization only quality department personnel to accept quality education The goal is persistent, the system's work is only taken without any effort, and the long-term eyes only look at the long-term problems. It is only to solve the accidental problem. Similar to "Fire" takes preventive measures to avoid problems only when the problem occurs. Working with everyone in everyone, opening up the source of ideology and software quality has been raised in recent years, and a new trend has received more and more attention internationally, and has achieved fruitful results, and will have a major profound in the entire software industry. Impact, this is the so-called open source idea. The basic idea of open source is very simple. Initially due to the expensive cost of computer hardware, many companies believe that computer software is not worth money, and only see the subsidiary of the entire computer. Therefore, the programmer on the network can be read, reset, and modify the source code of the software, is also because of this, the software industry has developed rapidly. People can arbitrarily improve the software source code, adaptive source, and modified errors in the source code, which is impossible in most cases today.
Each company is in a closed development model in order to maintain its own advantages in software technology. However, with the continuous decline in computer hardware costs, the software has a growing proportion of the entire computer system, how to improve software development productivity, reduce costs, and improve quality is a major topic of the entire computer software industry. According to the traditional closed development model, only few of the programmers can see the source code, others can only use opaque binary software, which makes a large amount of potential errors in the program source code difficult to discover and eliminate, resulting in huge maintenance cost. On the other hand, in the open source community, the source code open and sharing principle makes any programmers have the opportunity to conduct in-depth review and testing software, which greatly improves software quality, better than traditional closed software development models. Rapid development software method. In other words, the main goal of open source is to improve software quality, and its method is to obtain a wide range of peer reviews and user testing effects by open source. With the traditional closure development mode, traditional model takes a rigorous development team (such as building the organization of the cathedral), the open source is the development team of the scattered enthusiasts through the Internet (like a market set of organizational model) This is the discovery of the open source community leader Eric Raymond in its famous "Cathedral and Market", Linux development is the successful model of "market model", which also explains the "market model" Develop software that is better than "cathedral mode". However, "market model" is not universal. Eric raymond pointed out the prerequisites for successful use of the market model, including the qualification issues including open source project leaders and communities that publicize and start building a collaborative developers. At the status of the code. It can be considered that a software cannot be developed from head from a market model, which can be tested, debug and improved through the market model, but it will be very difficult to start a project from the market, and the initial developer's community should have one. It can be played with things to run and test, although it can be very rough, clumsy, incomplete and lack of document, but what cannot be ignored is to attract which people are involved in a neat project. At the same time, the successful "market model" relies on Internet and controlled version of the evolution leader (such as Richard Stallman, Linus Torvalds). As a project leader, it is not the most critical, the most critical is to reorganize the good design you get from others, and you must have good interpersonal and communication skills. Attracting others to build a development community. The so-called free software movement is closely related to open source. The main goal of the latter is to make the software that is free (is free, freedom, not free means), the simplest difference between them is different from the respective priority There is no more in-depth philosophical discussion from both. A considerable number of wealth has been accumulated under open source / free software ideas, including operating system level, platform software level, and even the source program of the application level has been placed on the website, which is free to use. Although the main business model of the software industry is based on the sale copy as the basic business base point, the idea of this commercial software is now gradually being opened, and the service and training are replaced by the idea of acquiring profits for business. Moreover, open source software can set up many people's intelligence, especially both basic software education, but also accelerate high quality common software development. Therefore, open source thoughts have been highly concerned from governments, enterprises, and research and education institutions. With the continuous investment of a large amount of human and material, open source software is gradually moving towards industrialization.