Chapter 3 Agile Software Development PDF
Document Details
Uploaded by PropitiousBalance429
Tags
Summary
This document summarises the key aspects of Agile Software Development, focusing on topics like Agile, Extreme Programming, and Scrum. It provides a general overview, outlining the core principles and methods. The content is suitable as a learning resource for those studying software engineering.
Full Transcript
Chapter 3 Agile Software Development Chapter 3 Agile software 1 development Topics covered Agile methods Extreme programming SCRUM Chapter 3 Agile software 2...
Chapter 3 Agile Software Development Chapter 3 Agile software 1 development Topics covered Agile methods Extreme programming SCRUM Chapter 3 Agile software 2 development The Need for Rapid Development New software is developed quickly to take advantage of new opportunities and to respond االستجاب to competitive pressure. تنافسي ة Rapid development and delivery is therefore now الضرورية the most critical requirement يرغب for software التبديلsystems. In fact, many businesses مساومة are willing to trade مقايضة/بين off software quality and compromise on requirements to achieve faster deployment of the software that they need. Chapter 3 Agile software 3 development The Need for Rapid Development Software development processes that plan on completely specifying the requirements and then designing, building, and testing the system are not غير موجهه geared to rapid software development. As the requirements change or as requirements problems are discovered, the system design or implementation has to be reworked and retested. As a consequence, a conventional waterfall or فترة طويلة specification-based process is usually prolonged and the final software is delivered to the customer long after it was originally specified. Chapter 3 Agile software 4 development Agile methods التكلفة العامة Dissatisfaction with the overheads involved in software design methods of the 1980s and 1990s led to the creation of Agile methods. These methods: Focus on the code rather than the design االعتيادي Are based on an iterative approach to software development Are intended to deliver working software quickly and evolve this quickly to meet changing requirements. The aim of agile methods is to reduce overheads in the software process (e.g. by limiting documentation) and to be able to بهrespond مبالغ quickly to changing requirements without excessive rework. Chapter 3 Agile software 5 development Principles of agile methods: تكرار تحديد االولويات يستغل من وجهة نظر Chapter 3 Agile software 6 development Agile method applicability Agile methods have been very successful for some types of system development: Product development where a software company is developing a small or medium-sized product for sale. Custom system development within an organization, where there is a clear commitment from the customer to become involved in the development process and where there are not a lot of external rules and regulations that affect the software. Chapter 3 Agile software 7 development Problems with agile methods: because of their focus on small, tightly-integrated teams, there are problems in scaling agile methods to large systems. It can be difficult to keep the interest of customers who are involved in the process. Team members may be unsuited to the intense involvement that characterizes agile methods. Prioritizing changes can be difficult where there are multiple stakeholders. Maintaining simplicity requires extra work. (Under pressure from delivery schedules) Contracts may be a problem as with other approaches to iterative development. (**) Chapter 3 Agile software 8 development Extreme programming (XP) Perhaps the best-known and most widely used agile method. Extreme Programming (XP) takes an ‘extreme’ approach to iterative development. (pushing recognized good practice, such as iterative development to ‘extreme’ levels) New versions may be built several times per day; Increments are delivered to customers every 2 weeks; All tests must be run for every build and the build is only accepted if tests run successfully. Chapter 3 Agile software 9 development Extreme programming (XP) In extreme programming, requirements are expressed as scenarios (called user stories), which are implemented directly as a series of tasks. Programmers work in pairs and develop tests for each task before writing the code. All tests must be successfully executed when new code is integrated into the system. There is a short time gap between releases of the system. Chapter 3 Agile software 10 development The extreme programming release cycle Chapter 3 Agile software 11 development XP and agile principles Incremental development is supported through small, frequent system releases. Requirements are based on simple customer stories or scenarios that are used as a basis for deciding what functionality should be included in a system increment. Customer involvement means full-time customer engagement with the team. The customer representative takes part in the development and is responsible for defining acceptance tests for the system People not process through pair programming, collective ownership and a process that avoids long working hours. Change supported through regular system releases. Maintaining simplicity through constant refactoring of 12 Test-first development Chapter 3 Agile software 13 development Test-first development Chapter 3 Agile software 14 development Pair programming Chapter 3 Agile software 15 development Pair programming Pairs are created dynamically so that all team members work with each other during the development process. The sharing of knowledge that happens during pair programming is very important as it reduces the overall risks to a project when team members leave. Chapter 3 Agile software 16 development Scrum The Scrum approach is a general agile method but its focus is on managing iterative development rather than specific agile practices. There are three phases in Scrum. The initial phase is an outline planning phase where you establish the general objectives for the project and design the software architecture. This is followed by a series of sprint cycles, where each cycle develops an increment of the system. The project closure phase wraps up the project, completes required documentation such as system help frames and user manuals and assesses the lessons learned from the project. Chapter 3 Agile software 17 development The Scrum process Chapter 3 Agile software 18 development The Sprint cycle A Scrum sprint is a planning unit in which the work to be done is assessed, features are selected for development, and the software is implemented. At the end of a sprint, the completed functionality is delivered to stakeholders. Key Characteristics of the sprint process: Sprints are fixed length, normally 2–4 weeks. They correspond to the development of a release of the system in XP. The starting point for planning is the product backlog, which is the list of work to be done on the project. The selection phase involves all of the project team who work with the customer to select the features and functionality to be developed during the sprint. 19 The Sprint cycle Once these are agreed, the team organize themselves to develop the software. During this stage the team is isolated from the customer and the organization, with all communications channelled through the so-called ‘Scrum master’. The role of the Scrum master is to protect the development team from external distractions. At the end of the sprint, the work done is reviewed and presented to stakeholders. The next sprint cycle then begins. Chapter 3 Agile software 20 development Teamwork in Scrum The ‘Scrum master’ is a facilitator who arranges daily meetings, tracks the backlog of work to be done, records decisions, measures progress against the backlog and communicates with customers and management outside of the team. The whole team attends short daily meetings where all team members share information, describe their progress since the last meeting, problems that have arisen and what is planned for the following day. This means that everyone on the team knows what is going on and, if problems arise, can re-plan short-term work to cope with them. Chapter 3 Agile software 21 development Scrum benefits The product is broken down into a set of manageable and understandable chunks. Unstable requirements do not hold up progress. The whole team have visibility of everything and consequently team communication is improved. Customers see on-time delivery of increments and gain feedback on how the product works. Trust between customers and developers is established and a positive culture is created in which everyone expects the project to succeed. Chapter 3 Agile software 22 development Key points A particular strength of extreme programming is the development of automated tests before a program feature is created. All tests must successfully execute when an increment is integrated into a system. The Scrum method is an agile method that provides a project management framework. It is centred round a set of sprints, which are fixed time periods when a system increment is developed. Scaling agile methods for large systems is difficult. Large systems need up-front design and some documentation. Chapter 3 Agile software 23 development