The development of software project management (SPM)

Source: Internet
Author: User

Software project management is an important part of software engineering. From drawing on the model of engineering project management in the past, to constantly summing up experience and, software project management has formed a unique theory and method. Management Efficiency
On the other hand, software project management has been gradually extended and integrated into the enterprise's management system from the previous single targeting of the project itself. Based on some development experience, the author introduces the development of software project management
Although it is not an innovative concept and theory, it can reflect the development trend of some project management in the IT field: lightweight, innovative, and give full play to human factors.

Traditional software project management

The old software project management method is to split a project into different stages, develop a detailed activity plan and track its implementation, and then adjust the deviation between the plan and the actual situation. A typical example is waterfall model.
Type, which is a sequence and activity-based mindset. The core behavior is from requirement collection, design coding, unit testing, integration testing, system integration, and finally acceptance, this step by step. Post-work launch
The premise is the completion of the preliminary work to ensure traceability. However, the software project practice is different from the architectural design. According to statistics, the probability of success for software projects using the traditional waterfall model is only 10%.
Test Walker rocye's "Software Development Economics").

The reason for the success rate is that the software project has great uncertainty and innovation. Uncertainty comes from the customer's changing needs, solutions with different advantages and disadvantages, and planning constraints (time, cost, communication between teams and stakeholders, subjective and objective factors of quality, and so on ).

Let's take a look at the waterfall model. This traditional project management method has some classic rules: the requirements need to be frozen before design, the Code work cannot be performed before the outline design and detailed design, programming languages and settings
The planning mode is determined in advance. After the unit test is completed, the system integration, document design, quality assurance and quality control teams are relatively independent, and everything must be based on the plan.
The baseline of the Code must be strictly controlled.

In the above rules, some terms undoubtedly play a promoting role in the current software project management. For example, the source code baseline requires strict review and control (in fact, this is also the case for every formal software project
Requires version control and code
Review Mechanism ). However, considering the above models carefully, the problems such as rigidity, poor flexibility, and high accuracy are not tacit with the characteristics of real software projects. Strictly follow the plan and spend a lot of time building Accuracy
The requirement leads to an incomplete understanding of the system architecture when building the system. Secondly, the Project Manager pays too much attention to the activities of team members, and often ignores the results, which may result in a year or even longer.
A large system is completed, but the final output is a failed product.

Just like the name of the waterfall model, it is impossible for the water to flow low to return to the upstream.

Iterative development

Traditional software project management defects can be solved through the use of user demand statement, and focus on results rather than team activities. This is also the goal of iterative software development. User
Case often comes from candidate solutions, such as demo. While constantly presenting the results to customers, it is of great help to clarify the requirements. The results of each increment are a requirement that better matches the final product.
When developing the results, a small team completes a small part of the code or implements some functions in the short term. This is the idea of "iteration" and the initial core idea derived from "agility.

The advantages of iterative software project management are: Architecture first, early risk response, change control emphasis, collaboration between various parts to increase flexibility, and measurement of project progress and quality through demonstration, scalability of Process configuration management
(Because of the uncertainty of software projects, no process can be applied to any software project. Iteration ensures reasonable configuration of a practical process framework, which is easy to get the best return on investment)

To use iteration in software project management, an important idea is to minimize the scale and complexity of software projects. Although this part depends on the customer's needs, the economic results should be taken into consideration, reduces the amount of code written manually.
High abstraction level is advantageous for improving the quality of software projects and reducing rework. A typical approach to reduce complexity is to fully understand the business needs and deliver only the essential parts; use the Code;
High abstraction and adoption of component technologies (this imposes higher requirements on the quality and business capabilities of engineers, but in the long term, the highest rate of return on investment in knowledge); shortening the release cycle; conditional adoption of SOA. And so on
.

The above software project management ideas have higher requirements than traditional models. We need to improve the development process, establish teams with stronger business capabilities, and adopt integrated and automated methods to improve productivity, and try
The complexity of SOA architecture packaging is adopted to reduce system operation and maintenance costs. This has exceeded the software project management and business layer, and has greatly helped and improved the operation and development of the entire enterprise.


Lean & agile

Lean Production is not a new term. It comes from Japanese Toyota JIT (just in
Time) production method. Lean Software Development draws on the idea of traditional industry, from the work environment, team building to punctuality, zero inventory, to task decomposition, code submission on time, continuous integration, is extremely valuable.
.

The principle of lean software development is: eliminate waste, do not do any valuable work, reduce repetitive work, only do what is necessary; respect for the most basic workers, such as program developers, QC, build
Team, etc.; continuous learning and improvement; no hasty conclusion, any decision-making needs investigation, for example, when the demand is unclear, no estimated time and cost; quality is reflected in every development process, quality is part of the process
Points; Overall Optimization rather than local optimization (because you only optimize a software component, without looking at the global height, it will contribute very little to the overall ).

