Classification and selection of software process models
The so-called model is a development strategy, which provides a set of dimensions for each stage of software engineering, so that the progress of the project can achieve the expected purpose. Regardless of the size of a software development, we need to select an appropriate software process model. This selection is based on the nature of the project and application, the method used, and the required control, and the features of the products to be delivered. The choice of an incorrect model will lose our development direction. For the following models, we hope to give developers a reference and some inspiration.
I. linear sequence Process Model:
It is also known as the traditional life cycle model or waterfall model. It proposes a systematic and sequential method for software development. The process starts from the system, followed by requirement analysis, design, coding, testing, and support. This model is the earliest and most widely used software process model (although this model may cause "congestion ").
Disadvantages:
1. In most cases, the actual project is difficult to proceed according to the order given by the model, and the iteration of this model is indirect, which is easily caused by small changes.
2. It is often difficult for customers to express their real needs, but this model requires this. This model does not welcome the existence of ambiguity.
3. The customer will not be able to see the test version of the program running until the end of the development cycle. However, when a major error is found, the customer may be alarmed and the consequences may be disastrous.
4. When this linear model is used, it is often possible to wait for other members to complete the tasks they depend on at the beginning and end of the process, it may take longer time to wait than to develop. We call it a "Blocked race status ".
Advantages:
1. It provides a touchboard that provides a common guidance for the analysis, design, coding, testing, and support methods.
2. Although there are many defects, it is much better than the casual status in software development.
Ii. prototype implementation process model:
Starting from requirement collection, developers and customers define the overall goal of the software together, identify known requirements, and plan areas to be further defined. Then there is "Quick Design", which focuses on the representation of the parts visible to the customer in the software, which will lead to the creation of the prototype, the customer will evaluate and further refine the demand for software to be developed. Gradually adjust the prototype to meet the customer's needs. This process is iterative. The process starts from listening to the customer's opinions, then building/modifying the prototype, testing and running the prototype, and then going back and forth until the customer is satisfied with the prototype. This model allows customers to quickly feel the actual system (although this system does not have any quality assurance ), therefore, customers and developers prefer this process model (for companies that only demonstrate software functionality or never consider software quality and are not afraid of long-term maintenance ).
Disadvantages:
1. The overall quality and long-term maintainability of the software are not considered.
2. In most cases, inappropriate operating algorithms are used for demonstration purposes, inappropriate development tools are used only for convenience, and inappropriate operating systems are selected.
3. Because the product fails to meet the quality requirements, it may be abandoned and the new model is used for re-design.
Advantages:
1. If the customer and the developer reach an agreement that the prototype is built only to define the requirement and then abandoned or partially abandoned, this model is suitable.
2. Confusing customers to seize the market. This is a preferred model.
Iii. Rapid Application (RAD) Process Model:
This is an incremental software development process model that emphasizes extremely short development cycles. It is a "high-speed" variant of linear models and has won rapid development by using component construction methods. If the requirements are well understood and restricted by the scope of the project, this model can quickly create a fully functional "Information System ". The process starts from business modeling, followed by data modeling, process modeling, Application Generation, testing, and repetition. The Rad process emphasizes reuse and reuse existing or reusable components. In fact, Rad uses the fourth-generation technology.
Disadvantages:
1. It can only be used in information systems.
2. for large projects, sufficient human resources are required to build sufficient rad groups.
3. Developers and customers must complete a series of Requirement Analysis in a short time. Improper cooperation by either party will lead to the failure of the RAD project.
4. This model has high requirements on modularization. If any component can be modularized, the component required for building rad may be faulty.
5. This model is not suitable for scenarios with high technical risks.
Advantages:
1. fast development and high quality.
2. It is particularly effective for information systems.
Iv. incremental process model:
This model integrates the basic components of the linear sequence model and the iterative features of the prototype implementation model. The incremental model uses a linear sequence that is staggered with the calendar time. Each linear sequence generates a software release "increment ". When using the incremental model, the first increment is often the core product. That is to say, the first increment meets the basic requirements, but many complementary features have not yet been released. The customer uses and evaluates each increment as the new features and functions of the next increment release. This process continues from repeat after each incremental release until the final perfect product is produced. The incremental model emphasizes that each incremental product is released with an operational product.
Disadvantages:
1. End-to-End developers and customers are entangled until the full version is released.
Advantages:
1. Flexible Personnel allocation. At the beginning, there is no need to invest a large amount of human resources. When core products are very popular, you can increase manpower to achieve the next increment.
2. When the equipped personnel cannot complete the product within the set period, it provides a way to first launch the core product, so that some features can be released to the customer first, it plays a role in the customer's anesthesia.
3. Have a certain market.
V. Spiral Process Model:
This is an evolutionary software process model that combines the iterative features of prototype implementation with the control and systemization aspects of linear sequence models. This makes rapid development of software incremental versions possible. In the spiral model, software development is a series of incremental releases. In each iteration, a more complete version of the development system is gradually generated. The spiral model is divided into several framework activities, also known as the task area. Typically, there are 3 to 6 Task regions:
1. Customer communication: tasks required to establish effective communication between developers and customers.
2. Planning: define the tasks required for resources, progress, and other related project information.
3. Risk analysis: the tasks required to evaluate technical and management risks.
4. Project: Create one or more tasks for an application to indicate the desired task.
5. Construction and release: Construct, test, install, and provide the tasks required for user support.
6. Customer evaluation: Obtain the customer's feedback on the required tasks based on the evaluation of the software representation generated or implemented during the installation phase.
This is a relatively new model, and its efficacy can be determined after several years of use.
Disadvantages:
1. specialized technologies that require considerable risk analysis and evaluation, and success depends on such technologies.
2. It is obvious that a large hidden risk issue will lead to problems and may lead to uncontrolled evolution methods.
3. This model is relatively new and widely used, and its efficacy needs further verification.
Advantages:
1. This model is a good method for the development of large systems and software. Developers and customers can better treat and understand risks at every evolutionary level.
Vi. winwin spiral process model:
The spiral model presents a framework activity that emphasizes customer communication. The goal of this activity is to induce project requirements from the customer. Ideally, the developer simply asks the customer what the customer needs, and the customer provides enough details to proceed. Unfortunately, this rarely happens. In reality, the customer and the developer enter a negotiation process, and the customer is required to balance the functions, performance, and other product or system features with the constraints between the cost and the market. The best negotiation is to achieve a "win-win" result. That is to say, the negotiating customers obtain most of the functions of the system, while the developers obtain realistic and achievable budgets and time limits. The following activities are defined for customer communication:
1. Identification of key "risk owners" of systems or subsystems.
2. Determine the "win condition" of the risk owner.
3. Risk owners negotiate win conditions to coordinate them into a group of win-win conditions to meet the considerations of all parties.
Disadvantages:
1. Additional negotiation skills are required.
Advantages:
1. Customers and developers reach a balance.
VII. Concurrent task process model:
This model focuses on concurrent execution of multiple tasks and represents a series of major technical activities, tasks, and their related statuses. The concurrency process model is driven by customer requirements, management decisions, and review results. This model defines an active network instead of limiting software engineering activities to a sequence of events. Each activity on the network can occur at the same time as other activities. This model provides an accurate view of the current state of a project.
Disadvantage: None
Advantages:
1. It can be used for all types of software development, and is more effective for the customer/Server structure.
2. Check the development status at any time.
VIII. Component-Based Development Process Model:
Object-oriented technology provides a technical framework for component-based process models of software engineering. The object-oriented model emphasizes the creation of classes, the encapsulated data of classes, and the algorithms used to manipulate the data. Generally, after proper design and implementation, object-oriented classes can be reused in different applications and computer-based system architectures. The component-based development model integrates many features of the spiral model, which is essentially evolutionary and requires an iterative method for Software creation. However, component-based development models use pre-packaged software components (sometimes classes) to construct applications.
Development activities start with the identification of candidate classes. This step is done by checking the data that will be manipulated by the application system and the algorithms used to implement this operation. Related Data and algorithms are encapsulated into a class.
Disadvantages:
1. components are too dependent. The quality of Component Libraries affects the product quality.
Advantages:
1. reusable components. Improved development efficiency.
2. It adopts the object-oriented technology.
9. Formal method model:
The formal method model contains a set of activities that lead to the mathematical specification of computer software. The formal method enables software engineers to apply a strict mathematical symbol system to regulate, develop, and verify computer-based systems. A variant of this method, known as the clean room software engineering, has been adopted by some organizations. When using formal methods in development, they provide a mechanism to eliminate many problems that are hard to overcome by using other software process models. Ambiguity, integrity, and inconsistency are more likely to be detected and corrected, rather than passing a special review, through mathematical analysis of applications. The formal method provides a commitment to generate defect-free software.
Disadvantages:
1. high development costs (multi-faceted training is required for developers) and it takes a long time.
2. This model cannot be used as a mechanism for communication with customers because customers have no idea about these mathematical languages.
3. Not popular yet.
Advantages:
1. The formal specification can directly serve as the basis for program verification and can detect and correct errors as soon as possible (including errors that cannot be found in other cases ).
2. The developed software is highly secure and robust. It is especially suitable for developers who may suffer economic losses due to security department or software errors.
3. Commitment to develop defect-free software.
Tenth and fourth-generation technology (4gt) Process Model:
The use of a series of software tools is a feature of the fourth generation of technology. These tools share a common feature that enables software engineers to regulate certain features of the software at a higher level and then automatically generate source code based on the developer's specification. We know that, at a higher level, software can be deployed quickly. Software Engineering
The 4gt model focuses on the capabilities of the protocol software: it uses a special language form or a graphical symbol system that describes the problem to be resolved using a terminology that the customer can understand. Like other models, 4gt starts from requirement collection. To turn a 4gt implementation into a final product, developers must thoroughly test and develop meaningful documents, all integration activities that are also required by other models must be completed. All in all, 4gt has become an important method of software engineering. In particular, when combined with the component-based development model, the 4gt model may become the mainstream model of current software development!
Disadvantages:
1. The source code generated by tools may be "inefficient.
2. the maintainability of the generated large software is still doubtful.
3. In some cases, more time may be required.
Advantages:
1. It shortens the software development time and improves the efficiency of software construction.
2. a feasible approach and solution are provided for many different application fields.