Agile Software Development and traditional software engineering
Abstract: This paper describes Agile software engineering and traditional software engineering from the concepts of agile and traditional softwares, and puts forward relevant development models.
First, Agile software development
Agile Software Development is a development method and a process of software development. In the broad sense,the Agile Development (Agile development) is a kind of human-centered, iterative and step-up development method. In agile development, the construction of software projects is divided into sub-projects, the results of each sub-project are tested, with integration and operational characteristics.
Agile Development Models are a collection of various software development project management methods, including extreme programming ( XP), iterative incremental mode (Scrum), and more than 10 different software development models.
Extreme Programming ( XP)
"Extreme" means that, compared to the traditional way of project development, XP emphasizes the limits of each method and idea it lists and does its best. Extreme programming requires a limit of work environment, limit requirements, limit design, limit programming, and limit testing.
(1) Extreme working environment
to maximize the realization and satisfaction of the fundamental rights and obligations of customers and developers in the software development process, XP requires the work environment to be the best.
(2) The demand of the limit
The customer should be a member of the project development team, not separate from the developer. The customer has always played an important role in the process from project planning to final acceptance. Developers and customers together, the various requirements into a small demand module, these modules will be combined according to the actual situation or be decomposed into smaller modules. The requirement modules are recorded on some small cards , which are then assigned to programmers and implemented over a period of time (usually less than 3 weeks). Customers prioritize the development by sequencing the business value of each module. What developers need to do is identify the development risk of each requirement module. High-risk (usually because of a lack of similar experience) demand modules will be prioritized for research, exploration and development. After each module has been evaluated by the developer and the customer separately from different perspectives, they are scheduled for a different development cycle and the customer will be given a development plan that is as accurate as possible.
(3) Design of the limit
from the point of view of the specific development process, The internal process of XP is a multiple test-driven development (testing driven development) cycle. The outer processes, such as planning and design, are carried out around these tests, and each development cycle has a lot of corresponding unit tests.
(4) Programming of the limit
programming is the process by which programmers write program code in a programming language and eventually get a program that solves a problem. XP attaches great importance to programming and advocates pairing programming (pair programming), which means that two of people write the same program together, and that the code ownership is attributed to the entire development team (collective code Ownership). Programmers must strictly abide by the programming specifications when writing programs and optimizing programs. Anyone can modify the program that someone else has written, and make sure that the new program can pass the unit test after modification.
(5) Test of limit
XP advocates that developers often integrate well-developed modules (continuous integration) and unit tests after each integration. Any review and modification of the code is also a unit test. An error is found and the appropriate test is added, so the XP method does not require an error database.
iterative incremental Mode ( Scrum)
Scrum is a framework for developing and sustaining complex products, an incremental, iterative development process that is typically used for agile software development. The original word comes from the football " with the ball ". There will be a planned process before each sprint of the rugby game, but after the sprint begins, the team is randomly should be on the original plan.
Scrum Flowchart:
SCRUM Framework:
Two
Second, traditional software engineering
Traditional software engineering is a methodology, which emphasizes module-centric, modular, top-down, and gradually refinement design process. Its development model has the waterfall model, the Helix model and the rapid prototype model and so on.
(1) Waterfall models (Waterfall model)
the software development process of the waterfall model is consistent with the software life cycle and it is document driven, and there is a causal relationship between the two adjacent phases, which requires approval of the phased product. The waterfall model assumes that the user's needs are constant and therefore lacks flexibility.
(2)
(2) rapid prototyping model (Rapid Prototype)
The rapid prototyping model is functionally equivalent to a subset of the product. According to the needs of customers in a short period of time to solve the most urgent needs of users, this is only part of the implementation of the function, the most important goal of the rapid prototyping model is to determine the user's real needs and support the dynamic changes in demand. Generally not used alone, but with waterfall models or spiral models.
(3) Spiral model
The spiral model is an organic combination of the waterfall model and the rapid prototyping model, which is risk-driven and emphasizes the risk analysis neglected by other models and is suitable for larger systems, but lacks the risk assessment.
Summarize:
(1) Comparison of Agile development and traditional software development
The advantages of agile development are lightweight, simple, fast delivery, maximum transparency, inspection and adaptation, a focus on timely communication between development teams and the development team and customers, and a response to demand changes, but not enough system.
The advantage of the traditional software architecture lies in the foresight and systematization, which can foresee the functional and non-functional requirements of the software before the formal development, the biggest feature is that it attaches great importance to the document and structure, and it is difficult to respond to the change of customer's demand, which makes it difficult to guarantee the flexibility of development.
(2) integration of agile development and traditional software engineering
The traditional software engineering architecture with system and foresight is nested into every lightweight iteration of agile development, granular, nested into the entire agile development, so that the software engineering is both predictive and agile development adaptability, according to the size of the project to adjust the degree of nesting, Choose different architectures based on the size of each iteration of the project to achieve a winning combination of agile development and software architecture.
"1" Kent Beck, Tang Dongming, Beijing People's post and Telecommunications press, 2002
"2" Baidu Encyclopedia: Extreme Programming http://baike.baidu.com/view/259207
"3"software engineering -- The research method of practitioners[J]. Computer Education , (as at): 80-80.
"4" li Hang . an overview of Agile software development methods and extreme Programming [J]. Computer Engineering and Design , 2003, (+): 116-118.
Agile Software Development and traditional software engineering