Brief introduction of Agile software development

Source: Internet
Author: User

Because I read Xin Zou Teacher's "construction Method: Modern Software Engineering (second edition)", so the Agile software development has a relatively large interest. So I found some papers on the Internet, such as requirements Engineering and agile Software Development, A decade of Agile Methodologies:towards Explainin G Agile software Development. After reading these papers, we have a general understanding of agile software development. This blog post is mainly about Agile software development, focusing on the main agile development approach and its advantages, as well as a memo to document the important knowledge I have gained in this process.

Directory

1. Introduction to Agile development

2. Disadvantages of traditional software development methods

3. Advantages of Agility

4. The main agile approach

4.1 Scrum

4.2 Extreme Programming (EXtreme prgramming)

4.3 Lean software Development (Lean software development)

5. References

1. Introduction to Agile development

Software engineering has always been a complex task, and throughout its history, there have been many different theories about the development of the project. Software engineering is evolving from the very beginning of its original state to the gradual formation of waterfall models. At the beginning of the 21st century, some experts put forward the concept of agile development, and this concept has been widely practiced in recent years. Therefore, this blog will mainly introduce the advantages of agile software development and specific content.

Agile is not a methodology, process, or framework, nor is it a literal sense of agility, but a set of values and principles. These values and principles were passed on to the world by the 17 leaders in software development in 2001 through the Agile Manifesto, and at that time proclaimed the beginning of the global Agile Development Movement.

Agile Manifesto

We reveal better ways to develop software by practicing and helping others. Through this work, we have formed the following values:

Individuals and interactions focus on processes and tools

The available software is more than a complete document

Customer collaboration focuses on contract negotiation

Response change is more than following plan

In each set of alignment, the latter is not completely worthless, but we value the former more.

Agile 12 Principles

1. Our highest goal is to meet our customers by delivering valuable software early and consistently.

2. You are welcome to make changes to your needs-even in the late stages of project development. Be good at leveraging changes in demand to help customers gain a competitive advantage.

3. To continuously deliver available software, the cycle varies from a few weeks to several months, and the shorter the better.

4. During the project, the business staff and the developer must work together.

5. Be good at motivating project personnel, give them the necessary environment and support, and believe that they can complete the task.

6. The most effective way to communicate, both within and between teams, is to speak face to head.

7. The software available is the main indicator for measuring progress.

8. Agile processes promote sustainable development. Project Parties, developers, and users should be able to maintain a consistent pace of progress.

9. The improvement of technology and the continuous improvement of design will enhance agility.

10. To be concise, it is best to reduce unnecessary work. It's an art.

11. The best architecture, requirements and design are derived from the self-organizing team.

12. The team should periodically reflect on how it can be more effective and adjust the team's behavior accordingly.

Mainstream agile development methodologies that meet agile values and principles include: Extreme Programming (EXtreme prgramming), Lean Software development (Lean software development), dynamic system development Methodology (DSDM), scrum, and more.

2. Disadvantages of traditional software development methods

Traditional software development is based on the "waterfall model" of the development approach, with software architecture as the core, the use of structured design and analysis methods to divide the software life period, and the progress of development in accordance with the order of the top and bottom of each other, like a waterfall in general. Waterfall model is a software development model proposed by Winston Royce in 1970, which strictly adheres to the steps of planning, analysis, coding, testing and maintenance. Between phases through the flow of documents, each phase at the end of a rigorous review, to check whether the functional design and implementation meet the requirements of the previous phase of the document, if not meet the upstream to the previous phase of the inspection and correction, in order to reciprocating, until the end of the flow to the final product after testing for release and operation of maintenance.

Figure 1 Waterfall Model development process

