Software engineering ideas

Note:
1) Dr. Lin Rui Zheda the "software engineering thinking" book full chapter 8. This is Mr enough in their own operating company after the success of a profound summary, it is the recommendation of another of his article entitled "University of the Decade" is also very good.
2) the article I did not paste the picture.

Software engineering ideas

Contents
1 preamble, the preamble 4
1.1 Sequence 4
1.2 Introduction 4
1.3 Thanks 5
2 the basic concepts of Software Engineering 7
2.1 The objective of software engineering model and the commonly used 7
2.2 The basic strategy of software development 9
2.2.1 Multiplexing 9
2.2.2 Divide and conquer 10
2.2.3 Optimization - a compromise of 11
2.3 the concept of some incorrect 12
2.4 the concept of some controversial 13
2.5 Summary 14
3 programmers and program managers of 15
3.1 understand the programmer 15
3.2 understand the process manager 17
3.3 programmers promoted to manager of programming but also after 18
3.4 managers and technical team building 18
3.5 to 20 errors and failed to learn
3.6 to increase the overall responsibility Su-21
3.7 Summary 22
4 project planning and quality management 22
4.1 project plan 23
4.1.1 understand 23
4.1.2 Schedule 24
4.2 the concept of zero defect quality management 25
4.2.1 High-goal, 25
4.2.2 Executable specifications 26
4.3 software quality factor of 26
4.3.1 the validity and accuracy of 27
4.3.2 Performance and Efficiency 28
4.3.3 Ease of Use 28
4.3.4 comprehensible and simplicity 28
4.3.5 reusability and scalability 29
4.4 Quality Inspection 29
4.5 Summary 31
5 Feasibility Analysis and Requirements Analysis 31
5.1 Feasibility Analysis of the elements of 32
5.1.1 Economic 32
5.1.2 Technology 33
5.1.3 social environment 34
5.1.4 35
5.2 Feasibility Analysis of 35 cases
5.2.1 Feasibility Analysis of 36 cases
5.2.2 Feasibility Analysis Case 2 38
5.2.3 Feasibility Analysis of three cases of 42
5.3 Why do requirements analysis difficult 44
5.3.1 is not clear that the needs of customers 44
5.3.2 Changes in the demand for their regular 44
5.3.3 Analysis of staff or customers to understand error 45
5.4 how to carry out needs analysis 46
5.4.1 should be aware of what 46
5.4.2 the means by which to understand the 47
5.5 Summary 47
6 System Design 48
6.1 Architecture Design 49
6.1.1 Hierarchical Structure 49
6.1.2 Client / server architecture 51
6.2 Modular Design 53
6.2.1 Information Hiding 53
6.2.2 Cohesion and Coupling 54
6.2.3 closed 55 open
6.3 Data structure and algorithm design 56
6.4 User Interface Design 57
6.4.1 the needs of interface design of Sino-US 57 and the guiding role
6.4.2 Interface of the meaning of the United States 58
6.5 System Design Example 60
6.5.1 Design of the background 60
6.5.2Intra3D 2.061
6.5.3 Supported Cooperative Work to develop the network communications system CNC 1.064
6.5.4 Application Example 69
6.6 Summary 69
7C + + object-oriented programming 70
7.1C + + object-oriented programming concept of the important 71
7.1.1 Classes and Objects 72
7.1.2 Inheritance and composition 73
7.1.3 Virtual Functions and Polymorphism 77
7.2 good programming style 81
7.2.1 Naming Convention 81
7.2.2 the use of that 82
7.2.3new, delete with the pointer 83
7.2.4 use const85
7.2.5 Other recommendations 87
7.3 Summary 88
8 tests with error 89
8.1 pairs to test the understanding of 89
8.1.1 The purpose of the test 90
8.1.2 test the psychological requirements of 90
8.1.3 test the truth of 90
8.1.4 Testing and quality of the relationship between the 91
8.2 Selection of test 91
8.2.1Microsoft's 91 lessons learned
8.2.2 Test of the division of 92 staff
8.3 The main elements of the test method with the commonly used 93
8.3.1 the validity of the test 93
8.3.2 testing fault-tolerant 94
8.3.3 test the performance and efficiency of 94
8.3.4-to-use testing 95
8.3.5 Document test 95
8.4 error 95
8.5 Summary 96
9 Maintenance and Regeneration Project 97
9.1 knowledge of software maintenance 97
9.2 The cost of the maintenance of the main factors and 98
9.3 Regeneration Project 99
9.3.1 Reconstruction of 100
9.3.2 Reverse Engineering 100
9.3.3 prior to the project 100
9.4 Summary 100

1 preamble, the preamble
1.1 Preface
"Software engineering thinking" about the "software development" and "programmers to do", the vision of a unique, innovative ideas, the content of humor, have an original style, it is refreshing. Can be rare, and memorable.
The author engaged in the eight years of software development work, in his PhD thesis wrote the occasion of the completion of the "heart of the flu." Although it is the software engineering to explore the most common, but in person he will be the sentiment of the calendar of the text written in a vivid and lively, will be a lot of software engineering principles and methods into the joke went, the people too easily, from time to time resonance. Although very thin, but its content is not less than thickness of the thousand-page textbooks.
Every time I have to back and Mr Zheda meet to talk about academic, social theory, to face life, " Wings not bit humble country ", often after midnight. Not long ago I was a university for computer science lectures, and finally take the liberty Talk about a few words the way , one of which is "knowledge and reasonable." The ancients said: "reasonable reading" means reading to understand the truth in life. I think one of the important content, is to have a positive outlook on life, to contribute to the community. This is our consensus. Mr has vowed to be a "real, honest, good scientific and technical personnel." Difficulties in his own time is still a number of poverty-funded secondary school and university students; Pick up was often bend to throw in the waste paper , plastic bags, to show later. This will cause a lot of scholars have added shame.
In short, Mr software engineering practice of positive thinking, lighthearted yet profound writing and words and deeds, are good at.
Is precisely because of this, and not just because it is a peer, I is not ashamed shallow and accept his request to have the honor to become the first book readers, and we should have left the text is the famous place that sum on the lam.

DONG Jun, in February 2000 in
Day room

1.2 Introduction

Development in the early 60's computer, programming is one of the few smart things people do. Their intelligence and superb skills, preparation of procedures for the mentally handicapped can control the computer, and allow other people can not read, will not use. Programming during that time just like the way mud pinch, they are too much to the procedure known as a collection of software, so that when their happy or sad and then pinch a different procedure. People feel in such circumstances Happily programming with enthusiasm , resulting in a pile of questions: the procedures of poor quality, frequent errors, the delay in progress, more expensive ... .... These problems led to the "software crisis."
In 1968, a group of programmers, computer scientists and industrialists together to jointly countermeasures. Through drawing on the success of the practice of traditional industries, they advocate the adoption of engineering methods to develop software to solve the software crisis, and the word "software engineering" of the term. More than three years, despite a number of software defects such as cold as human beings can not cure, but the development of software faster than any traditional industries, there has not been true during the software crisis. This is the foresight of our predecessors. Today, software engineering has become a subject.
Software engineering, software development focuses on the logic that the software is basically the successful experience of practitioners and a summary of the lessons of failure. Software engineering concepts, methods, strategies and norms are plain, ordinary people can understand, the key is to use. We can not consider the software engineering approach of the kit as a very attractive Liang ─ - only after problems have emerged in the open to see, but should pre-master is expected to be the problem, control of every aspect of practice, and nipped in the bud. Research on software engineering theorists never make it cool: theorem proving, it done.
In my university, there are eight of the ten years engaged in software development, in spite of the preparation of hundreds of thousands of lines C + + / C procedures, has also experienced a number of Littles success and failures , can be felt only the old school a little fur, heart fear The Exiles . Doctoral students in the six months before graduation, I cautioned myself Someone should not be in the process heap crawling go on , so on reflection facing the wall, so the monk Dense for a while . In the "meditation", each will have a record of experiences, to make up the chapters by unknowingly, I gave this book named "software engineering thinking."
Classic software engineering books like bricks thick, or to be prohibitive, or people to read a heavy heart. Please forgive my naive, I tried three questions: What, why, how to do, to explain the reasoning in software engineering. Therefore, this book like a thin dumpling skin ─ - used to package "thinking" such a taste of the "stuffing." After the book's eight chapters are as follows:
The first chapter, "basic concepts of software engineering";
Chapter II, "program manager and programmers";
Chapter III "project planning and quality management";
Chapter IV, "Feasibility Analysis and Requirements Analysis";
Chapter V, "System Design";
Chapter VI "C + + object-oriented programming";
Chapter VII of the "test and error";
Chapter VIII of the "maintenance and regeneration projects."
Appendix "University of the Decade" can serve as a fruit after a meal.
I occasionally worry about this too superficial writing, little content. Like a chicken flopping about in the water a few and can not produce delicious chicken soup. But if you read of a few minutes of any section of this book, you immediately of a couple of hours to re-read the whole book in one breath, and were happy to direct The first person to : "Good! Good! Very good!"
You can put this technology to see the book as fiction, but when reading a book, please do not eat to avoid choking or spray the others with their own.
If you bought a book that is not worth following, I will compensate your loss.

