SWE - chapter 3 :Agile software development
Agile methods have been very successful for some types of system development: ( 2 terms )
1. Product development where a software company is developing a small or medium-sized product for sale. 2. 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.
The key features of testing in XP are:
1. Test-first development, 2. incremental test development from scenarios, 3. user involvement in the test development and validation, and 4. the use of automated testing frameworks.
there are many approaches to rapid software development, they share some fundamental characteristics :
1. The processes of specification, design, and implementation are interleaved. There is no detailed system specification, and design documentation is minimized or generated automatically by the programming environment used to implement the system. The user requirements document only defines the most important characteristics of the system. 2. The system is developed in a series of versions. End-users and other system stakeholders are involved in specifying and evaluating each version. They may propose changes to the software and new requirements that should be implemented in a later version of the system. 3. System user interfaces are often developed using an interactive development system that allows the interface design to be quickly created by drawing and placing icons on the interface. The system may then generate a web-based interface for a browser or an interface for a specific platform such as Microsoft Windows.
There are three phases in Scrum.
1 - The initial phase ( is an outline planning phase where you establish the general objectives for the project and design the software architecture. ) 2- series of sprint cycles (This is followed by a series of sprint cycles, where each cycle develops an increment of the system. ) 3- 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.)
Scrum benefits
1 - The product is broken down into a set of manageable and understandable chunks. 2- Unstable requirements do not hold up progress. 3- The whole team have visibility of everything and consequently team communication is improved. 4- Customers see on-time delivery of increments and gain feedback on how the product works. 5- Trust between customers and developers is established and a positive culture is created in which everyone expects the project to succeed.
Key Characteristics of the sprint process:
1 -Sprints are fixed length, normally 2-4 weeks. They correspond to the development of a release of the system in XP.
The use of pair programming has a number of advantages:
1- It supports the idea of collective ownership and responsibility for the system. ( Individuals are not held responsible for problems with the code. Instead, the team has collective responsibility for resolving these problems.) 2- It acts as an informal review process because each line of code is looked at by at least two people. 3- It helps support refactoring, which is a process of software improvement. ( Where pair programming and collective ownership are used, others benefit immediately from the refactoring so they are likely to support the process.)
Problems with agile methods:
1- problems in scaling agile methods to large systems. (because of their focus on small, tightly-integrated teams ) 2- It can be difficult to keep the interest of customers who are involved in the process. 3- Team members may be unsuited to the intense involvement that characterises the agile methods. 4- Prioritising changes can be difficult where there are multiple stakeholders. 5- Maintaining simplicity requires extra work. (Under pressure from delivery schedules) 6-Contracts may be a problem as with other approaches to iterative development. (**)
name 3 of agile approaches
1-DSDM 2-Scrum 3-extreme programming
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.
review
At the end of the sprint, the work done is reviewed and presented to stakeholders. The next sprint cycle then begins.
Principles of Agile Methods
Customer involvement Incremental delivery People not process Embrace change Maintain simplicity (Figure 3.1 )
XP process
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 suc cessfully executed when new code is integrated into the system. There is a short time gap between releases of the system.
develop
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'.
Key points
Scaling agile methods for large systems is difficult. Large systems need up-front design and some documentation.
Extreme programming (XP) is perhaps the best known and most widely used of the agile methods.
T
If an agile development team is broken up, then this implicit knowledge is lost and it is difficult for new team members to build up the same understanding of the system and its components. ( t | f )
T
The role of the Scrum master is to protect the development team from external distractions.
T
in xp found that productivity with pair programming seems to be comparable with that of two people working independently.
T
in xp the sharing of knowledge that happens during pair program ming is very important as it reduces the overall risks to a project when team members leave. In itself, this may make pair programming worthwhile.
T
the Scrum management process. Scrum does not prescribe the use of programming practices such as pair programming and test-first development. It can therefore be used with more tech nical agile approaches, such as XP, to provide a management framework for the project
T
because managing the cross not that clear in xp This requires a different approach to project management,
T the scrum
Key points
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.
select
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.
Assess
The starting point for planning is the product backlog, which is the list of work to be done on the project.
The philosophy behind agile methods is reflected in the agile manifesto that was agreed on by many of the leading developers of these methods. This manifesto states:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.
Scrum sprint cycle
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. (release)
Agile methods are incremental development methods (t or f)
t
In Agile new releases of the system are created and made available to customers every two or three weeks (t or f)
t
They involve customers in the development process to get rapid feedback on changing requirements. (t | f)
t
They minimize documentation by using informal communications rather than formal meetings with written documents. ( t | f )
t
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.