Introduction to Sphinx-Needs

Define a Need

Documentation: How-to work with Sphinx-Needs Need [1].

Example 1: How-to create a Need.

.. req:: Example Requirement
   :id: R_EXAMPLE_REQUIREMENT
   :status: new

   This is our example requirement.


.. spec:: Example Specification
   :id: S_EXAMPLE_SPECIFICATION
   :status: new
   :links: R_EXAMPLE_REQUIREMENT

   This is our example Specification.

Minimum need

With needs_title_optional it is even possible to skip the title.

Example 2: Minimum Need.

.. need::
   :id: N_MINIMUM_NEED

So the bare minimum need only has a :id:.

Types

Documentation: How-to configure Sphinx-Needs Types [2].

Options

Documentation: How-to configure Sphinx-Needs Options [3].

The special option :id:, has to be unique within the current project. It is often useful, you write self speacking id’s which even can be easly reviewed. Additionally you can use auto generated ids via IDE extension or scripting see https://github.com/useblocks/sphinx-needs/issues/728. A discussion how ID’s could be generated accross organisations is currently ongoing in https://github.com/useblocks/sphinx-needs/discussions/1088#discussioncomment-8131189.

Reference to Needs

Documentation: How-to use Sphinx-Needs Reference to Needs [5].

Example 3: Reference to Needs

:need:`R_EXAMPLE_REQUIREMENT` is here like a customer requirement,
where the :need:`[[title]] in [[status]] ([[id]]) <S_EXAMPLE_SPECIFICATION>` is our derived specification.

Example Requirement (R_EXAMPLE_REQUIREMENT) is here like a customer requirement, where the Example Specification in new (S_EXAMPLE_SPECIFICATION) is our derived specification.

Embedded a Need in a Need

Example 4: Embedded a Need in a Need

.. need:: Parent
   :id: N_PARENT

   Here is some text before the embedded need. You could even write any other rst text.

   .. need:: Child
      :id: N_CHILD

      Here is some text inside of the embedded need. You could even write any other rst text.

   Here is some text after the embedded need. You could even write any other rst text.

NeedPart

Example 5: Need with needpart, linking to parts and filter

.. need:: Test need with need parts
   :id: N_NEED_WITH_PARTS
   :tags: needpart_example

   :np:`(1) Part 1 of need`.

   :np:`(2) Part 2 of need`.

   Part :np:`(3)` of need.

.. need:: Need links to part 1
   :id: N_LINK_TO_PART1
   :tags: needpart_example
   :links: N_NEED_WITH_PARTS.1

.. need:: Need links to part 2 and 3
   :id: N_LINK_TO_PART2
   :tags: needpart_example
   :links: N_NEED_WITH_PARTS.2, N_NEED_WITH_PARTS.3

   We link to :need:`N_NEED_WITH_PARTS.2` and :need:`N_NEED_WITH_PARTS.3`.

.. needtable::
   :tags: needpart_example
   :filter: is_need
   :show_parts:
   :columns: id;title;outgoing;incoming
   :style: table

External Projects

To reuse needs from another project, you can use the following possiblities to readin needs from another project.

needs_external_needs

With needs_external_needs you can import the needs.json from another project. The needs are avaialbe in the memory of the current sphinx-nneds build, but all links jump to another web-project / web-server.

We have add an external project already referenced within this documentation:

Listing 3 How-to add a external project
405needs_external_needs = [
406    {
407        'base_url': 'https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io',
408        'json_url':  'https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/needs.json',
409        'css_class': 'external_link',
410    },
411]

Needs are read from the other project, marked as external, and can be used as they would be created within this project. You can find filters, which use the imported needs in all following reports.

needimport

Yo can even import the needs from another project, but the needs are rendered within your project. An example of the usage of needimport can be found under Sphinx-Needs: Import Needs.

Filter

Documentation: How-to use Sphinx-Needs Filters [6].

We use these filters in different exampls within this document in the following reports.

NeedPie

Documentation: How-to use Sphinx-Needs NeedPie [7].

Example 6: How-to use a NeedPie.

.. needpie:: Ratio of requirement types
   :labels: Stakeholder Requirement, Software Requirement, Evaluation

   type == 'stake_req' and is_external == True
   type == 'sw_req' and is_external == True
   type == 'evaluation' and is_external == True
_images/need_pie_241de.svg

NeedBar

Documentation: How-to use Sphinx-Needs NeedBar [8].

Example 7: How-to use a NeedBar.

.. needbar:: Requirements & Status Overview
   :legend:
   :colors: black, yellow, orange, green
   :xlabels: FROM_DATA
   :ylabels: FROM_DATA

              ,        Stakeholder Requirement             ,           Software Requirement
         empty, type=='stake_req' and status==''           ,    type=='sw_req' and status==''
      accepted, type=='stake_req' and status=='accepted'   ,    type=='sw_req' and status=='accepted'
   implemented, type=='stake_req' and status=='implemented',    type=='sw_req' and status=='implemented'
      verified, type=='stake_req' and status=='verified'   ,    type=='sw_req' and status=='verified'
Requirements & Status Overview

NeedTable

Documentation: How-to use Sphinx-Needs NeedTable [9].

Example 8: How-to use a NeedTable.

.. needtable:: List of software requirements
   :types: sw_req
   :style: table
   :columns: id; title; status
List of software requirements

ID

Title

Status

Allow double definitions of same Key / Value

verified

Detect merge conflicts

verified

Definition: list of dictionaries

verified

Merge python dictionaries

verified

Name of the tool: merge_dicts

verified

Output in merge conflict case

verified

Example 9: How-to use a NeedTable II.

.. needtable:: List of stakeholder requirements
   :types: stake_req
   :style: datatables
   :columns: id; title; status; is_external as "External"
List of stakeholder requirements

ID

Title

Status

External

01-00

Configuration item

new

False

01-03

Software item

new

False

01-50

Integrated software

new

False

01-51

Application parameter

new

False

02-00

Contract

new

False

02-00_old

Contract

new

False

02-01

Commitment/agreement

new

False

02-01_old

Commitment / agreement

new

False

02-50

Interface agreement

new

False

03-00

Data

new

False

03-03

Benchmarking data

new

False

03-04

Customer satisfaction data

new

False

03-06

Process performance data

new

False

04-00

Design

new

False

04-02

Domain architecture

new

False

04-03

Domain model

new

False

04-04

Software architectural design

new

False

04-04_old

Software architectural design

new

False

04-05

Software detailed design

new

False

04-05_old

Software detailed design

new

False

04-06

System architectural design

new

False

04-06_old

System architectural design

new

False

05-00

Goals

new

False

06-00

User documentation

new

False

06-01

Customer manual

new

False

06-02

Handling and storage guide

new

False

06-04

Training material

new

False

07-00

Measure

new

False

07-01

Customer satisfaction survey

new

False

07-02

Field measure

new

False

07-03

Personnel performance measure

new

False

07-04

Process measure

new

False

07-05

Project measure

new

False

07-06

Quality measure

new

False

07-07

Risk measure

new

False

07-07_old

Risk measure

new

False

07-08

Service level measure

new

False

08-00

Plan

new

False

08-04

Configuration management plan

new

False

08-12

Project plan

new

False

08-13

Quality plan

new

False

08-14

Recovery plan

new

False

08-14_old

Recovery plan

new

False

08-16

Release plan

new

False

08-17

Reuse plan

new

False

08-18

Review plan

new

False

08-19

Risk management plan

new

False

08-19_old

Risk management plan

new

False

08-20

Risk mitigation plan

new

False

08-20_old

Risk mitigation plan

new

False

08-26

Documentation plan

new

False

08-27

Problem management plan

new

False

08-28

Change management plan

new

False

08-29

Improvement plan

new

False

08-50

Test specification

new

False

08-50_old

Test specification

new

False

08-51

Technology monitoring plan

new

False

08-52

Test plan

new

False

08-52_old

Test plan

new

False

09-00

Policy

new

False

09-03

Reuse policy

new

False

10-00

Process description

new

False

11-00

Product

new

False

11-03

Product release information

new

False

11-04

Product release package

new

False

11-05

Software unit

new

False

11-05_old

Software unit

new

False

11-06

System

new

False

11-07

Temporary solution

new

False

12-00

Proposal

new

False

12-01

Request for quotation

new

False

12-01_old

Request for proposal

new

False

12-03

Reuse proposal

new

False

12-04

Supplier proposal response

