Introduction: Let relevant personnel learn about the management process of software projects. The following is a software project management process that I have collected for your reading and reference.
1. Risk Assessment
Software project risk refers to the cost budget, development progress, technical difficulty, economic feasibility, safety management and other aspects involved in the entire project cycle. problems and their impact on the project. The risk of a project is inversely proportional to its feasibility. The higher the feasibility, the lower the risk. The feasibility of a software project is divided into four aspects: economic feasibility, business feasibility, technical feasibility, and legal feasibility. Software project risks are divided into six aspects: product scale risk, need risk, correlation risk, management risk, and security risk:
1. ?Product scale risk
Risk is directly proportional to the scale of the product. Generally, the larger the scale of the product, the more prominent the problems will be. In particular, factors such as the method of estimating product size, the amount of reused software, and the amount of demand changes are closely related to product risk:
(1)? Method of estimating product scale
(2 )? Confidence in product size estimates
(3) Deviation of product size from the average of previous product sizes
(4) Number of users of the product
(5) ? How much software is reused
(6) ? How much product requirements change
2. ? Requirement risk
Many projects are determining requirements We are always facing some uncertainties. When these uncertainties are tolerated early in the project and are not resolved as the project progresses, these problems will pose a great threat to the success of the project. If risk factors associated with requirements are not controlled, there is a high risk of producing the wrong product or of poorly building the intended product. Each situation may be fatal to the product. These risk factors are:
(1) Lack of clear understanding of the product
(2) Demand for the product Lack of recognition
(3) ?Insufficient customer participation in the demand analysis process
(4) ?No priority demand
(5) ?Due to uncertainty The needs lead to new markets
(6) ?Continuously changing demands
(7) ?Lack of effective demand change management process
(8) ?Correct Changes in requirements lack relevant analysis, etc.
3. Relevance risks
Many risks are caused by the correlation of the external environment or factors of the project. To control externally related risks, mitigation strategies should include possible plans to obtain necessary components from secondary resources or collaborative work resources and to detect potential problems. Factors related to the external environment include:
(1) Customer supplied items or information
(2) Interacting members or intergroup dependencies
(3) Internal or external subcontractor relationships
(4) ?Availability of experienced personnel
(5) ?Reusability of projects
4. ?Technical risks
The rapid development of software technology and the lack of experienced employees mean that project teams may affect the success of the project due to technical reasons. Early on, identifying risks and taking appropriate preventive measures is key to addressing risk areas, such as training, hiring consultants, and recruiting the right talent for the project team.
There are mainly the following risk factors regarding technology:
(1) ?Lack of training
(2) ?Insufficient understanding of methods, tools and technologies
( 3) ?Insufficient experience in the application field
(4) ?Unfamiliar with the application of new technologies and development methods
5. ?Manage risks
Although management Problems limit the success of many projects, but don't be surprised that not all management activities are included in the risk management plan. In most projects, the project manager is often the one who writes the project risk management plan. They have a congenital deficiency - they cannot detect their own mistakes. Thus, making project success more difficult. If these difficult issues are not addressed squarely, they are likely to affect the project itself at some stage during the project. When we define the project tracking process and clarify project roles and responsibilities, we can deal with these risk factors:
(1) ? Insufficient plan and task definition
(2) ? Right Not understanding the actual project status
(3) ?Cannot distinguish between project owners and decision-makers
(4) ?Unrealistic promises
(5 ) ?Inability to fully communicate with employees
6. ?Security risks
The software product itself is a creative product, and it is very important to keep the core technology of the product itself confidential. However, our security awareness in software has always been relatively weak. The development of software products mainly focuses on the technology itself, while ignoring the protection of patents. The flow of technical personnel in the software industry is a very common phenomenon. With the loss and change of technical personnel, it is likely to lead to the leakage of products and new technologies, causing our software products to be stolen by other companies, leading to project failure. Moreover, there is currently no clear industry standard for the identification of intellectual property rights in software, which is also a potential risk for our software projects.
7. ?Methods to avoid risks
(1) ?Inducing the developer can ensure the integrity of the demand and make the demand highly consistent with the customer's real expectations. Then form the important document "User Requirements" in writing to avoid the losses caused by omissions from being gradually amplified in the subsequent stages of the software system.
(2) Establish a supervision system. Any larger decisions in project development must be made with the participation of the customer. In this project, project supervision is implemented by the quality supervision group during project development.
(3) ? Requirement changes need to be proposed by the unified person in charge and approved by the review leader of user needs. Requirement changes should be proposed regularly rather than at any time, and the developer should keep detailed records , let customers understand the actual situation of demand changes.
(4) ?The complexity of the control system and an overly simple system structure will have a significant discount on the user's usage ratio, and even cause the software life to be too short. On the contrary, if the software structure is too flexible and versatile, it will inevitably increase the difficulty of software implementation and increase the complexity of the system, which in turn will bring risks during the implementation and testing phases. Appropriate control of system complexity helps reduce development risks.
(5) From a software engineering perspective, software maintenance costs account for approximately 55-70% of the total cost. The larger the system, the higher the cost. Disregard for system maintainability is the biggest risk for large software systems. During the long operation period of the software, business rules will definitely continue to evolve. The scientific way to solve this problem is to continuously upgrade the software system and gradually expand the system while ensuring maintainability.
(6) ? Set up a contingency plan. Each development plan should set up at least one contingency plan to deal with emergencies and unpredictable risks.
II. Cost Budget
1. Cost Budgeting Method
(1) Top-down Budgeting Method
From The top-down pre-planning method mainly makes judgments based on the management experience of upper-level and middle-level project managers, estimates the sub-project costs that constitute the overall cost of the project, and passes the results of these judgments and estimates to the lower-level managers. On this basis, managers at this level estimate the costs of the subtasks and subprojects that make up the project, and then continue to pass their cost estimates to the next level until they are passed to the lowest level.
Using this budget method, when the cost estimates made by upper-level managers based on their experience are decomposed to the lower levels, there may be situations where the lower-level personnel think that the upper-level estimates are not enough to complete the corresponding tasks. At this time, lower-level personnel may not necessarily express their true opinions, and may not necessarily have rational discussions with upper-level managers to arrive at a more reasonable budget allocation plan. In practice, they often can only wait silently for upper-level managers to discover problems and correct them on their own, which often brings many problems to the project.
Top-down is more suitable for the early stage of project startup, and the difference from the real cost is between 30 and 70.
Scrum uses a top-down cost budgeting method. It does not determine costs immediately and accurately, but to accommodate changes in customer requirements for future products to the greatest extent possible.
(2)? Bottom-up budgeting method
The bottom-up method requires the use of WBS (Work Breakdown Structure, work breakdown structure) to estimate the time of all work tasks of the project. Carefully review the budget. Initially, the budget is based on resources (work time of team members, configuration of hardware), and the project manager adds appropriate overhead costs (such as training costs, overhead costs, contingencies, etc.) and the project's goals to achieve. The profit target forms the total budget of the project. The bottom-up budgeting method requires a comprehensive consideration of all involved work tasks, and is more suitable for the early and mid-term stages of the project. It can accurately estimate the cost of the project, and the difference between the true cost and the true cost is between 5 and 10%.
Note: WBS
WBS is a decomposition of the project based on the submitted results. From the list of submitted results, the activities that need to be performed for each submitted result can be determined. Scrum will further refine the WBS, decompose an iteration into one or more work packages, and then decompose the work packages into small development tasks (the development cycle of general development tasks is within 15 working hours).
2. ?Determine project expenditures
The overall cost budget is the development cost calculated comprehensively by combining the following multiple cost budget methods:
(1) ?Zero base Budget
In the early stage of cost budgeting, the calculation principle of zero base should be used instead of using a rough method such as adding 20 to the overall cost of the previous year to calculate the project cost.
(2)?Software and hardware costs, item costs
Item costs refer to things like: server (RAM hard disk CPU NIC card RAID cluster) cost, maintenance cost, computer room rental, optical fiber Costs such as communication costs, software costs, etc.
When calculating the cost, you need to consider the length of time it takes to assemble the hard drive, the quality of the technical personnel required, whether the product supplier can provide quality assurance, and whether additional management personnel are needed for management.
(3) ?Software license cost
(4) ?Outsourcing cost
When used like: video, SMS, mobile telecommunications services, portal website When waiting for sub-projects, you can consider outsourcing to reduce development costs.
(5) ?Human resources cost
When calculating human resource costs, the average efficiency of the highest and lowest work efficiency should be estimated to calculate the average cost of human resources.
(6)? Repair and maintenance costs
3. Customer communication process
From the perspective of customer communication direction, software projects can be divided into: requirements There are four different stages: identification, plan customization, project implementation, and project completion. Each stage has different communication priorities.
1. ?Requirements identification stage
(1) ?Text communication
In the early stage of demand identification, it should be through questionnaires, prototype display, interface display, logic Conduct comprehensive and multi-angle analysis through processing display, standardized document templates, etc., and feed back any ambiguities to customers at any time in anticipation of customer answers. And create a needs analysis document in the form of text records, and require customers to review the needs analysis document to achieve results that are highly consistent with the needs analysis and the customer's true expectations.
(2) ?Business logic communication
When conducting business communication, you should understand the customer's industry language to facilitate the business analysis process and bridge the gap between application requirements and development . The communication process is advocated in the form of sketches or visual information, and the most suitable operation interface is provided for business users at different levels. Think about problems from multiple perspectives and focus on the key needs, especially the innovative and practical needs that customer leaders are concerned about.
(3) ?Standardized management of demand changes
Requirement changes are understandable in software development projects, but demand changes must be managed in a standardized manner to avoid occurrences The risk of endless changes in requirements. Requirement changes must be proposed by the unified person in charge and approved by the user requirements review leader. Requirement changes should be proposed regularly rather than at any time. The developer should keep detailed text records to let customers understand the actual situation of the demand change and the cost paid by the developer.
2. ?Proposal customization stage
The main task of the project at this stage is to work with the customer to formulate a plan based on clear needs, resources of both parties, and the start of the project. A feasible project plan based on the implementation time agreement, project cost limits, etc. From this stage, we strive to fully participate in the management of the project, and consider the specific plans and risk avoidance for project implementation in the mutual interests of both parties. .
3. ? Project implementation phase
In this phase, the software project team should lead the implementation of the project together with the customer. At the same time, the project team should evaluate customer satisfaction in real time and improve customer satisfaction through continuous improvement. Customers should also be required to participate in necessary training and inspect project products when necessary. Before a change in customer demand occurs, you should proactively communicate with the customer so that the customer fully understands every aspect of the project and the impact of the change, so as to reduce demand changes. If customer demand changes, we should work with the customer to resolve the cost, schedule, and quality changes caused by the change.
4. ?Ending phase
This phase mainly transfers the project results and delivers the system to maintenance personnel to help customers achieve business goals and settle various payments. After completing these tasks, a project evaluation should be conducted to review the results of the project and summarize the project experience.
5. ? Pre-sales personnel’s precautions
When product-type projects are used as development results, relevant sales personnel should pay attention: they should not over-promise when promoting products. If you over-promise, it will cause difficulties in subsequent project implementation; if the promise is not fulfilled, it will also reduce customer satisfaction and affect future cooperation. If there are additional commitments, they must be recorded in text form, let the implementation project manager know and communicate them to the project team members.
Note: In software projects, the following four customer roles need to be clarified
A. To clarify the end-use department and users, to understand their existing working methods, and to Let them know the goal framework of the project and know which of their difficulties the project will solve, but definitely not all of them, so that the scope of the project can be better controlled.
B. ? The person who proposes the demand must be clear, and he or they must be able to represent the final customer group. Such customers who propose product requirements must have certain technical, business capabilities and authority, and can truly represent the wishes and ideas of the final customer team. It is best to have an IT foundation and be able to describe problems and needs in IT language to facilitate communication between the two parties. Collaborate and avoid ambiguity.
C. ? It is necessary to identify the middle-level leader who is responsible for confirming the needs, and he must grasp the direction. Software development projects solve actual production or management problems, and are also the specific implementation of leadership system construction. Customer leaders who confirm requirements must not only understand the key points and directions of system construction by senior leaders, but also be familiar with specific business and production management practices. If it is such a customer leader who grasps and makes decisions, it will play a great role in the smooth progress of enterprise software development projects.
D. ? Make it clear who will comment on the finished product and who will accept it. The project acceptance link is the final step of the project. If the person who accepts the acceptance does not understand the initial demand objectives of the project, it will have a negative impact on the acceptance in terms of attitude and actual use of the product, and it will be very detrimental to the company that provides the product to close the project. According to practical summary, the project acceptance work is carried out by the demand proposer and confirmer, which can promote the smooth completion of the project and avoid delays.
IV. Requirements Analysis
1. The process of requirements analysis
The requirements process includes two parts: demand development and demand management:
(1) ?Requirement development is the management of the early stage of development. The communication process with guest rooms can be divided into four stages: requirement acquisition, requirement analysis, requirement writing and requirement verification.
(2) Requirements management: It is the activity of controlling and maintaining requirements agreements during the software project development process. Including: change control, version control, requirements tracking, requirements status tracking.
2. ?Level of requirements
The level of requirements includes four aspects: business requirements, user requirements, functional requirements, and non-functional requirements.
3. Key points in the requirements development stage
(1) Extract business objects
Business objects refer to real objects used by the system, such as a supply chain management (Supply Chain Management, referred to as SCM) business objects mainly include: production wholesalers, retailers, delivery providers, and customers at multiple levels.
(2) Extract business processes
In the process of understanding the business logic, the respective functions of the developed software modules should be listed, each work process should be detailed, and the business should be analyzed in depth. logic.
(3) ?Performance requirements
In the early stage of analysis, attention should be paid to the technical performance indicators of the developed software, such as storage capacity limits, running time limits, security and confidentiality, etc.
(4) ?Environmental requirements
Environmental requirements refer to the requirements of the environment in which the software platform runs, such as hardware: machine model, external equipment, data communication interface; software : System software, including operating systems, network software, and database management systems; aspects of use: What conditions the using department should have in terms of system and technical level of operators.
(5) Reliability requirements
The probability of failure of the developed software after it is put into operation should be based on the actual operating environment. For important software, or software whose operation failure will cause serious consequences, higher reliability requirements should be put forward.
(6) ?Security and confidentiality requirements
Proper provisions should be made in this regard during demand analysis, and special designs should be given to the developed software so that it can be used during operation. , its performance in terms of security and confidentiality is guaranteed to be necessary.
(7) ?User interface requirements
Specify the requirements for the user interface in detail.
(8) ? Resource usage requirements
Various resources required by the developed software during runtime and development.
(9) ?Software cost consumption and development schedule requirements
After the software project is approved, according to the contract, requirements for the progress of software development and the cost of each step are required as The basis for development management.
(10) Development target requirements
Pre-estimate the goals that the system may achieve in the future, so that it will be easier to make necessary additions and modifications to the system.
4. ? Tasks of requirements analysis
The main task of requirements analysis is to derive the logical model of the target system with the help of the logical model of the current system. The process is as follows:
(1) Determine the comprehensive requirements for the system (function, performance, operation, expansion requirements)
(2) Develop a product requirements document (PRD)
(3) ?Analyze the data requirements of the system (conceptual model, data dictionary, normalization)
(4) ?Export a detailed logical model of the target system (data flow diagram, data dictionary, main function description)
(5) Develop prototype system
(6) Extract and prepare software requirements specification (SRS) from PRD
Note: SRS format
1. Introduction? 2 System overview (project background, system goals, core business processes) 3. Terminology description? 4. System structure (architecture diagram, function diagram)
5. Main functions and business logic (key points ) 6. Interface requirements (internal, external interfaces,) 7. Overall network design (topological network, host, networking)
8. Operating environment (Linux, Windows, IIS, WebLogic, Tomcat, OLAP, OLTP, JDK 8.0, .NET Framework 4.0, etc.)
5. Object-oriented programming (omitted)
1. ?Design principles
(1) ? SRP Single Responsibility Chain
Each class should only be responsible for doing one thing.
(2) ?OCP Opening and Closing Principle
Software entities (classes, modules, functions, etc.) should be extensible but cannot be modified.
(3) ?LSP replacement principle
Subclasses must be able to replace their base types.
(4) ?DIP Dependency Inversion Principle
High-level modules should not depend on low-level modules, both should depend on interfaces and abstract classes. Abstractions should not depend on details, details should depend on objects.
(5) ?ISP interface isolation principle
Customers should not be forced to rely on unused interfaces, but fat interfaces should be separated.
2. ? Implement UML modeling
(1) ? Extraction of business objects
(2) ? Implement use case modeling based on SRS, CRC, etc.
p>
(3) ?Implement the business sequence diagram
(4) ?Establish a class diagram and establish the association between objects based on the use case diagram
(5) ?Draw Activity diagram, implementation collaboration diagram, status chart
VI. Development management
1. Establish project plan
(1) Design the overall architecture
Adopt an appropriate and mature framework structure according to the implementation needs of the system.
(2) ?Control scalability
Excessive expansion will increase the complexity of the system and extend the development time; excessive expansion will directly affect the secondary performance of the system. Development and maintenance.
The scalability of the control system can improve development efficiency and reduce the difficulty of system maintenance.
(3) Establish infrastructure
Reasonably allocate the time and cost required to deploy software, hardware and other infrastructure (for example: server ordering and installation, optical fiber access, software platform order).
(4) ?Divide development tasks
Use WBS (Work Breakdown Structure) to classify and divide the deliverables. Each project can be divided into multiple different stages, and each stage can be divided into multiple work packages (Work Packages). The work package is the smallest deliverable in the WBS. Finally, multiple development tasks are decomposed from the work package. list.
(5) ?Deployment development progress
A project should be divided into multiple development stages according to progress. The development cycle of each stage is generally within 30 to 60 working days. During this phase, consultation meetings should be held with customers to develop a product roadmap, and customers should be invited to actively participate and provide feedback during the development process. Then the development tasks within this period are divided into multiple iteration cycles based on development difficulty, dependency, importance and other conditions.
In the Scrum agile software development principles, each iteration task should be further subdivided into multiple development task lists, and the re-development tasks should be assigned to team members for their respective responsibilities, and the development time should be controlled to 15 tasks. Within hours. If the development time exceeds 15 working hours, you should consider refining the development tasks. Development task suggestions should be chosen independently by team members rather than forced allocation.
(5) Test project results
Each work package should deploy test work simultaneously to improve the quality of the project. The work package with bugs should be recorded by the tester in text form to show the developer where the error is and allow the developer to make timely modifications.
2. ?Manage development team
(1) ?Establish a team
Establish a team according to the prerequisites of work tasks and project time, and allocate personnel according to team responsibilities , the general team size should be controlled between 8 to 12 people. When the team size exceeds 15 people, you should consider splitting the team into two independent teams responsible for different development tasks.
(2) ?Assign development tasks
In each iteration cycle (usually 15 to 30 working days), each work package should be further subdivided into multiple Development tasks and re-development tasks are assigned to each team member and the development time should be controlled within 15 working hours. If the development time of a development task exceeds 15 working hours, you should consider refining the task. Development tasks should be assigned to each team member in a freely chosen manner.
(3) ?Supervise the development progress
Hold a meeting in the early stage of the iteration to let team members understand the development progress and process, and allocate development tasks in a manner of their own choice. During this period, tools such as Microsoft Project can be used to record the progress of the development process. After each work package is developed, functional testing should be performed and the test results should be recorded in text.
A 15-minute stand-up meeting is held every day, allowing team members to explain the development tasks completed yesterday, the tasks to be done that day, and the problems encountered during the development process. And hold a regular meeting every weekend to explain the overall progress.
A sprint meeting is held at the end of the iteration to summarize the progress of the project, the tasks completed by the Bank, review the problems encountered during the iteration cycle, and prepare for the next iteration.
(4) System testing
Conduct timely testing on each completed work package to ensure system quality and performance. Record the test results in text, link the test results with performance salary income, and calculate the performance income of team members based on real data.
(5) Solve problems encountered during development
Provide early training to developers, assign tasks appropriately according to work ability, and guide the development of team members. When problems are encountered, they should be raised immediately during the stand-up meeting of the day, and the problems encountered should be solved within 15 working hours to prevent further expansion of the problem.
3. ?Supervise product quality
(1) ?Quality requires planning and design rather than review. At the early stages of product creation, appropriate quality policies and standards must be determined in consultation with the Quality Assurance (QA) department and formally documented.
(2) ?Use the TDD (test-driven development) model during the development process to improve development quality. Testers should record bugs in text and work together with developers to demonstrate outstanding defects to developers to improve the efficiency of modifications.
(3) ? Conduct a demonstration of product effects at the end of each iteration to collect feedback from customers, users, and senior leaders. Hold review meetings within the team to analyze test results, understand product performance, and plan for improvements needed for the next iteration.
4. ?Modify the project plan
(1) ?During the product needs identification stage, product functions and development processes should be recorded in the form of documents. When the development plan needs to be modified, it should be discussed with Discuss with the customer to let them understand the impact of plan modifications on the project progress.
(2)? Modifications to the project plan should be proposed by the unified person in charge and approved by the leader who reviews user requirements. Requirement changes should be proposed regularly rather than at any time.
(3) ? Planned changes should be recorded in detailed text to allow customers to understand the actual situation of the demand change and the cost paid by the developer.
7. Product Delivery
1. Post-review of the project
After the project development is finally completed, it can be regarded as a relief for developers to put down the burden of work , but for the project manager this is often a critical moment in the project. The early risk assessment, cost budget, demand analysis, and software design are all to guide the project to this moment, when all eyes will be on the project managers. You may find that a large amount of trivial work will be completed within a few hours. At this moment, the project manager needs to stay awake and calm, and treat the final work as a micro-project. Conduct a detailed post-review of the project to analyze the project results, the efficiency of the project team, and the value of the deliverable products. The review results can be used as part of the project management experience summary.
2. Quality review
Before project delivery, the project should be handed over to the relevant "Quality Assurance" (QA) department for quality review, and typical users should be invited to experience the product. quality.
3. ?Final delivery of the project
Under normal circumstances, a project delivery agreement will be entered into in the early stages of the project. The project delivery methods are divided into informal acceptance and formal acceptance. Generally, after the project is completed, an informal acceptance will be conducted first to allow the customer to experience the quality of the project and provide feedback. Finally, after the customer confirms the product quality, a formal product acceptance will be carried out in the form of a written agreement.
4. ?Final report of the project
At the end of the project, a final report of the project should be developed. This report can be regarded as a record of the project, but the report does not necessarily include the project. all aspects.
Generally, the final report should include the following aspects:
(1) ?Initial project view when the project was initially introduced
(2) ?Value assessment and supporting information for the project
p>
(3) ?Scope of the project
(4) ?Project development process and WBS
(5) ?Project meeting minutes
(6) ? Report on project changes and reasons for the changes
(7) ? Communication process documents related to the project
(8) ? Project audit report and customer acceptance report
(9) ?Performance report of project members
(10) Final results of the project