cause --the source of the difference
Recently autumn will do, Beijing in the haze for several days do not improve, but also a few days of rain disturbed people upset. Kidnap Day weekend, and the storm, autumn, picked up a few times the writing to the Agile software development and traditional software engineering similarities and differences.
literally, both are the difference between "agile" and "traditional". However, these two words are the same as the modified words, so the difference between the two words is naturally the difference between the two development methods.
The word agile is a good understanding of nature. Just as the crowd is as swift as a ranger, to praise the knight for his swift response, and to respond to the agility of change. To modify the software development, we can also apply the rapid response, that is, in the software development process to quickly respond to changes in demand. As for the tradition, the traditional word has many annotations, the Buddhist language says: The color does not differ, the space does not differ the color. All things are not true, but they are born of karma. It is now up to this truth to explain the tradition. This is where tradition and agility are associated, and naturally the opposite of agility is the most appropriate interpretation of tradition. As a result, tradition is interpreted as an idea of a slow strain of change.
The so-called Avenue to Jane, just described as the difference between agile and traditional word meaning, which is the difference between agile software development and traditional software development. The specific differences described below are therefore born. To be thoughtful, the similarities and differences are detailed in a simple list of comparisons.
Fruit --a fine statement of differences
Only the agile tradition of the meaning of the meaning of the word analysis, the language is slightly pale, can not access the profound sense of righteousness. Their definitions are described in detail here.
The so-called agile development is based on the change of customer needs, using iterative, step-up approach to software development. How to use the user as a fundamental, can only allow customers to continue to participate in the software development process for a long time. However, customers have no knowledge of development, and how to engage customers? Only to the customer to see the results, comments. In order to enable customers to see the results, software development process to ensure that the software is ready to run in. There are three principles of agile Development:
One, sooner or later to pay the software, continue to pay the software, so that customer satisfaction.
Secondly, welcome to change, even in the late.
Third, the delivery frequency is as short as possible.
Four, business people and developers work together every day.
Its five, the developer personally provides support and gives trust.
Its six, face-to talk.
Seven, the operational software as the primary measure of progress.
Its eight, the development speed continues stable.
Its nine, focus on excellent skills and design.
Its ten, simple.
11, the best architecture, requirements and design comes from the self-organizing team.
12, the team regularly reflect on.
As for the traditional software engineering, generally based on "waterfall model", waterfall development is a traditional computer software development, the reason is called waterfall, naturally, Li Bai described the "3,000 feet straight down" momentum, but here refers to the momentum of not looking back. It is the most typical predictive software development methodology and strictly adheres to the steps of planning, analysis, design, coding, testing, and maintenance. Compared to Agile software development, the traditional style does not seem to focus on the customer, but the software architecture (software architecture) as the core.
Instance differences:
Examples of agile development include extreme programming (Extreme PROGRAMMING,XP), Adaptive Software Development (Adaptive software development,asd), Crystal,Scrum, and feature-driven programming (feature-driven DEVELOPMENT,FDD ). It is a standard, well-defined process for continuous improvement of the organization. Extreme programming is one of the most widely used methods of agile and happiness.
The traditional software engineering model includes waterfall model, increment model, spiral model, rapid prototype model, fountain model and so on. What they have in common is that the details of the project needs are given prior to development, and the development process customer will not participate, and the development team will hand it over to the customer when the project is completed. Their general process is analysis, design, development, testing, implementation, maintenance, the entire process without the customer's participation. Or it can be divided into the following stages: problem definition, feasibility study, requirements analysis, overall design, detailed design, coding and unit testing, comprehensive testing, software maintenance. Each stage of the work from top to bottom, from the abstract to the specific order, each stage must complete the prescribed document, only the previous phase of the output document is correct, the latter phase of the work to obtain the correct results.
When it comes to models, it is necessary to explain the model. The model here refers to the software development process model, the process model describes the process related problems encountered in software engineering work, clarifies the problem environment and gives a solution to the problem.
Application of the method:
1, the main goal: the goal of agile development is to adapt to change in the best form, to maximize the program to meet customer needs. Get more feedback from your customers by minimizing the time you can run your software submissions, and by increasing the frequency of software submissions.
The goal of traditional development is to make full communication with customers before development to improve the predictability, stability and reliability of software development.
2, scale: Due to constant change and relatively low reliability, agile development is not suitable for large-scale software development. What is called large scale here can not give a more strict definition. As you can imagine, when the scale reaches a certain program, it is impractical to begin with a careful and detailed planning design.
3, Environment: In the application of the environment, agile development is also applicable to changing the environment, while the traditional software development is more eye-catching stable, small changes in the situation.
Development process Management:
1, Customer Relations: How to deal with these two development methods of development team and customer relationship? Agile development is the root of the user needs, and in the development process, the customer with the developers in the frequent communication, as well as the operational intermediate results to show the customer, which is sufficient to obtain customer confidence in the development team and support. The traditional software development model is different, it only depends on the contract and specifications, they do not show the intermediate results to the user, the development process is not much communication, the entire development process customers must be patient waiting for the final product to complete. In this process, the development team can only resorting the process proficiency to obtain customer trust.
2, Development planning control: Agile Development at the outset did not develop a specific development plan, the plan can only be continued to provide users with intermediate products, and draw on customer feedback and continuous improvement. Traditional software development requires a detailed development plan, in which the developer completes the development at one stage of the plan, and communicates and coordinates with the customer effectively as planned.
3, Project communication: Agile Development relies on frequent communication between developers and customers, although communication is frequent, but the customer is not aware of the development of internal knowledge. Such customers are generally to ask some very vague requirements, and can not be the developer of what way to provide advice, but not the internal structure of the software to explain in detail, so there are inevitably risks. While traditional development is dependent on document development, the knowledge of documentation is clear, but different people understand it is not the same, so there is no full communication with customers, there are also risks.
Technology:
1, software requirements: the need for Agile software development does not need to be very formal, do not need to be very clear, even without formal documentation, but only with the customer put forward some vague ideas to develop, in the development process to further refine the requirements. The traditional development is more inclined to clear, detailed, formal development needs, and the development process is generally not how to modify the requirements.
2, Development: Agile Software Development of design preferences is simple. Simple designs can be rewritten at lower cost and respond quickly to changing needs. Traditional development is more focused on perfect and meticulous design, which can enhance the reliability of the development process.
3, testing: Agile Development before the development of testing, and in the development process of continuous testing, and the traditional development of testing is to test specifications.
The above from the parties to face the comparison between the two, but in total sleep missing something. Just as a "paper on the end of the light, I know this matter to preach", can examine today's trend, it is unrealistic to try both methods, we have to seek another method. Then think of the two typical methods to introduce, want to also write in place.
Waterfall Model:
Waterfall, to the situation of one go, here to decorate a model of software development, nature is a sequential type. Waterfall type belongs to the traditional software development model, some call it the classical life cycle, it proposes a systematic and sequential software development method, starting from the user requirement specification, through the process of planning, modeling, building and deploying, we can get a complete software and provide continuous technical support. Waterfall model has the earliest software engineering paradigm,but the passage of the passage, "Jiangshan generation has talent lady out", the old method will eventually for modern people questioned its effectiveness, in the new method after the emergence of the new method can not be taken to contrast. Because it belongs to the traditional model, nature has the disadvantage of the traditional model. These shortcomings are nothing more than to find from the above, and then do a simple example. For example, the linear model can not be iterative, not exactly the fuzzy description of customer needs, the customer must have patience to wait for the product to be produced in the end.
Extreme Programming:
Extreme programming is one of the most widely used methods of agile development. Extreme programming emphasizes the close informal collaboration between the user and the developer. In addition, to be concise, extreme programming advocates that developers only design for immediate needs, regardless of long-term needs. This simplifies the design of the code, making it easier to change and even refactor later. In the extreme programming process to get effective feedback in the software itself, customers and software developers.
Extreme programming can be divided into the following four activities, and these four activities are in the loop execution, focusing on the cycle.
Planning: To understand the customer's initial needs, set the right value for each function of the software is also priority. Calculate costs and assign work.
Design: The design pursues simple. Design implementation principles for software features, and do not encourage additional functionality.
Coding: Instead of just starting to write code, a series of test code is developed to test the development functionality.
Testing: Writing test code before coding is a key element of the extreme programming approach. The unit tests that are built should use a framework that can be implemented automatically.
It was late at the end of the text.
Agile Software Development and traditional software engineering--Causal chapter