Requirements of performance measurements for DDS

This page contains the requirements for the performance measurements in DDS. It is separated into 2 chapters. One of them contains the requirements of the client. The other chapter contains the specifications. The specifications describe the requirements in a SMART way. These specifications are therefore testable to see if the requirement is met. The specifications are, in this project, created by the developer and discussed with the client.

The table below shows all the requirements and specifications. Additionally, it shows the specifications that belong to a requirement. This way, the specifications linked to a requirement can easily be found.

ID Type Title Incoming Outgoing
Doc_1 req readable documentation
Doc_2 req formal documentation
Doc_3 req team pages documentation
Perf_1 req performance of DDS
Learn_1 req learning
Commer_1 req commercial availability
API_1 req API's
DOC_DEV spec further development documentation
DOC_INSTRUCTIONS spec documentation instructions
DOC_SPH spec documentation style
DOC_QoS spec documentation of Quality of Service policies
DOC_UML spec PlantUML usage
DOC_DDS spec software documentation of DDS
PERF_LIB spec software DDS library
PERF_CPU spec performance CPU
PERF_MEM spec performance memory
PERF_CONNECT spec performance of connecting
PERF_DISCONNECT spec performance of disconnecting
PERF_QoS spec performance difference Quality of Service policies
PERF_SCALABLE spec documentation of Quality of Service policies
LEARN_WRAPPER spec software wrapper
COMMERCIAL_LICENSE spec commercial license
API_TEST spec different API's
PERF_API spec performance different API's

Requirements

The requirements are given by the client and are not SMART defined.

Documentation

The graph below shows the linkage between the requirements and the corresponding specifications. These requirements are all related to the documentation.

The requirement of the team pages does not contain any SMART defined specifications. The team pages can be used for documenting things quickly and less precise. There are no additional specifications bound to this requirement.

@startuml

' Nodes definition 