In the development of software project management, lean software development is undoubtedly one of the greatest contributions. It emphasizes the quality of the project process, reduces the cost waste, and reflects the idea of comprehensive quality management; at the same time, the principle of continuous improvement is equally important for team building.

In fact, in a strict sense, lean software development is also a type of agile software development model. Since its birth, agile methods have changed the entire IT industry. This way of thinking has liberated productivity and changed
The delivery capability of the team is essentially the deepening and innovation of the iterative model. On the agile level, test-driven development (TDD), refactor, Pair Programming (pairing ),
The concept of continuous integration has become increasingly popular and is currently the most popular software project development method.

Due to the limitations of traditional software project management, iterative project management has poor progress feedback (the progress feedback is unclear because a function is implemented repeatedly within an iteration cycle ), and because of the software development method
From foresight (driven by detailed plans) to adaptability (uncertainty), Agile Project Management has gradually become the mainstream project management method.

The core of Agile Project Management is agile software development, focusing on practice rather than planning. This management model emphasizes software products rather than a large number of documents; focuses on collaboration with customers rather than contract negotiations; Emphasizes embracing
Change and rapid response to changes, rather than strictly following the plan. Agile Project management plays an important role in forming a good team culture and shortening the project cycle. It is more suitable for innovative small and medium projects (but it does not mean that it can only operate
Used in Small and Medium Projects ).

It is a fresh breath to bring agile project management to the mainstream. In fact, agile theories act on different teams in completely different styles. You can have any combination of multiple methodologies. This is one of the main reasons why agility can exist: flexibility. You will not find rules to constrain your team to do so. What you need to do is to continuously improve in the agile system.

Philosophy of scrum

Ken schwaber proposed the scrum method for the first time. The name of rugby may be Mr Ken, a fan.
,
In fact, the name can reflect the characteristics of this project management method: rapid + sprint. Essentially, scrum is also an iterative incremental software development process. It is also a type of agile software development model.
For large businesses, scrum is more suitable for small and medium projects. I personally think that "Embracing Change" and "Giving Full Play to flexibility" are key ideas of scrum. Compared with the reservation of the traditional software project management model
For process control, scrum is a theory that relies on empirical process control, emphasizing "inspection" and "adjustment", emphasizing "communication", and minimizing written processes.

The SCRUM cycle is quite short. a sprint is a few weeks (generally no more than 30 days ). This method is a good interpretation of the PDCA cycle, a sprint iteration package
Including planned meetings
Plan, do, check, and adjust ). In scrum, the team's initiative is maximized, which can greatly stimulate creativity and thus improve
Productivity, project management is the art of administrator, not limited to the project itself. At the same time, the teams in scrum communicate through daily
The face-to-face approach also reduces the "noise" in the communication channels ".

Another characteristic of scrum is that the requirement is embodied through user story, which is the basis of development.
The story sharding task is implemented in the sprint. Because the user
The features of story reflect the Invest principles (independence, negotiation, value, estimation, short, and testability). After being added to the backlog, the requirements are understood as future development and testing.
The trial work provides a more stable foundation (it should be noted that the user
Story needs to have a good ing relationship with the requirement document), which is of great significance for an iteration and even the quality of the entire project.

Scrum has gradually become popular, although many teams have encountered many difficulties in practice, such as the problem of team role arrangement, progress control, and inconsistency between Requirement documents and backlog. However, as this agile project management method becomes more and more mature, it is believed that it can take a dominant position in small and medium-sized software projects.

Other genres

In fact, there are still many agile project management teams. In addition to lightweight scrum, eXtreme Programming (XP) and Rational Unified Process (RUP) all have specific application methods.
A heavyweight software development process is more stable for large projects. Due to my limited understanding of RUP, I will not discuss it in depth. For XP, continuous integration, Pair programming, and test-driven development
Is actually the earliest use of this Agile Methodology, Crisp's Henrik
The kniberg team has tried the combination of scrum and XP. For more details, see his book "scrum and XP in smoke".

Summary
For specific project analysis, project management is the theory of practice. No matter which methodology, it has some practical significance for the project itself. The particularity of software projects makes the management of software projects more light and flexible.
Software project management has gradually evolved from a "strong" methodology to a "weak" methodology. However, this does not mean that software project management is not easy to control, and does not mean that software project teams do not
It is disciplined. On the contrary, it gives full play to the team's productivity and creativity, improving the flexibility and adaptability of software projects. Using a point of view in the field of software development and design: "High Cohesion and low coupling", project management is similar
To adapt to the changing project environment.

 

 

 

 

 

 

 

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.