Agile_terms Flashcards

1
Q

acceptance testing

A

An acceptance test is a formal description of the behaviour of a software product, generally expressed as an example or a usage scenario. A number of different notations and approaches have been proposed for such examples or scenarios; in many cases the aim is that it should be possible to automate the execution of such tests by a software tool, either ad-hoc to the development team or off the shelf. Similarly to a unit test, an acceptance tests is generally understood to have a binary result, pass or fail; a failure suggests “though it does not prove” the presence of a defect in the product. For many Agile teams acceptance tests are the main form of functional specification; sometimes the only formal expression of business requirements. In other cases, they merely complement a specification document resulting from a less specifically Agile technique or formalism, such as uses cases or more narrative documents.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

ATDD (acceptance test driven development) or STDD (story test driven development)

A

Analogous to test-driven development, this practice consists in the use of automated acceptance tests with the additional constraint that these tests be written in advance of implementing the corresponding functionality.

In the ideal situation (though rarely attained in practice), the product owner, customer or domain expert is able to specify new functionality by writing new acceptance tests or test cases, without needing to consult developers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

automated build

A

The “build” in developer parlance consists in the process which, starting from files and other assets under the developers’ responsibility, results in a software product in its final or “consumable” form. This may include compiling source files, their packaging into compressed formats (jar, zip, etc.) but also the production of installers, the creation or updating of database schema or data, and so on. The build is “automated” to the extent that these steps are repeatable and require no direct human intervention, and can be performed at any time with no information other than what is stored in the source code control repository.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

backlog

A

A backlog is a list of features or technical tasks which the team maintains and which, at a given moment, are known to be necessary and sufficient to complete a project or a release:

if an item on the backlog does not contribute to the project’s goal, it should be removed;
on the other hand, if at any time a task or feature becomes known that is considered necessary to the project, it should be added to the backlog.

These “necessary and sufficient” properties are assessed relative to the team’s state of knowledge at a particular moment; the backlog is expected to change throughout the project’s duration as the team gains knowledge.

The backlog is the primary point of entry for knowledge about requirements, and the single authoritative source defining the work to be done.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

backlog grooming

A

The team (or part of the team including the product owner) meet regularly to “groom the product backlog”, in a formal or informal meeting which can lead to any of the following:

removing user stories that no longer appear relevant
creating new user stories in response to newly discovered needs
re-assessing the relative priority of stories
assigning estimates to stories which have yet to receive one
correcting estimates in light of newly discovered information
splitting user stories which are high priority but too coarse grained to fit in an upcoming iteration

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

BDD (behavior driven development)

A

BDD (Behaviour Driven Development) is a synthesis and refinement of practices stemming from TDD (Test Driven Development) and ATDD (Acceptance Test Driven Development). BDD augments TDD and ATDD with the following tactics:

apply the “Five Why’s” principle to each proposed User Story, so that its purpose is clearly related to business outcomes
thinking “from the outside in”, in other words implement only those behaviors which contribute most directly to these business outcomes, so as to minimize waste
describe behaviors in a single notation which is directly accessible to domain experts, testers and developers, so as to improve communication
apply these techniques all the way down to the lowest levels of abstraction of the software, paying particular attention to the distribution of behavior, so that evolution remains cheap

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

burndown chart

A

The team displays, somewhere on a wall of the project room, a large graph relating the quantity of work remaining (on the vertical axis) and the time elapsed since the start of the project (on the horizontal, showing future as well as past). This constitutes an “information radiator”, provided it is updated regularly. Two variants exist, depending on whether the amount graphed is for the work remaining in the iteration (“sprint burndown”) or more commonly the entire project (“product burndown”).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

collective ownership

A

