|
| Architecture | |
|
This discipline explains how to create software architecture from architecturally significant requirements.
|
Outline the Architecture |
This task is where the "vision" for the architecture is developed through analysis of the architecturally significant requirements and identification of architectural constraints, decisions and objectives.
| Developer; System Architect; Analyst; Project Manager |
|
Refine the Architecture |
Refine the architecture to an appropriate level of detail to support development. This task builds upon the outlined architecture and makes concrete and unambiguous architectural decisions to support development.
| Developer; System Architect; Project Manager |
 | Architecture Notebook |
This artifact describes the rationale, assumptions, explanation, and implications of the decisions that were made in forming the architecture.
|
|
| Development | |
|
This discipline explains how to design and implement a technical solution that conforms to the architecture and supports the requirements.
The purpose of this discipline is to:
* Transform the requirements into a design of the system-to-be * Adapt the design to match the implementation environment * Build the system incrementally * Verify that the technical units used to build the system work as specified
With each iteration, the tasks in this discipline will evolve an ever more-capable and ever more-stable Build.
|
Design the solution |
Identify the elements and devise the interactions, behavior, relations, and data necessary to realize some functionality.
| Developer; Tester; System Architect; Analyst |
|
Implement Developer Tests |
Implement one or more tests that enable the validation of the individual implementation elements through execution.
| Developer; Tester |
|
Implement Solution |
Implement source code to provide new functionality or fix defects.
| Developer; Tester |
|
Integrate and Create Build |
Integrate all changes made by all developers into the code base and perform the minimal testing on the system increment in order to validate the build. Identify integration issues as soon as possible, so they can be corrected easily by the right person, at the right time.
| Developer |
|
Run Developer Tests |
Run tests against the individual implementation elements to verify that their internal structures work as specified.
| Developer |
 | Build |
An operational version of a system or part of a system that demonstrates a subset of the capabilities to be provided in the final product.
|
 | Design |
This artifact describes the realization of required system functionality and serves as an abstraction of the source code. Can describe multiple static and dynamic views of the system for examination. Although various views may focus on divergent, seemingly independent issues of how the system will be put together and work, they should fit together without contradiction.
|
 | Developer Test |
This artifact covers all of the steps to validate a specific aspect of an implementation element. For example, a test could ensure that the parameters of a method properly accept the uppermost and lowermost required values. A developer test specifies test entries, execution conditions, and expected results. These details are identified to evaluate a particular aspect of a scenario.
|
 | Implementation |
Software code files, data files, build scripts and supporting files (such as online help files) that represent the raw parts of a system that can be built.
|
|
| Project Management | |
|
This discipline explains how to coach, facilitate, and support the team, helping it to deal with risk and obstacles found when building software.
The purpose of this discipline is to:
* Encourage stakeholder consensus on prioritizing the sequence of work * Stimulate team collaboration on creating long-term and short-term plans for the project. * Focus the team on continually delivering tested software for stakeholder evaluation * Help create an effective working environment to maximize team productivity * Keep stakeholders and the team informed of project progress * Provide a framework to manage project risk and continually adapt to change
Project Management is an umbrella discipline that impacts, and is impacted by, all other disciplines. Project management activities add value to creating a high-performance work environment where:
* Stakeholders trust in the team's ability to successfully deliver value and understand the capabilities and tradeoffs of the technical platform * Project team members understand stakeholder intentions and confirm that understanding by continually producing a working software product for evaluation
|
Assess Results |
Coordinate the assessment and discuss with the team how the iteration results will be best presented to stakeholders, so that they can learn as much about the solution as possible. Listen to what the team has to say about what went wrong (and what went right) during the iteration. This knowledge will help everybody make informed decisions about the next iteration planning, and determine the best course of action for the project. This task is performed at the end of every iteration until the end of the project.
| Developer; Tester; Analyst; Project Manager |
|
Manage Iteration |
Assess project status and identify any blocking issues and opportunities. Identify and manage exceptions, problems, and risks. Communicate project status.
| Developer; Tester; System Architect; Analyst; Project Manager |
|
Plan Iteration |
Plan the scope and responsibilities for a single iteration.
| Developer; Tester; System Architect; Analyst; Project Manager |
|
Plan Project |
A collaborative task that outlines an initial agreement on how the project will achieve its goals. The resulting project plan provides a summary-level overview of the project.
| Developer; Tester; System Architect; Analyst; Project Manager |
|
Request Change |
Capture and record change requests.
| Developer; Project Manager |
 | Iteration Plan |
The main objectives of the iteration plan are to provide the team with: - One central place for information regarding iteration objectives
- A detailed plan with task assignments
- Evaluation results
This artifact also helps the team to monitor the progress of the iteration, and keeps the results of the iteration assessment that may be useful for improving the next one.
|
 | Project Plan |
