CS 425 Chapter 3 Agile Software development
When scaling agile methods it is important to ...
...maintain agile fundamentals: Flexible planning, frequent system releases, continuous integration, test-driven development, and good team communications
What is the scrum in Scrum?
A daily meeting of the Scrum team that reviews progress and prioritizes work to be done that day. Ideally, this should be a short face-to-face meeting that includes the whole team.
What is the sprint in Scrum?
A development iteration. Sprints are usually 2-4 weeks long.
What is on-site customer in extreme programming?
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.
What is the Development Team in Scrum?
A self-organizing group of software developers, which should be no more than 7 people. They are responsible for developing the software and other essential project documents.
Extreme programming
A very influential agile method, developed in the late 1990s, that introduced a range of agile development techniques. 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 method should you use if incremental delivery is realistic?
Agile methods
If the system developed is small, what method should be used?
Agile, as a small team can communicate informally with each other
What is refactoring development in extreme programming?
All developers are expected to refactor the code continuously as soon as possible code improvements are found. This keeps the code simple and maintainable.
What is test-first development in extreme programming?
An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented.
What is the velocity in Scrum?
An estimate of how much product backlog effort that a team can cover in a single sprint. Understanding a team's velocity helps them estimate what can be covered in a sprint and provides a basis for measuring improving performance.
What is the product owner in Scrum?
An individual (or possibly a small group) whose job is to identify product features or requirements, prioritize these for development and continuously review the product backlog to ensure that the project continues to meet critical business needs. The Product Owner can be a customer but might also be a product manager in a software company or other stakeholder representative.
What is a sample user story?
As a <type of user>, I want <to perform some task> so that I can <achieve some goal/benefit/value>
What is continuous integration in extreme programming?
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.
Why is rapid development and delivery one of the most important requirements for software systems?
Businesses operate in a fast changing environment and it is practically impossible to produce a set of stable software requirements Software has to evolve quickly to reflect changing business needs
What does customer involvement mean as a principle in agile?
Customers should be involved throughout the process, to provide and prioritize new system requirements and to evaluate interations of the system
BLANK processes are concerned with transforming a requirements specification into an executable software system
Design and implementation
What is pair programming in extreme programming?
Developers work in pairs, checking each other's work and providing the support to always do a good job.
What are 8 scrum terms?
Development team, potentially shippable product increment, product backlog, product owner, scrum, scrumMaster, spring, velocity
What is product architects in multi-team scrum?
Each team chooses a product architect and these architects collaborate to design and evolve the overall system architecture
What is role replication in multi-team scrum?
Each team has a Product Owner for their work component and a ScrumMaster
What is simple design in extreme programming?
Enough design is carried out to meet the current requirements and no more.
Which is correct for a resume? Familiar with Agile methodologies and working in a Scrum development environment Familiar with Scrum methodologies
Familiar with Agile methodologies and working in a Scrum development environment
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 rapidly to meet changing requirements
Complete the user story. for 'new medication' A 'prescribing medication' story, "The record of the patient must be open for input. Click on the medication field and select either ''current medication", 'new medication,' or 'formulary'
If you choose, 'new medication', the system assumes that you know which medication you wish to prescribe. Type the first few letters of the drug name. You will see a list of possible drugs starting with these letters. Choose the required medication. You will then be asked to check that the medication you have selected is correct. Enter the dose then confirm the prescription ....
What are the 10 principles/practices of extreme programming?
Incremental planning, small releases, simple design, test-first development, refactoring
The Agile Manifesto
Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
Agile maintenance problems
Lack of product documentation Keeping customers involved in the development process Maintaining the continuity of the development team
What is sustainable pace in extreme programming?
Large amounts of overtime are not considered acceptable as the net effect is often to reduce code quality and medium term productivity
Contractual issues with agile
Most software contracts for custom systems are based around a specification, which sets out what has to be implemented by the system developer for the system customer but this precludes interleaving specification and development as is the norm in agile development A contract that pays for developer time rather than functionality is required. Seen as a high risk by many legal departments because what has to be delivered cannot be guaranteed
If the system is subject to external regulation, is agile appropriate?
No, because documentation maybe reqiured as part of the system safety case
If the expected system life time is large, is agile appropriate?
No, because long-lifetime systems require documentations to communicate intentions of developers to the support team
Is a completely incremental approach to requirements engineering possible?
No. There cannot be a single product owner or customer representative it is not possible to focus only on the code of the system because of cross-team communication mechanisms Continuous integration is practically impossible.
What are the 3 phases in scrum?
Outline planning, sprint cycles, closure phase
What method should you use to have a very detailed specification and design before moving to implementation?
Plan-driven approach
If the system developed is large, what method should bee used?
Plan-driven approach, as this would require a larger development team
Where can agile be applied?
Product development where a software company is developing a small or medium-sized product for sale Virtually all software products and apps are now developed using an agile approach 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 few external rules and regulations that affect the software
What is agile development?
Program specification, design and implementation are inter-leaved System developed as a series of versions or increments with stakeholders involved in version specification and evaluation Frequent delivery of new versions for evaluation Extensive tool support (e.g. automated testing tools) used to support development Minimal documentation - focus on working code
Problems with test-first development
Programmers prefer programming to testing and sometimes they take shortcuts 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 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 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.
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 is incremental planning in extreme programming?
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'. See Figures 3.5 and 3.6.
What are the 4 terms in multi-team scrum?
Role replication, product architexts, release alignment, scrum of scrums
BLANK takes place when you change existing software systems to meet new requirements. The software must evolve to remain useful
Software evolution
BLANK is the process of checking that the system conforms to its specification and that it meets the real needs of the users of the system
Software validation
Agile development
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 is test automation?
Tests are written as executable components before the task is implemented These testing components should be stand-alone, should simulate the submission of input to be tested and should check that the result meets the output specification. Makes it easy to write executable tests and submit a set of tests for execution. There is always a set of tests that can be quickly and easily executed Whenever any functionality is added to the system, the tests can be run and problems that the new code has introduced can be caught immediately
What is release alignment in multi-team scrum?
The dates of product releases from each team are aligned so that a demonstrable and complete system is produced
Practical problems with agile methods
The informality of agile development is incompatible with the legal approach to contract definition that is commonly used in large companies Agile methods are most appropriate for new software development rather than software maintenance. Agile methods are designed for small co-located teams yet much software development now involves worldwide distributed teams
What is small releases in extreme programming?
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 collective ownership in extreme programming?
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 of the code. Anyone can change anything.
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
What is the Potentially shippable product increment in Scrum?
The software increment that is delivered from a sprint. The idea is that this should be 'potentially shippable' which means that it is in a finished state and no further work, such as testing, is needed to incorporate it into the final product. In practice, this is not always achievable.
User stories for requirements
These are written on cards and the development team break them down into implementation tasks. These tasks are the basis of schedule and cost estimates. The customer chooses the stories for inclusion in the next release based on their priorities and the schedule estimates
What is the product backlog in Scrum?
This is a list of 'to do' items which the Scrum team must tackle. They may be feature definitions for the software, software requirements, user stories or descriptions of supplementary tasks that are needed, such as architecture definition or user documentation.
What is test-driven 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
What is Scrum?
a type of agile approach that is used in software development Focuses on managing iterative development rather than specific agile practices
The principal approaches to process improvement are ...
agile approaches and maturity-based approaches
Plan-driven development
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 also possible Iteration occurs within activities
maturity approaches
based on better process management and the use of good software engineering practice
'Scaling out' in agile
concerned with how agile methods can be introduced across a large organization with many years of software development experience
'Scaling up' in agile
concerned with using agile methods for developing large software systems that cannot be developed by a small team
Refactoring
constant code improvement to make changes easier when they have to be implemented
Large system development
constrained by external rules and regulations, long procurement and development time, difficult to maintain coherent teams, have a diverse set of stakeholders.
What are the 5 principles of agile methods?
customer involvement, incremental delivery, people not process, embrace change
What are sprint cycles in Scrum?
each cycle develops an increment of the system
What is outline planning in Scrum?
establish the general objectives for the project and design the software architecture.
What does embrace change mean as a principle in agile?
expect the system requirements to change and design the system to accommodate change
What does maintain simplicity mean as a principle in agile?
focus on simplicity in both the software being developed and in the development process. Wherever possible, actively work to eliminate complexity from the system.
agile approaches
geared to reducing process overheads
The SEI process maturity framework...
identifies maturity levels that essentially correspond to the use of good software engineering practice
What is the selection phase in Scrum sprint cycle?
involves all of the project team who work with the customer to select the features and functionality from the product backlog to be developed during the sprint
Scaling agile methods
involves changing communications to cope with larger, longer projects where there are multiple development teams, perhaps working in different locations
Processes may be structured for BLANK so that changes may be made without disrupting the system as a whole
iterative development and delivery
What is the closure phase in Scrum?
phase wraps up the project, completes required documentation such as system help frames and user manuals, and assesses the lessons learned from the project
Processes should include activities such as BLANK and BLANK to cope with change
prototyping, incremental delivery
What is the scrumMaster in Scrum?
responsible for ensuring that the Scrum process is followed and guides the team in the effective use of Scrum. He or she is responsible for interfacing with the rest of the company and for ensuring that the Scrum team is not diverted by outside interference.
Agile methods for large systems
teams are working in different places, sometimes in different time zones. 'brownfield systems', that is they include and interact with a number of existing systems. Where several systems are integrated to create a system.
What does people not process mean as a principle in agile?
the skills of the dev team should be recognized and exploited. Team members should be left to develop their own ways of working without prescriptive processes
What does incremental delivery mean as a principle in agile?
the software is developed incrementally with the customer specifying requirements to be included in each increment
What is scrum of scrums in multi-team scrum?
where representatives from each team meet to discuss progress and plan work to be done