node "<size:12>Requirement</size>\n**readable**\n**documentation**\n<size:10>Doc_1</size>" as Doc_1 [[../Teams/2.Demonstra-Tors/Requirements.html#Doc_1]] #BFD8D2 
node "<size:12>Requirement</size>\n**formal**\n**documentation**\n<size:10>Doc_2</size>" as Doc_2 [[../Teams/2.Demonstra-Tors/Requirements.html#Doc_2]] #BFD8D2 
node "<size:12>Requirement</size>\n**team pages**\n**documentation**\n<size:10>Doc_3</size>" as Doc_3 [[../Teams/2.Demonstra-Tors/Requirements.html#Doc_3]] #BFD8D2 
node "<size:12>Specification</size>\n**further**\n**development**\n**documentation**\n<size:10>DOC_DEV</size>" as DOC_DEV [[../Teams/2.Demonstra-Tors/Requirements.html#DOC_DEV]] #FEDCD2 
node "<size:12>Specification</size>\n**documentation**\n**instructions**\n<size:10>DOC_INSTRUCTIONS</size>" as DOC_INSTRUCTIONS [[../Teams/2.Demonstra-Tors/Requirements.html#DOC_INSTRUCTIONS]] #FEDCD2 
node "<size:12>Specification</size>\n**documentation**\n**style**\n<size:10>DOC_SPH</size>" as DOC_SPH [[../Teams/2.Demonstra-Tors/Requirements.html#DOC_SPH]] #FEDCD2 
node "<size:12>Specification</size>\n**documentation**\n**of Quality of**\n**Service**\n**policies**\n<size:10>DOC_QoS</size>" as DOC_QoS [[../Teams/2.Demonstra-Tors/Requirements.html#DOC_QoS]] #FEDCD2 
node "<size:12>Specification</size>\n**PlantUML usage**\n<size:10>DOC_UML</size>" as DOC_UML [[../Teams/2.Demonstra-Tors/Requirements.html#DOC_UML]] #FEDCD2 
node "<size:12>Specification</size>\n**software**\n**documentation**\n**of DDS**\n<size:10>DOC_DDS</size>" as DOC_DDS [[../Teams/2.Demonstra-Tors/Requirements.html#DOC_DDS]] #FEDCD2 

' Connection definition 

DOC_DEV --> Doc_1
DOC_INSTRUCTIONS --> Doc_1
DOC_SPH --> Doc_1
DOC_QoS --> Doc_1
DOC_UML --> Doc_2
DOC_DDS --> Doc_2

@enduml

Requirement: readable documentation Doc_1 ../../_images/arrow-right-circle.svg
tags: documentation
The documentation must be readable for developers who want to learn more about DDS.
Requirement: formal documentation Doc_2 ../../_images/arrow-right-circle.svg
tags: documentation
links incoming: DOC_UML, DOC_DDS
The formal documentation is the documentation for the delivered artefacts and should be clear and concise.
Requirement: team pages documentation Doc_3 ../../_images/arrow-right-circle.svg
tags: documentation
The team pages may have less concise language, there are no additional requirements for the team page documentation other than the General requirements.

Software

The graph below shows the link between the requirements and the corresponding specifications. These requirements are all related to the software that shall be developed during the project.

@startuml

' Nodes definition 

node "<size:12>Requirement</size>\n**performance of**\n**DDS**\n<size:10>Perf_1</size>" as Perf_1 [[../Teams/2.Demonstra-Tors/Requirements.html#Perf_1]] #BFD8D2 
node "<size:12>Requirement</size>\n**learning**\n<size:10>Learn_1</size>" as Learn_1 [[../Teams/2.Demonstra-Tors/Requirements.html#Learn_1]] #BFD8D2 
node "<size:12>Requirement</size>\n**commercial**\n**availability**\n<size:10>Commer_1</size>" as Commer_1 [[../Teams/2.Demonstra-Tors/Requirements.html#Commer_1]] #BFD8D2 
node "<size:12>Requirement</size>\n**API's**\n<size:10>API_1</size>" as API_1 [[../Teams/2.Demonstra-Tors/Requirements.html#API_1]] #BFD8D2 
node "<size:12>Specification</size>\n**software DDS**\n**library**\n<size:10>PERF_LIB</size>" as PERF_LIB [[../Teams/2.Demonstra-Tors/Requirements.html#PERF_LIB]] #FEDCD2 
node "<size:12>Specification</size>\n**performance CPU**\n<size:10>PERF_CPU</size>" as PERF_CPU [[../Teams/2.Demonstra-Tors/Requirements.html#PERF_CPU]] #FEDCD2 
node "<size:12>Specification</size>\n**performance**\n**memory**\n<size:10>PERF_MEM</size>" as PERF_MEM [[../Teams/2.Demonstra-Tors/Requirements.html#PERF_MEM]] #FEDCD2 
node "<size:12>Specification</size>\n**performance of**\n**connecting**\n<size:10>PERF_CONNECT</size>" as PERF_CONNECT [[../Teams/2.Demonstra-Tors/Requirements.html#PERF_CONNECT]] #FEDCD2 
node "<size:12>Specification</size>\n**performance of**\n**disconnecting**\n<size:10>PERF_DISCONNECT</size>" as PERF_DISCONNECT [[../Teams/2.Demonstra-Tors/Requirements.html#PERF_DISCONNECT]] #FEDCD2 
node "<size:12>Specification</size>\n**performance**\n**difference**\n**Quality of**\n**Service**\n**policies**\n<size:10>PERF_QoS</size>" as PERF_QoS [[../Teams/2.Demonstra-Tors/Requirements.html#PERF_QoS]] #FEDCD2 
node "<size:12>Specification</size>\n**documentation**\n**of Quality of**\n**Service**\n**policies**\n<size:10>PERF_SCALABLE</size>" as PERF_SCALABLE [[../Teams/2.Demonstra-Tors/Requirements.html#PERF_SCALABLE]] #FEDCD2 
node "<size:12>Specification</size>\n**software**\n**wrapper**\n<size:10>LEARN_WRAPPER</size>" as LEARN_WRAPPER [[../Teams/2.Demonstra-Tors/Requirements.html#LEARN_WRAPPER]] #FEDCD2 
node "<size:12>Specification</size>\n**commercial**\n**license**\n<size:10>COMMERCIAL_LICENSE</size>" as COMMERCIAL_LICENSE [[../Teams/2.Demonstra-Tors/Requirements.html#COMMERCIAL_LICENSE]] #FEDCD2 
node "<size:12>Specification</size>\n**different API's**\n<size:10>API_TEST</size>" as API_TEST [[../Teams/2.Demonstra-Tors/Requirements.html#API_TEST]] #FEDCD2 
node "<size:12>Specification</size>\n**performance**\n**different API's**\n<size:10>PERF_API</size>" as PERF_API [[../Teams/2.Demonstra-Tors/Requirements.html#PERF_API]] #FEDCD2 

' Connection definition 

PERF_LIB --> Perf_1
PERF_CPU --> Perf_1
PERF_MEM --> Perf_1
PERF_CONNECT --> Perf_1
PERF_DISCONNECT --> Perf_1
PERF_QoS --> Perf_1
PERF_QoS --> PERF_CPU
PERF_QoS --> PERF_MEM
PERF_QoS --> PERF_CONNECT
PERF_QoS --> PERF_DISCONNECT
PERF_SCALABLE --> Perf_1
PERF_SCALABLE --> PERF_CPU
PERF_SCALABLE --> PERF_MEM
PERF_SCALABLE --> PERF_CONNECT
PERF_SCALABLE --> PERF_DISCONNECT
LEARN_WRAPPER --> Learn_1
COMMERCIAL_LICENSE --> Commer_1
API_TEST --> API_1
PERF_API --> API_1
PERF_API --> API_TEST

@enduml

Requirement: performance of DDS Perf_1 ../../_images/arrow-right-circle.svg
The performance of DDS shall be measured with various configurations.
Requirement: learning Learn_1 ../../_images/arrow-right-circle.svg
tags: software
links incoming: LEARN_WRAPPER
The delivered artefacts are made for learning/explaining DDS.
Requirement: commercial availability Commer_1 ../../_images/arrow-right-circle.svg
tags: software
links incoming: COMMERCIAL_LICENSE
The delivered software can be used in commercial products.
Requirement: API's API_1 ../../_images/arrow-right-circle.svg
tags: software
links incoming: API_TEST, PERF_API
The effect of different API’s for DDS must be compared with each other, if possible.

Specifications

The specifications are defined with the client. These are derived from the main requirements.

Documentation

The specifications for the documentation are listed below.

Specification: further development documentation DOC_DEV ../../_images/arrow-right-circle.svg
tags: documentation
requirement: MUST
links outgoing: Doc_1

Every artefact shall be documented in such extent that a developer knows how DDS is used within the artefact.

Note

This specification can be checked by giving 2 developers the project including the documentation. They should be able to explain how DDS is used within the project.

Specification: documentation instructions DOC_INSTRUCTIONS ../../_images/arrow-right-circle.svg
tags: documentation
requirement: MUST
links outgoing: Doc_1

Every artefact contains execution instructions that can be followed by developers.

Note

This requirement can be checked by giving 2 developers the project including the documentation. They should be able to successfully execute the instructions.

Specification: documentation style DOC_SPH ../../_images/arrow-right-circle.svg
tags: documentation
requirement: MUST
links outgoing: Doc_1
The documentation shall be written in ReStructured Text for Sphinx.
Specification: documentation of Quality of Service policies DOC_QoS ../../_images/arrow-right-circle.svg
tags: documentation
requirement: MUST
links incoming: PERF_QoS

The performance differences between Quality of Service policies are documented.

Note

There must be results of performance measurements that show what Quality of Service policies are faster or slower based on the performance measurements (performance CPU (PERF_CPU), performance memory (PERF_MEM), performance of connecting (PERF_CONNECT), performance of disconnecting (PERF_DISCONNECT)). At least 2 different Quality of Service policies must be compared with each other.

Specification: PlantUML usage DOC_UML ../../_images/arrow-right-circle.svg
tags: documentation
requirement: MUST
links outgoing: Doc_2

All diagrams within the Sphinx documentation shall be written using PlantUML, if they are supported by the PlantUML language.

Note

This also includes the extended functionalities of PlantUML like Ditaa and DOT.

Specification: software documentation of DDS DOC_DDS ../../_images/arrow-right-circle.svg
tags: documentation
requirement: MUST
links outgoing: Doc_2

The use of DDS within the software shall be documented.

Note

The documentation of the software shall contain a technical explanation of how DDS is used within the application.

Software

The specifications for the software are listed below.

Specification: software DDS library PERF_LIB ../../_images/arrow-right-circle.svg
tags: software
requirement: MUST
links outgoing: Perf_1

The Cyclone DDS library shall be used as the DDS implementation.

Note

Only if something is not implemented in the CycloneDDS library, a different DDS implementation may be used for the tests.

Specification: performance CPU PERF_CPU ../../_images/arrow-right-circle.svg
tags: software
requirement: SHOULD
links outgoing: Perf_1
links incoming: DOC_QoS, PERF_QoS, PERF_SCALABLE
The CPU usage of different Quality of Service policies shall be measured.
Specification: performance memory PERF_MEM ../../_images/arrow-right-circle.svg
tags: software
requirement: SHOULD
links outgoing: Perf_1
links incoming: DOC_QoS, PERF_QoS, PERF_SCALABLE
The memory usage of different Quality of Service policies shall be measured.
Specification: performance of connecting PERF_CONNECT ../../_images/arrow-right-circle.svg
tags: software
requirement: MUST
links outgoing: Perf_1
links incoming: DOC_QoS, PERF_QoS, PERF_SCALABLE
The time between the DDS registration of a device and the notification of other devices shall be measured.
Specification: performance of disconnecting PERF_DISCONNECT ../../_images/arrow-right-circle.svg
tags: software
requirement: MUST
links outgoing: Perf_1
links incoming: DOC_QoS, PERF_QoS, PERF_SCALABLE
The time between the DDS disconnection of a device and the notification of other devices shall be measured.
Specification: performance difference Quality of Service policies PERF_QoS ../../_images/arrow-right-circle.svg
tags: software
requirement: MUST
The performance of Quality of Service policies within DDS shall be compared to each other.
Specification: documentation of Quality of Service policies PERF_SCALABLE ../../_images/arrow-right-circle.svg
tags: software
requirement: SHOULD

The difference in performance, CPU/memory footprint, registration time, disconnection time, shall be recorded with 2 devices in the network compared to at least 4 devices in the network.

Note

This requirement tests the scalability of DDS.

Specification: software wrapper LEARN_WRAPPER ../../_images/arrow-right-circle.svg
tags: software
requirement: SHOULD
links outgoing: Learn_1
The functions of Cyclone DDS shall not be used within a wrapper.
Specification: commercial license COMMERCIAL_LICENSE ../../_images/arrow-right-circle.svg
tags: software
requirement: MUST
links outgoing: Commer_1
The delivered software shall be in accordance with the MIT, BSD or Apache licenses, with an exception for the DDS library.
Specification: different API's API_TEST ../../_images/arrow-right-circle.svg
tags: software
requirement: SHOULD
links outgoing: API_1
links incoming: PERF_API
The communication between 2 different APIs shall be tested (The C/C++ API and the Python API).
Specification: performance different API's PERF_API ../../_images/arrow-right-circle.svg
tags: software
requirement: SHOULD
links outgoing: API_1, API_TEST
The difference in performance, speed of the implementation, shall be measured between different APIs (if this is possible, see requirement different API's (API_TEST)).