Tool Mentor: Maintaining Subsystem Requirements in DOORS
This tool mentor describes how to maintain the subsystem requirements specification in DOORS.
Tool: IBM Rational DOORS
Main Description

Introduction

This tool mentor describes how to develop and maintain the Subsystem Requirements Specification held in DOORS.

Open the Relevant Subsystem Requirements Specification

Note that there will most likely be several Subsystem Requirement Specifications for the various systems. Open the relevant Subsystem Requirements Specification and open the System Requirements Specification.

Create Structure for Subsystem Requirements Specification

Review the structure of the provided template and make changes to create a structure that is appropriate for the current project.

  1. Examine the structure of the Subsystem Requirements Specification module
  2. Determine if the overall structure is correct and make necessary changes
  3. Make any changes necessary to the Specific Requirements Section
    1. In Section 3, create an appropriate structure for the Functional Requirements. This has been left empty deliberately as it is not possible to create a structure that suits all types of project.
    2. In Sections 4 and 5, add and remove subsections as appropriate for the current project.
  4. If you have made any changes, use the view "02 - Types" to check that all objects have the correct Type allocation.

Create content for introductory sections

Follow the guidance in the module to populate the introductory sections.

  1. Set the view to "01 - Guidance".
  2. Create content in the introductory sections as indicated by the Guidance column.

Create Functional Requirements

Create objects in the specification to satisfy the requirements in the System Requirements Specification.

  1. Open the Subsystem Requirements Specification (if not already open).
  2. Set the view in the Subsystem Requirements Specification to "04 - Associated System Requirements"
  3. Open the System Requirements Specification (if not already open).
  4. Set the view in the System Requirements Specification to "09 – Associated Subsystem Requirements"
  5. For each Functional Requirement in the System Requirements Specification that is relevant to the current subsystem, create necessary requirements in the appropriate subsections within Section 3 in the Subsystem Requirements Specification.
    1. If you edit or copy the objects with "Replace Text" from these sections, the requirements that you create will have the appropriate default attribute values.
    2. Alternatively, use the built-in Copy Objects tool (Tools -> Functions -> Copy Objects...), ensuring that you set the appropriate values for:
      1. Target Module (the current Subsystem Requirements Specification)
      2. Copy (as appropriate, generally "Current Object only" or "Current object with children")
      3. New position (generally "Below" a Heading or "After" text)
      4. Attributes (Comments, Object Heading, Object Short Text, Object Text, Type)
      5. Create Links (On, Target to Source)
  6. Whichever approach you use, ensure that the resulting requirements are correctly formed system requirements and they satisfy the source System requirements.

Create Other Non-functional Requirements

Create objects in the specification to satisfy the other requirements in the System Requirements Specification and System Architecture Model

  1. Open the Subsystem Requirements Specification (if not already open).
  2. Follow the same procedure as for Functional Requirements except:
    1. Generate non-functional requirements based on the system architecture model and those in the "Other Non-Functional Requirements" sections of the System Requirements Specification.
    2. Place the generated requirements in the appropriate subsections in the Other Non-functional Requirements sections.

Review Type allocations

  1. Open the Subsystem Requirements Specification (if not already open).
  2. Set the view to "02 - Types"
  3. Ensure each object in the module has the appropriate value set for the Type attribute

Analyze Requirements

  1. Open the Subsystem Requirements Specification (if not already open).
  2. Set the view to "03 - Analysis"
  3. Ensure each object in the module has the appropriate value set for the displayed attributes.

Create Traceability

Traceability is key to the process, so must be put in place as soon as possible. When better than at the time you create the traceable elements?

Traceability to System Requirements

  1. Open the Subsystem Requirements Specification (if not already open).
  2. Set the view to "04 - Associated System Requirements"
  3. Open the System Requirements Specification (if not already open).
  4. Set the view to "09 - Associated Subsystem Requirements" 
  5. For each Subsystem Requirement, ensure that it is linked to at least one System Requirement in the System Requirement Specification
  6. Use the view "05 - Orphan Requirements" in the Subsystem Requirements Specification (filtered to show Subsystem Requirements with no matching System Requirement) to check that all requirements are linked as necessary.

Traceability to Subsystem Blocks

  1. Open the Subsystem Requirements Specification (if not already open).
  2. Set the view to "07 - Associated Subsystem Blocks"
  3. For each Requirement, ensure that, if appropriate, it is linked to system elements in the System Architectural Model.

Maintain the Subsystem Requirements Specification throughout the lifecycle

As change requests are received, update appropriate sections as above. To view the history of changes for the module, use File -> Module Properties -> History. To view the history of changes for a single object, use Edit -> Object -> Properties -> History.

DOORS provides extensive tools to manage traceability, for example for impact and coverage analysis. For more assistance, see "Tracking changes and traceability" in the online DOORS Help file.