Software development management experience has made some projects from graduation, and there are many successful joy, there are many lessons that fail. Due to the work needs this year, I participated in the entire process of the access network unified network management system as the identity of the software project. From the secondary school, there are many knowledge, there are many experiences, I want to write my feelings and share with you. Software Project Management is a huge and complex system engineering. The current industry has many specification and definitions for software development processes, such as CMM and ISO9000. Under the management of the management system, high quality software products can be developed. However, due to the team development of the system than a large and complex project, the truly implementation of the time and process. And our current project, usually only 10 people, to implement a software engineering difficulty. I think: Although the project size is different, the management method is in communication. To do software development, it is necessary to strengthen effective management. Everyone knows that the "software crisis" originated from the continuous delay of large projects or even failed. Compared with large projects, small projects have the following features: · Project features are relatively small; · There are fewer developers; and shortage development cycle. Small projects seem simpler, easier to succeed, people tend to neglect the management of small projects, in fact, this is a misunderstanding. As far as I know, the following problems are prone to the development of small projects :: 1, there is no estimate of project feasibility and workload before development. Due to the smaller items, it will develop a developing schedule, not seriously estimated the difficulty of the project, and the actual completion time and estimation completion time often have a large gap. 2, there is no real design process. There are fewer developers, and the interface between the procedures, the interface is relatively small. The development cycle is often a few people responsible for a project from the head to the end. Several people touch the head, discuss the most basic data structure, the function interface is separated, there is no more formal document to regulate the respective responsibilities And project details. One of this practice is that some people may have deviations to the interfaces and structures discussed, which may result in future rework. Another potential danger is to ignore some cases due to discussion, and after all of them complete the division of labor on time, it is found that each module is combined but cannot form a complete system. Its root is that there is no one responsible for the coordinated person to monitor the entire development process. The third potential danger is that once someone quits the development team, others are difficult to understand the code for the previous people, but also start from the head. In addition, there is no documentation, and it is difficult to maintain and version upgrades in the future. 3, do not pass the unit test and directly enter the system test. The reason for this phenomenon is that each module is relatively simple, but in order to test a module, some test environments are required. For example, in order to test if a function is correct, you should use some test data to call the function, you need to write some test data. But many developers are suspected, thinking that other modules are also very fast, and they will run several times with real data. For the above problems, I think there must be four key issues in the development process, strictly control, and can greatly improve the quality of the software. These four key issues are: personnel, standard, test, time control.
First, reasonable configuration personnel
First, software development is a long-term hard work, so a unity and collaborative group can complete a quality of software projects in the specified time. Everyone in the team must be actively integrated into the entire collective. It cannot be pushed to each other. It is even more complained and accused. The correct attitude is that everyone is united on the basis of full trust, helping each other, take the initiative to use the collective wisdom. success. The entire team is a machine, only every gear can work properly, in order to produce high quality products. Reasonable equipment is a practical guarantee that successfully completed software development projects. The so-called reasonable equipped person should include the use of personnel at different stages, properly grasp the standard standard. In general, the participation of different levels of technical personnel in software projects is different. Figure 1 is a typical software developer participation situation and the difference between actual personnel demand. If the person is configured, it is easy to cause waste of human resources and delay the period of time. In particular, when using a constant personnel to equip, there will be more human and last in the beginning of the project, and in the medium term, there will be inadequate manpower. It is also an important part of the success of the project. It is an important part of the project's success. Let them be able to make their own talents, especially in the work arrangement, and for everyone's different specialties, according to the specific environment and conditions of the project. Arrange the person in the right position. The project leader is the core of a team, its overall quality directly affects the success or failure of the project. Qualified project leader has superb leadership talents and strong scientific and technological awareness and strong business processing skills; how keen insight, can target the goal, seeking truth from facts, carefully organizing, decisive, flexible, enjoys reputation; , Solve problems, communicate information; have good market awareness and communication skills. Of course, it is more difficult to meet these conditions, but he should have the conditions of achieving these qualities, and pay attention to the accumulation of experience, the improvement of quality, and the ability to cultivate the ability. And strict requirements and cultivate yourself from the following aspects: as a lead: Only the first-year-old pawn, all aspects can lead to the recognition and trust of the majority of developers to establish a high prestige. Decisive choice: The important task of the person in charge is the decision, especially if there are many options, a correct choice is half-mexion. Good at communication: He must actively contact, make full use of external resources, such as other departments have made similar projects, can take them through the source code directly. This is important to try time for a project to avoid duplication. Good at coordination: Coordination of several people more important than completing a coding of yourself. Due to the uniform coordination, it will affect the development. Therefore, in addition to completing its own programming tasks, the person in charge must monitor the work of each developer, including whether the content is deviated, and whether the progress is lagging. Be good at formulation: Before the development, the clear development task can be passed to each developer through documentation, so that everyone is familiar with the design model, knowing what they do in the system, so sometimes maybe Discover the vulnerabilities in the design model to avoid the consequences of modifying the code after each person's code is completed. Communication Problem: Team Communication is not technical issues, but it is a problem that best affects work efficiency. Communication is timely, brainstorming, and the walk is consistent. Second, strict implementation of software development specification software development needs to be implemented in accordance with software specifications. Develop software in hand workshop, the result will inevitably fail. From the user's needs analysis, system analysis, encoding, debugging, testing, issues in one step in one step, can not be underestimated or ignored. The front part is not completed, do not rank the next step. The more the project starting stage, the more you pay attention to the specification.
As mentioned earlier, because the development software project is small, it is easy to ignore normalization, and as you want, there is no plan, what to do, the final result is to lose control. In fact, the project is a small time to achieve software standardization management, small scale, limited management, and it is easier to manage. CMM and other standard standards are not easy to implement, but can learn from its ideology and methods, first realize standardized management, cultivate personnel, and aware of the standardization and consciousness of the implementation of the CMM of the major project. Especially need to pay attention to document management in software development. That thinks that as long as the product can be run, however, how much effort to do documents is wrong. After practical, I deeply realize that there is no document that will bring a lot of problems. Use documents to guide the development process to abandon the development model you want to. As the factory worker master is the same as the drawings production parts, it is likely that it will receive a defective or even waste, and a bunch of "garbage" products that have been left a bunch of developers. I think the document should be the logo ended in the Milestone. After each stage, you need to submit the appropriate document and ensure the quality of the document. The most effective way to ensure that the quality of document is to review, after submission of documents, the project leader organizes relevant personnel to review the document, and the re-revision and review of documents on the basis of fully discussed until the project requirements are met. The document should be the main line throughout the process. At different stages, it is necessary to keep the document to improve the document, so that it is a wisdom crystallization of all project staff. Third, pay attention to the test
Test is an issue where software development is easy to neglect. Many people believe that the main job of development is encoding. In fact, in the development activities without strict implementation of development processes, testing may be unique to ensure software quality methods and means. The more relieved the test activity, and it has no fixed test organization, and there is no cross-test between the programmer. It has not considered effective testing processes and methods, and their software quality is completely established in programmer capabilities. On the basis of trust, this is unsafe. Test is the inspection and evaluation of software product quality. On the one hand, check the quality problems in the software, and objectively evaluate product quality. We generally divide the wrong bugs (we also refer to the defect Defect) to divide four categories: crash (system crash or hang), fatal (make the system unstable, or destroy data, or generate error results, but also Regular operations often or unregulated in the operation), severe (system performance or response time is slow, generating erroneous intermediate results but does not affect the final result, such as displaying is not correct but output correct), general (interface spelling Error or user use is inconvenient). We also divide the discovered mistakes into three types: high, medium, low. Generally, a mistake is accepted or used by the user, the higher the priority. To complete strict testing, you must establish a standard system test process. There is a special person responsible for execution, and developers should actively cooperate. Don't think that testers are giving them trouble, testers find mistakes may not be discovered. error. The general test process should be: 1. The project group submits the system test application to the test center specified account. Check the document format and completeness by special people. 2. Check the researcher to give the product corresponding to the corresponding direction of the product to evaluate the effectiveness and authenticity of its content. 3. After the examination is passed, the test center is reviewed and passed, sets the test group, and specifies the test team leader (there is no group member for the time being). 4. The test team leader according to the application report, test design and past test data, and formulates the test plan. 5. After the test center, the test center is reviewed by the test plan, according to the test plan, specify the test group member, and completes other support tasks (such as: equipment equipment, test database establishment, modification of network privileges ...). 6. Test group during testing, performs actual testing, records and tracks test defects, and fills in test records according to the test plan. The test team leader is often communicated with the project group (test manager) and obtains a newer version of the product. At the same time, test the team leader review, modify and submit all defect reports, and ensure that the quality of the product is always grasped, and supervise the test progress. 7. After the product is processed, the logo is all reports in the test defect report in archived state), and the project team and test team leader determines that the product enters stabilization test. The version of the stabilization test version must be indicated as the test version of the test version in a prominent location. 8. The defect reports found during the stable test period also need to record in the test defect report library, and will jointly decide the processing of these defects after the end of the stable period (sometimes there may also have market opinions). If you need to change the product, then start the stability period, otherwise it is tested by stabilization. 9. The test team leader fill in the comprehensive test report by the product of the stabilization period, and the test center will release the product release notice. 10. Test group summarizes and evaluates the entire test process and product quality, forming a document and files. At the same time, the change in the test design during the test is incorporated into the baseline (it has been approved by the official review, which is a milestone in software development). Finally, the group leads and saves the relevant test data and test samples in the specified location. 11. The test center dispersion test team. In addition, in the system testing phase, we require test team to conduct some regular content tests (such as Y2K testing, viral check, bare metal test, encryption check, manual check ...), and require write to the test scheme. Test should be carried out in a realistic environment. The so-called real environment is the same or similar to the environment actually used by the user, because the development environment and user use environment have great differences, and the development of the product is ultimately to be used to the user.
If there is no way to simulate the user environment, the programmer may have to develop some analog programs to simulate the real environment. Especially with hardware projects, hardware may not completely complete during program debugging, then the simulated hardware program is required, otherwise the progress of development may not be guaranteed. Fourth, time control
Developers are most worried about "Leaders continue to urge," can be submitted to the date and then drag ", the project leader will fight for this, and the hands are no. Development activities are like a black box, the funds are thrown in, and the person throws it, and the equipment resources are thrown in, but I don't know when it comes out, and there is no need to grasp whether the thing is what users want. In order to avoid human, material, financial waste, to do a good job in project plans, and conduct effective time control. The software project management process begins in the project plan, and the first activity is estimated when doing project plans. The technology that has been used is now estimated for time and workload. Because it is estimated to be the cornerstone of other project plan activities, and the project plan provides a working direction for the software engineering process, we can't set up, otherwise it will fall into the misunderstanding. The progress arrangement of the software project is mainly to consider the arrangement of this section of this section to deliver users. The accuracy of schedules may be more important than the accuracy of cost estimation. Software products can rely on re-pricing or relying on a large number of sales to make up for the increase in cost, but the evolution of progress arrangements will lead to loss of market opportunities or unsatisfactory users, and will also lead to increased costs. Therefore, when considering the progress schedule, the workload of the personnel will be linked, and the workload is reasonably allocated, and the effective analysis method of progress schedule is used to strictly monitor the progress of software development, so that the progress of software development is not delayed. One of the main issues to consider when making schedules is the parallelity of the task. When the number of people participating in the project is more than one person, the software development work will appear parallel. Because the parallel task is at the same time, the progress schedule must determine the dependence between tasks, determine the order and connection of each task, and determine the duration of each task. In addition, you should pay attention to the task of critical paths, which can be determined in the focus of the progress schedule. There are two commonly used schedule methods, namely Gantt Chart, and Engineering Network Law. How can the project be done well, and it is also an idea that I have a definition of the project as a "three win" project, the project is really successful. Three winners include, customer satisfaction; company satisfaction; project participants are satisfied. Serving the user, let the user satisfied: the user refers to all personnel, the project's development process and the final result of the project, let the user approve, use, and let the user say good. This is a win. Let the company satisfied: Project development should be completed on time, and accumulate project experience, knowledge reserves, including projects, talents, technology, and markets for the company. This is a win-win situation. Let project participants are satisfied: let developers focus on the project to disturb the factors outside of the project. Normal, excellently completed the project, which is also a huge encouragement for the developers itself. Also let suppliers know their equipment and software usage, so that the success of the project has become the success of the supplier, and lay the foundation for the next better cooperation. At the beginning of the development, it is necessary to constantly accumulate experience. I wrote this article to throw the jade, fight for everyone to do our project more perfect. Welcome all the advice.
Reference: << Software Engineering - Practitioner Research >> Rogers.Pressman << Project Management Knowledge System Guide >> US Project Management Association