Work Product (Artifact): Build
This artifact produces 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. A build comprises one or more implementation elements (often executable), each constructed from other elements, usually by a process of compilation and linking of source code.
Purpose

The purpose of a build, constructed from other elements in the implementation, is to deliver a testable subset of the run-time functions and capabilities of the system. The Rational Unified Process (RUP) suggests that a sequence of builds be constructed during an iteration, adding capability with each, as elements from implementation subsystems are added or improved.  Builds can be constructed at all levels of a system, encompassing single or multiple subsystems, but in the RUP, we are concerned in particular with the builds that are defined in the Artifact: Integration Build Plan, because these are the stepping stones to the completion of the iteration.  If the system size or complexity warrants it, the Integration Build Plan can be refined into multiple plans, covering individual subsystems.

Note that informal builds can be constructed by an implementer for several reasons - unit testing, for example - using elements from the implementer's private development workspace and the subsystem and system integration workspaces, as appropriate. However, as the term is used here, builds are constructed by an integrator, from identified versions of elements delivered by the implementers into the subsystem or system integration workspaces, as defined in the Artifact: Integration Build Plan.

Relationships
Input ToMandatory: Optional:
  • None
External:
  • None
Properties
Optional
PlannedYes
Tailoring
Representation OptionsUML Representation: Package in the implementation model (either its top-level package or an implementation subsystem), stereotyped as <<build>>. 

Builds are obviously mandatory, however, the kinds of builds that a project produces will change over the lifecycle. In the inception phase, the concern may be to produce prototypes as a way to better understand the problem or communicate with the customer; in elaboration, to produce a stable architecture, and in construction, to add functionality. In transition, the focus shifts to ensuring that the software reaches deliverable quality.



More Information