Teams typically adopt conventions governing who is allowed to modify some source code that was originally written by another, often referred to as “ownership”. These conventions can written and explicit, merely oral, or entirely implicit. Many different modes exist; commonly only one developer “owns” each code file. Collective code ownership, as the name suggests, is the explicit convention that “every” team member is not only allowed, but in fact has a positive duty, to make changes to “any” code file as necessary: either to complete a development task, to repair a defect, or even to improve the code’s overall structure.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

continuous deployment

A

Continuous deployment can be thought of as an extension of continuous integration, aiming at minimizing lead time, the time elapsed between development writing one new line of code and this new code being used by live users, in production.

To achieve continuous deployment, the team relies on infrastructure that automates and instruments the various steps leading up to deployment, so that after each integration successfully meeting these release criteria, the live application is updated with new code.

Instrumentation is needed to ensure that any suggestion of lowered quality results in aborting the deployment process, or rolling back the new features, and triggers human intervention.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

crc cards

A

CRC cards (for Class, Responsibilities, Collaborators) are an activity bridging the worlds of role-playing games and object-oriented design.

With the intent of rapidly sketching several different ideas for the design of some feature of an object-oriented systems, two or more team members write down on index cards the names of the most salient classes involved in the feature. The cards are then fleshed out with lists of the responsibilities of each class and the names of collaborators, i.e. other classes that they depend on to carry out their own responsibilities.

The next step is to validate - or invalidate as the case may be - each design idea by playing out a plausible scenario of the computation, each developer taking on the role of one or more classes.

The dialogue may go as follows, for instance: “Hello, Authentication Controller! I am a Web Request and I would like the contents of this resource.” - “Very well, let me have your Credentials so I can give them, together with the name of the operation you are trying to perform, to our Access Control List; I will redirect you to one of our View components depending on the result, etc.”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

daily meeting

A

Each day at the same time, the team meets so as to bring everyone up to date on the information that is vital for coordination: each team members briefly describes any “completed” contributions and any obstacles that stand in their way. Usually, Scrum’s Three Questions are used to structure discussion. The meeting is normally held in front of the task board.

This meeting is normally timeboxed to a maximum duration of 15 minutes, though this may need adjusting for larger teams. To keep the meeting short, any topic that starts a discussion is cut short, added to a “parking lot” list, and discussed in greater depth after the meeting, between the people affected by the issue.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

definition of done

A

The team agrees on, and displays prominently somewhere in the team room, a list of criteria which must be met before a product increment “often a user story” is considered “done”. Failure to meet these criteria at the end of a sprint normally implies that the work should not be counted toward that sprint’s velocity.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

definition of ready

A

By analogy with the “Definition of Done”, the team makes explicit and visible the criteria (generally based on the INVEST matrix) that a user story must meet prior to being accepted into the upcoming iteration.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

estimation

A

In software development, an “estimate”, in the usual sense, consists of a quantified evaluation of the effort necessary to carry out a given development task; this is most often expressed in terms of duration.

The intent is to agregate many such individual estimates, so as to obtain an indication of the overall duration, effort or cost of a software project.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

exploratory testing

A

Exploratory testing is, more than strictly speaking a “practice”, a style or approach to testing software which is often contrasted to “scripted testing”, and characterized by the following aspects among others:

it emphasizes the tester’s autonomy, skill and creativity, much as other Agile practices emphasize these qualities in developers;
it recommends performing various test-related activities (such as test design, test execution, and interpretation of results) in an interleaved manner, throughout the project, rather than in a fixed sequence and at a particular “phase”;
it emphasizes the mutually supportive nature of these techniques, and the need for a plurality of testing approaches rather than a formal “test plan”

Agile teams tend to shift and redraw the role boundaries between “developer” and “tester”, mostly as a result of the heavy use by developers of automated unit and functional tests - in one sense an extreme form of scripted testing. These activities are not sufficient to ensure quality, and Agile teams can find valuable assets in team members who have well-developed testing skills (whether or not their job description includes the term “tester”). These skills will be deployed more effectively in the exploratory style on an Agile team, as this style is more consistent with an Agile approach than the “scripted testing” style.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

