An article on the software engineering Waterfall Model

Source: Internet
Author: User

Recently I want to create a C/S Project: C scan client register, package the required information into XML, and send it to the server through HTTP or Sockets (socket, the server receives the message through the web service and transmits it to the server database for reuse. NET technology presents the information in the database to the server administrator.

This is a small project, and its functional requirements are very clear. Mr Li tells us to adopt a complete and standardized waterfall model. This is exactly what I want to do. After reading the materials, I found that the waterfall model is advantageous for similar projects. So I found a good translation article. The post is as follows:

Deep understanding of Software Development Waterfall Model

When talking about Waterfall development, most people may think of real estate development under Niagara Falls, how surprised you are when you tell them that waterfall development is actually a software development model that contains multiple stages of iterations. This article will provide you with a brief introduction to the waterfall model, explaining what it is, how it should work, and the possible causes of project failure.

Overview

The waterfall model is not new. It appeared around 1970, but most developers only have a vague concept about the waterfall model. In essence, it is a software development architecture. The development process is carried out in a series of stages. From the analysis of system requirements until the product is released and maintained, loop feedback is generated at each stage, therefore, if any information is not covered or an error is found, it is best to "return" the previous stage and make appropriate modifications. The development process is "Flowing" from one stage to the next stage, this is also the origin of the waterfall development name.

This model has many variants, each of which is slightly different in terms of stage names. However, in general, the waterfall development model can be divided into six different stages, which are defined as follows:

1. requirement Analysis: although this is the first step, this step is crucial because it contains information about the customer's requirements and definitions and the clearest description of the problems to be solved. The analysis includes understanding the customer's business environment and constraints, the features required by the product, the performance level required by the product, and the external systems that must be compatible.

Technologies used at this stage include interviewing customers, use cases, and software-specific "shopping lists ". The results of the analysis phase are usually a formal requirement statement, which is the initial information for the next stage.

2. Design: This step includes defining hardware and software architectures, components, modules, interfaces, and data to meet specified needs (Wikipedia )." It includes the definition of hardware and software architecture, the determination of performance and security parameters, the design of data storage containers and restrictions, the selection of integrated development environment (IDE) and programming language, and specify policies for exception handling, resource management, and interface connectivity.

This stage also emphasizes the design of user interfaces, including issues related to browsing and availability. The output of this stage is one or more design manuals, these instructions will be used in the next phase.

3. implementation: This step involves building a product based on the design specification. Generally, this stage is implemented by the development team. The development team includes programmers, interface designers, and other experts, tools they use include compiling software, debugging software, interpreting software, and media editing software.

At this stage, one or more product components will be generated based on each encoding standard and have been debugged, tested, and integrated to meet the needs of the system architecture. For large development teams, we recommend that you use a version control tool to track the changes in the Code tree, so that you can restore the previous version when a problem occurs.

4. Testing: At this stage, both independent components and integrated components will be systematically verified to ensure that there are no errors and that they fully meet the requirements set in phase 1. An independent quality assurance team will define "test instances" to assess whether the product fully meets the requirements or only partially meets the requirements.

Three testing methods are available: unit testing for independent code modules, system testing for integrated products, and acceptance testing by customers. If any defect is found, the problem will be recorded and reported to the development team for correction. At this stage, product documents will be prepared, evaluated, and released, such as user manuals.

5. installation: after the product passes the test and is identified as meeting the requirements, it enters the installation phase, which includes the installation and use of the system or product at the customer site, this can be done through the Internet or physical media. Generally, the products delivered with the official version number will facilitate future product upgrades.

6. maintenance: This phase occurs after installation, including modifying the entire system or a component to change attributes or improve performance, these modifications may be due to changes in customer requirements or defects not covered in system usage. Generally, modifications to the product during the maintenance phase will be recorded and New Release versions (called "maintenance versions" with updated versions) will be generated to ensure that customers can benefit from the upgrade.

Advantages

The waterfall model described above provides many advantages for software developers. First, the software development model of this stage sets out the following rules: each stage has a specified start point and end point, the process can finally be identified by customers and developers (by using milestones). The requirements and design are fully emphasized before the first line of code is written, which avoids the waste of time and the risk of ticket jumping, at the same time, the customer's expected needs can be ensured as much as possible.

Extracting requirements and designs improves product quality, because it is much easier to capture and correct possible vulnerabilities in the design phase than in the test phase, after all, it is much more complicated to track specific errors after component integration. Finally, the waterfall model can help achieve effective knowledge transfer when the team members are scattered in different locations because the standard statement is generated in the first two phases.

Disadvantages

In addition to the obvious advantages, the waterfall model has also been criticized recently. The most prominent point is to analyze the needs. Generally, customers do not know what they need at the beginning, the waterfall model focuses on capturing requirements and design, but in this case, the recurrence of the real world shows that the waterfall model is somewhat impractical.

In addition, even given customer needs, it is very difficult to estimate the time and cost within a certain range of accuracy (recommended by the waterfall model) based on these needs. Therefore, it is recommended that you use the Waterfall Model in projects with clear initial requirements and relatively stable requirements.

In addition, the criticism points out that the waterfall model also assumes that the design can be converted to a real product, which often causes developers to get into trouble at work. Generally, A reasonable and feasible design scheme is often expensive or difficult in reality, so it needs to be re-designed, thus undermining the clear Stage Boundaries in the traditional waterfall model.

Some critics also pointed out that the waterfall model implies a clear division of labor, which divides developers into "designers", "programmers", and "Testers", but in reality, such a division of labor is neither realistic nor efficient for software companies.

Customer requirements

The waterfall model has aroused a lot of criticism, but it is still effective for many types of projects. If it is used correctly, it can save a lot of time and money. For your project, whether or not to use this model depends on whether you can understand the customer's needs and the extent to which these requirements change in the project process. For frequently-changing projects, the waterfall model has no value. In this case, you can consider other architectures for project management, such as the spiral model method. Of course, this is another thing, we may discuss these methods later.

Author: melonfire
Http://builder.com.com/5100-6374_14-6118423.html? Part = RSS & amp; tag = feed & amp; subj = bldr
English version (http://www.builder.com.cn/developer/study/story/0,3800066957,39533291,00.htm)

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.