1.3 Thanks

The book does not belong to my PhD thesis research areas, but I read a doctorate in three years to write the most interesting work.
First of all I would like to thank the instructors, Zhejiang University, Computer Aided Design and Computer Graphics (CAD & CG) State Key Laboratory of Professor Shi Jiaoying. In other divisions of eight children, as brothers are to "study" a doctorate, I have "not been doing regular jobs" and opened a software company. When I throw a big fall back crestfallen unfamiliar laboratory, the stone is still enthusiastic teachers to help me "Xiucheng Zhengguo." Close to graduation, ashamed of my mind over the past three years I have never done any live teacher to stone, my doctoral student, he is recruited white. I very much hope that the university more like stone and the generous enlightened teachers as mentors.
Dr. Dong Jun was the first book readers. We are " Gentlemen " not " Danru water ", in addition to paint night long science and technology, art, philosophy, but also did not forget to "drink" to enjoy life. He read in the goods at the same time work to complete the review.
PENG Xiao-Peng study to make improvements, even though she is teaching art classes, but want to learn natural science. I often heard her talk Kan Software Engineering, unwittingly became the second book readers. When she read only "sing" "Kazakhstan", never like meditation, it is estimated that No understand . Is a naive small Pengtao not obliterate the big kids, and I call each other brothers, brought me a lot of fun. One day at noon, we, Zhejiang University of garbage on the lawn in front of a clean seized, the two honored. I hope that as soon as possible small Pengtao "birth" of lecturers, and then respectfully asked her teacher Peng.
Beijing Internet network software MAK's First Hong Zhou a real master of the software. He developed software products in my failure to give the most help, and I stand corrected in the software design methods of deep-rooted, so that I can gradually corrected as soon as possible. I am usually the gift of the gab, but I am speechless in front of him, only to hear of, because he has a full range of talent to more than me. I really hope to get to know a friend like him.
GAO Zhen-hua is a confused old man and the lovely private entrepreneurs, we are friend. I confused him dry matter (investment software company) included in the book, as a feasibility analysis of the case. Mr. Gao has given me financial help so that I can in a comfortable environment to carry out the work of the final year of a doctorate thesis. Although I read only the wages of 300 yuan per month, but life as comfortable as gods.
Department of Computer Science, Zhejiang University MENG Zhou Yang, Zhou Kun, Zeng Zhenyu, Yang, Bai Yun, Jin Feng and other students and I develop software, has given me a lot of technical help. I am very grateful to them.
Special thanks to my parents played a very good name. University of Reading for a decade, I now almost worthy of the name of the.

Mr, February 2000
On CAD & CG, Zhejiang University State Key Laboratory of

2 the basic concepts of software engineering

This chapter describes the basic concepts of software engineering, software engineering is the macro level on the study. If you are a software company owner, no need to work in the first line, then read this chapter is enough. But you must let the staff believe that non-stop work is the greatest happiness in life, and allow them to read this book.

1.1 on the goal of software engineering and software engineering model commonly used. 1.2 on the basic strategy of software development: "reuse", "divide and rule", "Optimization - a compromise," help guide the choice of practice methods and new methods. 1.3 Some examples of incorrect concepts, based on the early software naive personnel, beginners can learn a lesson from. 1.4 Discussion of some controversial ideas.

After reading this chapter, it is necessary to establish this belief: in the process of software development Ke Hum bumpy, as if only the rugged face, a towel with hot water can be smooth. Let us hold high the procedures, and software engineering thinking of the great banner of solidarity with Microsoft software as the core around Bill Gates along the way of making money, regardless of day and night to programming, the construction with Chinese characteristics the software industry to the great cause of the 21st century.

2.1 software engineering goals and common model

Software engineering objective is to improve software quality and productivity, the ultimate realization of the industrial production of software. Software quality is the demand side of the issue of greatest concern, even if it does not map users and cheap, but also a genuine request. Software productivity is most concerned about supply-side issues, employers and employees want to use less time to earn more money. Between quality and productivity is intrinsically linked to high productivity must be based on the premise of quality. If the quality standard for bad things to both sides of supply and demand. From short-term benefits, the pursuit of high-quality software development time will be extended and increased costs, it seems to reduce productivity. From the long-term benefits, the high-quality software development will ensure that the entire process flow more standardized, greatly reducing the cost of software maintenance, in essence, is to improve the productivity, will be a very good reputation at the same time. Between quality and productivity, there is no fundamental antagonism, a good software engineering can improve the quality and productivity at the same time.

Software supply and demand on behalf of the two sides talking at the table, thanks to the development of first-line personnel for their hard work. Quality and productivity improvement program on the count on programmers and managers. For developers, if the quality and productivity have to be in the months between the primary and secondary points can not, then the quality should be first, second productivity. This is because: (1) directly reflects the quality of each software program, a developer of high-quality natural pursuit of the technology, but also the requirements of professional ethics. (2) high quality of all users have the value of high-productivity meaningful only to the development side. (3) If the beginning of the pursuit of high productivity, easy to make a quick profit, leaving hidden. Would prefer to progress more slowly, but also to ensure the quality of each link in order to map long-term interests.

There are many factors determining the quality of software, such as accuracy, performance, reliability, fault tolerance, ease of use, flexibility, scalability, understandability, maintainability and so on. Some of these factors overlap, and some are inconsistent, it can be to improve the quality of Not easy! !

The main aspects of software engineering are: personnel management, project management, feasibility and needs analysis, system design, program design, testing, maintenance and so on, as shown in Figure 1.1.

Software engineering model is proposed to be certain all aspects of the process of linking and standardizing the way can be used to operate the entire process, as factory production lines. Common software engineering models: linear model (Figure 1.2), Incremental Model (Figure 1.3), spiral model, rapid prototyping model, formal description of the model, etc. [Pressmam 1999, Sommerville 1992].

First model is the software engineering linear model (also known as the waterfall model). Linear model is too idealistic, too simple, no longer suited to modern software development model, the industry was almost abandoned. Occasionally been filed, are being demoted object, not leaving a trace of regret. However, we should recognize that, "linear" is the most easy to grasp and application of thinking proficiency. When people encounter a complex "nonlinear" issue, always do everything possible to be decomposed or transformed into a series of simple linear problem, and then one by one to solve. A software system as a whole may be complex, but simple is always a single subroutine can be used to achieve a linear way, or too tired to work on. Linear is a concise, simple is beautiful. When we understand the spirit of linear, not have to apply a linear model of mechanical appearance, and should live it. For example, in real terms is increasing sub-model of the linear model, as shown in Figure 1.3. Spiral model is a series of bending of the linear model. In the other model will be able to find a linear model of the shadow.