facilitation

A

A facilitator is a person who chooses or is given the explicit role of conducting a meeting. This role usually entails that the facilitator will take little part in the discussions on the meeting’s topic, but will focus primarily on creating the conditions for effective group processes, in the pursuit of the objectives for which the meeting was convened.

Facilitation is a specialization of its own, the details of which go well beyond Agile practices; a good introduction is the material provided by the International Association of Facilitators.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

given - when - then

A

The Given-When-Then formula is a template intended to guide the writing of acceptance tests for a User Story:

(Given) some context
(When) some action is carried out
(Then) a particular set of observable consequences should obtain

An example:

Given my bank account is in credit, and I made no withdrawals recently,
When I attempt to withdraw an amount less than my card’s limit,
Then the withdrawal should complete without errors or warnings

Tools such as JBehave, RSpec or Cucumber encourage use of this template, though it can also be used purely as a heuristic irrespective of any tool.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

heartbeat retrospective

A

The team meets regularly, usually adhering to the rythm of its iterations, to explicitly reflect on the most significant events to have occurred since the previous such meeting, and take decisions aiming at remediation or improvement.

This is often a facilitated meeting following a set format. Several distinct formats have been described, depending in large part on the time set aside for the meeting, typically between one and three hours. One important reason to use a facilitated format is to give all team members an opportunity to speak up.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

incremental development

A

Nearly all Agile teams favor an incremental development strategy; in an Agile context, this means that each successive version of the product is usable, and each builds upon the previous version by adding user-visible functionality. These are called “vertical” increments (that is, difference between successive product versions), as opposed to the opposite strategy which successively delivers complete technical components: for instance, creating a database schema, then building business rules on top of that, and only then implementing a UI. (This article offers a typical illustration of the distinction. It echoes the “layered cake” metaphor of software architecture: one can either cut along the horizontal layers, or vertically across them.) It is difficult to imagine an incremental approach in the Agile sense which is not also iterative, at least to some extent, but the two concepts are not identical. (They also prove surprisingly difficult to pin down, and are often the subject of heated semantic debates.)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

information radiators

A

“Information radiator” is the generic term for any of a number of handwritten, drawn, printed or electronic displays which a team places in a highly visible location, so that all team members as well as passers-by can see the latest information at a glance: count of automated tests, velocity, incident reports, continuous integration status, and so on.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

integration

A

The term “integration” (or “integrating”) refers to any efforts still required, after individual programmers, or sub-groups of programmers working on separate components, for a project team to deliver a product suitable for release as a functional whole.

For instance, if two developers, working in parallel, implement new features on two components A and B, and each thinks to their own satisfaction that the work is complete, then verifying that changes to A and B are consistent, and resolving any inconsistencies, belong in the category of integration.

Integration is often required at different levels: individual developers may work on components integrated into subsystems, which are in turn integrated with other teams’ subsystems to form a larger system, and so on.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

invest

A

The acronym INVEST helps to remember a widely accepted set of criteria, or checklist, to assess the quality of a user story. If the story fails to meet one of these criteria, the team may want to reword it, or even consider a rewrite (which often translates into physically tearing up the old story card and writing a new one).

A good user story should be:

“I” ndependent (of all others)
“N” egotiable (not a specific contract for features)
“V” aluable (or vertical)
“E” stimable (to a good approximation)
“S” mall (so as to fit within an iteration)
“T” estable (in principle, even if there isn’t a test for it yet)

23
Q

iteration

A

An iteration, in the context of an Agile project, is a timebox during which development takes place, the duration of which:

may vary from project to project, usually between 1 and 4 weeks
is in most cases fixed for the duration of a given project

A key feature of Agile approaches is the underlying assumption that a project consists excusively of a sequence of iterations, possibly with the exception of a very brief “vision and planning” phase prior to development, and a similarly brief “closure” phase after it.