new

False

13-00

Record

new

False

13-01

Acceptance record

new

False

13-01_old

Acceptance record

new

False

13-04

Communication record

new

False

13-04_old

Communication record

new

False

13-05

Contract review record

new

False

13-06

Delivery record

new

False

13-07

Problem record

new

False

13-08

Baseline

new

False

13-09

Meeting support record

new

False

13-10

Configuration management record

new

False

13-13

Product release approval record

new

False

13-14

Progress status record

new

False

13-14_old

Progress status record

new

False

13-15

Proposal review record

new

False

13-16

Change request

new

False

13-16_old

Change request

new

False

13-17

Customer request

new

False

13-18

Quality record

new

False

13-19

Review record

new

False

13-19_old

Review record

new

False

13-20

Risk action request

new

False

13-20_old

Risk action request

new

False

13-21

Change control record

new

False

13-22

Traceability record

new

False

13-22_old

Traceability record

new

False

13-24

Validation results

new

False

13-24_old

Validation results

new

False

13-25

Verification results

new

False

13-25_old

Verification results

new

False

13-50

Test results

new

False

13-50_old

Test results

new

False

14-00

Register

new

False

14-01

Change history

new

False

14-02

Corrective action register

new

False

14-02_old

Corrective action register

new

False

14-05

Preferred suppliers register

new

False

14-05_old

Preferred suppliers register

new

False

14-06

Schedule

new

False

14-08

Tracking system

new

False

14-08_old

Tracking system

new

False

14-09

Work breakdown structure

new

False

14-11

Work product list

new

False

14-50

Stakeholder groups list

new

False

14-51

Cybersecurity scenario register

new

False

14-52

Asset library

new

False

15-00

Report

new

False

15-01

Analysis report

new

False

15-01_old

Analysis report

new

False

15-03

Configuration status report

new

False

15-05

Evaluation report

new

False

15-06

Project status report

new

False

15-07

Reuse evaluation report

new

False

15-08

Risk analysis report

new

False

15-08_old

Risk analysis report

new

False

15-09

Risk status report

new

False

15-09_old

Risk status report

new

False

15-12

Problem status report

new

False

15-13

Assessment/audit report

new

False

15-16

Improvement opportunity

new

False

15-18

Process performance report

new

False

15-21

Supplier evaluation report

new

False

15-21_old

Supplier evaluation report

new

False

15-50

Vulnerability analysis report

new

False

16-00

Repository

new

False

16-03

Configuration management system

new

False

16-06

Process repository

new

False

17-00

Requirement specification

new

False

17-02

Build list

new

False

17-03

Stakeholder requirements

new

False

17-05

Documentation requirements

new

False

17-08

Interface requirements specification

new

False

17-11

Software requirements specification

new

False

17-11_old

Software requirements specification

new

False

17-12

System requirements specification

new

False

17-12_old

System requirements specification

new

False

17-50

Verification criteria

new

False

17-51

Cybersecurity goals

new

False

17-52

Cybersecurity controls

new

False

18-00

Standard

new

False

18-01

Acceptance criteria

new

False

18-06

Product release criteria

new

False

18-07

Quality criteria

new

False

18-50

Supplier evaluation criteria

new

False

18-50_old

Supplier qualification criteria

new

False

19-00

Strategy

new

False

19-05

Reuse strategy

new

False

19-10

Verification strategy

new

False

19-10_old

Verification strategy

new

False

19-11

Validation strategy

new

False

19-11_old

Validation strategy

new

False

20-00

Template

new

False

21-00

Work product

new

False

ACQ11

Technical Requirements

new

False

ACQ11_BP1

ACQ.11.BP1: Elicit needs.

new

False

ACQ11_BP10

ACQ.11.BP10: Ensure compliance of stated requirements.

new

False

ACQ11_BP2

ACQ.11.BP2: Define technical requirements.

new

False

ACQ11_BP3

ACQ.11.BP3: Identify acquisition needs.

new

False

ACQ11_BP4

ACQ.11.BP4: Ensure consistency.

new

False

ACQ11_BP5

ACQ.11.BP5: Identify affected groups.

new

False

ACQ11_BP6

ACQ.11.BP6: Communicate to affected groups.

new

False

ACQ11_BP7

ACQ.11.BP7: Establish a change mechanism.

new

False

ACQ11_BP8

ACQ.11.BP8: Track impact of changing technology.

new

False

ACQ11_BP9

ACQ.11.BP9: Identify constraints and standards.

new

False

ACQ11_OUT1

1

new

False

ACQ11_OUT2

2

new

False

ACQ11_OUT3

3

new

False

ACQ11_OUT4

4

new

False

ACQ11_OUT5

5

new

False

ACQ11_OUT6

6

new

False

ACQ12

Legal and Administrative Requirements

new

False

ACQ12_BP1

ACQ.12.BP1: Identify relevant regulations.

new

False

ACQ12_BP10

ACQ.12.BP10: Establish criteria for liability issues.

new

False

ACQ12_BP2

ACQ.12.BP2: Consider relevant regulations.

new

False

ACQ12_BP3

ACQ.12.BP3: Agree on (contractual) terms and conditions.

new

False

ACQ12_BP4

ACQ.12.BP4: Ensure usage of agreed terms and conditions.

new

False

ACQ12_BP5

ACQ.12.BP5: Establish acceptance criteria.

new

False

ACQ12_BP6

ACQ.12.BP6: Establish escalation mechanisms.

new

False

ACQ12_BP7

ACQ.12.BP7: Establish management of intellectual property rights.

new

False

ACQ12_BP8

ACQ.12.BP8: Provide for warranties and service level agreements.

new

False

ACQ12_BP9

ACQ.12.BP9: Define provision for the suppliers.

new

False

ACQ12_OUT1

1

new

False

ACQ12_OUT2

2

new

False

ACQ12_OUT3

3

new

False

ACQ12_OUT4

4

new

False

ACQ12_OUT5

5

new

False

ACQ12_OUT6

6

new

False

ACQ12_OUT7

7

new

False

ACQ13

Project Requirements

new

False

ACQ13_BP1

ACQ.13.BP1: Identify relevant groups.

new

False

ACQ13_BP10

ACQ.13.BP10: Establish payment requirements.

new

False

ACQ13_BP11

ACQ.13.BP11: Identify risks.

new

False

ACQ13_BP12

ACQ.13.BP12: Communicate risks.

new

False

ACQ13_BP13

ACQ.13.BP13: Define ownership of relationships.

new

False

ACQ13_BP14

ACQ.13.BP14: Define rights for use and distribution.

new

False

ACQ13_BP15

ACQ.13.BP15: Establish support and maintenance requirements.

new

False

ACQ13_BP2

ACQ.13.BP2: Communicate with relevant groups.

new

False

ACQ13_BP3

ACQ.13.BP3: Define organizational requirements.

new

False

ACQ13_BP4

ACQ.13.BP4: Define management requirements.

new

False

ACQ13_BP5

ACQ.13.BP5: Identify required competency.

new

False

ACQ13_BP6

ACQ.13.BP6: Define responsibilities and goals.

new

False

ACQ13_BP7

ACQ.13.BP7: Identify information needs.

new

False

ACQ13_BP8

ACQ.13.BP8: Define exchange of information.

new

False

ACQ13_BP9

ACQ.13.BP9: Establish criteria for interim work products.

new

False

ACQ13_OUT1

1

new

False

ACQ13_OUT2

2

new

False

ACQ13_OUT3

3

new

False

ACQ13_OUT4

4

new

False

ACQ13_OUT5

5

new

False

ACQ13_OUT6

6

new

False

ACQ13_OUT7

7

new

False

ACQ13_OUT8

8

new

False

ACQ13_OUT9

9

new

False

ACQ14

Request for Proposals

new

False

ACQ14_BP1

ACQ.14.BP1: Define rules for CFP / ITT.

new

False

ACQ14_BP2

ACQ.14.BP2: Assemble requirements.

new

False

ACQ14_BP3

ACQ.14.BP3: Establish terms and conditions for CFP / ITT.

new

False

ACQ14_BP4

ACQ.14.BP4: Define financial terms.

new

False

ACQ14_BP5

ACQ.14.BP5: Define project terms.

new

False

ACQ14_BP6

ACQ.14.BP6: Define technical terms.

new

False

ACQ14_BP7

ACQ.14.BP7: Identify relevant regulations.

new

False

ACQ14_BP8