Apply a fixed model is not wise for programmers. Such as "programming" and "test" the relationship between the habit of always thought that programming in the first place, in the post-test, Figure 1.4 (a) as shown. For some complex procedures, will be divided into synchronous test test test and the total is more effective, in Figure 1.4 (b) below.

Regardless of what software engineering models, and ultimately, always map the various segments of 1.1. This book opened Pi specific software engineering model , the order of about personnel management, project management, feasibility and needs analysis, system design, program design, testing, and the maintenance and regeneration projects. One part of program design to C + + / C language as an example.

2.2 The basic strategy of software development

It has its own world outlook and methodology can be applied to natural life and work. Similarly, the head programmer of the software engineering will be invisible to the concept of how to dispose of their things to do. Three decades of software engineering development, and have accumulated a considerable number of methods, but these methods are not strictly theoretical. Practitioners should not apply the methods and doctrines and, more importantly, learn to "choose the right way" and "a new method." There will be a good strategy and tactics. Thousands of years ago, our ancestors on the occasion in the rough a lot of experiences to write and was well used in modern industry and commerce. This section describes software development in three basic strategies: "reuse", "divide and rule", "Optimization - a compromise."

2.2.1 Multiplexing

Multiplexing refers to "the use of ready-made things," Scholars call it "is used." Has been the object of reuse can be physical objects, but also the results can be invisible. Reuse is not a human but the wisdom of the performance of lazy performance. Because human beings are always inherited the fruits of their predecessors, continue to be used, improved or innovative progress before. So when we celebrate the National Day, it is necessary to find out much more than 50-year-old mother, and we enjoy the wealth of today there are around five thousand years the contribution of the people. Progress but should not progress while on the shameful.

The connotation of reuse includes both improving quality and productivity. From experience, we can see that in a new system, most of the content is mature, only a small part of the contents of the innovation. Generally it is believed that the mature thing is always reliable (that is, high quality), and a large number of mature through the rehabilitation work can be used to rapidly (ie, high productivity). Hard-working and intelligent people should be most of the time was spent on small-scale innovative work, and the small portion of time was spent on a large proportion of mature work, in order to work faster.

To the idea of reuse for software development, known as software reuse. According to statistics, there have been more than 100 billion lines, numerous functions have been rewritten thousands of times, which is really a waste. Object-oriented (Object Oriented) scholars is the pet phrase "Please do not re-invent the wheel of the same sub-a."

Will have some integration and can be composed of reusable software modules known as the software component (Software Component). Software reuse can be expressed as: Construction of new software systems do not have to start from zero every time, have direct access to the software component can be assembled (or a reasonable modification) into a new system. Multiplexing methods to rationalize and simplify the software development process, reducing the total workload of the development and maintenance costs, both to reduce the cost of the software to increase productivity. On the other hand, is a software component as a result of repeated use of proven, high quality of their own. So by the soft component of the new system is also composed of high quality. The use of software component of the process of production and application software as shown in Figure 1.5.

Software reuse is not only used to make their own convenience, but also to let others take convenient "is used instead." Object-oriented approach, Microsoft's COM specification [Rogerson 1999], can be used to achieve a good large-scale software reuse.

Divide and rule 2.2.2

Divide and rule refers to a complex problem into a number of simple questions, and then one by one to solve. This comes from people thinking and plain living and working experience, entirely suited to technical fields. Software personnel in the implementation of divide and rule, it should focus on: Decomposition of complex issues, each issue of whether the procedures used to achieve these goals? All procedures would be integrated into a software system and an effective solution to the complexity of the original problem?

Figure 1.6 that the software strategy of divide and rule. Such as software architecture design, modular design of divide and rule is a concrete manifestation. Software can not divide and rule "hard at hard-governance." Not to eat a chicken or a watermelon, brandished a knife and Chopped into n block , and then into the mouth of each mixing crushed, and then to digestion and absorption by the stomach, a symbol of the complex issues of water or chicken also disappear the.

2.2.3 Optimization - compromise

Optimization software optimization software refers to the various quality factors, such as to increase speed, improve the utilization of memory resources, so that the user interface more friendly, so that a more realistic three-dimensional graphics and so on. Would like to do a good job in optimizing the work, developers must first have a correct understanding of: the work is necessary to optimize things, but must do. When the optimization has become a responsibility, the programmers will continue to improve the software algorithms, data structures and procedures for organizations to improve software quality.

Well-known software 3D game Quake, in the PC, a high degree of realism in real-time rendering of complex scenes. Quake developer can mature a lot of graphics technology to the limits, for example, the Bresenham line drawing, polygon clipping, tree traversal algorithms, such as the speed of nearly an order of magnitude. Quake I first saw was not only shocked, but also by combat. The PC game software has the skill level is far better than I have seen the domestic leader in scientific research related to the graphics. The increasing prevalence of this point to the End of the only R & D work is a supreme irony. So when we developed software to show a lot of incurable diseases, do not blame poor machine. We really did not do their job well, write a bad word has failed to blunt pen.

On the assumption that our ideological education, full of energy, ready to work to optimize the Six days seven nights stem . But are willing to do does not mean that we will be able to do a good job. Optimization of the complexity of the work is the existence of many intricate connections with the target can be described as entangled countless. When not all the objectives have been optimized, they need to "compromise" strategy.

Software refers to the compromise strategy is through the coordination of the various quality factors, to achieve the best overall quality. As deputy secretary of party branch plays the role of peacemaker: "... In order to make the organization as a whole has the best combat effectiveness, we need to reuse a few people to take care of some people, in the case of last resort aggrieved group of people."

Compromise important principles of software is not a party to the loss of key functions, but not as "taking care of fish and bear's paw" abandoned as a party. 3D animation software such as is usually the speed bottleneck, but if in order to improve the speed of light in the process of the abolition of lighting calculation, then the scene will lose its realism, 3D animation is no longer a meaningful (if it is color-blind human, computer graphics school will be very simple).

Have inertia, allowing the abuse of compromise, then a difficulty when it comes, people will use a compromise approach to window-shattering, no meaningful effort to do the optimization. Therefore, it is necessary for us to compromise the development of the solemn position of: other factors to ensure the premise is not bad, so that certain elements of change for the better.

Let us use the following "optimization - compromise" strategy to solve the "fish and bear's paw and can not be a" problem.

Question: if a fish 10 yuan per kilogram, bear's paw 10,000 yuan per kilogram. There is a stubborn temper of the people, only 20 yuan a kilogram must be wonderful to eat on the "bear's paw Broiled fish ", how should I do?

Solution: 9 of 9 yuan, c. 9 pm to buy 999 grams of fish, 10 of money to buy 1 gram of bear meat, can be a "bear show fish" dishes. The rest of the penny could be the prize fund.

2.3 the concept of some incorrect

And analysis in this section some examples of incorrect software engineering concepts, can help beginners less guilty of similar mistakes.

One idea: we have a talk about how to develop software, books, the book is full of standards and examples, you can help us solve the software development of any problems encountered.

The objective situation: no doubt a good reference book to guide our work. Make full use of books in the methods, techniques and skills, can effectively address a large number of common software development problems. But the practice can not therefore rely on the books, this is because: (1) the reality of work, as a result of different conditions, even relatively mature software engineering norms, often can not apply. (2) software technology with each passing day, not what kind of software standards can be focused. Secret is very popular in certain areas, and in the software means that the backward areas.

The second concept: We have the best development tools, the best computers, will certainly be able to make good software.

