Agile Software Development VS. Traditional Software Engineering

Source: Internet
Author: User

Agile Software Development VS. Traditional Software Engineering

The theme of this paper is to introduce the two popular software development models in the field of software Engineering-agile software development and traditional software engineering, and their advantages and disadvantages.

First, the traditional software engineering

1, creating a background

The generation of traditional software engineering (software Engineering) originated in the 60 's. The emergence of software crisis is due to the rapid growth of computer computing power and the complexity of the problems to be dealt with. In 1972, Eizhor Dextra's speech at the Computer Society Turing Award described the causes of the software crisis:

The main reason for the software crisis is that machines become much more powerful. To be blunt, programming does not cause problems as long as there is no machine. Programming is an easy task when we have only a few computers with poor computing power. And now that we have a powerful computer, programming naturally becomes a big problem. --edsger Dijkstra, the Humble Programmer (EWD340)

(I note: I believe that everyone in the field of computer science, no do not know Dijkstra, his Dijkstra algorithm regardless of any algorithm book, any algorithm class will be involved in the exquisite algorithm, and he himself is also the winner of the Turing Award, in academia has a great influence. I also admire him very much. )

The software crisis is manifested in:

    • Project runs over budget
    • Project runs over time
    • Software is very inefficient
    • Software quality is low
    • Software does not meet demand
    • Project lacks management, code is difficult to maintain
    • Software difficult to deliver

It is because of the remarkable improvement of computer computing ability, and the increase of the demand of software at that time, that people realize that development projects can not only participate in the development of the organization of programmers ' machinery, but need to use the systematic and scientific management mode, which need to coordinate with each other. Therefore, in order to overcome the software crisis, academia and industry have put forward the traditional method of software engineering development, accumulated a great deal of research results, extensively carried out a large number of technical practice, and developed it into a discipline, even a standard.

2, a common traditional software engineering model

After understanding the background of the traditional software engineering, several common traditional software engineering models are described below. The traditional software development model includes waterfall model, incremental process model, prototype model, spiral model and so on.

(1) Waterfall models (Waterfall model)

1970 Winston Roys (Winston Royce) proposed the famous "Waterfall model", until the early 80, it has been the only widely used software development model. Waterfall model is the software life cycle of the activities defined as a fixed sequence of connected to a number of stages of work, such as waterfall water, and ultimately the software products.