In general iterations are aligned with calendar weeks, often starting on mondays and ending on fridays; this is more a matter of convenience than an explicit recommendation and many teams adopt different conventions.

The fixed length of iterations gives teams a simple way to obtain, based on velocity and the amount of work remaining, a usually accurate (though not very precise) estimation of the project’s remaining duration.

24
Q

iterative development

A

Agile projects are iterative insofar as they intentionally allow for “repeating” software development activities, and for potentially “revisiting” the same work products (the phrase “planned rework” is sometimes used; refactoring is a good example).

They are iterative in a third, less essential sense, in being most often structured around a series of iterations of fixed calendar length. However, some Agile approaches to scheduling, such as Kanban do away with iterations in this later sense, but retain the other aspects of multiple repetitions and planned rework.

Nearly all Agile projects are incremental as well as iterative. However, it is possible to use iterative strategies which are not also incremental; for instance, a “build it twice” strategy in which one first creates a throwaway prototype to gather user feedback, then uses insights from that experience to build the “real thing”. Prototyping is necessarily an iterative strategy, and may have been a precursor to the development of iterative software development ideas.

25
Q

kanban board

A

In the context of Agile teams where the “Kanban method” of continuous improvement (or some of its concepts) has been followed, the following adaptations are often seen:

such teams deemphasize the use of iterations, effort estimates and velocity as a primary measure of progress;
they rely on measures of lead time or cycle time instead of velocity;
and in the most visible alteration, they replace the task board with a “kanban board”:
unlike a task board, the kanban board is not “reset” at the beginning of each iteration
its columns represent the different processing states of a “unit of value”, which is generally (but not necessarily) equated with a user story
in addition, each column may have associated with it a “WIP limit” (for “work in process” or “work in progress”): if a given state, for instance “in manual testing”, has a WIP limit of, say, 2, then the team “may not” start testing a third user story if two are already being worked on
whenever such a situation arises, the priority is to clear current work-in-process, and team members will “swarm” to help those working on the activity that’s blocking flow

26
Q

lead time

A

“Lead time” is a term borrowed from the manufacturing method known as Lean or Toyota Production System, where it is defined as the time elapsed between a customer placing an order and receiving the product ordered.

Translated to the software domain, lead time can be described more abstractly as the time elapsed between the identification of a requirement and its fulfillment. Defining a more concrete measurement depends on the situation being examined: for instance, when focusing on the software development process, the “lead time” elapsed between the formulation of a user story and that story being used “in production”, that is, by actual users under normal conditions.

Teams opting for the kanban approach favor this measure, over the better known velocity. Instead of aiming at increasing velocity, improvement initiatives intend to reduce lead time.

27
Q

milestone retrospective

A

Once a project has been underway for some time, or at the end of the project (in that case, especially when the team is likely to work together again), all of the team’s permanent members (not just the developers) invests from one to three days in a detailed analysis of the project’s significant events.

Even more than an iteration retrospective, this should be a facilitated meeting, adhering to a structured format which varies according to objectives but will be specified in advance.

28
Q

mock objects

A

A technique commonly used in the context of crafting automated unit tests. It consists of instantiating a test-specific version of a software component (typically a class), which insteads of the normal behaviors provides precomputed results, and often also checks that it’s invoked as expected by the objects being tested.

For instance, the “mock” version of a database component will a) provide “canned” answers to database queries, instead of connecting to a real live database, and b) verify that the database is being accessed in the manner expected and stipulated in the test.

29
Q

niko-niko calendar

A

The team installs a calendar one one of the room’s walls. The format of the calendar allows each team member to record, at the end of every workday, a graphic evaluation of their mood during that day. This can be either a hand-drawn “emoticon”, or a colored sticker, following a simple color code, for instance: blue for a bad day, red for neutral, yellow for a good day. Over time, the niko-niko calendar reveals patterns of change in the moods of the team, or of individual members.