The objective situation: a good development environment is a necessary condition for output, but not sufficient condition. If you have a good environment is a group of mediocre, there is no guarantee that they do a different thing.

The third concept: if we are behind schedule, you can add more programmers to solve.

The objective situation: software development is different from the traditional agricultural production, a large force is not necessarily large. If behind the plan to add new projects may be more delays in the project. Because: (1) novice will have a lot of new mistakes, chaotic project. (2) The veteran explained to the novice as well as the exchange of ideas, each spent more time, less the actual development time. Therefore, the scientific project is very important, do not care about the number of plans in advance, focusing on the right. If the "Great Leap Forward" of the way toward communism, it will turn back the consequences.

The fourth concept: Since the demand analysis is very difficult, so the software To say the jeers first , since the software is flexible and can be amended at any time.

The objective situation: the more accurate grasp of the needs, the less tinkering software. Some of the demand at the beginning it is difficult to determine, in the development process to continue to be corrected. The sooner the cost of software changes the less the greater the cost of modifications later, the same reason like medical treatment.

2.4 the concept of some controversial

This section examines a number of controversial ideas, was not to produce the "correct" or "wrong" to judge, but the dispute will motivate more rational thinking.

Controversial one: If the software is running slow, is faster to replace the computer, or to design a faster algorithm?

Authors point of view: If the software is designed to study or research, then they should design a faster algorithm. If the software has been used for commercial, it would take careful consideration: if the replacement of a faster computer to solve the problem, it is the fastest solution. Improved algorithm can fundamentally improve software speed, but may introduce errors and delay the process. There is no doubt that technology will be mad to choose the latter, because they feel that can be optimized to give up any opportunity to comment on the same crime.

A similar controversy also: the procedure is to buy off-the-shelf, or complete their own development? Technical staff and business people often have different choices.

The second controversy: the best software engineering methods, the best programming language?

Authors point of view: the software will never be the best, only better. To solve the problem are a good way or a good language. Programmers in the initial learning Basic, Fortran, Pascal, C, C + + and other languages would be a more than a good feeling, can not help but have a new and hate the old act. And today's Visual Basic, Delphi, Visual C + +, Java and other languages have their own strong points, really hard to distinguish the merits and demerits. Developers should be based on objective conditions, to choose their own methods and language are familiar with in order to guarantee the quality of compliance and productivity.

Program design is free and happy, do not swear loyalty to a certain doctrine and look for trouble.

The third controversy: whether programmers should use the skills?

Authors point of view: With regard to software development is concerned, the advantage of the skills to explore different avenues to solve some of the problems, shortcomings is not well-known techniques. If used too much in the process of skills, might be left hidden, others difficult to understand the procedure. A partial view of the advantages of the system as a whole is negligible, while a mistake may be fatal. The authors suggest ways to use natural programming, the use of skills.

"The wolf 3," the story tells us that "the failure of the technique is usually a tactic." When we can not determine when programming is a skill or tactics used, it is less. "Selling oil" is the story also tells us that "Practice makes perfect", meaning that the skills are generated automatically, rather than play out. Weng the skills to sell oil to China Central Television is performed, and he has modestly old said: "No nothing, no more than familiar with."

The fourth controversy: whether errors in the software can grade the severity of?

Authors point of view: in the quantitative analysis of the error can be graded in order to manage. Some of Microsoft's development teams will be divided into four grades errors [Cusumano 1996], as shown in Table 1.1.

Serious level: software error led to the collapse.

Two serious: error can not run a feature and there is no alternative.

Three serious: a characteristic errors but can not run alternatives.

4 severe: error is small or superficial.

Table 1.1 Error of four grades

The above classification is very technical in nature, is not universal. The assumption that a financial software has two errors: Error A die of the software, resulting in the wage calculation error B error. Classification according to Table 1.1, A is a serious error, error B are two serious. B than in A but in fact serious. Operator wages more or less balance, the owner or employee will suffer economic losses. Only the error so that the operators A tired and did not result in economic losses. Another example is the manual wrong, according to Table 1.1 Category 4 is a serious, but such a mistake could lead to machine crash.

Developers should be aware of: All of the errors are serious, there is no small mistake. Only in this way can make fewer mistakes.

2.5 Summary

The development of software engineering today, has been a lot of methods and norms of different places. This chapter only at the macro level of software engineering to discuss some ideas, and more specifically the contents of the chapters will be discussed later. No matter what the good way, in your understanding and flexibility in the use of, and not as a panacea, not as "eating the brain or Melatonin gold, 100 million people will be able to make up the first smart."

3 programmers and program managers

Work in the first line of software developers are programmers and program managers, they decided the fate of the software. Good programmers an excellent management team and the software necessary condition for the success of the project. Management is not a control, not to block other people's necks, as a group of programmers is not a wild child. Management objective is to let everyone do their job well, and allow everyone access to their own happiness and satisfaction. When an organization has been excellent leadership, the employees do not even know they have to be led. The project was completed, they will be proud to say: "take a look at our achievements through the efforts of it." Therefore, managers can not always think about himself as a officer, and should always be aware that they are the main bearers of responsibility.

We often hear complaints about the manager's title in the talk: "I will not programming, the project is not to be easy? Send engage in systems analysis, a number of programmers to invite back the demand to process, not OK it? "

Do not know that the quasi-English OK is easy and derogatory term. Failure to make software project is easy, as long as you comply with one of the following conditions:

(1) ignorant of the software project manager;

(2) technical director is not interested in programming;

(3) programmers write code Zhenzhen is hired on a temporary basis.

If both the above-mentioned three conditions, please rest assured that the failure of it.

Let us imagine that he is less Bill Gates, the first being a good manager of programmers and repeat the procedure.

3.1 understand the programmer

Early software programmers to work directly from the hardware, all live great. Because of their schedule, not the demeanor of the same as ordinary people, given the passage of time and left the "mysterious", "eccentric" impression. Today the software industry have been pushed up in full swing, there are the programmers ability to hide in the mountains, even the military factory Ao can be dug out. And more people who were not programmers Fuck up several "quick", "21 days pass," such as books have joined the industry. Now claims to have millions of domestic programmers, this army of cohabitation has not sure those are the regular army, who is a guerrilla militia.

The true mettle of the programmers are as follows:

I, honestly

Programmer in learning and work almost every day to deal with the machines, there is no Simply to deceive or defraud people by the opportunity . Hard-working programmers in debugging Bug infinite number of procedures, it is already deeply to accept the "honest" education. Dishonest person, he certainly does not want to do, the programmer can be done.

A marketing and a programmer were to speak at the press conference will be the news of a new technology available to the public.

Marketing staff, said: "The technology than the telephone, invented the transistor and the atomic bomb three combined impact of world civilization should be big."

Programmer, said: "The technology in limited areas, in a limited extent, to resolve a number of technical problems."

It seems to make our nation more honest, really want to learn computer From children .

Second, to put it simply - pragmatism

Some people ask a mathematician, a physicist and a programmer: "There are several face a box?"

Mathematician replied: "There are six surface, as is the rectangular box."

Physicist replied: "There are 12 surface, the outer surface is divided into 6 and 6 the inner surface."

Programmer replied: "Only two face, put the circuit boards and hard drives, monitors and keyboards put outside."

At present even the most advanced computer does not have the intelligence, the basic work of programmers is to make complex issues into simple computer can handle the procedure. If the complexity of a problem to even the programmers themselves do not understand, he will not be able to allow for more of the procedures to deal with stupid computer. So programmers believe in "simple - practical" doctrine.

So many computer "learned" person acting in reverse. Had a few words, a few lines of the procedures that will be able to understand, must be to raise the level of the theoretical innovation, Iffy written commentary to the article and get a professor or a doctorate . Fortunately, in the first line of work are hard work of programmers.

Third, clearly love and hate

