Release af40b656c85d25ecf7eb1ee930b00fdf

This commit is contained in:
Dirk Alders 2025-03-23 20:55:25 +01:00
parent 8ab382dd63
commit 4e552631e3
4 changed files with 47219 additions and 185798 deletions

Binary file not shown.

View File

@ -0,0 +1,261 @@
def specification(req_spec):
req_spec.add_title("Title")
#
# Section
#
sec_uuid = req_spec.add(
itemtype="SEC",
id=1,
heading="Message Object",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=1,
heading="Status",
description="The Status shall hold some general information (in most cases it is used by the responder). Examples: Okay, Service or Data unknown, Operation not permitted, Authentification required, \\ldots",
reason="Give the possibility to transfer additional status information (e.g. to explain negative responses).",
fitcriterion="A Status is part of the Message Object and it is holding the Status information.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=2,
heading="Service-ID",
description="The Service-ID shall hold information about the type of the request / corresponding response. Examples: read request, write request, read response, write response, \\ldots",
reason="Give the requestor the possibility to use different types (Services) for a transfer. ",
fitcriterion="A Service-ID is part of the Message Object and it is holding the Service-ID information.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=3,
heading="Data-ID",
description="The Data-ID shall hold information to differtiate the data for a specific Service.",
reason="Give the possibility to transfer different information for each Service. ",
fitcriterion="A Data-ID is part of the Message Object and it is holding the Data-ID information.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=4,
heading="Data",
description="The Data shall hold the data to be transfered. For the most requests not data is transmitted.",
reason="Give the possibility to transfer Data. ",
fitcriterion="Data is part of the Message Object and it is holding the Data information.",
)
#
# Section
#
sec_uuid = req_spec.add(
itemtype="SEC",
id=2,
heading="Communication",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=5,
heading="A full Message Object including the defined properties and data shall be transfered.",
description="Every Communication shall transfer a complete message with its content.",
reason="See Reasons for every single information of the Message Object.",
fitcriterion="Send two different messages and compare the received message with each sent message.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=6,
heading="A checksumm shall ensure the correct transmition",
description="If the checksum does not fit to the checksum of the transferred data, the message will be ignored, because the complete content including the Service- and Data-ID is possibly corrupted.",
reason="Ensure correct data transfer.",
fitcriterion="Corrupted message is not in the receive buffer after transmission.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=7,
heading="An authentification between server and client shall be possible including status feedback methods ",
description="The Client shall have a method to initiate the authentification. In case that the server and the client do have identical secrets, the authentification shall be successfull.",
reason="Message protection (e.g. for secure functions or data)",
fitcriterion="Check authentification method feedback (client) and authentification feedback (client and server), in case of differing and identical secrets.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=14,
heading="An automatic authentification shall available",
description="An authentification is executed by the client on every connect.",
reason="Simplify handling for authentification.",
fitcriterion="Check authentification feedback (client and server) after connect has been triggered.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=8,
heading="Communication (rx and tx) shall be disabled, if a secret is given but no authentification had been successfully performed.",
description="Communication (rx and tx) shall be disabled, if a secret is given. Except of a response for registered services, saying that a Authentification is required.",
reason="Message protection (e.g. for secure functions or data)",
fitcriterion="RX and TX is not possible, till a successfull authentification has been performed.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=9,
heading="A whitelist for communication (rx and tx) shall be available to enable communication for unauthorised counterparts",
description="It shall be possible to add a specific message, identified by Service-ID and Data-ID, to a whitelist. All messages added to that whitelist shall be transmitted and received, if no authentification was successfull performed.",
reason="Give the user the possibility to define messages which will not be protected behind the authentification mechanism.",
fitcriterion="Transmition and Reception will be enabled, after the message has been added to the whitelist.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=10,
heading="Define a channel name for the server and client after connection is established",
description="After the connection is established, the client will initiate the channel name exchange. The channel name defined on the client side will be dominant.",
reason="Structured logging by creating logger childs for each channel.",
fitcriterion="Perform a channel name exchange with no channel name definition, differing channel name definition and identical channel name definition. In all cases, the channel name of the client will be used. Perform two channel name exchanges with only one channel name definition. This definition will be used.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=11,
heading="The User shall be able to define a new service",
description="The service is defined by a Request Service-ID and a Response Service-ID.",
reason="Definition of Request and Response SIDs.",
fitcriterion="Define a service and check, that the server will respond on the new Service-ID. The Status shall be \"Request has no callback. Data buffered.\", because no callback is registered for that request.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=12,
heading="Registration of already registered request Service-ID or response Service-ID shall not be possible",
description="An exception shall be raised, if a service registration with an existing request SID or response SID is performed.",
reason="Changing existing services will create strange situations with already registered callbacks.",
fitcriterion="Catch exception for registration of existing request and response SID.",
)
#
# Section
#
sec_uuid = req_spec.add(
itemtype="SEC",
id=3,
heading="Callbacks",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=13,
heading="It shall be possible to register a callback for a specific Service- and Data-ID",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=15,
heading="It shall be possible to register a callback for a specific Service-ID and all Data-IDs",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=16,
heading="It shall be possible to register a callback for a specific Data-IDs and all Service-IDs",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=17,
heading="It shall be possible to register a callback for all incomming messages",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=18,
heading="Callback choice, if several callbacks are available (caused by wildcard callbacks)",
)
#
# Section
#
sec_uuid = req_spec.add(
itemtype="SEC",
id=4,
heading="Some additional Information and Passthrough Methods",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=20,
heading="Connection established information",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=21,
heading="Is connected information",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=22,
heading="Reconnect Method",
)
#
# Section
#
sec_uuid = req_spec.add(
itemtype="SEC",
id=5,
heading="Depreceated struct protocol",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=23,
heading="A full Message Object including the defined properties and data shall be transfered.",
description="Every Communication shall transfer a complete message with its content.",
reason="See Reasons for every single information of the Message Object.",
fitcriterion="Send two different messages and compare the received message with each sent message.",
)

File diff suppressed because it is too large Load Diff

Binary file not shown.