ACQ.14.BP8: Prepare and issue a CFP / ITT.

new

False

ACQ14_OUT1

1

new

False

ACQ14_OUT2

2

new

False

ACQ14_OUT3

3

new

False

ACQ14_OUT4

4

new

False

ACQ14_OUT5

5

new

False

ACQ14_OUT6

6

new

False

ACQ14_OUT7

7

new

False

ACQ15

Supplier Qualification

new

False

ACQ15_BP1

ACQ.15.BP1: Establish qualification criteria.

new

False

ACQ15_BP2

ACQ.15.BP2: Evaluate supplier.

new

False

ACQ15_BP3

ACQ.15.BP3: Short-list suppliers with required qualification.

new

False

ACQ15_BP4

ACQ.15.BP4: Evaluate any shortfalls.

new

False

ACQ15_BP5

ACQ.15.BP5: Perform corrective actions.

new

False

ACQ15_OUT1

1

new

False

ACQ15_OUT2

2

new

False

ACQ15_OUT3

3

new

False

ACQ15_OUT4

4

new

False

ACQ15_OUT5

5

new

False

ACQ2

Supplier request and selection

new

False

ACQ2_BP1

ACQ.2.BP1: Establish supplier evaluation criteria.

new

False

ACQ2_BP2

ACQ.2.BP2: Evaluate potential suppliers.

new

False

ACQ2_BP3

ACQ.2.BP3: Prepare and execute request for quotation

new

False

ACQ2_BP4

ACQ.2.BP4: Negotiate and award the contract/agreement.

new

False

ACQ2_OUT1

1

new

False

ACQ2_OUT2

2

new

False

ACQ2_OUT3

3

new

False

ACQ2_OUT4

4

new

False

ACQ3

Contract Agreement

new

False

ACQ3_OUT1

1

new

False

ACQ3_OUT2

2

new

False

ACQ3_OUT3

3

new

False

ACQ3_OUT4

4

new

False

ACQ4

Supplier Monitoring

new

False

ACQ4_BP1

ACQ.4.BP1: Agree on and maintain jointprocesses,

new

False

ACQ4_BP2

ACQ.4.BP2: Exchange all agreed information.

new

False

ACQ4_BP3

ACQ.4.BP3: Review technical development with the supplier.

new

False

ACQ4_BP4

ACQ.4.BP4: Review progress of the supplier.

new

False

ACQ4_BP5

ACQ.4.BP5: Act to correct deviations.

new

False

ACQ4_OUT1

1

new

False

ACQ4_OUT2

2

new

False

ACQ4_OUT3

3

new

False

ACQ4_OUT4

4

new

False

ACQ_3_BP1

ACQ.3.BP1: Negotiate the contract/agreement.

new

False

ACQ_3_BP2

ACQ.3.BP2: Specify rights and duties.

new

False

ACQ_3_BP3

ACQ.3.BP3: Review contract/agreement for supplier \ capability monitoring.

new

False

ACQ_3_BP4

ACQ.3.BP4: Review contract/agreement for risk mitigation \ actions.

new

False

ACQ_3_BP5

ACQ.3.BP5: Approve contract/agreement.

new

False

ACQ_3_BP6

ACQ.3.BP6: Award contract/agreement.

new

False

ACQ_3_BP7

ACQ.3.BP7: Communicate result to tenderers.

new

False

Detect merge conflicts

accepted

True

Merge python dictionaries

accepted

True

imp_test_item

Test Item

implemented

False

MAN3

Project Management

new

False

MAN3_BP1

MAN.3.BP1: Define the scope of work.

new

False

MAN3_BP10

MAN.3.BP10: Review and report progress of the project.

new

False

MAN3_BP2

MAN.3.BP2: Define project life cycle.

new

False

MAN3_BP3

MAN.3.BP3: Evaluate feasibility of the project.

new

False

MAN3_BP4

MAN.3.BP4: Define, monitor and adjust project activities.

new

False

MAN3_BP5

MAN.3.BP5: Define, monitor and adjust project estimates and resources.

new

False

MAN3_BP6

MAN.3.BP6: Ensure required skills, knowledge, and experience.

new

False

MAN3_BP7

MAN.3.BP7: Identify, monitor and adjust project interfaces and agreed commitments.

new

False

MAN3_BP8

MAN.3.BP8: Define, monitor and adjust project schedule.

new

False

MAN3_BP9

MAN.3.BP9: Ensure consistency.

new

False

MAN3_OUT1

1

new

False

MAN3_OUT2

2

new

False

MAN3_OUT3

3

new

False

MAN3_OUT4

4

new

False

MAN3_OUT5

5

new

False

MAN3_OUT6

6

new

False

MAN3_OUT7

7

new

False

MAN5

Risk Management

new

False

MAN5_BP1

MAN.5.BP1: Establish risk management scope.

new

False

MAN5_BP2

MAN.5.BP2: Define risk management strategies.

new

False

MAN5_BP3

MAN.5.BP3: Identify risks.

new

False

MAN5_BP4

MAN.5.BP4: Analyze risks.

new

False

MAN5_BP5

MAN.5.BP5: Define risk treatment actions.

new

False

MAN5_BP6

MAN.5.BP6: Monitor risks.

new

False

MAN5_BP7

MAN.5.BP7: Take corrective action.

new

False

MAN5_OUT1

1

new

False

MAN5_OUT2

2

new

False

MAN5_OUT3

3

new

False

MAN5_OUT4

4

new

False

MAN5_OUT5

5

new

False

MAN5_OUT6

6

new

False

MAN6

Measurement

new

False

MAN6_BP1

MAN.6.BP1: Establish organizational commitment for measurement.

new

False

MAN6_BP10

MAN.6.BP10: Evaluate information products and measurement activities.

new

False

MAN6_BP11

MAN.6.BP11: Communicate potential improvements.

new

False

MAN6_BP2

MAN.6.BP2: Develop measurement strategy.

new

False

MAN6_BP3

MAN.6.BP3: Identify measurement information needs.

new

False

MAN6_BP4

MAN.6.BP4: Specify measures.

new

False

MAN6_BP5

MAN.6.BP5: Perform measurement activities.

new

False

MAN6_BP6

MAN.6.BP6: Retrieve measurement data.

new

False

MAN6_BP7

MAN.6.BP7: Analyze measures.

new

False

MAN6_BP8

MAN.6.BP8: Use measurement information for decision-making.

new

False

MAN6_BP9

MAN.6.BP9: Communicate measures.

new

False

MAN6_OUT1

1

new

False

MAN6_OUT2

2

new

False

MAN6_OUT3

3

new

False

MAN6_OUT4

4

new

False

MAN6_OUT5

5

new

False

MAN6_OUT6

6

new

False

MAN6_OUT7

7

new

False

MAN7

Cybersecurity Risk Management

new

False

MAN7_BP1

MAN.7.BP1: Determine cybersecurity risk management scope.

new

False

MAN7_BP2

MAN.7.BP2: Define cybersecurity risk management practices.

new

False

MAN7_BP3

MAN.7.BP3: Identify potential risks.

new

False

MAN7_BP4

MAN.7.BP4: Prioritize potential risks initially for damage.

new

False

MAN7_BP5

MAN.7.BP5: Analyze potential risks and evaluate risks.

new

False

MAN7_BP6

MAN.7.BP6: Define risk treatment option.

new

False

MAN7_BP7

MAN.7.BP7: Monitor risks.

new

False

MAN7_BP8

MAN.7.BP8: Take corrective action.

new

False

MAN7_OUT1

1

new

False

MAN7_OUT2

2

new

False

MAN7_OUT3

3

new

False

MAN7_OUT4

4

new

False

MAN7_OUT5

5

new

False

MAN7_OUT6

6

new

False

MAN7_OUT7

7

new

False

MAN7_OUT8

8

new

False

PIM3

Process Improvement

new

False

PIM3_BP1

PIM.3.BP1: Establish commitment.

new

False

PIM3_BP2

PIM.3.BP2: Identify issues.

new

False

PIM3_BP3

PIM.3.BP3: Establish process improvement goals.

new

False

PIM3_BP4

PIM.3.BP4: Prioritize improvements.

new

False

PIM3_BP5

PIM.3.BP5: Plan process changes.

new

False

PIM3_BP6

PIM.3.BP6: Implement process changes.

new

False

PIM3_BP7

PIM.3.BP7: Confirm process improvement.

new

False

PIM3_BP8

