Monday, December 21, 2009

Requirements

Requirements artifacts are the documents that are created, managed, and published by business analysts or product management to define the scope and content of the development project.

Requirements must be captured and tracked in a version control system just like any other class of project artifact. In addition, specific requirements must be labeled in a way that allows items to be tracked through the entire life cycle: specifications, implementation, test, release, and support.

The granularity or specificity of the labels employed depends on the rigor of the project. A product with very high quality standards, such as a medical application, will have very detailed requirements that can be tracked in precise detail.

Requirements are often sketched out in natural language and carry informal instruction to the design specification team. A very effective way to organize functional requirements is to use the concepts of User Roles and Scenarios to develop Use cases. This process creates a formal model of the system. The model can then be analyzed to create formals specification of the components of the system.

An advantage of this approach is that formal requirements and specifications can be created as relatively small modules that can be worked on separately. This allows development and test of the modules or components of the system to proceed in parallel and supports the use of an Agile development process.

Friday, December 18, 2009

Customer to Requirements

Customer reports are triaged into categories. Some will be treated as defects in the product.

Defect reports must be prioritized and fed back into the development cycle at the appropriate point. For example, critical defects can be sent directly to development for action while defects with low impact can be sent to design specification group for consideration.

Many customer requests are valuable inputs to the product management, analysis, and requirements gathering process.

All customer reports must be captured in a database, typically one that is optimized for the purpose, called a defect tracking system.

Customer to Implementation

The users, clients, or customers have a direct link to the implementation when the product plans include a maintenance cycle.

Customer reports of problems go to triage, first in Support and later in Engineering. Reports that are approved by both support and engineering as Defects become work items for development and then part of the implementation. A mature process will include ways to expedite this flow.

Test Results to Customer

Test results are usually not shared with customers in detail.

An important measurement of release readiness is test coverage and success rates.

The customer typically gets the results of test results in the form of an available release.

Implementation to Customer

Implementation artifacts delivered to the customer must match the artifacts delivered to test.

It is possible for parts of the implementation to be withheld from the customer, so the released executable code is often a subset of the tested executable code.

The implementation may include internal support for test execution and performance profiling. These features may be turned off for the customer if they affect the behavior or performance of the product.

Another category of implementation artifacts that go directly to customers is screenshots included in documentation.

Implementation to Test

Implementation artifacts - primarily executable code - are the primary channel of information from development to test execution.

Implementation status is another important part of the flow of information. For example, in a large project some parts of the implementation will be ready before others. If the implementation strategy provides a complete testable interface with incomplete logic behind the interface then the test efforts can be directed toward the most advanced parts of the implementation. The test results can to some extent be predicted.

Specifications to Customer Documentation

Design Specifications are an important base of information for user or customer documentation.