30
Q

pair programming

A

Pair programming consists of two programmers sharing a single workstation (one screen, keyboard and mouse among the pair). The programmer at the keyboard is usually called the “driver”, the other, also actively involved in the programming task but focusing more on overall direction is the “navigator”; it is expected that the programmers swap roles every few minutes or so.

31
Q

personas

A

When the project calls for it - for instance when user experience is a major factor in project outcomes - the team crafts detailed, synthetic biographies of fictitious users of the future product: these are called “personas”. (In Alan Cooper’s concise terms: “make up pretend users and design for them”.)

Personas are concise and visual; a common layout is a single page including a photograph (from stock shots or magazine cutouts), a name and social or professional details: “Amanda Jones, 34, press officer at a major food retailing organization, etc.”

As a software product is generally intended for use by more than one category of person, with potentially different preferences and expectations of the product, the team creates one persona for each category it deems important to serve well.

The biographies are displayed in the team room.

32
Q

planning poker

A

A playful approach to estimation, used by many Agile teams.

The team meets in presence of the customer or Product Owner. Around the table, each team member holds a set of playing cards, bearing numerical values appropriate for points estimation of a user story.

The Product Owner briefly states the intent and value of a story. Each member of the development team silently picks an estimate and readies the corresponding card, face down. When everyone has taken their pick, the cards are turned face up and the estimates are read aloud.

The two (or more) team members who gave the high and low estimate justify their reasoning. After brief discussion, the team may seek convergence toward a consensus estimate by playing one or more further rounds.

33
Q

points (estimates in)

A

Agile teams generally prefer to express estimates in units other than the time-honored “man-day” or “man-hour”. Possibly the most widespread unit is “story points”.

One of the chief reasons is the use of velocity for planning purposes. “Velocity”, in the sense Agile teams use the term, has no preferred unit of measurement, it is a dimensionless quantity. Velocity allows teams to compute the expected remaining duration of the project, as a number of iterations, each iteration delivering some amount of features.

Another important reason has to do with the social and psychological aspects of estimation: using units such as story points, emphasizing relative difficulty over absolute duration, relieves some of the tensions that often arise between developers and managers around estimation: for instance, asking developers for an estimate then holding them accountable as if it had been a firm commitment.

34
Q

project chartering

A

The team develops and maintains a high-level summary of the project’s key success factors, synthetic enough that it can be displayed on one wall of the team room as a flipchart-sized sheet of paper. This description includes at least the major objectives of the project, scope boundaries, and reciprocal agreements between the project’s implementation team and external stakeholders.

35
Q

refactoring

A

Refactoring consists of improving the internal structure of an existing program’s source code, while preserving its external behavior.

The noun “refactoring” refers to one particular behaviour-preserving transformation, such as “Extract Method” or “Introduce Parameter”.

36
Q

relative estimation

A

Relative estimation is one of the several distinct flavors of estimation used in Agile teams, and consists of estimating tasks or user stories, not separately and in absolute units of time, but by comparison or by grouping of items of equivalent difficulty.

37
Q

role-feature-reason

A

The “role-feature-reason” template is one of the most commonly recommended aids (often outgrown once past the novice stage) for teams and product owners starting to write user stories:

As a
I want
So that

An example:

As a bank customer
I want to withdraw money from an ATM
So that I’m not constrained by opening hours or lines at the teller’s

38
Q

rules of simplicity

A

A set of criteria, in priority order, proposed by Kent Beck to judge whether some source code is “simple enough”:

the code is verified by automated tests, and all such tests pass
the code contains no duplication
the code expresses separately each distinct idea or responsibility
the code is composed of the minimum number of components (classes, methods, lines) compatible with the first three criteria

39
Q

story mapping

A