PIM.3.BP8: Communicate results of improvement.

new

False

PIM3_BP9

PIM.3.BP9: Evaluate the results of the improvement project.

new

False

PIM3_OUT1

1

new

False

PIM3_OUT2

2

new

False

PIM3_OUT3

3

new

False

PIM3_OUT4

4

new

False

PIM3_OUT5

5

new

False

PIM3_OUT6

6

new

False

PIM3_OUT7

7

new

False

REU2

Reuse Program Management

new

False

REU2_BP1

REU.2.BP1: Define organizational reuse strategy.

new

False

REU2_BP3

REU.2.BP3: Assess domains for potential reuse.

new

False

REU2_BP4

REU.2.BP4: Assess reuse maturity.

new

False

REU2_BP5

REU.2.BP5: Evaluate reuse proposals.

new

False

REU2_BP6

REU.2.BP6: Implement the reuse program.

new

False

REU2_BP7

REU.2.BP7: Get feedback from reuse.

new

False

REU2_BP8

REU.2.BP8: Monitor reuse.

new

False

REU2_OUT1

1

new

False

REU2_OUT2

2

new

False

REU2_OUT3

3

new

False

REU2_OUT4

4

new

False

REU2_OUT5

5

new

False

REU2_OUT6

6

new

False

REU2_OUT7

7

new

False

REU2_OUT8

8

new

False

SEC1

Cybersecurity Requirements Elicitation

new

False

SEC1_BP1

SEC.1.BP1: Derive cybersecurity goals and cybersecurity requirements.

new

False

SEC1_BP2

SEC.1.BP2: Establish bidirectional traceability.

new

False

SEC1_BP3

SEC.1.BP3: Ensure consistency.

new

False

SEC1_BP4

SEC.1.BP4: Communicate agreed cybersecurity requirements.

new

False

SEC1_OUT1

1

new

False

SEC1_OUT2

2

new

False

SEC1_OUT3

3

new

False

SEC1_OUT4

4

new

False

SEC2

Cybersecurity Implementation

new

False

SEC2_BP1

SEC.2.BP1: Refine the details of the architectural design.

new

False

SEC2_BP10

SEC.2.BP10: Communicate agreed results of cybersecurity implementation.

new

False

SEC2_BP2

SEC.2.BP2: Allocate cybersecurity requirements.

new

False

SEC2_BP3

SEC.2.BP3: Select cybersecurity controls.

new

False

SEC2_BP4

SEC.2.BP4: Refine interfaces.

new

False

SEC2_BP5

SEC.2.BP5: Analyze architectural design.

new

False

SEC2_BP6

SEC.2.BP6: Refine the details of the detailed design.

new

False

SEC2_BP7

SEC.2.BP7: Develop software units.

new

False

SEC2_BP8

SEC.2.BP8: Establish bidirectional traceability.

new

False

SEC2_BP9

SEC.2.BP9: Ensure consistency.

new

False

SEC2_OUT1

1

new

False

SEC2_OUT2

2

new

False

SEC2_OUT3

3

new

False

SEC2_OUT4

4

new

False

SEC2_OUT5

5

new

False

SEC2_OUT6

6

new

False

SEC2_OUT7

7

new

False

SEC2_OUT8

8

new

False

SEC3

Risk Treatment Verification

new

False

SEC3_BP1

SEC.3.BP1: Develop a risk treatment verification and integration strategy.

new

False

SEC3_BP2

SEC.3.BP2: Develop specification for risk treatment verification.

new

False

SEC3_BP3

SEC.3.BP3: Perform verification activities.

new

False

SEC3_BP4

SEC.3.BP4: Establish bidirectional traceability.

new

False

SEC3_BP5

SEC.3.BP5: Ensure consistency.

new

False

SEC3_BP6

SEC.3.BP6: Summarize and communicate results.

new

False

SEC3_OUT1

1

new

False

SEC3_OUT2

2

new

False

SEC3_OUT3

3

new

False

SEC3_OUT4

4

new

False

SEC3_OUT5

5

new

False

SEC3_OUT6

6

new

False

SEC4

Risk Treatment Validation

new

False

SEC4_BP1

SEC.4.BP1: Develop a risk treatment validation strategy.

new

False

SEC4_BP2

SEC.4.BP2: Develop specification for risk treatment validation.

new

False

SEC4_BP3

SEC.4.BP3: Perform and document risk treatment validation activities.

new

False

SEC4_BP4

SEC.4.BP4: Establish bidirectional traceability.

new

False

SEC4_BP5

SEC.4.BP5: Ensure consistency.

new

False

SEC4_BP6

SEC.4.BP6 Summarize and communicate results.

new

False

SEC4_OUT1

1

new

False

SEC4_OUT2

2

new

False

SEC4_OUT3

3

new

False

SEC4_OUT4

4

new

False

SEC4_OUT5

5

new

False

SEC4_OUT6

6

new

False

SPL1

Supplier Tendering

new

False

SPL1_BP1

SPL.1.BP1: Establish communication interface.

new

False

SPL1_BP2

SPL.1.BP2: Perform customer inquiry screening.

new

False

SPL1_BP3

SPL.1.BP3: Establish customer proposal evaluation criteria.

new

False

SPL1_BP4

SPL.1.BP4: Evaluate customer request for proposal.

new

False

SPL1_BP5

SPL.1.BP5: Determine need for preliminary pre-studies.

new

False

SPL1_BP6

SPL.1.BP6: Identify and nominate staff.

new

False

SPL1_BP7

SPL.1.BP7: Prepare supplier proposal response.

new

False

SPL1_BP8

SPL.1.BP8: Establish confirmation of agreement.

new

False

SPL1_OUT1

1

new

False

SPL1_OUT2

2

new

False

SPL1_OUT3

3

new

False

SPL1_OUT4

4

new

False

SPL1_OUT5

5

new

False

SPL1_OUT6

6

new

False

SPL2

Product Release

new

False

SPL2_BP1

SPL.2.BP1: Define the functional content of releases.

new

False

SPL2_BP10

SPL.2.BP10: Ensure product release approval before delivery.

new

False

SPL2_BP11

SPL.2.BP11: Ensure consistency.

new

False

SPL2_BP12

SPL.2.BP12: Provide a release note.

new

False

SPL2_BP13

SPL.2.BP13: Deliver the release to the intended customer.

new

False

SPL2_BP2

SPL.2.BP2: Define release products.

new

False

SPL2_BP3

SPL.2.BP3: Establish a product release classification and numbering scheme.

new

False

SPL2_BP4

SPL.2.BP4: Define the build activities and build environment.

new

False

SPL2_BP5

SPL.2.BP5: Build the release from configured items.

new

False

SPL2_BP6

SPL2.BP6: Communicate the type, service level and duration of support \ for a release.

new

False

SPL2_BP7

SPL.2.BP7: Determine the delivery media type for the release.

new

False

SPL2_BP8

SPL.2.BP8: Identify the packaging for the release media.

new

False

SPL2_BP9

SPL.2.BP9: Define and produce the product release \ documentation/release notes.

new

False

SPL2_OUT1

1

new

False

SPL2_OUT2

2

new

False

SPL2_OUT3

3

new

False

SPL2_OUT4

4

new

False

SPL2_OUT5

5

new

False

SPL2_OUT6

6

new

False

SPL2_OUT7

7

new

False

SUP1

Quality Assurance

new

False

SUP10

Change Request Management

new

False

SUP10_BP1

SUP.10.BP1: Develop a change request management strategy.

new

False

SUP10_BP2

SUP.10.BP2: Identify and record the change requests.

new

False

SUP10_BP3

SUP.10.BP3: Record the status of change requests.

new

False

SUP10_BP4

SUP.10.BP4: Analyze and assess change requests.

new

False

SUP10_BP5

SUP.10.BP5: Approve change requests before implementation.

new

False

SUP10_BP6

SUP.10.BP6: Review the implementation of change requests.

new

False

SUP10_BP7

SUP.10.BP7: Track change requests to closure.

new

False

SUP10_BP8

SUP.10.BP8: Establish bidirectional traceability.

new

False

SUP10_OUT1

1

new

False

SUP10_OUT2

2

new

False

SUP10_OUT3

3

new

False

SUP10_OUT4

4

new

False

SUP10_OUT5

5

new

False

SUP10_OUT6

6

new

False

SUP10_OUT7

7

new

False

SUP10_OUT8

8

new

False

SUP10_OUT9