The original waterfall model divides the software development process into requirements analysis (Requirements), design, software implementation (Implementation), test (verification), and maintenance (maintenance) five cycles. and set their top-down, mutual convergence of the fixed order, like waterfall water, descending. Development can "flow" from one stage to the next only when the previous level is complete and checked correctly, which is the origin of the waterfall development name. The core idea of waterfall model is to divide the big problem into small problems according to the process, separate the realization and design of the function, and facilitate the division and collaboration, that is, the logical realization is separated from the physical realization by the structured analysis and design method. Its creative inspiration, from the then developed manufacturing industry, pipeline-style operating system. A product is like a project, in which the production of the product takes a phased flow, so naturally Royce applies it to software development. After Royce proposed the original waterfall model, the different evolutionary waterfall models (including the Royce's final waterfall model) were slightly altered during the process. But basically keep the original five cycle division. For example, the introduction of "backtracking" mechanism, in the current phase of the discovery of defects or unmet needs, back to a previous cycle, so that the more flexible and changeable modern project requirements. Waterfall model is the most typical of traditional software development model, and also the foundation of other traditional software development models.

(2) incremental process models (Spiral model)

The incremental process model refers to each stage using a linear sequence, each incremental submission of the product. It is like a prototype and other evolutionary methods, with iterative features, including incremental models, RAD models. The incremental process model incorporates the basic components of the waterfall model (repeated application) and the iterative characteristics of the prototype implementation. The model uses a linear sequence that is staggered with the progress of the schedule, and each linear sequence produces a published "increment" of the software.

(3) prototype models (Prototype model)

The prototype model obtains the user's feedback by providing a prototype to the user, so that the developed software can truly reflect the user's needs. At the same time, the prototype model uses the gradual refinement method to perfect the prototype, so that the prototype can be "fast" development, avoiding the same as the waterfall model in the lengthy development process difficult to respond to the user's feedback quickly. Compared with waterfall model, the prototype model is more popular with the custom of developing software, and it is a useful software lifetime model.

(4) Helical models (Spiral model)

Spiral model is an evolutionary software development process model, which takes into account the iterative characteristics of rapid prototyping and the systematization and strict monitoring of waterfall model. The biggest feature of the Helix model is the introduction of risk analysis that is not available in other models, so that the software has the opportunity to stop when significant risks are not eliminated in order to reduce losses. At the same time, building prototypes at each iteration stage is the way the Helix model reduces risk. The helical model is more suitable for large, expensive system-level software applications. Four quadrants in the figure 1. Determination of objectives, programmes and limitations 2. Evaluate the programme and identify the risk of resolution 3. Development and verification of the next level of product 4. Plan the next stage, one lap like the prototype model development process.

Second, Agile Software Development (Agile software development)

Agile Software Development does not have an accurate definition, it originates from the turn of the century. In the 90 's, the complex development approach that prevailed at that time caused the programmer to complain about its strict management and high standard, and in order to solve this problem, many light-weight software development methods developed. Includes rapid application development (rapid application development), Dynamic system development Methodology (DSDM), Scrum development methodology, and more. They are now attributed to agile software development methodologies.

In 2001, 17 software developers released the Agile Software Development Manifesto at the Snowbird Conference (the Manifesto for Agile Software development), where they mentioned:

    • Personal and interaction (individuals and interactions): self-management and self-drive are as important as the interaction of pair programming
    • Available software (working software): Available software is more useful and popular than documentation
    • Customer Collaboration: Requirements are not fully available at the beginning of software development, so customers are involved in development and their important
    • Coping with changes (responding to change): Agile Development focuses on rapid response to continuous change development

From the official manifesto above, it can be seen that agile development focuses on human-to-human interaction and quickly respond to changes in the development process. So I think the core of agile development is agile, in which agile is more precise fast and flexible, it emphasizes the rapid development of software available, how to achieve this, communication, interaction, flexibility to adapt to change. This is my personal understanding of the purpose of agile development.

Here are a few common agile development approaches, crystal, transparent crystal methods and scrum that give us an initial understanding of agile development.

Crystalline method Crystal

The crystalline method, Crystal, is a series of agile methods established by Alistair Cockburn and Jim Highsmith, whose aim is to develop a "mobile" approach. The Crystal method is suitable for 6-8 developers to develop non-life-critical systems. Methods focus on efficiency and adaptability, focusing on people rather than processes. The project can be divided according to the people and importance of participation.

Importance is divided by the consequences of errors in the project:

C:loss of comfort (some not comfortable)

D:loss of discretionary money (economic loss)

E:loss of Essential money (serious economic loss)

L:life Critical (Life risk)

A project called C6 notes participants under 6 people, the importance of the C-class, D20 the staff in 6-20 people, the importance of the D-class.

In the Crystal Series development methodology, the number of developers and the key levels that apply are as follows:

Crystal Clear for C6,D6 projects

Crystal Yellow for C20,D20,E20 projects

Crystal Orange for the C40,D40,E40 project

Crystal Red for the C80,D80,E80 project

The Crystal method has the following characteristics:

    • Frequently delivered
    • Reflective improvement
    • Osmotic communication
    • Personal security
    • Focus
    • Reflective improvement
    • Technical environment with automated testing, configuration management, and often-integrated functionality

Scrum

Scrum is a flexible software management process framework that helps to harness iterative, incremental software development processes, primarily for product development or job management. In this framework, the developer is divided into different roles, the entire development process consists of several short iterations (sprint) cycles, in each sprint or iteration (a 15-30-day period, whose length is determined by the development team), and the development team creates an increment of the available (ready-to-roll) software. In a sprint, a project status meeting is held every day, called "Scrum" or "daily stand-up meeting." Once each sprint is complete, a sprint review session will be held and all team members will have to reflect on the sprint during the meeting. A sprint review meeting is held for continuous process improvement.

A case study of the scrum case: the Dutch railroad transports 1.2 million passengers a day. The department has created a new information system to provide passengers with more accurate train information and to reduce human intervention. This pub publishing system leverages the scrum development model. Detailed Details: http://www.infoq.com/cn/articles/dutch-railway-scrum

Iii. Characteristics Analysis and comparison

The traditional software engineering development mode, as the first scientific development method, makes the development of soft ware scientific and structured, and provides a system development route for software development. But its shortcomings have also emerged in the next few 10 years:

The emergence of the traditional software engineering development mode has made the development of chaos and disorder in order and structure, which has provided a set of regular and systematic development route for software development, which has brought great benefit to software development at the beginning. However, the traditional software engineering development model of this relatively single model, its shortcomings are quickly revealed:

    • Inability to respond efficiently to projects where customer needs change greatly
    • Development is linear and leads to incorrect repetition, which can be difficult for the final test and delivery process.
    • Did not consider a very important part of development--people
    • The development process needs to fill in a large number of documents delivered to the customer, pull down the efficiency

In the above introduction, agile development can be a good solution to the above shortcomings, it was born in order to cope with the shortcomings of traditional software development projects. Its advantages lie in:

    • Focus development concerns on individuals, focus on interactions across individual teams, reduce potential problems in collaborative development, and accelerate problem resolution
    • The customer as a member of the development team, the customer's needs in the first place, so that the big changes can be quickly processed
    • The development cycle becomes shorter and the communication becomes more.
    • There is no need to write too many documents, and the internal documents are replaced by weekly meetings.

But this does not mean that we can all use agile development, discard the traditional software development, it also has its shortcomings, the individual summed up the following several:

    • Too impatient to fast, and lead to the quality of the code itself, as well as the workload of personnel increased
    • Too much attention to demand, resulting in the development process is very passive, when the customer needs too much, will lead to the team's original plan upset
    • Agile development does not focus on documentation, which requires developers to be more capable of their own ability to quickly understand and absorb the code written by their peers.
    • Agile development cuts the engineering cycle into small pieces and lacks integrity, which can lead to a decrease in system robustness.

In the great need of software today, we want to use different project development methods for different project characteristics, the traditional method is more effective, and it is more suitable for project Agile development with unclear project requirements, when the customer needs can be determined early. It is hoped that in future academia will be able to propose more pervasive development methods.

Resources

1, Wikipedia: Software engineering https://en.wikipedia.org/wiki/Software_engineering

2, Wikipedia: Waterfall model Https://en.wikipedia.org/wiki/Waterfall_model

3,mba Encyclopedia: Process Increment Model Http://wiki.mbalib.com/wiki/Incremental_process_model

4, Wikipedia: Agile software development Https://en.wikipedia.org/wiki/Agile_software_development

5,CSDN Blog: The Agile Development Series tour fourth station (transparent Crystal Method) http://blog.csdn.net/happylee6688/article/details/22625973

6, the Dutch railway Company's distributed scrum development Http://www.infoq.com/cn/articles/dutch-railway-scrum

Agile Software Development VS. Traditional Software Engineering

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.