Most programmers like technical challenges, do not like to carry out testing and maintenance. High-level programmers and high-level programmers like to work together, because they are afraid of "playing chess with the bad guy moves, the more smelly the next game more." Most programmers dislike a clique, playing political tricks. Do not believe you know a head count to the programmer, there are several people who are partisan?

Fourth, monotonous work, but not boring

Asked the master programmer: "Programming is the real meaning of what?"

Master replied: "eat when hungry, sleep when the storm, as long as the appropriate time on the program design."

In fact, programmers have been living and working together, though not monotonous and uninteresting, but also enjoy solitude. There are poems for the card:

I am on the 3rd programming

Ears the sound is not well-known figure

Only hard drive in the singing

Conclusion: The best programmer there is no reason not to like it, they are more lovely than the eccentricity.

3.2 understand the process manager

Here refers to a process manager is a leader in the ranks of programmers, regardless of his position is to develop the head, the project manager or department manager. Program manager is the grass-roots level or middle-level technical cadres, is the development of software enterprises in force. Manager selection process is a matter not to be hasty. Unlike some institutions, as long as the political slogan vocal diligent about every edge can be mixed does not make mistakes of the leadership of Dangdang. Not like some of the bureaucracy, there are only two people to set up the Office of the Director and Deputy Director are. If you happen to being named director of Fu, deputy director of the surname Zheng, but also a never-ending fight.

Chaos in a management software company, if a programmer can shout and energetic, he can become a program manager. Microsoft in the selection of managers always put their technical knowledge and application of technology's ability to make money in the first place. Program manager for the general programmer team is the most intelligent guy. Bill Gates described the wise man [Cusumano1996]:

Smart people must have reacted swiftly and accept new things are good at. He can quickly enter a new area, and give you a Thoughtful explanation . He often made the point, blunt. He can grasp the knowledge, and have encyclopedic knowledge, he can have separate areas that link the problem to be resolved. His innovative spirit and the spirit of cooperation ... ...

Good program manager should have the following conditions:

First, the technological level is the programmer of the highest-level team

Every programmer has a head bones arrogance, if you can not Jiyaqunxiong , they would not listen to your command. A technical level of poor people have been appointed as the program manager is really a tragedy, as a somewhat powerful eunuch, the surface, his head was on his stoop, the back was despised.

Second, the largest and most difficult to do the work of

Program manager and as well as faster programming. Other people live day to do, he will be able to finish half a day as this will be to engage in energy management. Program manager should be responsible for system analysis, system design of the development of these most difficult and to provide guidance to different levels of programmers to do their work. If not enough staff, the program manager at the same time be able to live a few people do.

Third, there are personal charm

Software development is the process of intellectual creativity, you can not expect the adoption of implementing rules and regulations only to produce good works. Many software companies are the procedures for the management of professional managers who do not, they can not manage to do a good job of playing from day efforts. Excellent technical program manager of the general intention is not right little, so the focus of management should be "set an example", "fair and treat people." If the program manager at work to sleep to lie on the table, other programmers will do this. If the program manager of the two programmers found to lie on the machine beside the bed, not just a loud roar of them: "Do you want a program to sleep, take a look at other people, when in bed thinking about programming."

If managers do not charisma, no one convince you that there will be no team cohesion, mob can not develop good software.

Conclusion: a dynamic software company managers at all levels would not sigh, "because I will not do what, so when the leadership had to."

3.3 programmers promoted to manager of programming but also after

Let us first look at Microsoft's system software and application software sector sector's leadership is the question of how to look at this [Cusumano1996]. Windows NT 3.0 software project manager in Lou Pareiro let his managers like him to spend half a day writing code :

Group I has developed a number of rules, one of the most important one is people have to programming, None would like to sit there calling the shots ... ... I found that managers can easily lose the target, they can not recognize that the nature of the problem and slow response. If you still do not give up writing code, you will be able to progress the project is very well informed, timely discover and solve the problem ... ... I probably spent half a day writing code and look for defects in the project.

The field of application software as a manager, Chris Peters, also holds the same view. Word project during his term of office when the general manager said:

In some large company, the manager specific to the lower level of operation. Once you become the manager of development department, will soon be in their own positions, on the grounds to give up programming (Abse) ; Similarly, the head of the development team will be shouldering heavy tasks rather than in their own programming; As programmers will feel that they are very busy, more than two places at once without programming operation. Although I was the leadership of 270 employees, it seems no longer necessary to do specific work, but I was prepared for the new version of Word has a feature.

After the programmer must be promoted to manager of programming, this truth has made this quite clear. Fear most is "an open mind to accept, and resolutely not"; or just be a way to spend one minute a day program, the compiler will not run after the switch off.

3.4 managers and technical team building

If it is to operate a processing plant or a hotel, managers do not have to understand technology. Because of their knowledge, as well as through their tour, or consultation can solve the problem of practice. In the software field, the power of technology is endless, one day can be changed so that the whole industry. Perhaps you are smart in business, but can not guarantee their safe and sound wave technology. Software companies who are proficient in all levels of the best managers understand the management of technology.

An outstanding leadership, coupled with a strong technical team, will it be possible to create a performance. Grandchildren can not come or wise to expect a coach, you can let fragile to holding the World Cup of soccer. Sea, many people like the Chinese people are very smart and engaging in the most appropriate software development. Has yet to make a few very glory of the software, which is not echoed ah population of 1.3 billion. New China has always been like with the poor, compared to India to demonstrate the superiority of rich and varied, but the software industry can not be with than others. The work of programmers in the first line managers should be aware of and procedures: Good soldiers are not born with a good will is acquired by practice; not only to learn how to analyze problems calmly, but also to work full of passion.

Software companies want to be identified who are proficient in technology and good long-commerce manager talents do. A well-known but difficult to go to the outstanding talents, but also difficult to retain. Therefore, the company's general staff in training to become outstanding talents is an important initiative. Owner of the company's programmers do not have prejudice, believing that they are equipped to deal with the machine. Since a high-level programmers can learn digital logic, can have a very clear rationale for a lot of software as "nested" such "and Chicken egg chicken eggs again ," the complex relationship between the theory as a county not a problem.

Ms. many do not cook, can speak Thoughtful Cook nutrition . While this is a social problem worthy of lament, but we should have the confidence to look forward to: if they can not have to cook every day, then soon burnt Cook delicious and nutritious. Many programmers do not understand business, rather than intellectual reasons, mainly due to personal interests and the environment. Software company owner should do to encourage employees Aura: "You can stick technology to do so, management is still worried well? Assured it dry!" Indeed, many technical staff in understanding how to manage work, and they go through frustration and temper, and gradually promoted to team leader, project manager, and even become a key decision-makers.

Good programmers and good programmers like to work with, this is the wish of an ideal. An ordinary software company can not have a lot of good programmers, even they can not do every day together and in harmony with one thing was unspeakable. Since the feudal society of China since there is infighting customs preferences, down for thousands of years already penetrated into every corner of society, even cut off the flow of the Yellow River, it is estimated that the extension of customs will go on attack. Force programmers to make sound, there must be reasonable to maintain the caste system. Hierarchy does not limit the freedom and democracy, which allows extremely clever thought, against the people who know how cooperation and struggle. As with a ladder, each have a chance to climb off the top of a wall of flowers has long been yearning for. When the ladder into a pile of loose sticks, only a few may make Maitanweng .

Now we try to establish a hierarchy of ranks of programmers.

Technology is divided into four levels, the lowest first-class, the fourth highest level. Technical level of the first level assessment of the main programmer basic programming, quality requirements (they are mainly just graduated from college). The technological level of the second-level programmers to high quality programming, has several software projects, a number of years of working experience and can guide the work of novices. The level of the third-level technical assessment of the main programmers and system design analysis of the capacity of its technical requirements have sufficient depth and breadth. Technical level of the fourth class of programmers to be successful software product designer, he has not only technical Chaoqun, and enable technology into a valuable commodity.