9

new

False

SUP1_BP1

SUP.1.BP1: Develop a project quality assurance strategy.

new

False

SUP1_BP2

SUP.1.BP2: Assure quality of work products.

new

False

SUP1_BP3

SUP.1.BP3: Assure quality of process activities.

new

False

SUP1_BP4

SUP.1.BP4: Summarize and communicate quality assurance activities and results.

new

False

SUP1_BP5

SUP.1.BP5: Ensure resolution of non-conformances.

new

False

SUP1_BP6

SUP.1.BP6: Implement an escalation mechanism.

new

False

SUP1_OUT1

1

new

False

SUP1_OUT2

2

new

False

SUP1_OUT3

3

new

False

SUP1_OUT4

4

new

False

SUP1_OUT5

5

new

False

SUP1_OUT6

6

new

False

SUP2

Verification

new

False

SUP2_BP1

SUP.2.BP1: Develop a verification strategy.

new

False

SUP2_BP2

SUP.2.BP2: Develop criteria for verification.

new

False

SUP2_BP3

SUP.2.BP3: Conduct verification.

new

False

SUP2_BP4

SUP.2.BP4: Determine and track actions for verification results.

new

False

SUP2_BP5

SUP.2.BP5: Report verification results.

new

False

SUP2_OUT1

1

new

False

SUP2_OUT2

2

new

False

SUP2_OUT3

3

new

False

SUP2_OUT4

4

new

False

SUP2_OUT5

5

new

False

SUP4

Joint Review

new

False

SUP4_BP1

SUP.4.BP1: Define review elements.

new

False

SUP4_BP2

SUP.4.BP2: Establish a mechanism to handle review outcomes.

new

False

SUP4_BP3

SUP.4.BP3: Prepare joint review.

new

False

SUP4_BP4

SUP.4.BP4: Conduct joint reviews.

new

False

SUP4_BP5

SUP.4.BP5: Distribute the results.

new

False

SUP4_BP6

SUP.4.BP6: Determine actions for review results.

new

False

SUP4_BP7

SUP.4.BP7: Track actions for review results.

new

False

SUP4_BP8

SUP.4.BP8: Identify and record problems.

new

False

SUP4_OUT1

1

new

False

SUP4_OUT2

2

new

False

SUP4_OUT3

3

new

False

SUP4_OUT4

4

new

False

SUP4_OUT5

5

new

False

SUP7

Documentation

new

False

SUP7_BP1

SUP.7.BP1: Develop a documentation management strategy.

new

False

SUP7_BP2

SUP.7.BP2: Establish standards for documentation.

new

False

SUP7_BP3

SUP.7.BP3: Specify documentation requirements.

new

False

SUP7_BP4

SUP.7.BP4: Identify the relevant documentation to be produced

new

False

SUP7_BP5

SUP.7.BP5: Develop documentation.

new

False

SUP7_BP6

SUP.7.BP6: Check documentation.

new

False

SUP7_BP7

SUP.7.BP7: Distribute documentation.

new

False

SUP7_BP8

SUP.7.BP8: Maintain documentation.

new

False

SUP7_OUT1

1

new

False

SUP7_OUT2

2

new

False

SUP7_OUT3

3

new

False

SUP7_OUT4

4

new

False

SUP7_OUT5

5

new

False

SUP7_OUT6

6

new

False

SUP8

Configuration Management

new

False

SUP8_BP1

SUP.8.BP1: Develop a configuration management strategy.

new

False

SUP8_BP2

SUP.8.BP2: Identify configuration items.

new

False

SUP8_BP3

SUP.8.BP3: Establish a configuration management system.

new

False

SUP8_BP4

SUP.8.BP4: Establish branch management.

new

False

SUP8_BP5

SUP.8.BP5: Control modifications and releases.

new

False

SUP8_BP6

SUP.8.BP6: Establish baselines.

new

False

SUP8_BP7

SUP.8.BP7: Report configuration status.

new

False

SUP8_BP8

SUP.8.BP8: Verify the information about configured items.

new

False

SUP8_BP9

SUP.8.BP9: Manage the storage of configuration items and baselines.

new

False

SUP8_OUT1

1

new

False

SUP8_OUT2

2

new

False

SUP8_OUT3

3

new

False

SUP8_OUT4

4

new

False

SUP8_OUT5

5

new

False

SUP8_OUT6

6

new

False

SUP8_OUT7

7

new

False

SUP9

Problem Resolution Management

new

False

SUP9_BP1

SUP.9.BP1: Develop a problem resolution management strategy.

new

False

SUP9_BP2

SUP.9.BP2: Identify and record the problem.

new

False

SUP9_BP3

SUP.9.BP3: Record the status of problems.

new

False

SUP9_BP4

SUP.9.BP4: Diagnose the cause and determine the impact of the problem.

new

False

SUP9_BP5

SUP.9.BP5: Authorize urgent resolution action.

new

False

SUP9_BP6

SUP.9.BP6: Raise alert notifications.

new

False

SUP9_BP7

SUP.9.BP7: Initiate problem resolution.

new

False

SUP9_BP8

SUP.9.BP8: Track problems to closure.

new

False

SUP9_BP9

SUP.9.BP9: Analyze problem trends.

new

False

SUP9_OUT1

1

new

False

SUP9_OUT2

2

new

False

SUP9_OUT3

3

new

False

SUP9_OUT4

4

new

False

SUP9_OUT5

5

new

False

SUP9_OUT6

6

new

False

SWE1

Software Requirements Analysis

new

False

SWE1_BP1

SWE.1.BP1: Specify software requirements.

new

False

SWE1_BP2

SWE.1.BP2: Structure software requirements.

new

False

SWE1_BP3

SWE.1.BP3: Analyze software requirements.

new

False

SWE1_BP4

SWE.1.BP4: Analyze the impact on the operating environment.

new

False

SWE1_BP5

SWE.1.BP5: Develop verification criteria.

new

False

SWE1_BP6

SWE.1.BP6: Establish bidirectional traceability.

new

False

SWE1_BP7

SWE.1.BP7: Ensure consistency.

new

False

SWE1_BP8

SWE.1.BP8: Communicate agreed software requirements.

new

False

SWE1_OUT1

1

new

False

SWE1_OUT2

2

new

False

SWE1_OUT3

3

new

False

SWE1_OUT4

4

new

False

SWE1_OUT5

5

new

False

SWE1_OUT6

6

new

False

SWE1_OUT7

7

new

False

SWE1_OUT8

8

new

False

SWE2

Software Architectural Design

new

False

SWE2_BP1

SWE.2.BP1: Develop software architectural design.

new

False

SWE2_BP2

SWE.2.BP2: Allocate software requirements.

new

False

SWE2_BP3

SWE.2.BP3: Define interfaces of software elements.

new

False

SWE2_BP4

SWE.2.BP4: Describe dynamic behavior.

new

False

SWE2_BP5

SWE.2.BP5: Define resource consumption objectives.

new

False

SWE2_BP6

SWE.2.BP6: Evaluate alternative software architectures.

new

False

SWE2_BP7

SWE.2.BP7: Establish bidirectional traceability.

new

False

SWE2_BP8

SWE.2.BP8: Ensure consistency.

new

False

SWE2_BP9

SWE.2.BP9: Communicate agreed software architectural design.

new

False

SWE2_OUT1

1

new

False

SWE2_OUT2

2

new

False

SWE2_OUT3

3

new

False

SWE2_OUT4

4

new

False

SWE2_OUT5

5

new

False

SWE2_OUT6

6

new

False

SWE3

Software Detailed Design and Unit Construction

new

False

SWE3_BP1

SWE.3.BP1: Develop software detailed design.

new

False

SWE3_BP2

SWE.3.BP2: Define interfaces of software units.

new

False

SWE3_BP3

SWE.3.BP3: Describe dynamic behavior.

new

False

SWE3_BP4

SWE.3.BP4: Evaluate software detailed design.

new

False

SWE3_BP5

SWE.3.BP5: Establish bidirectional traceability.

new

False

SWE3_BP6

SWE.3.BP6: Ensure consistency.

new

False

SWE3_BP7

SWE.3.BP7: Communicate agreed software detailed design.

new

False

SWE3_BP8

SWE.3.BP8: Develop software units.

new

False

SWE3_OUT1

1

new

False

SWE3_OUT2

2

new

False

SWE3_OUT3

3

new

False

SWE3_OUT4

4

new

