After feasibility analysis, project planning and quality management will penetrate demand analysis, system design, program design, test, maintenance software engineering links.
The project plan is to provide a reasonable process table, so that all developer tasks are clear, the step is consistent, and the project is finally completed on time. The project plan is to be implemented, not like the political slogan with the mouth, can be exaggerated. The software project plan is focused on "accurate" instead of "fast".
Improve quality is the main goal of software engineering. However, due to software development is a intellectual creative activity, it is very difficult to ensure the quality of software products in traditional industries. The smartest heartwing in the world, the most old-owned programmers may not have to develop high quality software. The programmer must understand the squares of the software quality (called quality factors), such as correctness, performance, ease of use, flexibility, reuse, understandability, etc., can be high in system design, program design The quality built in the quality. The high quality of the software is not "management", essentially design, quality management is just a means of prevention and certification.
3.1 item plan
Doing a project plan, just like a baby to be born. If the project is allowed to write again, then it is much easier, and it can be 100% accurate.
. Stick to death]]. When doing software project plans, you should discard all exaggerated style. Only "knowing it is known to be" to make a reasonable project plan. Here, "knowing the opposite" refers to the scale, difficulty and time limit to understand the project. "Know" means how many available resources are to be understood, such as a number of programmers that can be called? What is their level? How is the hardware and software facility?
3.1.1 Knowing each other
First, you must understand the scale, difficulty and time limit of the project, you can determine how much manpower should be put into, and the material is going to do this. This issue should be considered during the feasibility analysis phase. But unfortunately, people are difficult to accurately estimate the scale and difficulty of the project before falling into a project. Here experience has played the most important role.
There are two types of items for the project. For the first category, the date should be completed in the contract, if it is postponed, the development party should make corresponding compensation. The second category is to develop its own software products, although only the rough release date of the product is determined, it is allowed to have a delay, but if the delay is too long, it will lose the business opportunity to cause loss.
The resources of the project are divided into three categories: "people", "reusable soft components" and "soft hardware environment", as shown in Figure 3.1. (1) People are the most valuable resources. The formula of the project plan must determine the list of developers to divide according to their expertise.
(2) Available soft components is a valuable resource. 1.2.1 Section The resell of multiplexed soft components can improve the quality and productivity of the software. Soft components do not have to use themselves, you can buy professional software vendors.
(3) Although the hardware and software environment is not the most important resource, it is a necessary resources. In principle, the hardware and software environment can be in line with the development requirements of the project. Some items may be prepared in advance, so as not to find the process.
1 person
2. Recounted soft components
3. Hardware and hard work
Figure 3.1 Resources of Projects
3.1.2 Progress Arrangement
A programmer is busy writing a program, and the manager asks how long it takes to complete.
"It can be done tomorrow." The programmer answered immediately.
"I think this is unrealistic, the truth is true, how much time is it?" Said the manager.
"I still want to add some new features, which takes two weeks." The programmer came for a while.
"Even this is also expected to be too high, as long as you have completed the program, I will satisfy it." The manager said.
After a few years, the manager has to retire. When he went back to retired lunch, I found that the program was sleeping next to the machine: poor guys were busy writing that process all night. [James 1999] Programmer also expects to get up every morning at 7:00 in time, but you can always wake up to noon. The project is behind the schedule is that it is a convenient meal, and it is not necessary to raise the mob. Some of the following events often lead to the project delay:
(1) The competent leaders of the superiors, the unrealistic period is developed. Project managers and programmers were forced to work in accordance with unreasonable schedules.
(2) The needs of customers have changed, but there is no corresponding modification to the progress table.
(3) Underestimation of the scale and difficulty of the project, resulting in lack of manpower and material invested.
(4) It is not foreseen that there is difficult to overcome technical barriers.
(5) It is not foreseen that developers will have problems, such as sick, resign, and so on.
(6) The developer cannot communicate well, collaborate, leading to the difficulty of completion of the task.
So the write process table cannot be full of fantasies like primary school students. Here are some useful advice:
(1) The best person to develop schedule is the project leader, and he knows the project and developers. The schedule should be discussed by the development team and can be implemented after obtaining most of the support. Avoid a situation where you want.
(2) The progress arrangement is not necessarily in accordance with the logical order. It should be made as much as possible to do a high technical difficulty, and it is difficult to do a difficulty. That is, hard work, it is easy.
When I was young, I was very interested in eating a old gentleman: he always took a large box of rice, and then tasting a small box of vegetables. Parents told me that this is China's traditional virtue, called "first bitterness". Since then, I am in mind, I will learn and work in this way. But now in the hotel, people always finish the vegetables, and finally eat some rice. God, life is really complicated, I am "eating first" or "eat food first"?
(3) Develop a large software project, the progress table should be divided into several milestones. Multiple tasks within a milestone can be synchronized. The programmer is extremely easy to add technology, or there is no thought, or it is either attacked. The milestone is like the lighthouse of the soul, making the busy crowd uncharged, not lost.
(4) The schedule must be left in the schedule, and the buffer time is used to uncertain things. Because people know very little about things that will be done, they have to stay some time to prevent it. Some of Microsoft's development groups even developed "50% buffer rules" [Cusumano 1996]. For many project managers, there is a buffer time in the tolerance schedule, and it is not a leap in the concept.
(5) If the period of the discovery item should be delivered is very unreasonable, it is necessary to compete with the leadership or by the client, request to relax the period, adjust the progress. When the customer's demand changes, the progress table is required to be corrected. Don't think that the modified schedule is very troublesome, and it will have a truthful trouble. Many people think that they are difficult to quit, but Mark Tween has said: "Quit smoking is easy, I will ring a few tens of times a year."
3.2 Concept of Zero Defect Quality Management
The concept of "zero defect" quality management comes from some internationally renowned hardware manufacturers. Although the development and hardware production of software have great differences, we can still get enlighten from "zero defect" quality management. "Zero defect" quality management has at least two core content: First, high goals, the second is the executable specification.
3.2.1 High Goals
When people do something, there is a lot of uncertain factors, it is generally impossible to achieve a goal of 100%. Suppose the usual people can do 80% of the target. If an individual's goal is 100 points, he finally achieves 80 points. If a person's goal is just 60 points, then his final achievement is only 48 points. We have been in the examination room, very clear that students who only want to mix, usually, and those who think of high score often make their own mistakes. Doing a project usually requires multiple collaborations. Assuming the total quality of the project (up to 1) is the product of the work quality of ten developers. If each person's quality goal is 0.95, then ten people's accumulation quality will not exceed 0.19. If each person's quality goal is 0.9, then ten people's accumulation quality will not exceed 0.03. Only everyone is 1, the total quality of the project will be 1.
If there is no high goal, people 's fall is very fast. If there is no "zero defect" quality goal, it may be a pile of defects.
3.2.2 Executive Specifications
Achieving 100 points is obviously more effort than achieving 80 points. The "zero defect" quality goal is not asked to make it feeled, and it makes sense. Realizing high goals require a set of executable specifications to ensure.
In the late 1950s, the country has set off "exaggeration". In order to achieve a variety of methods in the promotion of tens of thousands of pounds, harm the famine in the country. Those who don't think of hundreds of millions of Chinese farmers who have experienced foods have been planted neatly.
A good specification must be an capable of this company. A regulation of a general enterprise shining a first-class company may not be available. Software engineering specification is easy to find from books, but these specifications do not indicate that software can be done well. Many domestic software companies have no conditions for software engineering specifications recommended by the industry. [[Grass "and" seedling "in developed capitalist countries have different cultivation methods. ]]]
Software is so flexible, if there is no specification, it is easy to cause chaos because of disorderly preferences; however, if it is too strict, it will kill programmers' vibrant creativity. Developing a software specification is a difficult thing to return. The programmer must understand the quality factors in software, implant the various specifications that improve software quality factors into the brain, in order to naturally design high quality to software.
3.3 Quality factors of software
Is the program that runs correct?
Isn't corrupt officials?
At the time, the people have deeply abolished some corrupt local governments, and there is no longer quality expectation for "official". As long as the official is not corrupt, even if there is no performance, it is also a "good official". There are also some savvy orders to play the banner: Ning as a corruption, don't be big or stupid. In contrast, the programmer is happy enough. Because we can take yourself, we can grasp the destiny of software. Then don't give up the right to improve software quality easily.
The "Run the correct" program is not necessarily a high quality program. This program may have a low speed and waste memory; maybe the code is written, except that the developer does not understand anyone. The correctness is only a factor in reflecting software quality.
There are many quality factors of software, such as correctness, accuracy, reliability, fault tolerance, performance, efficiency, ease of use, understandability, simpleness, reuse, scalability, compatibility, etc. Listed more than a dozen). Between these quality factors, "You have me, I have him", very lingering. If the programmer is facing so many quality factors every day, it will be a fellow year, and there is a risk of can't find a girlfriend.
For ease of understanding, you can refer to martial arts classification in martial arts novels, and roughly divide the quality factors into several regulations. You want the martial arts source, mutual penetration, who can have many rivers and lake factions. But I want to mix it on the road, I have to know the six major articles: "Shaolin Pai", "Wudang", "Huashan School", "Kunlun Pie" and "Pai". Software quality factors are shown in Figure 3.2. Among them, "correctness and accuracy" are in the first place, as "Shaolin" and "Wudang"; "Performance and Efficiency", "Apprecient", "Apprecient and Simpleability" and "Scalability" And recoverable "is also a pivotable quality factor, as if" 嵋 "," Huashan Party "," Kunlun Pie "and" 崆峒 ", ranking no points. Other quality factors can always find a suitable intimate relationship in Figure 3.2, which is no longer one fine table. Correctness and accuracy
Ease of use
Comprehensible and conciseness
Performance and efficiency
Scalability
Reuse
Shaolin, Wudang
Huashan School
Kunlun
嵋
Pivot
Figure 3.2 Software quality factors classification and martial arts classification
3.3.1 Correction and Accuracy
The correctness and accuracy of the quality factors are the first place, because if the software is not running correctly or inaccurate, it will cause inconvenience or even cause loss. The machine will not take the initiative to deceive people, the software is not operating incorrect or inaccurate, it is generally caused. Even if a software can perform 100%, if the requirements are wrong, if the demand is wrong, the software is also wrong to the customer. Even if the demand analysis is fully compliant, if the software is not 100%, then this software also has an error. Develop a large software project, the programmer should be "correct", "precise" four words exhaustive.
Quality factors related to correctness and accuracy are fault tolerance and reliability.
Fault tolerance first acknowledges that the software system is incorrect and inaccurate, in order to prevent potential incorrect factors from causing disasters, the system has designed security measures. In some high-risk software systems, such as aerospace, weapons, finance, etc., fault tolerance design is very important.
Reliability refers to the probability that the system does not fail during a given period of time. Reliability is the term in hardware. For example, an electronic device, the start is working properly, but due to changes in the physical properties of the device (such as fever), the system will be abnormal. So a hardware system with a completely correct design, is not necessarily reliable in the work. Software does not change the changes in physical properties at runtime, and people often think that if a function of the software is correct, then it is true in a lifetime. However, we cannot completely test software and cannot eradicate potential errors in the software. Usually, the software is running well, saying that it is not normal if it is not allowed, such as "2000" problem. Therefore, it is meaningful to introduce the reliability of the software. I have bought a work on software reliability, which is full of mathematical formulas. I found that I am really difficult to understand what I have learned in my current degree. Please forgive my ignorance, I will give this book to "supply", I didn't dare to mark one by a stroke.
3.3.2 Performance and Efficiency
Users want the software's running speed (high performance) and take up less resources (high efficiency). The old social landlord is treating so long: work is going to get hurry, eat less. Programmers can improve the performance and efficiency of software systems by optimizing algorithms, data structures, and code organizations. Key to optimize is to identify "bottlenecks" that limit performance and efficiency, don't be busy in a place where it is. If you want the title to upgrade quickly, the light can be opened by increasing class; you will write a dozen articles in this year, and strive to be professor of Bo.
3.3.3 Owsehood
Easy to use means that the user feels the difficulty of using software. Users may be end users of operating software, or programs who want to use source code. The life of modern people is fast, and I want to make a convenience. Therefore, ease of use is irrespective as an important quality factor. The root cause of software ease of use is that developers have committed the "misplaced" problem: he thought that as long as she used it, she would be satisfied. As the saying goes, "Wang Po sells melon, selling self-selling". When the programmer shows the software to the user, it will often be proud to say: "This software is very easy to use, I will do it, ... is very easy to use!" The ease of use of the software will allow users to evaluate. When the user really feels that the software is very easy to use, a warm feeling is raw, so I use "friendly" to evaluate the ease of use.
3.3.4 Apprecientity and Simpleness
It can be understood that people have a simple wish: I have a money to buy it, I have to let me understand what it is. When I was a small partner attending the middle school, I felt very worried because I couldn't understand the charge of the charge, I feel very worried.
Apprecient is also for users. Developers can only write procedures that others understand when they think clearly. Be careful when programming is not abuse, you should use natural way. We don't know if your proud move is a brown, or you can't add your snake. I am like steaming a cage of steamed bread, inserting a flowers above, I want to get some poetic painting, but people mistakenly think that it is a pile of hot and teen.
Simple is a beautiful, whether it is itself or a user. In life, with concise opposite is "Luo Roo". The man of the most "mother-in-law" in the Chinese novel is Tang Yan. There is a public opinion: if there is only Tang Yan, Sun Wukong, the pig's eight rings and the four types of men, which kind of you are going to marry? Please list priority. The survey results show that modern women put Tang Yan in the end of the old woman without exception.
An original application problem may be complicated, but high-level people can design software systems very simple. If the software system is bloated, it will have problems sooner or later. Simple is the result of people 's "excellence".
The nonsense master has a famous saying: "If I make you understand too much, then you must misunderstand what I said." I have a strange experience recently: If you write academic articles very simple, people are easy to understand It is often no way; only add some mysterious things, it will make it complicated to increase the hit rate of the contribution. In fact, I can say it in five minutes to read the work I have done in the past three years, and I don't need to write a doctoral paper for more than 100 pages. When I was approaching graduation, I found that I was not suitable for my Ph.D.. After work, I must work hard and re-do people.
3.3.5 Scalability and Reuse
Scalability reflects the ability of software to adapt to "change". During software development, "changing" is a matter of empty, such as changes in demand, changes in demand, improvement of algorithms, changes in data, and changes in programs.
One way to be multiplexed is an existing soft structure that is unwinding, and the other means is the necessary extension of the ready-made soft components. Programs that can be reusable generally also have good scalability.
Chapter 6 of this book will discuss how to design can be reused, scalable C programs.
3.4 Quality check
Check that people don't trust one of themselves and others. When some things involve interest allocation, there is more inspection activities to ensure fairness. It is estimated that even if you enter the communist society, you will not check.
Quality check is not to perform the only one when the project is completed, and should be implemented in each practical link. Corresponding to the progress table, perform quality check is reasonable when each milestone arrives. The content of the quality check is two: First, it is a review, is it qualified or unqualified? How many points can you play? The second is to make a suggestion, why is the difference in quality, so that "the change is good", "better".
The following is a software quality inspection measures that people often use [Pressman 1999]: (1) makes the main content of the inspection in advance to make the inspection activity on the main problem.
(2) Only review the work, do not review the developer. The atmosphere of the review should be harmonious. The existing mistake should be politely indicated, and anyone should not be obstructed or small.
(3) Establish a agenda and follow it. The inspection process cannot be placed in freedom, and must be discounted for a given direction and schedule.
(4) Don't make too much time debate and defire.
(5) Say clearly, but don't try to solve all problems on the spot.
(6) Appropriate training for the inspector.
......
Doing a good job is not an easy task. Since ancient times, there is a policy, and there is a countermeasure. The false quality check is not asked, and two stories are explained below.
Story
Not long ago, I returned to the northwest for more than six years, and surprised to find the wheat to be harvested after the home house in the campus! This university is engaged in electronic technology, how is a wheat? Prime Minister Zhu said: "At present, the national food is sufficient, and it is not afraid of natural disasters in three years." Now the national Taiwanese people, seems to be "deeply digging holes, Guang Ji food." I know the school to create a diligence and saving, self-reliance, but it is not as kind to vegetables with its kind of wheat. Old classmates told me that wheat was in order to meet the "211" project (for the first four key universities in the 21st century), because "211" project has a high green indicator. Degal inspection is in winter, the northwest is difficult to grow grass. My university was very much more, and the grass on the ground immediately gave the students to death. One go to winter, the whole campus is bare. It can be described as a thousand angel pen with a wheat greening campus. The prosecutors of the examination team have long been different.
Check the work to prevent the subject to falsify.
Second story
When I was on high school, the class held a group review. There are several good students in the candidate, and there are a few bad students. I have a chance to "stretch justice", and I will never let the bad guys mix into a pure group. You know that the branch secretary is smart and stupid. He said: "There are still some students who have not entered the group. Now they apply for entry, and if they disagree, please raise your hand." We don't know what to do. The secretary followed: "Since no one raises his hand, it means all the consent, please applaud." This time I haven't thought about it in a minute. I have never thought about the party.
Checking work must have a scientific review method.
3.5 small knot
In recent years, many large companies in China shouted to enter the world. If it is really realized, the world is not entirely occupied by China. The software project plan and quality management are not the slogan used to shout. Don't "advan" when you do a project plan, don't expect to increase people after the project is in trouble. The high quality of the software is mainly designed, not "tube", and can not rely on quality checks. For this programmer should fully understand the quality factors of the software, only improve the design level can we develop high quality software.