Management (in this case refers only to the management software business, not to consider administrative matters) is divided into four levels. The first zero-order minimum, the third highest level. The first zero-level management level management positions were not that of ordinary employees. The level of first-class management team is the team leader, will lead the work of several programmers. Management level of the second class is the project manager. The level of the third-level management to decide whether or not to develop certain products, as well as how to market.

Every programmer has a clear technical level and management level. Technical level and management level have a certain link. In general, the level of first-class technology can only do ordinary employees; technical level of the second class can be a leader; the third grade and skill levels can be a project manager; the fourth grade and skill levels products can become decision-makers. As shown in Figure 2.1. The author of the current technical level of course the second level, management level in line with the requirements of the head. Authors in the secondary school and university had been a lesson to Happily on behalf of , that is, level head.

3.5 to the error and failure to learn

Whether living or working, people should learn from the mistakes and failures, to enable short-term health of our age in fewer mistakes, fewer failures, a few do the right thing for society.

Lead to the failure of software projects are many factors to look for an excuse if we do not, then you will find the root cause of the error to them: lack of knowledge can be low, lack of experience, pride themselves ... .... We must face up to their own deficiencies and shortcomings, the lessons will be learned. It is often too much to vanity, in order to overcome the psychological barriers, wasted a lot of the energy used to create the.

The assumption that people make mistakes and are honest hard-working. Without his willingness to improve their own vanity. When suddenly faced with the failure of this person, you may feel useless, may be at a loss, may be desperately trying everything. Programmers have a common understanding: In the debugging process, often met only a dozen lines of program could generate hundreds of compile errors; found so many errors in fact a line from the error caused by the procedure. When we get frustrated at work, the first cool-headed analysis of the problem (which by no means accidental), identify the internal and external factors. Internal factors is the most important and should be the first solution.

A few years ago, called China a "Falun Gong" cult, as many as several million followers, the people suffered. Not long ago, the country's major media of "Falun Gong" for several months to denounce and expose. Witnessed a lot of the victim's tears, it was believed that people can understand the "Falun Gong" is evil, reactionary. However, in anger and pain, we can not help but reflect: Why do so many people gullible cult? It is whether or not to accept the lesson?

Saw on television a lot of people really made a profound review of: "I really regret it, ah, with the wrong Li Hongzhi (Falun Gong leader) of the bad guys, I am sorry the community ... .... After the party I have to listen to the words, the party asked me what I do, when not on the bad guys. "

I think that these victims did not wake up: He only knew that Falun Gong is a cult, do not know why the letter of the cult. Some things to think about as long as the head can be used to distinguish right from wrong, it is not going to thought, but eager to perform on the "lucky star", willing to put his head fastened Turn on other people 's. Is this simple and lovely people do? Look at history, in the "Cultural Revolution" period, hundreds of millions of people go along with legitimate organizations rationale murderous things worked which is more than a decade! Which people can see the world organization can not be wise to ensure that absolute.

So "blind faith" is a liar when the results of a fool. Silly is internal and external factors being cheated is. May not be able to fool the good guys get to make good liar fool will make another run into another foolish. In order to prevent their own "stupid," kind-hearted people should use the brain to learn some knowledge, trying to grasp their own destiny, do not hurry the life entrusted to a person or an organization.

Software project failure in the subject and began to reflect on, do not just its own merits lock only to look at specific projects, should be eating a cutting several long-chi only. The book has just failed the author, willing to take the hot talk about feelings.

I'm reading at the undergraduate and graduate, has been believed in the "cause to rely on the passion and creativity to promote." I put the slogan posted on the office, and throw away every day physics programming. Master's degree in the first year of Reading, I sold the first software. I read the first year of doctoral students, I come true college students access to a national computer software to display the first contest. At that time I thought the wings have been hard, hard look back a few years ago, can not help but have a "daughter-in-law Into woman " sense of the tragic and heroic. So I this small place in Hangzhou for a little publicity, in October 1997 opened a software company.

I started to "revive the national software industry," included in the agenda, and fear for the future of early Money earned, how to use up too much to do . After six months, I started advertising for software products, and no orders can be received, the situation is the get-away too busy (in fact there is no response Pressure root ). I have realized that the market did not look right, but we still find the software very valuable technology, ready to re-create "Oriental Western light does not shine," a new situation. So I told only one side edge of the work of the Founder was still a friend for help. He is a true master of the software, when I carefully show about 10 million lines of C + + code of the software, competing in ten minutes, he pointed out that within the design of a number of significant errors, so I stunned to realize that the value of the entire software system zero. The kind of heart, ah, watched as children have been eating like a wolf.

In October 1998, the friends once again flew from Beijing to Hangzhou, In addition to the three following five second for me to live for a year out of the company to shut down . He worried that I "need medicine cachexia fill" and not intended in particular caught my Founder inserted under the jurisdiction of his department, let me learn how to do things. Beijing can be a cold winter to create a bleak atmosphere, red to all an excuse for self-forgiveness. I am not too vain person I know that this failure is the accumulation of problems to a certain level of results can not help eruption. I absolutely can not be is still very young and do not really understand the market and management of the ground over the past half-hearted lightly. I own dozens of perceived problems listed, one by one to overcome the drop in future. ... ... Most of the contents of this book from a year ago, I recorded the lessons.

After the error, I now not only sad but also very happy. The first time that the failure of a very romantic and memorable. Just started writing this book, my friends in Beijing to Hangzhou Steps to walk gave me a smoothly with few drugs can be used in my graduation . The disadvantage is that it seems a never-ending change, to fill short and Encouraging together .

Su-3.6 to increase the overall responsibility

In front of software developers to add too much praise. A technology can be proud of the excellent programmers, but not supercilious. God can not be given too much advantage of a person so that he did not have room for modesty.

Our study may be too picky too utilitarian, resulting in the knowledge structure is very thin, I am afraid that can not be Da-qi into their old age. When the programmers are good at technology, but also does not always pay attention to make up for their own good at the non-technical skills. In order to improve the overall quality of Would .

If to be back in high school, I would like to have a good scientific text. Hou was rumored "to learn math, physics and chemistry, are not afraid to travel all over the world." Secondary school when I was ignorant, despised by all the arts, is now too late for regrets. Language test results 54 hours (only lower than my expectations 6 points). The supreme goal of writing is not escape the title before the exam again, I always pray: I have not done a bad thing, bless my essay title does not escape it! The first day of college, I was unable to speak in Mandarin, "how to take a bath," had no choice but to sway votes in bath playing with sign language instructor. Secondary school history, geography lesson, I have been To submit , and test classroom teachers will fill in a certain period of a day in my hometown of heroic martyrdom, is closer than anyone else zero results. What I am disheartened by the fact that these acts are not my own creation, and I was a Parrot at most only a sense of pride that the memories have not .

Science Liberal Arts only to throw away is not the same as in the "put down the burden Travel without forward ", inverted image of the control system is to remove the locomotive, not how far to open on a roll-over. I do software development for eight years, did not make a decent software. However, I have found peer good writing is when the writer's material. I find myself in the local node should not bear the fruit of a thin Shibuya. Son of Cao Cao Cao Zhang had suggested : "When a man places Weiqing, Bing's , Ligong desert, dozens of Long drive Peoples , and vertical and horizontal world, How is Dr. Meyer ?" Too many things to regret, and only now do more diligent . Not knowing their own Da-qi, but is willing to remedy the situation, and strive to learn further and deeper.

Do not just make people feel programmers into technology, you can not understand the free world and should be faced. Programmers should not simply because it is childish and should be mature before becoming simple, only worthy of this dynamic profession.

3.7 Summary