Due to the need for documents to circulate in each phase, it is necessary to design the whole software architecture in the early stage of software development. A good architecture allows software to support the entire functional system and is easy to maintain, and such a powerful framework often requires a very experienced and unique architect to fully understand the needs of the development user before it is possible to design, usually more difficult. And once the framework of software is determined it can be difficult to change, even reaching, difficult to adapt to customer needs. In addition, there is not much communication between people in the software development process, and each stage of writing or testing the code is governed by documentation. As each stage is connected from top to bottom, communication through a large number of bloated and complex documents can be communicated at all stages. Such software development usually makes each piece of the function relatively perfect, and the interface between the modules and fully understand the document time will appear very long.

3. Advantages of Agility

Agile approaches respond to changes in demand and technology primarily through iterative processes. At the end of each iteration cycle, the user should be delivered with an available, deployable system that allows the user to experience the system early and give feedback. Each iteration cycle should be as short as possible so that demand changes and user feedback can be handled frequently and in a timely manner.

Adoption of Agile development approach will bring many benefits to enterprises and users:

deliver software that users need. It will give users the software system they really need. Waterfall mode usually makes a straight line between the start of the product and the final result, and then goes straight along the line. However, when the project is completed, users will often find that the end point is not their true destination. The agile approach takes a small step forward, each step of the way, need to adjust and determine the next direction, until the real end.

Higher quality. Agile has stringent quality requirements for the output of the iteration cycle. Agile advocates the use of test-driven development (Test-driven development), which is to develop the test code for this function before formally developing the functional code. This provides a reliable quality assurance for the entire development cycle of an agile project.

bring your products to market faster . Agile advocates avoiding large-scale upfront planning, thinking it's a big waste. Because many of the pre-planned things will change, chatty's early plans are often futile. Agile advocates a gradual improvement of the plan. Agile teams focus solely on developing the most valuable parts of the project that are currently in demand. This enables early development, shortening the time to market, or enabling the software to be delivered earlier.

4. The main agile approach 4.1 Scrum

Scrum was first proposed by Jeff Sutherland in 1993, and Ken Schwaber formalized the scrum development process at the 1995 OOPSLA meeting and announced it to the industry. Scrum is currently one of the most widely used agile methods. The main roles in scrum include:

Scrum Master:scrum coaches and team leaders to ensure that the team is working properly with scrum and to help teams eliminate obstacles in their implementation;

Product Owner: Determine the direction and vision of the product, define the content, priority and delivery time of the product release, responsible for the return rate of the product investment;

Development team: A small, cross-functional team of 5-9 people with a team of skills to deliver the software that is available.

In each sprint or iteration, the development team creates an increment of the available software. The functionality to be implemented by each iteration comes from the product order. Product orders prioritize work requirements by priority. In an iteration planning meeting, the product owner tells the development team which order items to complete in the product order. The development team decides how many order items they can commit to complete in the next iteration. In the iterative process, no one can change the order, which means that the demand is frozen in one iteration.

Figure 2 The Scrum process

Three activities are tested and adapted in scrum: The daily meeting examines the progress of the sprint goals and makes adjustments to optimize the value of the next day's work; Sprint Review and planning meetings verify the progress of the release objectives and make adjustments to optimize the work value of the next sprint The Sprint review session is used to review the completed sprint and determine what improvements are made to make the next sprint more efficient, more satisfying, and more enjoyable.

4.2 Extreme Programming (EXtreme prgramming )

Extreme Programming (EXtreme prgramming) is a software engineering methodology. As with other agile methodologies, the essence of extreme programming and traditional methodologies is that it emphasizes adaptability rather than predictability. Proponents of extreme programming believe that the changing nature of software requirements is a natural phenomenon, an unavoidable and receptive phenomenon in software project development, and they believe that the ability to adapt to change at any stage of the project cycle is comparable to the traditional approach of defining all requirements in the initial phase of the project. , will be a more realistic and more effective method. Extreme Programming provides practices and simple rules, including: Writing user stories, architectural specifications, implementation planning, iterative planning, code development, unit testing, acceptance testing, and more.

Like all other agile methods, extreme programming anticipates and actively accepts changes. It has the following values or principles:

Interactive communication . Team members do not communicate through documents, and documents are not required. Team members communicate product requirements and system design through daily communication, simple design, testing, system metaphors, and the code itself.

