1 Overview
Software development cycle is an idea that IT staff is often mentioned. So what is the software development cycle estimation? We can define it as follows: According to the software development, development tools, developers and other factors investigate demand research, program design The time to make time spent on the entire development process of the code, the test. In this definition, "predicting" is very critical, it highlights the meaning of estimation, but also implicit the uncertainty of the results. Estimated software development cycle is one of the difficult processes in software development, it is difficult because of the factors involved in software development not only more and unusually complex, even with similar software projects cannot be completely moved. There is a certain difficulty in the estimated grasp. Estimation is also a very important part of software development. If the underestimated project cycle will cause labor to underestimate, the cost budget is underestimated, the schedule is too short, the final human resources are exhausted, the cost is exceeding the budget, to complete the project, the quality, and even Leading the project failed. The project cycle is estimated that the excessive surface seems to have little effect, but it is actually a consequence of cost estimation and low efficiency of human resources. Either case, the project manager controls the entire project, the cycle is estimated such as the foundation of the building, which is the foundation of follow-up. Its impact on the quality of quality will run through the entire project, thereby It can be seen that the importance of the development cycle is correctly estimated.
2. Domestic and foreign software estimates more domestic software development management is currently gradually developing, but most of the development cycle is still in the state of manual workshop. The so-called hand workshop refers to two aspects. On the one hand, it is not recognized that estimates the importance of estimates. However, there is no review; there is no special tool to assist in estimates, or do not study it specifically. How long is a software development cycle basically relying on experience to judge that a period of different experiences estimate is very different, and even worse, this judgment of this development cycle is completely between people with different opinions. It is difficult to communicate, because there is no exact quantization standard to support your judgment, and the final result is often the estimated "expert". This is similar to Chinese cooking, how many people do not have a basis, generally "a little", this "little" is experience, high-grade chefs and novices according to the amount of food species according to this amount of flavor, it is actually Domestic software development needs is quantitatively estimated, which is not only specific and accurate, which is very helpful in the healthy development of software business and internationally.
Foreign developed countries are more mature than domestic, not only many advanced methods such as code line estimation, function point estimates, human estimation methods, but also form a specialized estimation tool to assist this work, such as Microsoft The company developed project management tool software Project, Canada Software Productivity Center Inc. developed Estimate, is a more mature estimated auxiliary tool. Project uses a down-to-drop estimate, Estimate is a professional tool, including commonly used estimation methods, correction methods, using Putnam Methodology, Cocomo II, and Monte Carlo Simulation, estimation results In addition to projects Time, manpower, also includes more than a dozen analytical reports and analog diverting diagrams, planning options, human maps, expected defect maps, defect varies, etc., analyzing from various perspective assistance managers.
Using accession tools to estimate the software development cycle with significant advantages, these auxiliary tools are summarized on the basis of a large number of different types of project data research, the algorithm used, the estimated method is already mature, and the accuracy of the estimation result is Guaranteed, because this estimation can be quantified, not based on personal experience, and there is a result in the evaluation of the results. Long-term relying on tool assistance estimation can accumulate the data and estimates of a large number of projects to form a historical experience library, and the results are saved, which is easy to use. 3. Factors in software estimates to explore software development is a very complex project, which not only contains complete processes such as demand analysis, design, coding, testing, implementation, maintenance, but also involves development tools, developers, project management, risk. Many factors, different factors have different effects on estimation, and when performing software estimation (including tool assistance estimation), these aspects must be considered, otherwise the final result will have great deviations and actual results, affecting project control Some of the following common factors are discussed below.
3.1 Estimating Software Software Scale usually refers to software size, which can be described in different ways, such as the length of the program line, the number of function functions, the number of databases, the size of the database, and the like. In general, the larger the size of the software, the longer the development cycle, but this is not a simple line function relationship. The following table details some of the actual development, the development platform is Lotus Domino / Notes.
Table a single module development cycle
Serial module development cycle (intermediate programmer) code line length database size (no data) 1. Data Guide 0.25 people 300 1170k2. Business card book 0.25 people 300 1039k3. Contract Management 0.25 people 460 2110k4. Monover 0.5 people 850 2560K5. Process Management 0.5. Process Management 0.8 Month 1000 2304K7. Board 0.5 people 1400 2560K8. Personnel Management 1 person 1800 3840k9. Official document management 1.8 people 2500 2304K10. Transaction approval 1.5 people 3750 2110k11 Attendance management 1.8 people 4800 3840k12. Resource management 1.8 people 5800 3840k13. Conference management 2.5 people 11000 4608k
Development cycle of table two software project
Software Project Development Cycle Module Remarks A Government Customer 3 people 10 customized development Small Media Customers 6 Months 17 have 3 modules completely revisit a financial customer 10 people 14 80% complete revisit Insurance customers 16 people 18 fully revisited
As can be seen from the table, the longer the module's code line, the longer the development cycle, and the same development tool is basically a linear relationship, but it should also consider the code reuse problem, such as a module code is very long, but Many public functions may contain, then appropriately reduce the number of lines of code lines, the meeting management is an example. This module is more than 10,000 lines, but there are many public functions, and this factor, real code The line is around 9000 lines.
Table 2 is the actual development cycle of software projects (regardless of system implementation), the more functional modules contained in the software project, the more complex, or the more complex, or the software is, the faster the development cycle grows, this time is absolutely Not a simple superposition of module development time, because the number of module functions directly brings the inter-soft mode inter-unlocation degree, complexity multiplier, which directly leads to more time, design, etc. This is more complicated than a single module separately. In Table 2, as the number of modules increases, the increase in development cycle is not particularly obvious. This is due to the high level of productization. Because of a considerable number of modules can be completely reused, the actual development is greatly reduced, and the last example is fully revisited. The development cycle is much longer. When the software development cycle is estimated, the software scale is definitely the factors first consideration. According to the situation we discussed above, it is necessary to remove the reused part when considering the software scale. Since today's software is designed to focus on this This part will occupy considerable weight. The complexity caused by the association between the software functions must pay enough attention to the estimation, there is no major deviation.
3.2 Estimation and any one of the project risks is more or less risk, and this is also avoided in the development of software projects, and this type of project is characterized by its own characteristics. The most common risks have the following: technical risk, project technology The difficulty is very difficult, the time spent exceeds the original estimate; customer risk, customer demand, increase demand, organizational coordination; personnel risk, developer suddenly replace, departure; management risk, project manager is not good, decision-making. For risk control, it is usually a risk analysis and prediction in project management, and risk response measures are developed, so that the risk is not equal to mesemen, improve the control of the entire project.
The potential risks of software projects are very large in many cases. Of course, good project control will minimize this impact, absolutely avoid it, so project risk should be appropriate when the development cycle is estimated. Considering, especially technical risks and customer risks.
The technical risk is mainly from the technical difficulty of software itself. Demand, this risk can not be considered. However, for projects that are fully revisited, or R & D projects, technical risk must pay special attention, which should consider mainly include the following.
The development platform can be suitable for the software development involved in this project, whether it can meet the final needs, the platform's error selection will lead to a huge development effort, even if the user needs may result in low system efficiency, defense is a fatal problem The software may be eliminated soon. Functional implementation is difficult, and on the basis of practical understanding, it is necessary to carefully analyze the difficulty of implementing it, whether it will cost a lot of time.
In the actual estimation, it is recommended to be tenth to ten levels, and each level increases by 10% in the first estimated code line, and finally estimates code length = initial estimation code length × (1 0.1 × n). Suppose the primary estimation code behavior of the module A, but considers the risk of technical difficulty, set technical difficulty levels, and the final code row is 15000X (1 20%) = 18000.
Due to the analysis of technical risk is a technically strong job, people who require technical risk analysis must be technical experts, and have extensive experience in the relevant technical fields, and analyze the analysis of major technical risks must be reviewed, guaranteed accuracy. .
Customer risk is in the customized project, the customer characteristics of different industries is not the same, technology, understanding of understanding, and in the project I have experienced, 80% of the project extends the reason for the customer, and this risk The controllability is very low, and the project has more than technical risk. Before the development cycle estimates, the project manager should carefully analyze the specific status of the customer, including the customer's computer level, management level, and communication level. On this basis, it is a significant impact on the development, which can have a significant impact on the development. The customer is graded and finally determined the development cycle in a manner described above. During this process, the experience of the project manager is extremely important. It is basically the judgment of the customer's analysis, requiring management to have a large number of customer experience and industry analysis capabilities. 3.3 Estimation and Human Resources For software development projects, human resources is the core power, because software development is different from other types of projects, in addition to the computer does not need to take advantage of other tools, the final result is completely dependent on the knowledge in the human brain, This is also the greatest feature of the knowledge economy.
The influence of human resources on estimation is in several ways, understanding, communication skills, etc., the programming level is high, the speed is slow, can adapt to the team, can maintain good communication with members will affect the development schedule Among them, the technical level is the most critical factor. The technical level of the evaluation programmer can be considered from programming proficiency, programming speed, and solve technical problems. Programming skills refer to whether programmers can use programming tools to implement software, programming speed It is the time to complete a feature, and the ability to solve technical problems can reflect the technical foundation that the programmer exhibits technical skills when the technical difficulty is encountered. If the three factors account for 70%, 15% and 15%, respectively. Such a ratio.
Before the software development cycle estimates, the developer is classified, it is recommended to divide the newbie, primary programmer, intermediate programmer, advanced programmer, each level, evaluate the above three factors, can assume that the developer is intermediate Programmer, then make corrections according to the level of actual personnel in the project group, the accuracy of the result can be greatly improved.
4. The use of historical data estimation is based on historical data estimation software development cycles is a relatively common method. This method is based on historical software development cycle, comparing the current software items when estimated, thus The final result was obtained. According to historical data estimation, the development cycle is still quite high, but this approach is only applicable to the development of a certain type of software, such as the development of a certain industry business system. When the software to be estimated is too much, such as development The tool is completely different, or the type is completely different, and it cannot rely on this method, and at least other estimation methods should be assisted. If there is no historical data or develop a new field software, you can use the code row or function point estimate, and on this basis, the other method is corrected.
In fact, the current project management personnel estimates most of the estimate of the development cycle, with its own experience, the more accurate results, the more accurate results, but most project managers have a very valuable historical data. Lack of summation, when estimated, more than a sense of feelings, so accuracy is relatively low, so the project management personnel must not only have a large number of software development experience, but historical project data for future software development. The estimation of the cycle is very valuable.
When actually uses a historical data estimation, it is recommended that the project manager has established a historical project database, including detailed data such as the development cycle, project size, developer status, customer status of all projects, and the status of the current project when estimated Looking for the most similar historical project in the library, then compare the difference between the two projects between project size, project risk, human resources, we assume that the period of the history project development cycle is a current project can be derived according to the following formula.
B = a × (2 × S R P 2 × C) / 6S: Representative Software Size R: Representative Risk P: Representative Human Resources C: Representative
The above value refers to the ratio of current projects and historical projects.
The actual comparative factors should be more than these, but software scale, risk, human resources, and customer status are the most important, the impact on software development is the largest, so these factors are considered in this formula. Among them, the software scale and two have the greatest weight, which is also based on project management experience, and other factors can be added flexible when actual use of historical data estimation methods.