Agile Software Development VS. Traditional Software Engineering

Source: Internet
Author: User

Agile Software Development VS. Traditional Software engineering

The term "Software Engineering" was presented in 1968, after the American software engineering expert, Barry Bohr, on the more than 10 years of research software engineering experts and scholars put forward some of the principles and Principles, in 1983, the proposed software engineering seven basic theorem, the software engineering this subject to materialize, The method of developing and managing software in software engineering is also constantly complete. Agile Software was developed in 2001 by Kent Beck and 16 other well-known software developers, and agile development is a new challenge for traditional software development approaches. This paper will introduce two methods of software traditional engineering and agile software development, and compare and analyze them.

First, Traditional Software Engineering

The production of software engineering has a great relationship with the the 1960s crisis, due to the lack of engineering of the software developers at the time, and the difficult problems encountered in software development, such as software production can not meet the requirements, development time and cost is difficult to estimate and software maintainability and so on. This allows people to start thinking about using engineering methods to develop and maintain software, so this technology is born. Software engineering is based on software process, which is a set of activities, actions and tasks executed during software construction. The process framework of software engineering defines five activities: communication, planning, modeling, building and deployment. Only these activities are not determined by the interrelationships between the processes, so some models are needed to define these relationships.

Common traditional software engineering process models:

1. Waterfall Model

Waterfall Model presents a systematic approach to software development by planning, modeling, building and deploying the process, eventually producing a complete software and providing software maintenance. Waterfall model is the earliest model of software engineering, but in the actual application, there are many problems. The waterfall model needs the customer to clear the demand, but does not adapt to the uncertainty of the demand, the customer can only obtain the software which can execute after the software completes completely, some early errors need to wait until the test stage to discover, these problems make the waterfall model by the modern software engineering realm abandoned. In the software engineering development process often encountered various changes, and waterfall model is often not able to adapt to these tasks, but when the work is done in a linear manner, the waterfall model is a very useful model. In fact, the linear approach is one of the easiest ways to master and use, and when people are confronted with a problem that is not solved by a linear approach, they tend to consider decomposing the problem into a series of linear problems and solving them one by one.  

2. Incremental Model

The incremental model is essentially a piecewise linear model, and the incremental model publishes a series of versions called Deltas that gradually provide more functionality to the user. The incremental model uses a linear model at each stage, and the incremental model works in every increment, so that it adapts well to the changes, and the customer can always see the software development, the early errors can be solved, and the development risk is reduced. Incremental model can solve several problems of waterfall model, but there are still some defects: software architecture needs to ensure that the original system can not be affected when the new component is added.

3. Spiral Model

Spiral model is an evolutionary process model, which combines the iterative nature of the prototype with the characteristics of the system and controllability of the waterfall model, and can develop and improve the software version quickly. The biggest feature of the Helix model is the risk analysis which is not available in other models, which can stop the software in the face of significant risks and reduce the loss. The spiral model evolves clockwise from the center of the Circle, and the first lap generally develops a software specification that is gradually perfected in the next iteration and eventually gets the final version. A spiral without loops spans multiple areas, and the project plan is continually adjusted in each region of each iteration until the iteration is over. Helical models are ideal for developing large-scale system-level applications. Each iteration of the Helix model is embedded in software testing and accumulative development cost, which makes the software quality is strictly guaranteed, and the development cost is easy to grasp. But risk management spending on the spiral model may be too large.

Second, Agile Software Development

Agile development is a new approach to software development with the ability to respond to rapidly changing needs. The agile development approach comes from a 2001-year meeting of software developers who set up an agile alliance and signed the Agile Software Development Manifesto, which includes the following points:

1 , the communication between individuals and these individuals is better than the development process and tools

2 , working software trumps detailed documentation

3 , customer collaboration trumps detailed documentation

4 The response to change outweighs the strict adherence to the plan

The Agile Alliance defines 12 principles:

1 , the most important thing for us is to meet customer needs by delivering valuable software early and continuously.

2 and we welcome changes in demand, even in the late stages of development. Agile processes can harness change and maintain a competitive edge for customers.

3 , often delivering work-ready software, from weeks to months, the shorter the time scale the better.

4 , business people and developers should always work together throughout the project.

5 , developing software around people with high morale, providing developers with the right environment to meet their needs, and believing they can accomplish their tasks.

6 , the most efficient and effective way to communicate in a development group is to talk to each other in person.

7 , the software that can work is the main measure of progress.

8 , agile processes promote sustainable development. Funders, developers and users should always maintain a constant rhythm.

9 , the continuous pursuit of superior technology and good design will help improve agility.

Ten , simple-the art of minimizing the amount of work is essential.

One , the best architectures, requirements, and designs come from self-organizing teams.

A , every time, the team should summarize how to be more efficient, and then adjust their behavior accordingly.

Agile development emphasizes software adaptability, rather than predictability, compared to other approaches. In essence, Agile software development is designed to overcome weaknesses in traditional software engineering. In real life, the user needs are constantly changing, in many cases, completely unable to fully define the requirements.

Extreme programming is one of the most widely used methods of agile development. Extreme Programming includes 4 stages of planning, design, coding, and testing. Extreme Programming has 12 principles of Practice:

1. Plan Development: includes the project size selected by the customer, priority of the program function, composition of each version and date of release.

2. Iteration: Bring the most business value with minimal code effort.

3. simple design: Through all tests, there is no repetitive and confusing logic code, simple design can guarantee the simplicity of the code.

4. Test: A function exists on the premise that there is a test that can verify it, and any potentially corrupted code must have a corresponding test.

5. Continuous Integration: Reduce the amount of time spent in consolidation and reduce team development issues.

6. refactoring : Ensure that the code remains simple after adding new features, ensuring that the simple code still runs all the tests.

7. Pairing Programming: Provide continuous feedback and ensure that people who are programming are refactoring, testing, and adhering to coding standards for code sharing purposes.

8. code sharing: With testing, any person can make changes to the system.

9. work only 40 hours a week: Take full advantage of your time and work 40 hours in one weeks is enough. 10. On-Site customers: Discussion, using language description capabilities that both programmers and customers can use.

Metaphor: A collection of common languages and terminology used to foresee functions in a project.

Coding Standards: Adhere to coding standards, let other programmers understand the code, reduce unnecessary communication.

Extreme programming is the most widely used of all agile process models, and there are many other models, such as adaptive software development, Scrum, and dynamic system development methods, which are not discussed here.

Third, Comparison of traditional software engineering with Agile software development

The advantages of Agile software development compared to traditional software development:

1. Agile Development emphasizes adaptability, so software development adaptability is more enhanced. In terms of the cost of software change, agile development is much less than traditional software engineering, because Agile development is more adaptable.

2. The short delivery cycle of agile development emphasizes the early delivery of available functionality, which facilitates continuous improvement of the software throughout the project.

3. Agile Development is more efficient and human resources are used more fully.

The disadvantages of agile software development compared to traditional software engineering:

1 , Agile Development documentation is also significantly reduced compared to traditional software engineering, so communication between teams needs to increase, and once the project is large, communication between teams becomes difficult.

2 , the requirement of individual ability is very high, the team personnel request the development ability is strong, the communication ability of the team also can not be weak.

Agile Software Development VS. Traditional Software Engineering

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.