This chapter describes procedures for programmers and managers do a good job in some of logic, in order to hinder our progress stripped the hypocrisy, the story of a few more nagging.

China has experienced a lot of fighting, the entire people of the revolution, but no time to catch up with the industrial revolution. Now run the computer in the circumstances, we can no longer drop out of. The early 90's, there have been some Chinese programmer hero in. We have been excited, too worship. However, these solitary heroes quickly bile almost entirely disappeared, leaving only their stories, no more value left. Let us once again that "the revitalization of the national software industry," few people can not rely on the brilliant overnight. Software staff to study and work hard, not only the future, several things can be made of Fiat, and should seek the cause of focused in order to promote the lasting stability of the national software industry development.

4 project planning and quality management

Feasibility analysis, project planning and quality management will be through the needs analysis, system design, program design, testing, maintenance and other aspects of software engineering.

Project is to provide a reasonable schedule so that all developers tasks clear, coherent, and ultimately complete the project together on time. Project plan is to put into practice, and not as a political slogan shouting with their mouths, it is an exaggeration. Projects focus on software "accurate" instead of "fast."

Improving quality is the main objective of software engineering. However, because software development is a kind of intellectual creative activity, it is difficult, as traditional industries as the operation through the implementation of strict norms to ensure the quality of software products. One of the most cautious, the most honest and Pakistan may not be able to foot the programmer to develop high-quality software. Programmers must understand all aspects of software quality (known as quality factors), such as correctness, performance, ease of use, flexibility, reusability, understandability, etc., can be in system design, program design will be high Quality built one. High-quality software is not "management" by, in essence, is designed, quality management and certification is only a means to prevent it.

4.1 Project

Project plan to do, as to a baby born to be as difficult to write biography. If allowed to write after the end of the project plan, it is easier and can be 100% accurate.

The lessons of history so that we understand the truth: If there is a thousand years after the only road leading to communism and the sun, now do not fall through busy making the United States in time for the Premiership, so in the running towards communism exhausted when their hungry death. Doing software projects, we should reject all the grandiose style. Only " Know known Peter " in order to make a reasonable project. Here " Know " mean to understand the size, difficulty and time limit. "Known to have been" mean to know how many resources available, such as the programmer can call a few? Their level? How hardware and software facilities?

4.1.1 understand

First of all, to understand the size, difficulty and time constraints, should determine how much manpower and resources on the project. In the analysis phase of the feasibility of this issue to be considered. Unfortunately, however, in a project can not be allocated from the total before it was difficult to accurately estimate the size and the difficulty of the project. Experience here has played a most important role.

Projects there are two types of time constraints. The first category, the project completion date should be written in the contract, if extended, then the development side we have to make corresponding compensation. The second category is to develop their own software products, although only roughly determine the product's release dates and allow for a delay, but if delayed for too long will result in loss of business opportunities lost.

Resources projects are divided into three categories: "people", "reusable software component" and "hardware and software environment", as shown in Figure 3.1. (1) who is the most valuable resources. Project plan should identify the list of developers, it is necessary to carry out in accordance with the division of their expertise.

(2) reusable software component is a valuable resource. Section 1.2.1 discusses the software component reuse to improve software quality and productivity. Software component is not necessarily to use its own software to professional suppliers.

(3) hardware and software environment is not the most important resource, it is necessary resources. In principle, as long as the hardware and software environment to develop in line with the project requirements. Some projects may use special equipment that will have to be prepared in advance in order to avoid the delay when a process can not find.

Schedule 4.1.2

A busy programming programmers, managers also need to ask him how long to complete.

"Tomorrow will be completed." Programmers immediately answered.

"I think this is unrealistic, call a spade a spade, even in the end how much time?" Said the manager.

"I would also like to add some new features, it takes two weeks." Programmers would like to say that for a while.

"Even if such expectations are too high, and finished the procedure for as long as you let me know when I will be satisfied." Said the manager.

A few years later, the manager should be retired. In retirement he went to lunch, it was found that programmers are down in the machine beside the bed: the poor guys are busy throughout the night to prepare the program. [James 1999]

Programmers can also look forward to every morning at 7:00 to get up on time, can always wake up one day to noon on the. The project is behind schedule routine, do not make a fuss. Following a number of events often lead to project delays:

(1) the higher-ups in charge assumption, unrealistic deadlines set. Project managers and programmers are forced to in accordance with the unreasonable work schedule.

(2) customer demand has changed, but not on the schedule be modified accordingly.

(3) underestimated the scale and difficulty of the project, resulting in lack of human and material resources.

(4) did not foresee the existence of insurmountable technical obstacles.

(5) developers did not foresee that there will be problems, such as illness, resignation, etc..

(6) between the developer can not be a good exchange, collaboration, resulting in various stages of the task difficult to be completed on schedule.

Therefore, the process table can not be written as the determination of primary and secondary school students to write the book as full of illusions. Here are some useful suggestions:

(1) to develop the best schedule is the project leader, his best understanding of projects and developers. Schedule to go through the discussion of the development team, having received the support of most of the number of people to implement it. Situation to avoid wishful thinking.

(2) the progress of the arrangements and not necessarily to be in line with the logical order. Should do as much as possible with high technical difficulty, and after a low degree of difficulty of the matter. The former is hard to easily in the post.

When I am very interested in one of his dinner: He always put a big box of rice has been finished, and then a box of happiness to enjoy food. Parents told me that this is the traditional Chinese virtues, called "After the first bitter sweet." Since then I have in mind, this reason to learn and work. Can now in the hotel, people are always eating the food first before eat rice. Alas, life is too complicated, I am actually the "first meal" or " Eating vegetables first "?

(3) the development of a large software project schedule should be divided into a number of milestones. A milestone in the number of tasks can be carried out simultaneously. Programmers to easily indulge in technology, or reluctant to leave, or burn. Landmark as a beacon of the soul, so busy people are not confused and can not lose our direction.

(4) The schedule must have a buffer period of time and used a buffer of uncertainty matters. Because people know little about to do, so little time to stay in order to prevent any eventuality. Some of Microsoft's development team even developed a "50% buffer rule" [Cusumano 1996]. For many project managers, the tolerance of the existence of schedule buffer time, good for a conceptual leap.

(5) If it is found that the duration of the project should be delivered very unreasonable, it is necessary to follow the leadership or argue with the customer, the request to relax the time limit for the progress of the adjustment. When customer needs change, it is necessary to schedule to make a consequential amendment. Do not think that is very difficult to amend schedule is cumbersome, not to modify the production of Zhenzhen trouble. Many people think that is very difficult to quit, but Mark Twain once said: "very easy to quit smoking, I quit dozens of times a year."

4.2 the concept of zero defect quality management

"Zero defects" concept of quality management from a number of internationally well-known hardware manufacturers. Although the software development and hardware production has great difference, but we can still be from the "zero defect" quality control has been enlightening. "Zero Defect" Quality Management at least two core elements: First, high goals, and the other is an executable specification.

4.2.1 High-goal

One thing people do, because there are many uncertain factors, generally impossible to achieve the goal of 100 percent. The assumption that ordinary people can do 80% of the target. If a personal goal is 100 points, then the final results of his 80 points. If a person is merely 60 minutes, then he is only 48 points the final results. We test the veteran, it is clear that those who just want to mix the students pass is not normally pass, those who want to get high marks for the students often mistake their stomp and beat their chests.

Usually need to do a project collaboration and more individuals. The assumption that the total mass of the project (up to 1) is the work of dozens of developers to the quality of the plot. If the quality of everyone's goal is to 0.95, then the cumulative quality of ten people will not be more than 0.19. If the quality of everyone's goal is 0.9 hours, then the cumulative quality of ten people will not be more than 0.03. Everyone to do only 1, the project will be the total mass is 1.

