The software development life cycle provides organizations with a systematic, step-by-step approach to develop successful software by collecting initial requirements for new products. It is a systematic process of constructing software to ensure the quality and correctness of the constructed software and to meet customer expectations.
The main development models include waterfall model, incremental model, spiral model, fountain model, smart model, V model, RAD model, CBSD model, prototype method, XP method, RUP method, etc.
The waterfall model, also known as the life cycle method, is the most commonly used development model in the life cycle method. It divides the software development process into six stages: software planning, requirements analysis, software design, program coding, software testing, and operation and maintenance. In order to achieve their fixed order from top to bottom, like a waterfall, they fall step by step.
- Software plan: Mainly determine the development goals and feasibility of the software.
- Requirement analysis: After confirming that the software development is feasible, perform a detailed analysis of the various functions that the software needs to achieve. The requirement analysis stage is a very important stage. A good job at this stage will lay a good foundation for the success of the entire software development project.
- Software design: Design the entire software system, such as system framework design, database design, etc., based on the results of demand analysis. Software design is generally divided into overall design (outline design) and detailed design.
- Program code: Convert the result of software design into program code that can be run by a computer. In the process of programming, a unified and standard-compliant programming specification must be formulated to ensure the readability of the program, easy maintenance, and improve the operating efficiency of the program.
- Software testing: After the software design is completed, it must undergo rigorous testing to find and correct the problems in the software throughout the design process. In the testing process, it is necessary to establish a detailed test plan and conduct tests in strict accordance with the test plan to reduce the arbitrariness of the test. Software maintenance:
- Software maintenance is the longest period in the software life cycle. After the software is developed and put into use, due to various reasons, the software cannot continue to meet the requirements of users. To extend the service life of the software, the software must be maintained.
The transformation model (evolution model) is based on the rapid development of a prototype. According to the feedback and suggestions put forward by users in the process of calling the prototype, the prototype is improved to obtain a new version of the prototype, and this process is repeated until it evolves into The final software product.
The spiral model combines the waterfall model and the transformation model. It combines the advantages of the two and adds risk analysis. It is based on the prototype and rotates from the inside to the outside along the spiral. Each rotation requires planning, risk analysis, implementation engineering, customer evaluation and other activities, and a new version of the prototype is developed. After several spirals, the final system is obtained.
The fountain model provides support for software reuse and integration of multiple development activities in the life cycle, and mainly supports object-oriented development methods. The term “fountain” itself embodies the characteristics of iteration and gaplessness. A certain part of the system often repeats work many times, and related functions are added to the evolved system in each iteration. The so-called gapless means that there is no obvious boundary between analysis, design and coding in development activities.
In the development model, testing is often used as an afterthought to remedy the situation, but there is also a testing-centric development model, that is, the V model. The V model has only been vaguely recognized in the software industry. The V model claims that testing is not an afterthought, but a process as important as the development process.
The V model describes some different test levels and explains the different stages in the life cycle corresponding to these levels. In the figure, the descent on the left is the various stages of the development process, and the corresponding ones are the rising parts on the right, that is, the various stages of the testing process.
Please note that the naming of the test phase may be different in different organizations. The value of the V model is that it clearly shows the different levels that exist in the testing process, and clearly describes the correspondence between these testing phases and the various phases during the development process:
- The main purpose of unit testing is to deal with various errors that may exist in the coding process. For example: the user enters an error in the boundary value during the verification process.
- The main purpose of integration testing is to address the possible problems in the detailed design, especially to check the possible errors in the interface between each unit and other program parts.
- System testing is mainly for outline design, checking whether the system as a whole is effectively operating. For example: Whether the expected high performance is achieved in the product settings.
- Acceptance testing is usually carried out by business experts or users to confirm that the product can truly meet the user’s business needs.
Incremental models, like prototype implementation models and other evolutionary methods, are essentially iterative. But unlike the prototype implementation, the incremental model emphasizes that each increment releases an operable product. The early increments are the “detachable” version of the final product, but they do provide user-service functions and provide a platform for users to evaluate.
The characteristic of the incremental model is the introduction of the concept of incremental packages. You do not need to wait until all the requirements come out, as long as the incremental packages of a certain requirement come out, you can start development. Although a certain incremental package may need to be further adapted to the needs of customers and needs to be changed, as long as the incremental package is small enough, its impact can be bearable for the entire project.
RAD model The Rapid Application Development (RAD) model is an incremental software development process model that emphasizes a very short development cycle.
The RAD model is a “high-speed” variant of the waterfall model, which wins rapid development through extensive use of reusable components and a component-based construction method. If the requirements are well understood and the scope of the project is constrained, this model can be used to quickly create a fully functional “information system”.
The process starts with business modeling, followed by data modeling, process modeling, application generation, testing, and iteration. The software process using the RAD model is shown in the figure below.
The tasks to be completed in each activity period of the RAD model are as follows.
Business modeling: What information drives the operation of the business process? What information is to be generated? Who generated it? Where does the information flow go? Who will handle it? Can be supplemented by data flow diagrams.
Data modeling: In order to support the data flow of the business process, find the collection of data objects, define the attributes of the data objects, and form the data model with the relationship with other data objects, which can be supplemented by ER diagrams.
Process modeling: enable data objects to complete various business functions in the information flow. The creation process describes the addition, modification, deletion, and search of data objects, that is, the refinement of the processing box in the data flow diagram.
Application program generation: Use the fourth-generation language (4GL) to write the processing program, reuse existing components or create new reusable components, and use the tools provided by the environment to automatically generate and construct the entire application system.
Testing and delivery, due to a large amount of reuse, generally only do overall testing, but the newly created components still need to be tested.
Component (Component) is a software unit with reusable value and relatively independent functions. The Component Based Software Development (CBSD) model is to use a modular approach to modularize the entire system, and with the support of a certain component model, reuse one or more software components in the component library, through combination The process of constructing application software systems with high efficiency and high quality.
The component-based development model incorporates many characteristics of the spiral model, and is essentially evolutionary, and the development process is iterative. The component-based development model consists of five stages: software requirements analysis and definition, architecture design, component library establishment, application software construction, testing and release.
The software prototype is the partial realization of the proposed new product. The main purpose of establishing the prototype is to solve the problem of uncertain demand in the early stage of product development. Its purpose is to clarify and improve the requirements, explore design options, and develop into the final product.
There are many ways to classify prototypes. From the perspective of whether the prototype realizes its functions, software prototypes can be divided into two types: horizontal prototypes and vertical prototypes.
Horizontal prototypes are also called behavior prototypes, which are used to explore some specific behaviors of the expected system and achieve the purpose of refining requirements. Horizontal prototypes are usually just navigation of functions, but they do not actually implement functions. The horizontal prototype is mainly used on the interface.
Vertical prototypes are also called structured prototypes, which implement part of their functions. Vertical prototypes are mainly used in the realization of complex algorithms.
XP is a lightweight (agile), efficient, low-risk, flexible, predictable, scientific and fun software development method. Compared with other methodologies, the biggest difference lies in:
- Provide specific and continuous feedback earlier in a shorter period.
- Iterative planning, first generating a master plan quickly at the very beginning, and then continuously developing it throughout the project development process.
- Rely on automated test procedures to monitor development progress and catch defects early.
- Rely on verbal communication, testing and source program communication.
- Advocate continuous evolutionary design.
- Rely on close collaboration within the development team.
- Try to balance the short-term interests of the programmer and the long-term interests of the project as much as possible.
Unified Process (UP)method
Unified Process is a general process framework that can cope with a wide range of software systems, different application fields, different organization types, different performance levels, and different project scales. UP is component-based, which means that the software system developed by it is composed of components, and the components are connected with each other through well-defined interfaces. When preparing all the blueprints of the software system, UP uses the unified modeling language UML.
Compared with other software processes, UP has three notable characteristics: use-case-driven, centered on the basic architecture, iteration and increment. The software process in Rational Unified Process is broken down into four sequential phases in time, namely the initial phase, the refinement phase, the construction phase, and the delivery phase. At the end of each stage, a technical review must be arranged to determine whether the goals of this stage have been met. If the results of the review are satisfactory, the project can be allowed to move to the next stage.