First, the traditional software engineering
The concept of "software engineering " was first put forward at a meeting in 1968, which was known as the crisis of the year. At that time, due to the increasing scale of software systems, the complexity of the more and more high, the user's unclear needs, software development project delay, cost control, the product is difficult to maintain the phenomenon, the software crisis began to erupt . To solve the software crisis, gradually developed software engineering. Software Engineering is a reference to an engineered solution to analyze, design, and compile the program , and to ensure that it operates as required.
The initial software development process model originates from the more general system engineering process, its typical model such as waterfall model. Plan for all process activities before you start working on the schedule. Its main stages are direct mapping of basic development activities: requirements analysis and definition, system and software design, implementation and unit testing, integration and system testing, operation and maintenance. The result of each phase is one or more documents, until the previous stage ends the next stage before it can begin. If a problem is found at the current stage, you need to go back to the previous stage to modify it.
Waterfall Model:
Second, Agile Software development
with The advent of century, the demand for software products is becoming more and more universal. The diversity, personalization and changing of users ' requirements are the characteristics of software products during this period. In this case, the traditional software engineering management theory is becoming more and more inapplicable, people begin to rethink the localization of software development process, and try to explore a new management method. 2001 2 months in the United States Utah State The Snow Bird City held a software development conference, the conclusion of the meeting is the "Agile Manifesto." This manifesto is a sign of the birth of agile management methods.
the four core viewpoints of agile development are: (1)person-to-person interaction: takes precedence over processes and tools. in traditional software engineering, the role of human beings in the development process is equivalent to the resources that can be replaced at any time, and agile development emphasizes the role of human being, and no process method can replace the members of the development team. On top of this, communication between members directly through face-to-head interaction is stronger than the understanding deviations that may occur through the documentation two interactions. (2)software that works: documents that take precedence over demand perfection. this point of view emphasizes that through the completion of the work of the software can be better to see what has been done, the document is complete can not fully demonstrate the actual effect of the project. Directly facing a working software customer may be aware of what it really needs to be able to make changes to the requirements in a timely manner. The product it ultimately delivers is software, not documentation. The role of documentation in a series of stages of activity should be complementary and not a true measure. (3)Customer Collaboration: Priority over contract negotiation. In software development, customers and software developers should be a collaborative relationship. The purpose of the contract is to make the two sides legally protected, which is the necessary basis. But above that, more important than contract negotiation is the mutual cooperation, only through the written documents, the customer may not be able to fully accurately describe their needs, the developer may also be biased to the actual needs of the customer, and in the development process, the customer may also change the requirements of the software, so Agile Development emphasizesbusiness people and developersYesDuring the entire projectYeswork together all the Timesto get customer feedback in a timely manner with changes in rapid response requirements. (4)change at any time: priority over the rules. Traditional software engineering needs to be analyzed before it is developed, and it is hoped that the requirements can be determined as comprehensively as possible at the beginning, and then only according to the plan. But in fact, the demand is inherently variable, change is inherently normal, agile development emphasizes embracing change, can respond to change at any time, and constantly deliver some functional products to customers through frequent iterative development, constantly adjusting to respond to customer needs change.
Agile management methods There are many kinds, including XP method (Extreme Programming) , programmers hand over the software to the client as early as possible programmers can confidently face the changes in demand and software technology. xp
Iii. Understanding and comparison
Comparing these two development methods by looking at the data, Agile software development is one of the features of the traditional software engineering, which reduces the cost of work by reducing the number of documents written. Traditional software engineering requires a lot of documentation, a waterfall model example, each stage must complete the required documentation, not to hand over the qualified document is not complete the task of this phase, and the previous phase of the output document is the next stage of the input document. Only the output document of the previous phase is correct , The next stage in order to get the correct results. But in the development once the problem in this phase will need to rework, the document also needs to be revised to write delivery, many times the customer will continue to make changes to the requirements, and may even be found in the final delivery is not really needed, resulting in not only the software itself, more is the re-writing of the document, In this case, document writing becomes a waste of work resources, so agile development emphasizes that software is better than documentation. Agile development, however, does not mean that no documentation is needed, it simply simplifies the unnecessary parts and increases the risk of the project if the required documents are delivered verbally. The second is that agile development emphasizes the adaptability to demand, and traditional software engineering sets a long-term detailed plan for a project at the beginning, as much as possible to define all the requirements of the software, and then only follow the established plan to develop it. However, in the actual development process of software, it is difficult to set all the requirements in the initial stage of development, and the customer's demand will change at any time, if this happens, there will be a lot of rework work, so the traditional software engineering is more suitable for once the requirements of the project will not be changed. and agile development, the use of iterative development, each time to submit a customer can work with some of the functions to meet the needs of some users of the software, in the process at any time to maintain communication with users, access to the user's feedback, and then adjust the program software to meet the requirements after the development of the next functional requirements, This can overcome the frequent demand changes in the development process, reduce the design errors and achieve better adaptability. The third is that agile development also emphasizes the human factor. Focus more on direct face-to-head communication between members of the development team, and collaboration between developers and customers. Due to the customer's participation, the requirements of the developer are not very stringent, but often require strong technical support. And because of the frequent direct communication between the members, so its project members are less, the flow of personnel will lead to greater impact on the project, large-scale projects are not suitable for agile development. However, in the traditional software process for people in the role of the can be substituted resources, the flow of personnel will not affect software development.
In contrast, traditional software development is more suitable for large-scale projects where customer needs are basically unchanged, with fixed requirements, and agile development is suitable for small projects where demand changes quickly.
Resources:
[1] Software Engineering Original: LAN Sommerville translation: Chengcheng, Chen Xia, machinery Industry press
[2] Agile approach vs. Classic soft work Mo Ying
[3] The application of Agile management method in software development Bayu
[4] Research on the teaching of software engineering based on the development of agile Softwares Kushenming, Guan Lin
[5] Agile-based software process Evolution Huaqiang
Agile Software Development and traditional software engineering