False

SWE3_OUT5

5

new

False

SWE3_OUT6

6

new

False

SWE4

Software Unit Verification

new

False

SWE4_BP1

SWE.4.BP1: Develop software unit verification strategy including regression strategy.

new

False

SWE4_BP2

SWE.4.BP2: Develop criteria for unit verification.

new

False

SWE4_BP3

SWE.4.BP3: Perform static verification of software units.

new

False

SWE4_BP4

SWE.4.BP4: Test software units.

new

False

SWE4_BP5

SWE.4.BP5: Establish bidirectional traceability.

new

False

SWE4_BP6

SWE.4.BP6: Ensure consistency.

new

False

SWE4_BP7

SWE.4.BP7: Summarize and communicate results.

new

False

SWE4_OUT1

1

new

False

SWE4_OUT2

2

new

False

SWE4_OUT3

3

new

False

SWE4_OUT4

4

new

False

SWE4_OUT5

5

new

False

SWE5

Software Integration and Integration Test

new

False

SWE5_BP1

SWE.5.BP1: Develop software integration strategy.

new

False

SWE5_BP2

SWE.5.BP2: Develop software integration test strategy including regression test strategy.

new

False

SWE5_BP3

SWE.5.BP3: Develop specification for software integration test.

new

False

SWE5_BP4

SWE.5.BP4: Integrate software units and software items.

new

False

SWE5_BP5

SWE.5.BP5: Select test cases.

new

False

SWE5_BP6

SWE.5.BP6: Perform software integration test.

new

False

SWE5_BP7

SWE.5.BP7: Establish bidirectional traceability.

new

False

SWE5_BP8

SWE.5.BP8: Ensure consistency.

new

False

SWE5_BP9

SWE.5.BP9: Summarize and communicate results.

new

False

SWE5_OUT1

1

new

False

SWE5_OUT2

2

new

False

SWE5_OUT3

3

new

False

SWE5_OUT4

4

new

False

SWE5_OUT5

5

new

False

SWE5_OUT6

6

new

False

SWE5_OUT7

7

new

False

SWE5_OUT8

8

new

False

SWE6

Software Qualification Test

new

False

SWE6_BP1

SWE.6.BP1: Develop software qualification test strategy including regression test strategy.

new

False

SWE6_BP2

SWE.6.BP2: Develop specification for software qualification test.

new

False

SWE6_BP3

SWE.6.BP3: Select test cases.

new

False

SWE6_BP4

SWE.6.BP4: Test integrated software.

new

False

SWE6_BP5

SWE.6.BP5: Establish bidirectional traceability.

new

False

SWE6_BP6

SWE.6.BP6: Ensure consistency.

new

False

SWE6_BP7

SWE.6.BP7: Summarize and communicate results.

new

False

SWE6_OUT1

1

new

False

SWE6_OUT2

2

new

False

SWE6_OUT3

3

new

False

SWE6_OUT4

4

new

False

SWE6_OUT5

5

new

False

SWE6_OUT6

6

new

False

SYS1

Requirements Elicitation

new

False

SYS1_BP1

SYS.1.BP1: Obtain stakeholder requirements and requests.

new

False

SYS1_BP2

SYS.1.BP2: Understand stakeholder expectations.

new

False

SYS1_BP3

SYS.1.BP3: Agree on requirements.

new

False

SYS1_BP4

SYS.1.BP4: Establish stakeholder requirements baseline.

new

False

SYS1_BP5

SYS.1.BP5: Manage stakeholder requirements changes.

new

False

SYS1_BP6

SYS.1.BP6: Establish customer-supplier query communication mechanism.

new

False

SYS1_OUT1

1

new

False

SYS1_OUT2

2

new

False

SYS1_OUT3

3

new

False

SYS1_OUT4

4

new

False

SYS1_OUT5

5

new

False

SYS1_OUT6

6

new

False

SYS2

System Requirements Analysis

new

False

SYS2_BP1

SYS.2.BP1: Specify system requirements.

new

False

SYS2_BP2

SYS.2.BP2: Structure system requirements.

new

False

SYS2_BP3

SYS.2.BP3: Analyze system requirements.

new

False

SYS2_BP4

SYS.2.BP4: Analyze the impact on the operating environment.

new

False

SYS2_BP5

SYS.2.BP5: Develop verification criteria.

new

False

SYS2_BP6

SYS.2.BP6: Establish bidirectional traceability.

new

False

SYS2_BP7

SYS.2.BP7: Ensure consistency

new

False

SYS2_BP8

SYS.2.BP8: Communicate agreed system requirements.

new

False

SYS2_OUT1

1

new

False

SYS2_OUT2

2

new

False

SYS2_OUT3

3

new

False

SYS2_OUT4

4

new

False

SYS2_OUT5

5

new

False

SYS2_OUT6

6

new

False

SYS2_OUT7

7

new

False

SYS2_OUT8

8

new

False

SYS3

System Architectural Design

new

False

SYS3_BP1

SYS.3.BP1: Develop system architectural design.

new

False

SYS3_BP2

SYS.3.BP2: Allocate system requirements.

new

False

SYS3_BP3

SYS.3.BP3: Define interfaces of system elements.

new

False

SYS3_BP4

SYS.3.BP4: Describe dynamic behavior.

new

False

SYS3_BP5

SYS.3.BP5: Evaluate alternative system architectures.

new

False

SYS3_BP6

SYS.3.BP6: Establish bidirectional traceability.

new

False

SYS3_BP7

SYS.3.BP7: Ensure consistency.

new

False

SYS3_BP8

SYS.3.BP8: Communicate agreed system architectural design.

new

False

SYS3_OUT1

1

new

False

SYS3_OUT2

2

new

False

SYS3_OUT3

3

new

False

SYS3_OUT4

4

new

False

SYS3_OUT5

5

new

False

SYS3_OUT6

6

new

False

SYS4

System Integration and Integration Test

new

False

SYS4_BP1

SYS.4.BP1: Develop system integration strategy.

new

False

SYS4_BP2

SYS.4.BP2: Develop system integration test strategy including \ regression test strategy.

new

False

SYS4_BP3

SYS.4.BP3: Develop specification for system integration test.

new

False

SYS4_BP4

SYS.4.BP4: Integrate system items.

new

False

SYS4_BP5

SYS.4.BP5: Select test cases.

new

False

SYS4_BP6

SYS.4.BP6: Perform system integration test.

new

False

SYS4_BP7

SYS.4.BP7: Establish bidirectional traceability.

new

False

SYS4_BP8

SYS.4.BP8: Ensure consistency.

new

False

SYS4_BP9

SYS.4.BP9: Summarize and communicate results.

new

False

SYS4_OUT1

1

new

False

SYS4_OUT2

2

new

False

SYS4_OUT3

3

new

False

SYS4_OUT4

4

new

False

SYS4_OUT5

5

new

False

SYS4_OUT6

6

new

False

SYS4_OUT7

7

new

False

SYS4_OUT8

8

new

False

SYS5

System Qualification Test

new

False

SYS5_BP1

SYS.5.BP1: Develop system qualification test strategy including \ regression test strategy.

new

False

SYS5_BP2

SYS.5.BP2: Develop specification for system qualification test.

new

False

SYS5_BP3

SYS.5.BP3: Select test cases.

new

False

SYS5_BP4

SYS.5.BP4: Test integrated system.

new

False

SYS5_BP5

SYS.5.BP5: Establish bidirectional traceability.

new

False

SYS5_BP6

SYS.5.BP6: Ensure consistency.

new

False

SYS5_BP7

SYS.5.BP7: Summarize and communicate results.

new

False

SYS5_OUT1

1

new

False

SYS5_OUT2

2

new

False

SYS5_OUT3

3

new

False

SYS5_OUT4

4

new

False

SYS5_OUT5

5

new

False

SYS5_OUT6

6

new

False

NeedFlow

Documentation: How-to use Sphinx-Needs NeedFlow [10]. The code been expected and generated is for plantuml [15]. You can configure the visiual repsentation of needs elements in needflow with needs-types. Needflow expects to get plantuml deployment-diagram [13] elements as representation.

Example 10: How-to use a NeedFlow.

.. needflow:: Requirement Linkage
   :filter: is_external == True and (type=='stake_req' or type=='sw_req')
   :show_link_names:
   :debug:
   :scale: 30

@startuml

' Nodes definition 

