All needs [BigTree]

We can also show the relations between all product (cq releases) and it needs in one big tree [1].

@startuml

' Nodes definition 

node "<size:12>Demonstrator</size>\n**Simple**\n**Calculator**\n<size:10>CALC1</size>" as CALC1 [[.._SystemEngineering_RequirementsTraceability_demo_demo1.html?highlight_Simple+Calculator_CALC1]] #9DC5BB {
  }
frame "<size:12>Requirement</size>\n**Generic Add**\n<size:10>CALC_ADD</size>" as CALC_ADD [[.._SystemEngineering_RequirementsTraceability_demo_demo1.html?highlight_Generic+Add_CALC_ADD]] #C5EBC3 {
  }
frame "<size:12>Requirement</size>\n**Generic Sub**\n<size:10>CALC_SUB</size>" as CALC_SUB [[.._SystemEngineering_RequirementsTraceability_demo_demo1.html?highlight_Generic+Sub_CALC_SUB]] #C5EBC3 {
  }
frame "<size:12>Requirement</size>\n**Generic**\n**Multiply**\n<size:10>CALC_MULT</size>" as CALC_MULT [[.._SystemEngineering_RequirementsTraceability_demo_demo1.html?highlight_Generic+Multiply_CALC_MULT]] #C5EBC3 {
  }
frame "<size:12>Requirement</size>\n**Generic Divide**\n<size:10>CALC_DIV</size>" as CALC_DIV [[.._SystemEngineering_RequirementsTraceability_demo_demo1.html?highlight_Generic+Divide_CALC_DIV]] #C5EBC3 {
  }
folder "<size:12>Test_Case</size>\n**Basic addition**\n**test**\n<size:10>CALC_TEST_ADD_1</size>" as CALC_TEST_ADD_1 [[.._SystemEngineering_RequirementsTraceability_demo_demo1.html?highlight_Basic+addition+test_CALC_TEST_ADD_1]] #F6E27F {
  }
folder "<size:12>Test_Case</size>\n**Big  addition**\n**test**\n<size:10>CALC_TEST_ADD_2</size>" as CALC_TEST_ADD_2 [[.._SystemEngineering_RequirementsTraceability_demo_demo1.html?highlight_Big++addition+test_CALC_TEST_ADD_2]] #F6E27F {
  }
folder "<size:12>Test_Case</size>\n**Subtract test**\n<size:10>CALC_TEST_SUB_1</size>" as CALC_TEST_SUB_1 [[.._SystemEngineering_RequirementsTraceability_demo_demo1.html?highlight_Subtract+test_CALC_TEST_SUB_1]] #F6E27F {
  }
folder "<size:12>Test_Case</size>\n**Multiplication**\n**test**\n<size:10>CALC_TEST_MULT_1</size>" as CALC_TEST_MULT_1 [[.._SystemEngineering_RequirementsTraceability_demo_demo1.html?highlight_Multiplication+test_CALC_TEST_MULT_1]] #F6E27F {
  }
node "<size:12>Demonstrator</size>\n**Exact**\n**Calculator**\n<size:10>CALC2</size>" as CALC2 [[.._SystemEngineering_RequirementsTraceability_demo_demo2.html?highlight_Exact+Calculator_CALC2]] #9DC5BB {
  }
component "<size:12>Specification</size>\n**Big fractional**\n**numbers**\n<size:10>CALC2_1000ND</size>" as CALC2_1000ND [[.._SystemEngineering_RequirementsTraceability_demo_demo2.html?highlight_Big+fractional+numbers_CALC2_1000ND]] #FEDCD2 {
  }
folder "<size:12>Test_Case</size>\n**DIV test (demo2**\n**only)**\n<size:10>CALC2_TEST_DIV_1</size>" as CALC2_TEST_DIV_1 [[.._SystemEngineering_RequirementsTraceability_demo_demo2.html?highlight_DIV+test+_28demo2+only_29_CALC2_TEST_DIV_1]] #F6E27F {
  }

' Connection definition 

CALC_ADD --> CALC1
CALC_ADD --> CALC2
CALC_SUB --> CALC1
CALC_SUB --> CALC2
CALC_MULT --> CALC1
CALC_MULT --> CALC2
CALC_DIV --> CALC1
CALC_DIV --> CALC2
CALC_TEST_ADD_1 --> CALC_ADD
CALC_TEST_ADD_1 --> CALC2_1000ND
CALC_TEST_ADD_2 --> CALC_ADD
CALC_TEST_ADD_2 --> CALC2_1000ND
CALC_TEST_SUB_1 --> CALC_SUB
CALC_TEST_SUB_1 --> CALC2_1000ND
CALC_TEST_MULT_1 --> CALC_MULT
CALC_TEST_MULT_1 --> CALC2_1000ND
CALC2 --> CALC1
CALC2_1000ND --> CALC_ADD
CALC2_1000ND --> CALC_SUB
CALC2_1000ND --> CALC_MULT
CALC2_1000ND --> CALC_DIV
CALC2_1000ND --> CALC2
CALC2_TEST_DIV_1 --> CALC_DIV
CALC2_TEST_DIV_1 --> CALC2_1000ND

@enduml

Lessons learned

  1. We have at least one test-case for each requirement; as we can clearly see.
  2. The “puzzling” specification for Exact Calculator (CALC2) have an affinity with both the requirements and the test-cases
  3. The (general) requirements for both calculators are equal.
  4. Both calculators are akin; Exact Calculator (CALC2) is kind of a enhanced version of Simple Calculator (CALC1)

This “BigTree” gives a global overview of all ‘needs’ and there relations; which gives insight into product and how to test it. It can be generated when the requirements (and other ‘needs’) are affixed with their (outgoing) links.
Even when the number of ‘needs’ becomes huge, this graph can be drawn quite clear – although you make like to use a big slide of paper.

It will directly shown some “isolated” requirements or test, when you forgot to add a link. Also other “curious looking” parts of the drawing may need some attention. As it remarkable often denotes some mistakes.

Footnotes & Links

[1]In general, and strictly speaking, this graph can be a “forrest”: a collection of trees. Mostly, people like to use the term “tree” anyhow.
However as this chapter is about requirements and quality, and I’m trying to convince you to be strict, this footnote seems non-trivial …

Comments

comments powered by Disqus