Software Project Development
-- Management Measures
Recently, my boss asked me to set up a software project team's management measures, and collected various materials and experience to draw the following knowledge:
After a software product is released and used, there must be many unsatisfactory and worthy of improvement. During the use process, customers will find some problems, put forward higher requirements, and the market is also changing. Our competitors are also developing, and new technologies are constantly emerging, these factors drive the continuous development of our products, so that the software version continues to grow. These development demands were not raised at once. During the customer's use process, they found some unsatisfactory and inconvenient places, and they would give us valuable comments, the technical staff will record these requirements to modify or become new features or requirements of the next version.
The development of a software is mainly divided into several important stages: Demand, design, coding, testing, and maintenance. The following describes some management measures for each stage:
1.Demand management
Before entering formal development, you must obtain accurate requirements from users. It is necessary to spend a considerable amount of time on this. In the process of software project development, demand changes throughout the entire life cycle of the software project, from the software project establishment, research and development, maintenance, user experience is increasing, the changes in the feeling of using software and the new developments in the entire industry have brought the software to constantly improve functions, optimize performance, and improve user friendliness. In the software project management process, the project manager often changes user requirements. If these demand changes cannot be effectively handled, the project plan will be adjusted repeatedly, the Software Delivery date will be delayed, and the morale of the Project R & D personnel will decrease, this will directly increase project costs, decrease quality, and decrease the project delivery date. This determines that the project team must have a requirement management policy.
It is unlikely that user requirements remain unchanged throughout the development cycle, because users have no mature experience in how to apply computer software. There are many reasons for demand changes, such:
There was no comprehensive research at the beginning, and more needs were required;
The customer's requirements have changed, and the requirements must be changed;
Requirement error;
The requirement is unclear.
Based on the above problems, requirements must be managed so that they can truly become baselines of software engineering and management. A wise way is to link the changes in user requirements with economic benefits when a development contract (agreement) is signed. If the user increases or changes the demand, the Software Delivery date can be postponed and the cost should also be increased.
Requirements are a complex task, and many methods are used. Different development methods have different methods. Here we will briefly introduce some related methods:
Feasibility analysis: the feasibility of implementation of each requirement is analyzed under the allowable cost and performance requirements, and risks related to implementation of the requirement are proposed, including conflicts with other requirements, reliance on external factors and technical barriers.
Quick prototype: when users have unclear requirements, we can build a system prototype to better understand the problems to be solved by evaluating the prototype.
Graphic analysis model: drawing a graphic analysis model is an important means to describe the specification of software requirements. They help analysts clarify data, business models, workflows, and relationships between them, and identify missing, redundant, and inconsistent requirements. Such a model includes a data flow diagram, an object diagram, a State Transformation Diagram, a dialog box diagram, an object class diagram, and an interaction diagram.
Data Dictionary: a data dictionary defines all data items and structures used by the system to ensure that developers use a unified data definition. In the demand phase, the data dictionary should at least define customer data items to ensure that the customer and the development team use consistent definitions and terms.
2.Design Management
The Project Manager allocates the function modules to each developer. Each developer collects their own function modules and estimates the time, this mainly includes the document writing time, development time, and unit test time. Generally, it must be accurate to the working day. The information is returned to the project manager. The project manager then sends the tasks and estimated time of the team members to the management, which evaluates and reviews the tasks and progress, the Management will make a selection based on the product release time, customer requirements, market factors, and other factors. Some features may be postponed to the next version due to the urgent time. If the estimated time conflicts with the expected product release time, and this function is required in the current version, the development team will be asked to re-estimate the time, accelerate development to meet this requirement.
Although the development progress time is an approximate estimated time, we should try our best to follow the development progress. A developer writes a weekly record every week to describe the work he has done this week. Based on his/her description, he evaluates his/her work and determines whether the work he/she is working on follows the schedule, whether someone has delayed or delayed others' work. In the weekly notes, everyone must report their progress and what they did last week, what they are doing, and what they plan to do next week. This weekly record will make you feel that someone is monitoring you, and force you to constantly urge yourself not to delay your task. If there are signs of delay, you will also find and catch up as soon as possible. If some efforts fail to catch up, there is no way to modify the original schedule, because our estimation is different from the reality, and we must make our schedule conform to the actual situation.
3.Coding Management
After entering the coding work, you may find some errors in the previous analysis or design phase. In this case, you should return to the previous stage for necessary modifications. Because we use the Asp.net (C #) language for development, we use the vs2005 tool. For the code style, we basically use the automatic code format Orchestration in vs2005. Good coding habits help us improve the development efficiency of the entire group, such as naming variables and providing detailed comments and instructions on classes and functions during code writing, you can understand the functions of this variable, class, or function and the implementation principles of the main algorithms. In the development process, unit tests should be written for the main modules, and unit tests should be conducted first. When all unit test code passes, this function is basically complete.
We use VSS for code management control, which stores all the source code of this product, and each part is stored in different directories. Every morning, developers are required to obtain the latest source code from VSS, compile and start the day's work. In theory, employees are required to check in all the code modified on the current day before getting off work. Make sure that the compilation is successful before checking in. Some punitive actions or warnings are required if the code that is checked in causes the operation to fail. Sometimes the code we write involves multiple files, and this change is complicated and takes many days to complete. If you check in now, the project test may fail, because some code is not completely complete, and the previous code can pass the test, and the code basically does not involve others, in this case, you can not check in, it is checked in together until all the code is complete and can be submitted for testing.
Our development is network-based. Today, with the rapid development of the Internet, code security is also a problem that cannot be ignored. We should pay attention to code leakage and loss, in addition to some basic security knowledge, you must back up the code (local area network backup and storage device backup) so that the normal operation of the system can be restored in time in case of an accident.
4.Test Management
After the developer completes the function module, the tester starts the test plan to determine what needs to be tested and how to test and schedule it. Testers need to write many test cases, test reports, etc. Some test codes need to be integrated for testing, and some may need to perform separate tests to ensure that the product meets the requirements, this makes it easy for developers to locate and correct the problem. Whether the product functions meet the requirements and whether the product can be released is determined by the testers. Therefore, the testers are also hard-working and have great responsibilities. After passing the daily test, some performance tests, compatibility tests, and disaster tests need to be carried out before the product is released. After these tests are completed, the tester determines whether the product can be released.
Because we perform tests every day, bugs are often detected by testers. Once a new bug is detected, it is added to the test report, indicating the degree of urgency, this allows developers to modify error bugs in a timely manner. It should be pointed out that we have a wide range of definitions of bugs, and some new features can also be proposed as bugs, but these bugs are relatively low, so that they can be implemented in the next version. Therefore, the creator of a bug can also be a technical support staff, marketing staff, or even developers themselves. The developer may find some bugs, some of which are from other developers, and some may be from the developer, adding this bug to the test report can help developers learn from each other in the future when new problems or similar bugs occur.
5.Maintenance Management
Later software maintenance and management is also a very important task. Regular upgrade services and training will give customers a good image of the software.
6.Organization (Team) Management
In the software project development process, we focus on the team spirit. Our goal is a simple combination of software, system, and not several modules. In software development management, there must be a way to motivate people to limit developers' inner motivation, the best way to motivate people is to closely combine effort and income. The main focus of team spirit is trust and respect. What is the so-called "using people without doubts"? If there is no basic respect and trust, where is the cohesion? What is team spirit?
Software Project developers should adhere to the principle of attitude first and efficiency first in their daily work and life, the rest and adequate sleep of the brain can ensure a good mentality and energy for developers. Perhaps in the IT industry, overtime for programmers has become a good saying and a common practice. However, we must stop long-term overtime and inefficient overtime, when the project is not tight or there is no project, you can relax and take a rest to adjust your mood and energy.
As software developers spend most of their time in the company, the company's life has become a major component of everyone. The relationship between employees is harmonious, and communication is very important. At the same time, everyone does not want their own life to be boring and has been dealing with machines. Communication is everywhere and communication occurs at any time. Many relationships are established outside of work. Software companies are prone to various conflicts, because they are determined by the nature of your work. For example, when testers or users are dissatisfied with your implementation and make various requirements, I believe that you may complain sometimes, and there is a confrontation in the invisible, which will lead to resistance in the future. I believe most people will feel this way. This is not your fault. It is mainly determined by the nature of our work. If your job is to bring wealth to the other party, the other party will welcome you and treat you as a god of wealth. The relationship with you will be very harmonious and friendly. Therefore, we need to eliminate such conflicts outside of work and establish a harmonious working atmosphere. When we eat at ordinary times, we chat and communicate with each other at the dinner table, telling humorous jokes and other things, and adding a relaxed atmosphere to our intense work. You can organize activities to increase the company's cohesion. After a product is released, an activity is organized to relax and better meet the next challenge.
Every member of the team will develop the habit of writing blogs. I often write blogs. One is to let everyone know what they are doing, and the other is to make it easy to write the final work summary at the end of the project (many of my work was forgotten at the time ), third, it is conducive to improving your own level (the summary and induction ideas of work and study points will be systematically summarized and summarized, and the progress will be fast ).
Attachment:
1. c000000000000.doc
2. Individual weekly .doc
3. Project Team weekly report .doc
4. Project Summary Report .doc
5. Test file. xls
Project attachment download