CS 425 Chapter 3 Agile Software development

Ace your homework & exams now with Quizwiz!

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


Related study sets

CIS102B Network Fundamentals Security in Network Design

View Set

vSim for Nursing: Pediatric Case 3: Eva Madison

View Set

Anatomy & Physiology: Chapter 2 Lecture

View Set