Without goals, people quickly degenerate. If there is no "zero defect" quality goals, and perhaps will be piles of defects.

4.2.2 Executable specifications

100 hours 80 minutes than have to pay more. "Zero Defect" quality goal is not to want to come, can only be meaningful. Objectives require a high specification to ensure enforceable.

At the end of the 50's, the country waged a "grandiose style." In order to achieve per-mu yield of tens of thousands of ways to promote jin, the national hunger Depriving . Grain can not think of the experience of thousands of hundreds of millions of Chinese farmers on the Am so neatly .

Good norms must be capable of the implementation of enterprise. Copy of an ordinary first-class enterprise business norms may not be feasible. Specification of software engineering, very easy to find from the books, but these norms does not mean that the software will be able to do a good job. Many software companies simply can not recommend the implementation of the software engineering industry norms. The primary stage of socialism, "grass" with the developed capitalist countries, "Miller" really have different ways of nurturing.

Software is so flexible, if there is no norm to constraints, it will be easier due to disorder caused by chaotic preferences; but if too tight a specification, it will stifle the creativity of programmers alive. Regulate the development of software is a matter dilemma. Programmers must understand a wide range of software quality factors, those factors that can improve software quality implanted in the brain of a variety of norms in order to practice in all aspects of nature to design to high-quality software.

4.3 software quality factors

"Running right" is the process of high-quality program?

The officer is not corrupt and it is a good officer?

Corruption among the people of some of the local government must Tonge deep on the "official" is no longer expect quality. As long as the non-official corruption, even if there is no performance, it can be considered "good officer." There are some smart people made the banner: Ning guilty to corruption, not to big fool. In contrast, the programmer is a happy enough. Because we can effort to grasp the software from their own destiny. Well, do not easily give up the right to improve the quality of the software.

"Running right" process is not necessarily high-quality procedures. This process may be low speed and a waste of memory; may write a mess of code, in addition to developers who can not read I will not use. Only reflect the quality of the correctness of software only as a factor.

There are many factors determining the quality of software, such as the correctness, accuracy, reliability, fault tolerance, performance, efficiency, ease of use, understandability, simplicity, reusability, scalability, compatibility, etc. (You can also listed more than a dozen). These quality factors, "You have me, and I in him", very touching. If the programmers have to face every day the quality of so many factors that rhetoric will soon do so has been like a hole B, and the danger can not find a girlfriend.

In order to facilitate understanding, can refer to the martial arts novel classification, the quality factor will be roughly divided into several major faction. You think that the source of the Origin of long-martial, and mutual penetration, few who so clear how many factions of the political arena. But would like to mix both, must know that six door-to-door: "Shaolin" and "Wu", "Emei" and "Hua Shan" and "Kunlun" and "send kongtong." Classification of software quality factors as shown in Figure 3.2. The "accuracy and precision" in the first place, the status as "Shaolin school" and "Wu"; and "the performance and efficiency", "ease of use", "understandable and concise" and "reusable scalability and to use "is an important quality factor, as if the status of" Emei "and" Hua Shan "and" Kunlun "and" send kongtong. " The quality of other factors can always be found in Figure 3.2 Relationship appropriate, this section is no longer one by one detail.

4.3.1 the validity and accuracy of

The reason why the validity and accuracy of qualitative factors in the first, because if the software is incorrect or inaccurate, it will cause inconvenience to the user or even losses. Machines will not take the initiative to deceive the people, software, inaccurate or incorrect operation are generally caused. Even if 100 percent of a software requirements specification in accordance with the implementation, but if demand analysis is wrong, then the customer is concerned there is an error in the software. Even if the needs analysis in full compliance with the requirements of customers, but if there is no 100% software requirements specification in accordance with the implementation, then there is an error in the software. The development of a large software project, programmers want to "correct", "exact" words do energy.

And accuracy, the accuracy factor is related to the quality and reliability of fault-tolerant.

Fault-tolerant software system of the first to admit that there is incorrect and imprecise factors, in order to prevent potentially incorrect disaster and imprecise factors, system safety measures designed for this purpose. In some high-risk software systems, such as aerospace, weapons, and financial systems, fault-tolerant design is very important.

Reliability refers to a certain environment, in a given period of time, the system is not the probability of failure. The area of hardware reliability is the terminology. For example, an electronic equipment, a normal work, but because of the work of the physical properties of the device changes (such as fever), the system will slowly disorders. Therefore, a well-designed hardware system completely correct, in our work is not reliable. Software does not occur in the run-time changes in physical properties, it is often thought that if a function of the software is correct, then it is right for life. But we can not thoroughly test the software, the software can not eradicate the potential error. Usually a good software that is not allowed normal day, such as the "Year 2000" problem. Therefore the introduction of software reliability is significant. I have bought a book on software reliability, the book is full of mathematical formulas. I found my current qualification is difficult to understand What about books . Please forgive my ignorance, I put the book to the "for", and dared not marked by a stroke.

4.3.2 Performance and Efficiency

Users want to run software for higher speed (high performance), and occupy less resources (high efficiency). The old society is that treatment of the host of long-term employment: the work should be quick, to eat less. Programmer can optimize the algorithm, data structure and code organizations to improve software system performance and efficiency. Optimization
  • del.icio.us
  • StumbleUpon
  • Digg
  • TwitThis
  • Mixx
  • Technorati
  • Facebook
  • NewsVine
  • Reddit
  • Google
  • LinkedIn
  • YahooMyWeb

Related Posts of Software engineering ideas

  • JBoss.Geronimo and comparative analysis of Tomcat

    At open-source Java Apply Server Fields, such as JBoss, Tomcat and Apache's Geronimo, who is not only the field of commercial leader, at the same time are the pioneer of technical fields. Of course, all the Java EE Application Server Implementati ...

  • CaliberRM requirements management system

    Borland CaliberRM ™ 2006 is applicable to the entire software delivery process management breakthrough solutions. Designed to capture and manage business, technical, functional and operational requirements, CaliberRM support effective cross-organizat ...

  • What is Agile development?

    Agile development (agile development) is a people-centered, iterative, step-by-step development methodology. In Agile development, software project construction has been cut into multiple sub-project, the results of the various subprojects are tested ...

  • Hundred developers interview question - test part of the answer

    Transfer from Zhu Shaomin ID : KerryZhu http://blog.csdn.net/KerryZhu/archive/2009/02/28/3945871.aspx First answer here Hundred software developers interview question Test part of the future have time to answer software engineering, software project ...

  • Referred to the development of Microsoft's Janus skelter

    Chapter 1 of this book for basic knowledge about the basic concepts of SharePoint, the basic object model, coding notes, and on a set to develop and deploy packaged together to create the project structure; Chapter 2 for the Web Parts development, in ...

  • prototype, jQuery, Mootools, ext, dojo speed comparison

    Web20 are the cornerstone of AJAX, and now several online popular open source AJAX frameworks, such as: jQuery, Mootools, Dojo, Ext JS and so on, then we in the end of the circumstances under which the use of that framework? Following excerpt is a set of

  • Ruby will replace Java? I think not so soon

    I have heard a lot of such talk: Ruby On Rails (RoR) cool easy enough to prepare one In Web Application speed 10 times faster than Java, and it has some Java features not superior. By To, Ruby will replace Java to become the next generation of progra ...

  • Rails January of dynamic

    More than a month before, Rails 2.2.2 released at the same time, the official immediately issued a statement, saying that Rails 2.3 is under development. See the news, while lamenting on the Rails Core Team, the progress is so compact, at the same ti ...

  • Hundred software developers interview question

    Hundred software developers interview question Think employed to engage in software development of smart people is not easy. The event of accidentally, it will get a pile of low-energy large baboons. I met last year on this matter. You certainly do n ...

Leave a Reply

Recent
Recent Entries
Tag Cloud
Random Entries