SWE Chapter 3 - Agile
When is Agile suitable?
- Small or medium sized product for sale. - Where there are not a lot of external rules and regulations that affect the software. - Custom system development within an organization (not distributed) - There is commitment from the customer to become involved in the development process
Describe the Agile methods.
- Specification, design, implementation and testing are inter-leaved and the outputs from the development process are decided through a process of negotiation during the software development process.
What are the features in XP Testing?
- Test-first development. - Incremental test development from scenarios. - User involvement in test development and validation. - Automated test harnesses are used to run all component tests each time that a new release is built.
What are the 3 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.
What is the Agile Manifesto?
- Working software over comprehensive documentation - Customer collaboration over contract negotiation - Responding to change over following a plan
What is Continuous Integration in XP?
As soon as the work on a task is complete, it is integrated into the whole system.After any such integration, all the unit tests in the system must pass.
What happens at the end of a sprint?
At the end of the sprint, the work done is reviewed and presented to stakeholders. The next sprint cycle then begins.
What is the best-known and widely used agile method?
Extreme Programming (XP)
What does Extreme Programming entail?
Extreme Programming (XP) takes an 'extreme' approach to iterative development. - 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.
What happens if the system must be approved by external regulation?
If a system must be approved by an external regulator (e.g. the FAA approve software that is critical to the operation of an aircraft) then you will probably be required to produce detailed documentation as part of the system safety case. (Plan driven)
In XP, Pairs of developers work on all areas of the system (Collective Ownership), what advantage does that provide?
The pairs of developers work on all areas of the system, so that no islands of expertise develop, and all the developers take responsibility for all the code. Anyone can change anything.
Scenarios/User stories are written on cards and the development team break them down into implementation tasks. These tasks are the basis of schedule and cost estimates. (True/False)
True
Describe a plan driven approach.
- A plan-driven approach to software engineering is based around separate development stages with the outputs to be produced at each of these stages planned in advance. - Not necessarily waterfall model - plan-driven, incremental development is possible - Iteration occurs within activities.
Most organizations spend more on maintaining existing software than they do on new software development. So, if agile methods are to be successful, they must support maintenance as well as original development. What are the key issues that may arise from agile methods?
- Are systems that are developed using an agile approach maintainable, given the emphasis in the development process of minimizing formal documentation? - Can agile methods be used effectively for evolving a system in response to customer change requests?
What are the principles of Agile methods?
- Customer involvement Customers should be closely involved throughout the development process. Their role is providing and prioritizing new system requirements and to evaluate the iterations of the system. - Incremental delivery The software is developed in increments with the customer specifying the requirements to be included in each increment. - People not process The skills of the development team should be recognized and exploited. Team members should be left to develop their own ways of working without prescriptive processes. - Embrace change Expect the system requirements to change and so design the system to accommodate these changes. - Maintain simplicity Focus on simplicity in both the software being developed and in the development process. Wherever possible, actively work to eliminate complexity from the system.
What is the role of the scrum master?
- During the development stage the team is isolated from the customer and the organization, with all communications channelled through the scrum master. i.e. He protects the development team from external distraction.
What are the 5 agile and XP principles?
- Incremental development is supported through small, frequent system releases. - Customer involvement means full-time customer engagement with the team. - Pair programming/collective ownership. - Change supported through regular system releases. - Maintaining simplicity through constant refactoring of code.
How does the expected lifetime of the system relate to choosing between Agile methods and a plan driven approach?
- Long-lifetime systems may require more design documentation to communicate the original intentions of the system developers to the support team.
How is the development team organization a factor in plan driven vs agile?
- Plan-driven is appropriate if the development team is distributed or if part of the development is being outsourced, then you may need to develop design documents to communicate across the development teams.
What are the testing difficulties within XP?
- Programmers prefer programming to testing and sometimes they take short cuts when writing tests. For example, they may write incomplete tests that do not check for all possible exceptions that may occur. - Some tests can be very difficult to write incrementally. For example, in a complex user interface, it is often difficult to write unit tests for the code that implements the 'display logic' and workflow between screens. - It is difficult to judge the completeness of a set of tests. Although you may have a lot of system tests, your test set may not provide complete coverage
What are some examples of Refactoring?
- Re-organization of a class hierarchy to remove duplicate code. - Tidying up and renaming attributes and methods to make them easier to understand. - The replacement of inline code with calls to methods that have been included in a program library.
What are the principles of test-first development?
- Writing tests before code clarifies the requirements to be implemented. - Tests are written as programs rather than data so that they can be executed automatically. The test includes a check that it has executed correctly. - All previous and new tests are run automatically when new functionality is added, thus checking that the new functionality has not introduced errors.
In XP, what is the role of the onsite customer?
A representative of the end-user of the system (the customer) should be available full time for the use of the XP team. In an extreme programming process, the customer is a member of the development team and is responsible for bringing system requirements to the team for implementation.
Is an incremental delivery strategy, where you deliver the software to customers and get rapid feedback from them, realistic? If yes what should you consider?
Agile methods.
What is meant by pair programming?
Developers work in pairs, checking each other's work and providing the support to always do a good job.
Agile methods may be required for systems that require a lot of analysis before implementation (e.g. real-time system with complex timing requirements). (True/False)
False. A plan driven approach is suited in this scenario.
Agile Project Management has a similar approach to standard project management.
False. Agile project management requires a different approach, which is adapted to incremental development and the particular strengths of agile methods.
In XP, developers aren't expected to refactor the code. (True/False)
False. All developers are expected to refactor the code continuously as soon as possible code improvements are found. This keeps the code simple and maintainable.
It is argued that agile methods don't require as much skill as a plan-based approach to implement. (True/False)
False. It is sometimes argued that agile methods require higher skill levels than plan-based approaches in which programmers simply translate a detailed design into code
In XP, large amounts of overtimes are expected. (True/False)
False. Large amounts of overtime are not considered acceptable as the net effect is often to reduce code quality and medium-term productivity.
Pair programming is inefficient. (True/False)
False. Pair programming is not necessarily inefficient and there is evidence that a pair working together is more efficient than 2 programmers working separately. Also measurements suggest that development productivity with pair programming is similar to that of two people working independently.
Programming team look for possible software improvements and make these improvements only where there is an immediate need for them. (True/False)
False. The team makes these improvements even where there is no immediate need for them.
How do programmers work in XP?
In XP, programmers work in pairs, sitting together to develop code. Which helps develop common ownership of code and spreads knowledge across the team.
What happens in Pair programming?
In pair programming, programmers sit together at the same workstation to develop the software.
What does constant refactoring accomplish?
It improves the understandability of the software and so reduces the need for documentation, changes are easier to make because the code is well-structured and clear. (However, some changes requires architecture refactoring and this is much more expensive)
What does XP propose instead of designing for change?
It proposes constant code improvement (refactoring) to make changes easier when they must be implemented.
How are pairs created in pair programming?
Pairs are created dynamically so that all team members work with each other during the development process.
What is a limitation in Customer Involvement in the testing process within XP?
People adopting the customer role have limited time available and so cannot work full-time with the development team. They may feel that providing the requirements was enough of a contribution and so may be reluctant to get involved in the testing process.
Describe incremental planning in XP.
Requirements are recorded on story cards and the stories to be included in a release are determined by the time available and their relative priority. The developers break these stories into development 'Tasks'.
What is the XP release cycle?
Select User Stories for this Release -> Break down stories to tasks -> Plan Release -> Develop/Integrate/Test Software -> Release Software -> Evaluate System -> Repeat
What is the length of each sprint cycle?
Sprints are fixed length, normally 2-4 weeks. They correspond to the development of a release of the system in XP.
Large amounts of overtime are not considered acceptable, which XP principal is that?
Sustainable pace
What is the testing approach in XP?
Test-first development. An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented.
What should be developed first in XP? How is the small releases principal applied?
The minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add functionality to the first release.
What is the Scrum approach?
The Scrum approach is a general agile method, but its focus is on managing iterative development rather than specific agile practices.
Who is responsible for choosing stories for inclusion in the next release?
The customer chooses the stories for inclusion in the next release based on their priorities and the schedule estimates.
What is the principal responsibility of Software Project Managers?
The principal responsibility of software project managers is to manage the project so that the software is delivered on time and within the planned budget for the project.
What is the role of the customer in the testing process within XP?
The role of the customer in the testing process is to help develop acceptance tests for the stories that are to be implemented in the next release of the system.
What does the selection phase involve in a sprint cycle?
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.
What is the starting point for planning in a sprint?
The starting point for planning is the product backlog, which is the list of work to be done on the project.
Problems may arise if original development team cannot be maintained. (True/False)
True
Refactoring keeps the code simple and maintainable. (True/False)
True
A plan driven approach is used when it is important to have a very detailed specification and design before moving to implementation. (True/False)
True.
Conventional wisdom in software engineering is to design for change. It is worth spending time and effort anticipating changes as this reduces costs later in the life cycle. (True/False)
True.
Testing is central to XP. (True/False)
True.
The customer who is part of the team writes tests as development proceeds. All new code is therefore validated to ensure that it is what the customer needs. (True/False)
True.
Traditional engineering organizations have a culture of plan-based development, as this is the norm in engineering. (True/False)
True.
Agile methods are most effective when the system can be developed with a small co-located team who can communicate informally. (True/False)
True. How large the system that is being developed is a huge factor. As agile methods may not be possible for large systems that require larger development teams so a plan-driven approach may have to be used.
Agile methods rely on good tools to keep track of an evolving design. (True/False)
True. Choosing agile means that technologies are available to support system development.
In XP, Enough design is carried out to meet the current requirements and no more. (True/False)
True. This falls under the simple design principal.
How are user requirements expressed in XP?
User requirements are expressed as scenarios or user stories.
How does XP view designing for change?
XP, maintains that designing for change is not worthwhile as changes cannot be reliably anticipated.
How does pair programming support the idea of collective ownership and responsibility?
•Individuals are not held responsible for problems with the code. Instead, the team has collective responsibility for resolving these problems.
What are the problems with Agile?
•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. •Prioritising changes can be difficult where there are multiple stakeholders. •Maintaining simplicity requires extra work. •Contracts may be a problem as with other approaches to iterative development.
What are the advantages to pair programming?
•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. •It serves as an informal review process as each line of code is looked at by more than 1 person. •It encourages refactoring as the whole team can benefit from this. •It supports the idea of collective ownership and responsibility for the system.
What is the standard approach to project management?
•The standard approach to project management is plan-driven. Managers draw up a plan for the project showing what should be delivered, when it should be delivered and who will work on the development of the project deliverables.
How does pair programming and collective ownership support refactoring?
•Where pair programming and collective ownership are used, others benefit immediately from the refactoring so they are likely to support the process.