A recent practice intended to provided a more structured approach to release planning, story mapping consists of ordering user stories along two independent dimensions. The “map” arranges user activities along the horizontal axis in rough order of priority (or “the order in which you would describe activities to explain the behaviour of the system”). Down the vertical axis, it represents increasing sophistication of the implementation.

Given a story map so arranged, the first horizontal row represents a “walking skeleton”, a barebones but usable version of the product. Working through successive rows fleshes out the product with additional functionality.

40
Q

story splitting

A

Before a user story is ready to be scheduled for implementation in an upcoming iteration, it should be “small enough”, the usual rule of thumb being “a story that can be completed within the iteration”. However, many user stories start out larger than that. “Splitting” consists of breaking up one user story into smaller ones, while preserving the property that each user story separately has measurable business value.

41
Q

sustainable pace

A

The team aims for a work pace that they would be able to sustain indefinitely.

This entails a firm refusal of what is often considered a “necessary evil” in the software industry - long work hours, overtime, or even working nights or weekends. As such this “practice” is really more of a contract negotiated between the team and their management.

42
Q

task board

A

In its most basic form, a task board can be drawn on a whiteboard or even a section of wall. Using electrical tape or a dry erase pen, the board is divided into three columns labeled “To Do”, “In Progress” and “Done”. Sticky notes or index cards, one for each task the team is working on, are placed in the columns reflecting the current status of the tasks.

Many variants exist. Different layouts can be used, for instance by rows instead of columns (although the latter is much more common). The number and headings of the columns can vary, further columns are often used for instance to represent an activity, such as “In Test”.

The task board is updated frequently, most commonly during the daily meeting, based on the team’s progress since the last update. The board is commonly “reset” at the beginning of each iteration to reflect the iteration plan.

43
Q

TDD (test driven development)

A

“Test-driven development” refers to a style of programming in which three activities are tightly interwoven: coding, testing (in the form of writing unit tests) and design (in the form of refactoring).

It can be succinctly described by the following set of rules:

write a “single” unit test describing an aspect of the program
run the test, which should fail because the program lacks that feature
write “just enough” code, the simplest possible, to make the test pass
“refactor” the code until it conforms to the simplicity criteria
repeat, “accumulating” unit tests over time

44
Q

team

A

A “team” in the Agile sense is a small group of people, assigned to the same project or effort, nearly all of them on a full-time basis. A small minority of team members may be part-time contributors, or may have competing responsibilities.

The notion of team entails shared accountability: good or bad, the outcomes should be attributed to the entire team rather than to any individual.

The team is expected to possess all of the necessary competencies, whether technical (programming, designing, testing) or business (domain knowledge, decision making ability).

Roles and responsibilities do not matter as much as results: a developer may test, perform analysis or think about requirements; an analyst or domain expert can suggest ideas about implementation, and so on.

45
Q

team room

A

The team (ideally the whole team, including the product owner or domain expert) has the use of a dedicated space for the duration of the project, set apart from other groups’ activities.

This space is furnished with the various amenities that the team may need: workstations (adapted for pairing if the team uses that practice), whiteboards and flipcharts, wall space to display task boards, project plans or other charts, and so on.

46
Q

the three C’s

A

“Card, Conversation, Confirmation”; this formula (from Ron Jeffries) captures the components of a User Story:

a “Card” (or often a Post-It note), a physical token giving tangible and durable form to what would otherwise only be an abstraction:
a “conversation” taking place at different time and places during a project between the various people concerned by a given feature of a software product: customers, users, developers, testers; this conversation is largely verbal but most often supplemented by documentation;
the “confirmation”, finally, the more formal the better, that the objectives the conversation revolved around have been reached.

47
Q

three questions

A

The daily meeting is structured around some variant of the following three questions:

What have you completed since the last meeting?
What do you plan to complete by the next meeting?
What is getting in your way?

48
Q

timebox

A

