Software Project Management is a large and complex systems engineering, the current industry processes for software development there are many norms and definitions, such as CMM and ISO9000. In the management system can be developed under the management of high-quality software products. However, because the system is more suitable for large-scale and complex projects in team development, the implementation of real time and process needed. We present the implementation of projects, generally only about 10 people, it is necessary to the implementation of software engineering is more difficult. I think: Although projects of various sizes, but the management are interlinked, it is necessary to do a good job in software development work, it is necessary to enhance effective management.
As we all know, the "software crisis" originated in a number of large projects continues to delay or even failure. Compared with large projects, small projects have the following characteristics:
- Project features a relatively small;
- Fewer developers;
- A shorter development cycle.
Small projects seem relatively simple, relatively easy to succeed, it is often easy to lose sight of the management of small projects, in fact, this is a misunderstanding.
As far as I know, the development of small projects prone to the following questions:
1, before the development is not seriously the feasibility of the project and the estimated workload.
Less often as a result of the project, it is rash to develop a development schedule, there is no serious difficulty in estimating the project, the results of the actual completion time and the estimated completion time is often a wide gap between.
2, no real design process.
Developer little different interaction between the staff of the procedure, a relatively small number of interfaces. Short development cycle is often a few people in charge of a project from start to finish, a few people touch you first, to discuss the most basic data structure, function interface will do their work separately, and do not have a more formal document to regulate the respective duties and project details.
This is one of the potential danger is that some people may have discussed the interface, understanding the structure of bias may result in future rework.
Another potential danger is overlooked as a result of the discussion some cases, such as division of labor to complete all tasks on time and found that each module can not combine to form a complete system. Their roots do not have a staff responsible for coordinating the entire development process of continuous monitoring.
The third danger is the potential drop-outs once the development team, other people when other people do a good job in the past to understand the code, but also we are starting from scratch. In addition, there is no documentation of procedures, maintenance and future upgrades are more difficult version.
3, not through direct access to unit testing and system testing.
This phenomenon is due to each module is relatively simple, but in order to test a number of modules need to build a test environment. For example, to test whether a function is correct, a number of test data should be used to call the function, the need to prepare some test data. However, many developers find it troublesome that in any case other modules also come out soon, the direct use of real data to run several times on the list.
In view of the above, I think that in the development process must address four key issues, and make strict checks can greatly enhance the quality of software.
The four key issues are: personnel, standardize, test, time control.
First, the rational allocation of staff
First of all software development is a long-term hard work, so a united, cooperative groups in the time to complete a high-quality software projects. Each team must be actively integrated into the collective whole can not be shifting responsibilities onto others, blaming each other and can not be accused, the right attitude is the basis of full confidence in the unity and cooperation, mutual help and take the initiative to undertake the task, the use of collective wisdom success. The whole team is a machine that only can each of the normal operation of gear in order to produce quality products.
Reasonable staffing is the successful completion of software development projects to ensure effective. The so-called reasonable staffing should include a timely manner at different stages by the use of personnel, appropriate personnel to master the standards. In general, software projects at different stages of technical personnel at different levels of participation is not the same. Such as improper staffing, is likely to result in a waste of human resources and project delays. In particular the use of constant staffing program at the beginning of the project and the final will have a surplus of manpower, and will appear in the medium-term shortage of manpower.
For developers to create an environment to make the best use is an important part of the success of the project, so that they can give full play to their own handy talent, particularly in the organization of the work to elaborate on, for each different strengths, according to project specific environment and conditions to a reasonable arrangements for staff in appropriate positions.
Project leader is the core of a team, and its direct impact on the overall quality of the success or failure of projects. Qualified project manager with excellent leadership and a strong awareness of science and technology and strong business capacity; with keen insight to target and seeking truth from facts, well-organized, determined, resourceful and flexibility to enjoy credibility; good plan , problem solving, communication of information; with good market awareness and communicative competence. At the same time, of course, more difficult to meet these conditions, but he should have the conditions for the realization of these qualities and focus on the accumulation of experience, quality, ability. And from the following areas and develop their own stringent requirements:
Set an example: Only take the lead and leading by example can be recognized by the majority of developers and trust in order to establish a higher prestige.
Decisive choice: the importance of responsible decision-making tasks, especially those with a wide range of choices, a correct choice is often more effective.
Be good at communication: He must be a positive external contact, make full use of external resources, for example, has done similar projects in other sectors, and can even learn from them direct access to source code. This is a project to gain time and avoid duplication of work is very important.
Good coordination: coordination of the work of more than a few people to complete their section of code is even more important. As a result of poor coordination, will have an impact on development. Therefore, in addition to the completion of the project person in charge of programming their own tasks, must be ready to monitor the work of the developers, including the content and requirements to deviate, and so progress is lagging.
Good plan: in the development before the development of a clear mandate to the adoption of a document passed to each developer, so that everyone is familiar with the design model, are clearly the work of their own throughout the system at any position, this may sometimes design model found loopholes to avoid all of the code after the preparation but also the consequences of changes.
Communication problems: team communication is not a technical matter, but it is one of the most able to influence the work efficiency. Timely communication between the collective wisdom and concerted in order to win.
Second, strictly enforce the norms of software development
Software development the need for strict implementation of norms in accordance with the software. Hand-like approach to the workshop , The result is bound to fail. From the project's user needs analysis, system analysis, coding, debugging, testing, release will need to complete step by step, can not be taken lightly or ignore any one of the steps. Did not complete the first part, and not rashly to the next step. The more projects the initial stage, more attention should be paid in accordance with the norms.
As mentioned earlier, because of the smaller software development projects, it is easy to overlook the standardization, and arbitrary, has no such plans, what do think of what the ultimate result is out of control. In fact, the project small standardized management software is a good time, small-scale, involving the management of the limited management easier to implement. Standards such as CMM can not be easy to achieve, but it can learn from the ideas and methods, first in small projects to achieve standardization of management, staff training and awareness of the norms, the realization of large projects for the future of the CMM, such as norms and lay a good foundation.
Attention to the special needs of document management software development. The idea that as long as the products can run out, so why spend the energy to do many of the views of the document is wrong. After practice, I have realized that there is no document will bring a lot of problems. Use the document to guide the development process, want to abandon the development model. Factory workers as the production of master drawings in accordance with the same parts, or is likely to be defective or even scrap, the developer was no point in leaving a pile of "junk" products. I think the document should be developed in stages (mileStone) marks the end of each stage, are required to submit the appropriate documentation, and to ensure that the quality of the document.
To ensure that the quality of documentation is the most effective way to review documents submitted, the project staff person in charge of the organization to review documents in the full discussion document on the basis of the re-modification and review until the meet the project's requirements. Document should be the main line runs through the whole process, at various stages, the need to continuously improve on the document to make it truly become a project staff of all wisdom.
Third, attach importance to the test
Software development test is easy to overlook the problems, many people believe that the main task is the development of coding, this is not the case, in the absence of strict implementation of development activities in the development process, testing may be the only way to ensure software quality methods and tools. The more loose items and take more test activities, it has not fixed the test organization, and there was no cross-testing between programmers, but also not considered a valid test processes and methods, the quality of their software programmers based on the ability the basis of trust, which is very Of.
Test the quality of software products for testing and evaluation. Check it on the one hand, the existence of software quality issues, product quality at the same time an objective evaluation. We generally found the error bug (also known as the shortcomings of our defect) is divided into four categories according to the severity: crash (system crash or hang), fatal (system instability, or destruction of data, or an error results, but also operation of conventional and non-conventional operations often inevitable), severe (system performance or slow response time, intermediate results of error but does not affect the final outcome, such as: do not display correctly but the correct output), general (spelling interface user error or inconvenient).
We also found an error by priority divided into three types: high, medium and low. Is generally a mistake for users to accept or use the greater the impact of the higher its priority.
To complete the rigorous testing, it is necessary to establish a standardized system testing process, there are staff responsible for the implementation of, and to actively cooperate with developers, testers do not think for himself in trouble, looking for testers, programmers can not be wrong may be found错误.
Testing process in general should be:
1, the project team to submit applications for system testing to testing centers designated account. Documents by hand to check the format and completeness.
2, after passing inspection of the product corresponds to the direction of the researchers, to evaluate its validity and authenticity of the content.
3, after passing the examination from the testing director of the Center for review and adoption, the establishment of the test group, designated the test head (which can have no members).
4, the test head of the application in accordance with the report of the product, test design and test data used to develop the test program.
5, test director of the Center for Audit program to pass the test after the test program in accordance with the specified group by the support group to support the completion of other tasks (such as: equipment equipment, testing database, Permission to amend ... ...).
6, the test group during the testing program carried out in accordance with the actual test to test, record and track defects in the test report, fill in the test record. Test head of the project group (test managers) to communicate regularly and to obtain updated versions of products. At the same time, the test head of the review, modify and submit all bug reports, and ensure the quality of the product at any time to master the situation and monitoring the progress of the test.
7, the product has reached a certain stage (marked by deficiencies in the report of the test report of all the library archives in the state), and tested by the project team decided to head co-products to enter the testing phase. Stable version before the beta version must be marked in a prominent position for the beta version of the word.
8, stability tests of the defects found during the report also need to record defects in the test report of the Treasury, and in a stable period after the end of the two parties (sometimes there may be the views of the market) have jointly decided on the treatment of these defects. If you need to change products, the stability period to start, or else through the stability tests.
9, the test head through the stability tests for the product to complete a comprehensive test reports, testing centers and so the release of the product release notification.
10, the test group for the entire testing process and product quality to sum up and evaluation, documentation and registration form. At the same time, the course will be tested on the test design changes into the baseline (which is already vetted and approved through a formal resumption of a statute or products is a milestone in software development). Finally, the head of the finishing and preservation of at designated sites and associated test data and test sample.
11, the dissolution of the test group testing centers.
In addition, the system testing phase, we ask the group to test the contents of some conventional tests (such as: Y2K testing, HIV testing, bare-metal test, encryption checks, manual checks ... ...), and asked to write test programs.
Testing should be in the real environment. The so-called reality is that the user actually used the same or similar environment, as development environment and users have very different environment, and development of products to the ultimate goal is to users. If there is no way to simulate the user environment, the programmer may have to develop their own simulation program to simulate the actual situation. In particular with projects and hardware, as hardware debugging procedures might not be fully completed, and you have to develop procedures for hardware simulation, otherwise the development may not be able to guarantee progress.
Fourth, time control
Developers are most worried about, "have repeatedly urged the leadership to the system dragged on the date of filing," people are totally unable to deal with the project leader, at a loss. Development activities as a black box, funds went into, go into the staff, and equipment resources to go into, but do not know when the results will come out, but not sure whether it is out of something users want. In order to avoid the human, material and financial resources to waste, it is necessary to do a good job in project planning, effective time control.
Software project management process began in the project plan, project plan to do when the event is the first estimate. Now the technology is the use of time and workload estimates. Because the estimates of other items are the cornerstone of the planned activities and projects for the software engineering process provides the direction, we can not proceed with the development plan, or else errors will be caught.
Software projects is mainly on account of the progress of arrangements for the delivery of software users development time of this arrangement. The accuracy of the schedule than the accuracy of cost estimates is even more important. Software products can rely on re-pricing by a large number of sales or to meet increasing costs, but nothing of the progress of arrangements will lead to the loss of market opportunities or are not satisfied with the user, but also lead to increased costs. Therefore, in consideration when scheduling the workload of staff to spend time with the link and reasonable distribution of workload, scheduling and effective use of analytical methods to monitor closely the progress of software development in order to make the progress of software development will not be delayed.
Progress in making arrangements to be considered a major problem is the issue of parallel tasks. When the number of people involved in the project more than one person, the software development work will appear in parallel circumstances. Because the parallel task is to occur at the same time, so the progress of the task schedule has to decide between the affiliation with the mandate to establish the convergence of the sequence and identify all the duration of the tasks. It should also pay attention to the task of the critical path, so that arrangements can be identified in the progress to ensure that the focus should be. Scheduling methods commonly used, there are two, namely, Gantt (Gantt Chart) and the project network.
Project in order to count how to do a good job, also for different views, I have the success of the project is defined as, "win-win-win" projects, is to be truly successful projects. Win-win-win, including customer satisfaction; company satisfaction; staff satisfaction with the project participants.
For customer service, so customer satisfaction: the user refers to the provision of funds and, ultimately, the use of project results to all staff, the project development process and the final results, so that authorized users, use, and allows users said yes. This is a win.
Satisfied with the company: project development to permit a quantitative and qualitative completed on time and projects the company has accumulated experience, knowledge reserves, including projects, personnel, technology, market and other reserves. This is the second win.
Participants satisfied with the project: to allow developers to focus in the project to carry out its mandate from interference from outside the project. Normal completion of outstanding projects, the developer itself is a tremendous encouragement. To let them know that their equipment suppliers, software usage, so that the success of the project's success as a supplier for the next lay the foundation for better cooperation.
Responsible for the development of early, need to accumulate experience, I am writing this article aims to initiate and to working together for our project will be more perfect. Welcome all advice.
References:
"Software engineering - the practice of the research methods designtimesp = 17942 designtimesp = 19508 designtimesp = 19680 designtimesp = 20384 designtimesp = 8071 designtimesp = 8102 designtimesp = 8145" RogerS.Pressman
"Project Management Body of Knowledge Guide designtimesp = 17944 designtimesp = 19510 designtimesp = 19682 designtimesp = 20386 designtimesp = 8073 designtimesp = 8104 designtimesp = 8147" Project Management Association of the United States