artifact "<size:12>Stakeholder Requirement</size>\n**Detect merge**\n**conflicts**\n<size:10>CSTRQ_DETECT_MERGE_CONFLICTS</size>" as CSTRQ_DETECT_MERGE_CONFLICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/stakeholder_specification.html#CSTRQ_DETECT_MERGE_CONFLICTS]] #abcdef
artifact "<size:12>Stakeholder Requirement</size>\n**Merge python**\n**dictionaries**\n<size:10>CSTRQ_MERGE_DICTS</size>" as CSTRQ_MERGE_DICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/stakeholder_specification.html#CSTRQ_MERGE_DICTS]] #abcdef
artifact "<size:12>Software Requirement</size>\n**Allow double**\n**definitions of**\n**same Key /**\n**Value**\n<size:10>SWRQ_ALLOW_DOUBLE_DEFINITION</size>" as SWRQ_ALLOW_DOUBLE_DEFINITION [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_ALLOW_DOUBLE_DEFINITION]] #abcdef{
'child needs:
}
artifact "<size:12>Software Requirement</size>\n**Detect merge**\n**conflicts**\n<size:10>SWRQ_DETECT_MERGE_CONFLICTS</size>" as SWRQ_DETECT_MERGE_CONFLICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_DETECT_MERGE_CONFLICTS]] #abcdef{
'child needs:
}
artifact "<size:12>Software Requirement</size>\n**Definition:**\n**list of**\n**dictionaries**\n<size:10>SWRQ_LIST_OF_DICTS</size>" as SWRQ_LIST_OF_DICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_LIST_OF_DICTS]] #abcdef{
'child needs:
}
artifact "<size:12>Software Requirement</size>\n**Merge python**\n**dictionaries**\n<size:10>SWRQ_MERGE_DICTS</size>" as SWRQ_MERGE_DICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_MERGE_DICTS]] #abcdef
artifact "<size:12>Software Requirement</size>\n**Name of the**\n**tool:**\n**merge_dicts**\n<size:10>SWRQ_TOOL_merge_dicts</size>" as SWRQ_TOOL_merge_dicts [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_TOOL_merge_dicts]] #abcdef
artifact "<size:12>Software Requirement</size>\n**Output in merge**\n**conflict case**\n<size:10>SWRQ_USE_FIRST_VALUE_FOR_KEY</size>" as SWRQ_USE_FIRST_VALUE_FOR_KEY [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_USE_FIRST_VALUE_FOR_KEY]] #abcdef{
'child needs:
}

' Connection definition 

SWRQ_ALLOW_DOUBLE_DEFINITION -up-> CSTRQ_DETECT_MERGE_CONFLICTS: satisfies\n
SWRQ_DETECT_MERGE_CONFLICTS -up-> CSTRQ_DETECT_MERGE_CONFLICTS: satisfies\n
SWRQ_LIST_OF_DICTS -up-> CSTRQ_MERGE_DICTS: satisfies\n
SWRQ_MERGE_DICTS -up-> CSTRQ_MERGE_DICTS: satisfies\n
SWRQ_USE_FIRST_VALUE_FOR_KEY -up-> CSTRQ_DETECT_MERGE_CONFLICTS: satisfies\n

@enduml

Requirement Linkage

@startuml

' Nodes definition 

artifact "<size:12>Stakeholder Requirement</size>\n**Detect merge**\n**conflicts**\n<size:10>CSTRQ_DETECT_MERGE_CONFLICTS</size>" as CSTRQ_DETECT_MERGE_CONFLICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/stakeholder_specification.html#CSTRQ_DETECT_MERGE_CONFLICTS]] #abcdef
artifact "<size:12>Stakeholder Requirement</size>\n**Merge python**\n**dictionaries**\n<size:10>CSTRQ_MERGE_DICTS</size>" as CSTRQ_MERGE_DICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/stakeholder_specification.html#CSTRQ_MERGE_DICTS]] #abcdef
artifact "<size:12>Software Requirement</size>\n**Allow double**\n**definitions of**\n**same Key /**\n**Value**\n<size:10>SWRQ_ALLOW_DOUBLE_DEFINITION</size>" as SWRQ_ALLOW_DOUBLE_DEFINITION [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_ALLOW_DOUBLE_DEFINITION]] #abcdef{
'child needs:
}
artifact "<size:12>Software Requirement</size>\n**Detect merge**\n**conflicts**\n<size:10>SWRQ_DETECT_MERGE_CONFLICTS</size>" as SWRQ_DETECT_MERGE_CONFLICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_DETECT_MERGE_CONFLICTS]] #abcdef{
'child needs:
}
artifact "<size:12>Software Requirement</size>\n**Definition:**\n**list of**\n**dictionaries**\n<size:10>SWRQ_LIST_OF_DICTS</size>" as SWRQ_LIST_OF_DICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_LIST_OF_DICTS]] #abcdef{
'child needs:
}
artifact "<size:12>Software Requirement</size>\n**Merge python**\n**dictionaries**\n<size:10>SWRQ_MERGE_DICTS</size>" as SWRQ_MERGE_DICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_MERGE_DICTS]] #abcdef
artifact "<size:12>Software Requirement</size>\n**Name of the**\n**tool:**\n**merge_dicts**\n<size:10>SWRQ_TOOL_merge_dicts</size>" as SWRQ_TOOL_merge_dicts [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_TOOL_merge_dicts]] #abcdef
artifact "<size:12>Software Requirement</size>\n**Output in merge**\n**conflict case**\n<size:10>SWRQ_USE_FIRST_VALUE_FOR_KEY</size>" as SWRQ_USE_FIRST_VALUE_FOR_KEY [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_USE_FIRST_VALUE_FOR_KEY]] #abcdef{
'child needs:
}

' Connection definition 

SWRQ_ALLOW_DOUBLE_DEFINITION -up-> CSTRQ_DETECT_MERGE_CONFLICTS: satisfies\n
SWRQ_DETECT_MERGE_CONFLICTS -up-> CSTRQ_DETECT_MERGE_CONFLICTS: satisfies\n
SWRQ_LIST_OF_DICTS -up-> CSTRQ_MERGE_DICTS: satisfies\n
SWRQ_MERGE_DICTS -up-> CSTRQ_MERGE_DICTS: satisfies\n
SWRQ_USE_FIRST_VALUE_FOR_KEY -up-> CSTRQ_DETECT_MERGE_CONFLICTS: satisfies\n

@enduml

Structured Sphinx-Needs reports in tables

Often you have the use case to structure reports of Sphinx-Needs in table view. You can do this with e.g. a list-table to structure the visiual representation.

Example 11: Reports structured with tables

.. list-table:: Reports
      :header-rows: 1

      * - Report
        - Representation
      * - NeedPie
        - .. needpie:: Ratio of requirement types
             :labels: Stakeholder Requirement, Software Requirement, Evaluation

             type == 'stake_req' and is_external == True
             type == 'sw_req' and is_external == True
             type == 'evaluation' and is_external == True

      * - NeedBar
        - .. needbar:: Requirements & Status Overview
             :legend:
             :colors: black, yellow, orange, green
             :xlabels: FROM_DATA
             :ylabels: FROM_DATA

                        ,        Stakeholder Requirement             ,           Software Requirement
                   empty, type=='stake_req' and status==''           ,    type=='sw_req' and status==''
                accepted, type=='stake_req' and status=='accepted'   ,    type=='sw_req' and status=='accepted'
             implemented, type=='stake_req' and status=='implemented',    type=='sw_req' and status=='implemented'
                verified, type=='stake_req' and status=='verified'   ,    type=='sw_req' and status=='verified'

      * - NeedTable
        - .. needtable:: List of software requirements
             :types: sw_req
             :style: table
             :columns: id; title; status

      * - NeedFlow
        - .. needflow:: Requirement Linkage
             :filter: is_external == True and (type=='stake_req' or type=='sw_req')
             :show_link_names:
             :show_filters:
             :scale: 30
Table 36 Reports

Report

Representation

NeedPie

_images/need_pie_9a966.svg

NeedBar

Requirements & Status Overview

NeedTable

List of software requirements

ID

Title

Status

Allow double definitions of same Key / Value

verified

Detect merge conflicts

verified

Definition: list of dictionaries

verified

Merge python dictionaries

verified

Name of the tool: merge_dicts

verified

Output in merge conflict case

verified

NeedFlow

@startuml

' Nodes definition 