The purpose of this artifact is to provide a central document where any project team member can find the information on how the project will be conducted.
This artifact describes how the project is organized, and identifies what practices will be followed. Additionally, it defines the parameters for tracking project progress, and specifies the high-level objectives of the iterations and their milestones. The project plan allows stakeholders and other team members to understand the big picture and, roughly, when to expect a certain level of functionality be available. Update the plan as often as necessary, usually at the end of each iteration, in order to reflect changing priorities and needs, as well as record the lessons learned from the project.
|
 | Risk List |
This artifact is a sorted list of known and open risks to the project, sorted in order of importance and associated with specific mitigation or contingency actions.
|
 | Work Items List |
This artifact contains a list of all of the scheduled work to be done within the project, as well as proposed work that may affect the product in this or future projects. Each work item may contain references to information relevant to carry out the work described within the work item.
|
|
| Requirements | |
|
This discipline explains how to elicit, analyze, specify, validate, and manage the requirements for the system to be developed.
The purpose of this discipline is to:
* Understand the problem to be solved * Understand stakeholder needs (what users want) * Define the requirements for the solution (what the system must do) * Define the boundaries (scope) of the system * Identify external interfaces for the system * Identify technical constraints on the solution * Provide the basis for planning iterations * Provide the initial basis for estimating cost and schedule
To achieve these goals, it is important to understand the definition and scope of the problem that you are trying to solve. Identify Stakeholders and define the problem to be solved. Having agreed on the problem to be solved, the Requirements for the system are elicited, organized, analyzed, validated, and specified.
|
Detail System-Wide Requirements |
This task details one or more requirement that does not apply to a specific use case.
| Developer; Tester; System Architect; Analyst |
|
Detail Use-Case Scenarios |
Describe use-case scenarios in sufficient detail to validate understanding of the requirements, to ensure concurrence with stakeholder expectations, and to permit software development to begin.
| Developer; Tester; System Architect; Analyst |
|
Develop Technical Vision |
Define the vision for the future system. Describe the problem and features based on stakeholder requests.
| System Architect; Analyst; Project Manager |
|
Identify and Outline Requirements |
Identify and outline the requirements for the system so that the scope of work can be determined.
| Developer; Tester; System Architect; Analyst |
|
| Test | |
|
This discipline explains how to provide feedback about the maturing system by designing, implementing, running, and evaluating tests.
The purpose of this discipline is to:
* Provide early and frequent feedback about whether the system satisfies the requirements * Objectively measure progress in small increments * Identify issues with the solution, increasing the probability that the system will behave correctly * Provide assurance that changes to the system do not introduce new defects * Improve velocity by facilitating the discovery of issues with requirements, designs, and implementations as early as possible
The Test discipline is iterative and incremental. It applies the strategy of "test early and test often" to retire risks as early as possible in the system's lifecycle.
Testing occurs in each iteration of the lifecycle, beginning with the earliest builds of the system. In fact, it is common for one iteration to have many test cycles, depending on the frequency of new builds.
Testing asks the question: "What does the solution have to do for us to consider a requirement implemented?" Tests elaborate on the requirements with specific conditions of satisfaction that the solution must meet.
This discipline challenges the assumptions, risks, and uncertainty inherent in the development of highly technical artifacts and addresses those concerns by using concrete demonstration and impartial evaluation.
|
Create Test Cases |
Develop the test cases and test data for the requirements to be tested.
| Developer; Tester; Analyst |
|
Implement Tests |
Implement Test Scripts to validate a Build of the solution. Organize Test Scripts into suites, and collaborate to ensure appropriate depth and breadth of test feedback.
| Developer; Tester; Analyst |
|
Run Tests |
Run the appropriate tests scripts, analyze results, articulate issues, and communicate test results to the team.
| Tester |
 | Test Case |
This artifact is the specification of a set of test inputs, execution conditions, and expected results that you identify to evaluate a particular aspect of a scenario.
Use this artifact for the following purposes: - To provide a way to capture test inputs, conditions, and expected results for a system
- To systematically identify aspects of the software to test
- To specify whether an expected result has been reached, based on the verification of a system requirement, set of requirements, or scenario
|
 | Test Log |
This artifact collects the raw output that is captured during a unique run of one or more tests for a single test cycle run.
This artifact provides a detailed, typically time-based record that both verifies that a set of tests were run, and provides information that relates to the success of those tests. The focus is typically on providing an accurate audit trail, which enables you to undertake a post-run diagnosis of failures. This raw data is subsequently analyzed to determine the results of an aspect of the test effort.
|
 | Test Script |
This artifact contains the step-by-step instructions that compose a test, enabling its run. Text scripts can take the form of either documented textual instructions that are manually followed, or computer-readable instructions that enable automated testing.
Test scripts implement a subset of required tests in an efficient and effective manner.
|
|
| |