Document directory
I often see and hear that you are arguing about agile processes, which software development processes are better or which processes are not good, and each of them has a reason and a lot of fun to argue about ...... in fact, there is no perfect process, and there is no better process. The key is what kind of process is suitable for you (the organization), and the process that suits you is a good process. More importantly, a suitable process requires time accumulation and continuous practice to tailor, supplement, and improve the defined process to establish a software development process that best suits you.
Referencing Alistair Cockburn, "different projects require different methodologies. The best process of a project is the least process that the project can afford .", This shows that there are usually several ways to coexist for an organization, while different types of projects adopt different methods. Choosing an appropriate life cycle model is crucial to the success of any software project. A large number of projects are severely delayed and products are delayed. The root cause is often due to incorrect use of the lifecycle model, which includes misunderstandings caused by the waterfall model with obvious defects, although the waterfall model proposed in the 1970s S has been taught as a classic by our software engineering education for many years, the practical Waterfall Model often leads the software process astray. The difference is that the new process methodology, whether light, heavy, XP, RUP, or TSP, all advocate the adoption of an iterative and evolutionary life cycle model that significantly reduces risks, emphasize iteration. However, over-emphasizing iteration may result in ignoring demand analysis and definition, ignoring design, and making continuous changes later, greatly increasing the cost of software development (rework, defect correction, etc, increases enterprise costs.
For example, more and more people are discussing and advocating agile processes and extreme programming (XP, although agile processes and extreme programming are suitable for Web development, free Web Services, and Beta versions forever, there are also many ideas worthy of application, such as continuous integration, refactoring, and stress testing, but there are also other problems, such as teaming programming, planning game, and code collective ownership. Extreme Programming is only suitable for small teams and open-source communities, but not for large software companies. In terms of the overall software development process, it is more suitable for the adoption of unified process (RUP) microsoft software development framework (MSF), while absorbing agile ideas in some aspects and details. An American friend told me that XP may flash into a flash. Whether he is right or not, when software is a mature industry, it is certainly not allowed to be completely like "XP.
Due to limited space and time, we can compare and analyze the popular process models here, so that you can have a clear picture of the advantages and disadvantages of different software processes.
Project |
CMM/cmme |
RUP |
MSF |
XP |
Cycle |
Spiral Model. |
Evolutionary iteration cycle and process framework |
Combination of Waterfall Model and spiral model |
Evolutionary iteration cycle. Software Development Methodology |
Core |
Process Improvement |
Architecture and iteration |
Milestones and iterations |
Code-centric. |
Range |
Projects with strict requirements but few changes. |
Suitable for different types of projects |
Suitable for different types of projects |
Small projects, small releases, and small teams with tight schedule and unstable demands |
Organization |
Personal (PSP), Team (TSP), and Organization, collaboration and training between groups |
Cross-team collaboration |
Emphasizing the product vision and six basic roles |
Team-based, with the same abilities as small teams and team members |
Technology |
Traditional structured methods |
Object-Oriented Technology |
Integrated Technology |
Object-Oriented Technology |
Management |
Focuses on process definition, measurement, and improvement. Speak with numbers and documents. |
From the perspective of organization, focus on process modeling and deployment. |
Business modeling, deployment, and process management. |
Focuses on specific process execution and development technologies and plan design. |
Activity |
Define activities through process Domains |
The entire team focuses on quality throughout the process |
Project management, risk management, and readiness Management |
People-oriented, such as 40 hours of work per week, Pair Programming |
Practice |
Key Practices at various levels. Pay attention to critical infrastructure. |
It meets the requirements of level 2-3 kPa of CMM, but basically does not involve Level 4-5 kPa of CMM. |
Code Review, version management methods, document management, recruitment, retest, and risk management. |
The integration of coding and design activities weakens the architecture. Use Cases, unit tests, iterative development, and layered architecture. |
Others |
High versatility, but complicated and cost-effective. |
The risk-driven approach is emphasized to ensure the continuous delivery of available products, minimize unnecessary process artifacts, and minimize measurements and documents to achieve elasticity and adaptability. |
Provides a series of guidelines for planning the enterprise's infrastructure and technical facilities, process the business operation process, and encourage reusability. |
Embrace changes and emphasize humanization, simplicity, and communication. Minimize documents. Individuals and interactions are better than processes and tools. |
In summary, there is no general or static software process model suitable for software development and maintenance of all projects. In the process of software organization, there are different corporate cultures and business environments, different levels and scales, different architectures and product types, and different resources and capabilities, you must select and use different process models and methods based on different projects and periods. Constantly absorbing existing ideas in the process, constantly exploring and practicing, and gradually forming a self-defined process suitable for you.
Self-defined software processes that have been tested and accumulated are the best processes.
From: Soft training (www.qingsoft.net) original link: http://www.qingsoft.net/bbs/html/article/873.jhtml