artifact "<size:12>Stakeholder Requirement</size>\n**Detect merge**\n**conflicts**\n<size:10>CSTRQ_DETECT_MERGE_CONFLICTS</size>" as CSTRQ_DETECT_MERGE_CONFLICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/stakeholder_specification.html#CSTRQ_DETECT_MERGE_CONFLICTS]] #abcdef
artifact "<size:12>Stakeholder Requirement</size>\n**Merge python**\n**dictionaries**\n<size:10>CSTRQ_MERGE_DICTS</size>" as CSTRQ_MERGE_DICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/stakeholder_specification.html#CSTRQ_MERGE_DICTS]] #abcdef
artifact "<size:12>Software Requirement</size>\n**Allow double**\n**definitions of**\n**same Key /**\n**Value**\n<size:10>SWRQ_ALLOW_DOUBLE_DEFINITION</size>" as SWRQ_ALLOW_DOUBLE_DEFINITION [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_ALLOW_DOUBLE_DEFINITION]] #abcdef{
'child needs:
}
artifact "<size:12>Software Requirement</size>\n**Detect merge**\n**conflicts**\n<size:10>SWRQ_DETECT_MERGE_CONFLICTS</size>" as SWRQ_DETECT_MERGE_CONFLICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_DETECT_MERGE_CONFLICTS]] #abcdef{
'child needs:
}
artifact "<size:12>Software Requirement</size>\n**Definition:**\n**list of**\n**dictionaries**\n<size:10>SWRQ_LIST_OF_DICTS</size>" as SWRQ_LIST_OF_DICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_LIST_OF_DICTS]] #abcdef{
'child needs:
}
artifact "<size:12>Software Requirement</size>\n**Merge python**\n**dictionaries**\n<size:10>SWRQ_MERGE_DICTS</size>" as SWRQ_MERGE_DICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_MERGE_DICTS]] #abcdef
artifact "<size:12>Software Requirement</size>\n**Name of the**\n**tool:**\n**merge_dicts**\n<size:10>SWRQ_TOOL_merge_dicts</size>" as SWRQ_TOOL_merge_dicts [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_TOOL_merge_dicts]] #abcdef
artifact "<size:12>Software Requirement</size>\n**Output in merge**\n**conflict case**\n<size:10>SWRQ_USE_FIRST_VALUE_FOR_KEY</size>" as SWRQ_USE_FIRST_VALUE_FOR_KEY [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/requirements/software_specification.html#SWRQ_USE_FIRST_VALUE_FOR_KEY]] #abcdef{
'child needs:
}

' Connection definition 

SWRQ_ALLOW_DOUBLE_DEFINITION -up-> CSTRQ_DETECT_MERGE_CONFLICTS: satisfies\n
SWRQ_DETECT_MERGE_CONFLICTS -up-> CSTRQ_DETECT_MERGE_CONFLICTS: satisfies\n
SWRQ_LIST_OF_DICTS -up-> CSTRQ_MERGE_DICTS: satisfies\n
SWRQ_MERGE_DICTS -up-> CSTRQ_MERGE_DICTS: satisfies\n
SWRQ_USE_FIRST_VALUE_FOR_KEY -up-> CSTRQ_DETECT_MERGE_CONFLICTS: satisfies\n

@enduml

Requirement Linkage

Used filter:

NeedUML

Documentation: How-to use Sphinx-Needs NeedUML [12]. The debug option is often useful here, see Sphinx-Needs NeedUML & NeedArch debug option [14]. The code been expected and generated is for plantuml [15]. You can use needs-render-context to extend the data available in needarch and needuml.

Example 12: How-to use a NeedUML.

.. needuml::
   :debug:

   {{flow("M_MERGE_DICTS")}}

   note right of [M_MERGE_DICTS]
      We use M_MERGE_DICTS to
      merge python dictionaries.
   end note

@startuml

package "<size:12>Module</size>\n**merge_dicts**\n<size:10>M_MERGE_DICTS</size>" as M_MERGE_DICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/architecture/merge_dicts.html#M_MERGE_DICTS]] #abcdef

note right of [M_MERGE_DICTS]
   We use M_MERGE_DICTS to
   merge python dictionaries.
end note
@enduml

@startuml

package "<size:12>Module</size>\n**merge_dicts**\n<size:10>M_MERGE_DICTS</size>" as M_MERGE_DICTS [[https://reconf2023-product-as-code-philippartsch-a4d4571b1b7e4136d3bdb6.gitlab.io/architecture/merge_dicts.html#M_MERGE_DICTS]] #abcdef

note right of [M_MERGE_DICTS]
   We use M_MERGE_DICTS to
   merge python dictionaries.
end note
@enduml

NeedArch

NeedArch is extending the functionality of NeedUML, to access local data of a Need. Documentation: How-to use Sphinx-Needs NeedArch [11]. The code been expected and generated is for plantuml [15] and you can use jinja [16] to template your planuml code.

You can find detailed description in How-To model Architecture.

Templating

With templates you can template the content for needs. It is even possible to add text before and after a need. Documentation: the documentation is part of needs docu under How-to use Sphinx-Needs Templates [17].

We use it here finally in conf.py:

Listing 4 How-to assign the templates to needs via global options
360needs_global_options = {
361    'test_status': {'predicates': [('type=="sw_req"', '[[check_verified()]]')]},

The templates are defined available in /needs_templates e.g. arch_template.need used in docname == “architecture-examples”:

Listing 5 How-to assign the templates to needs via global options
 1{# Place the original content here #}
 2{{content}}
 3
 4**Following needarch is been added with needs template**
 5
 6:np:`(Deployment)` Diagram
 7
 8{% raw %}
 9.. needarch::
10   :key: Deployment
11
12   {{flow(need().id)}} {
13   {% for e in need().parent_needs_back %}
14   {% if needs[e].parent_need == need().id and (needs[e].type == "outport" or needs[e].type == "inport") %}{{uml(e)}}{% endif %}
15   {% endfor %}
16   {% if 'Deployment' in need().parts %}card "Deployment Diagram" as {{need().id + '.Deployment'}} {{ref(need().id + '.Deployment')}}{% endif %}
17   {% if 'Sequence' in need().parts %}card "Sequence Diagram" as {{need().id + '.Sequence'}} {{ref(need().id + '.Sequence')}}{% endif %}
18   }
19{% endraw %}

An example need which uses such template is Component with Diagrams (C_DIAGRAMS).

Dynamic functions

Documentation: How-to use Sphinx-Needs Dynamic functions [18].

You can even define your own dynamic functions in conf.py and use them in your needs. See Sphinx-Needs develop-own-functions.

Example 13: How-to use dynamic functions.

.. need:: Test Dynamic Functions 1
   :id: N_DF_1
   :status: open

   This need has id :ndf:`copy("id")` and status :ndf:`copy("status")`.

.. need:: Test Dynamic Functions 2
   :id: N_DF_2
   :status: [[copy("status", "N_DF_1")]]
   :links: N_DF_1

   Copies status of :need:`N_DF_1` to own status.

.. need:: Test Dynamic Functions 3
   :id: N_DF_3
   :links: N_DF_2, [[copy('links', 'N_DF_2')]]

   Set own link to :need:`N_DF_1` and also copies all links from it.

Layouts

Documentation: with an dedicated chapter under How-to use Sphinx-Needs Layouts & Styles [19].

You can define your own layouts finally in conf.py with needs_layouts and use them for your needs:

Listing 6 How-to define the layouts
254needs_layouts = {
255    "clean_with_edit_link": {
256        "grid": "simple",
257        "layout": {
258            "head": [
259                '<<meta("type_name")>>: **<<meta("title")>>** <<meta_id()>>  <<collapse_button("meta", '
260                'collapsed="icon:arrow-down-circle", visible="icon:arrow-right-circle", initial=False)>>   '
261                '<<link(url="github_edit_url", image_url="icon:edit", image_height="17", image_width="17", is_dynamic=True)>>'
262            ],
263            "meta": [
264                '<<meta_all(no_links=True, exclude=["layout", "post_template", "style", "delete", "jinja_content", "github_edit_url"])>>',
265                '<<meta_links_all()>>'
266            ],
267        },

It is been used here, to get the edit button on all needs.

You can set the default layout like we do in conf.py

Listing 7 How-to set default layout of a need
258needs_default_layout = 'clean_with_edit_link'

You could set the layout even via needs_global_options.

Variant Management

You can find detailed description in How-To use variant management.

References