A timebox is a previously agreed period of time during which a person or a team works steadily towards completion of some goal. Rather than allow work to continue until the goal is reached, and evaluating the time taken, the timebox approach consists of stopping work when the time limit is reached and evaluating what was accomplished.

Timeboxes can be used at varying time scales. The “pomodoro technique” organizes personal work around 25-minute timeboxes. In a completely different domain “speed dating” is known for its seven-minute timeboxes. Time scales ranging from one day to several months have been used.

The critical rule of timeboxed work is that work should stop at the end of the timebox, and review progress: has the goal been met, or partially met if it included multiple tasks?

49
Q

ubiquitous language

A

A design approach described in Eric Evans’ “Domain Driven Design” (2003), which consists notably of striving to use the vocabulary of a given business domain, not only in discussions about the requirements for a software product, but in discussions of design as well and all the way into “the product’s source code itself”.

(Evans’ book details other complementary techniques, but the name “ubiquitous language” conveys the main intention.)

50
Q

unit testing

A

A unit test, as Agile teams understand the term, is a short program fragment written and maintained by the developers on the product team, which exercises some narrow part of the product’s source code and checks the results. The outcome of a unit test is binary: either “pass” if the program’s behavior is consistent with the recorded expectations, or “fail” otherwise. Developers will typically write a large number of unit tests (corresponding to a large number of program behaviors of interest), called a “test suite”. By common convention dating back at least to the JUnit family of tools, the color red (as in “getting a red bar”) represents the failure of one or more tests. The color green (“a green bar”) denotes successful execution of “all” unit tests associated with a program.

51
Q

usability testing

A

Usability testing is a long-established, empirical and exploratory technique to answer questions such as “how would an end user respond to our software under realistic conditions?”

It consists of observing a representative end user interacting with the product, given a goal to reach but no specific instructions for using the product. (For instance, a goal for usability testing of a furniture retailer’s Web site might be “You’ve just moved and need to do something about your two boxes of books; use the site to find a solution.”)

Members of the team (possibly including usability specialists) observe the user’s actions without intervening, recording what transpires (either informally, e.g. taking notes, or more comprehensively, using video, eye-tracking, screen captures or specialized software). Post-test analysis will focus on any difficulties encountered by the user, illustrating differences between the team’s assumptions and actual behaviour.

52
Q

user stories

A

In consultation with the customer or product owner, the team divides up the work to be done into functional increments called “user stories”.

Each user story is expected to yield, once implemented, a contribution to the value of the overall product, irrespective of the order of implementation; these and other assumptions as to the nature of user stories are captured by the INVEST formula.

To make these assumptions tangible, user stores are reified into a physical form: an index card or sticky note, on which a brief descriptive sentence is written to serve as a reminder of its value. This emphasizes the “atomic” nature of user stories and encourages direct physical manipulation: for instance, decisions about scheduling are made by physically moving around these “story cards”.

53
Q

velocity

A

At the end of each iteration, the team adds up effort estimates associated with user stories that were completed during that iteration. This total is called velocity.

Knowing velocity, the team can compute (or revise) an estimate of how long the project will take to complete, based on the estimates associated with remaining user stories and assuming that velocity over the remaining iterations will remain approximately the same. This is generally an accurate prediction, even though rarely a precise one.

54
Q

version control

A

Version control is not strictly speaking an Agile “practice”, insofar as it is now (fortunately) widespread in the industry as a whole.

It must however be mentioned here for several reasons:

though they are rare, one still occasionally stumbles across teams with outdated version control tools or practices, and even teams who haven’t adopted version control tools at all
version control is not merely “good practice” but an enabler of a number of Agile practices, such as continuous integration
the Agile community leans toward particular types of tools and practices, namely the same as the Open Source community: systems that afford concurrent work (“merge” model rather than “lock”), and more recently favoring distributed over centralized models
it is therefore beneficial for an Agile team to explicitly reflect on its version control policies and infrastructure, and ensure that they and its engineering practices work harmoniously together.