Feedback . Feedback is a kind of information exchange, can make the system more perfect. Feedback is also closely related to the communication, the actual use of customers, functional testing, unit testing, etc. can provide feedback information for the development team. At the same time, the development team can also feedback the information to the customer by estimating and designing the user case.

simple . Extreme programming advocates simple design, simple solutions. Extreme programming always starts with a simple system and creates only the functional modules that may be needed today. Because it believes that creating the functional modules that are needed tomorrow can be wasteful due to changes in demand.

Courage . "Courage in system development" in extreme programming theory is best explained by a set of practices. One of them is "design and code for today's needs, don't think about tomorrow". This is an effort to avoid falling into the mire of design and to spend too much unnecessary effort on other issues. Courage allows developers to feel comfortable when they need to refactor their code. This means that re-examining existing systems and refining them will make future changes more likely to be realized. Another example of courage is knowing when to discard the existing code completely. Every programmer has this experience: they spend the whole day obsessing over a complex puzzle in their own design and code, but the next day comes back with a new and sober perspective that solves the problem in half an hour.

Team . Extreme programming advocates teamwork and mutual respect. Extreme programming to build and motivate teams is an important task. At the same time it combines mutual respect and practical development habits. For example, to respect the labor outcomes of other team members, everyone must not integrate code that has not passed unit tests into the system. Therefore, everyone's code quality must pass.

Figure 3 Extreme Programming

4.3 Lean Software Development (Lean software development)

The core idea of lean thought is to identify and eliminate waste. In the process of software development, bugs, useless functions, waiting, and any other things that do not benefit from the implementation of the results are wasted. Waste and its source must be analyzed and identified and then managed to be eliminated. Other principles of lean development include:

  emphasis on learning. The software development process is a continuous learning process. Each team member needs to learn from daily failure, interaction, communication and feedback, and continuously improve the product and development efficiency.

  make a decision at the last minute. this avoids unnecessary effort in the event of possible change, thus effectively avoiding waste.

  deliver the user with the fastest speed. a shorter iteration cycle accelerates product development and delivery, accelerates communication, and increases productivity.

  give team autonomy. motivating teams and letting all team members self-manage is always one of the fundamental factors in the success of all agile methodologies.

  integrity. ensuring that the entire system is working properly and truly satisfying the needs of the customer is what the entire team needs to strive to uphold the integrity and commitment to the user.

  global View. Lean Development emphasizes the overall optimization of the system. Regardless of the development of the organization or the product being developed, the overall consideration of optimization is more efficient than the optimization from the individual parts.

Figure 4 Lean software Development principles

For each of the above principles, there are some corresponding implementation tools. These tools include the value stream graph (Value stream Mapping), the collection-based development (set-based development), the pull system, the queue theory (queuing theory), and so on. Compared with other agile methods, lean software is more important to constantly improve the development process of a way of thinking. Therefore, using the lean model with other agile development models will have a good effect.

5. References

[1]. Agile Development Manifesto Http://agilemanifesto.org/iso/zhchs/manifesto.html

[2]. Agile development 12 Principles http://agilemanifesto.org/iso/zhchs/principles.html

[3]. The law of Construction: Modern Software Engineering (second edition) Xin Zou

[4]. Scrum Wikipedia Https://zh.wikipedia.org/wiki/Scrum

[5]. Agile Software Development Wikipedia https://zh.wikipedia.org/wiki/%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91

[6]. Limit compilation Cheng Weiki Encyclopedia Https://zh.wikipedia.org/wiki/%E6%9E%81%E9%99%90%E7%BC%96%E7%A8%8B

[7]. Dings?yr, Torgeir, et al. "A Decade of Agile Methodologies:towards explaining Agile software development." Journal of Systems and software85.6 (2012): 1213-1221.

[8]. Paetsch, Frauke, Armin Eberlein, and Frank Maurer. "Requirements Engineering and Agile software development." Wetice. Vol. 3. 2003.

Brief introduction of Agile software development

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.