Skip to content

message_passing: derive component_requirements#555

Merged
castler merged 1 commit into
eclipse-score:mainfrom
gdadunashvili:dadu_component_requirements
Jun 26, 2026
Merged

message_passing: derive component_requirements#555
castler merged 1 commit into
eclipse-score:mainfrom
gdadunashvili:dadu_component_requirements

Conversation

@gdadunashvili

Copy link
Copy Markdown
Member

No description provided.

section "System Requirements" {

ScoreReq.CompReq SafetyCertifiedTransportMechanismUnderQNX {
description = "Under QNX, the message passing component shall use a safety-certified transport mechanism as the underlying IPC."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's basically the same statement as in the upper requirement. We should define here that we are using message passing.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We also should have a requirement what we use for linux to satisfy that this is OS abstracted

}

ScoreReq.CompReq OSProvidedSenderIdentity {
description = "The message passing server shall be able to identify the sender of each received message by the sender's OS-provided UID."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UID = user-id?
or unique id, if unique id, then is the question what unique id?

If user-id, then we need an aou that every process should have a different user-id, and we should link this here somehow.

@gdadunashvili gdadunashvili Jun 25, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I created a PR with tentative AoUs:
#597

}

ScoreReq.CompReq UnforgableSenderIdentity {
description = "The transport mechanism shall ensure that the UID used to identify a message, cannot be forged by the client."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This would then be a requirement towards the OS, no?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to my picture this would be an ExternalComponentRequirement

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree. That's why it is clustered in System Requirements section, i.e. Component level Requirements towards the system. If it needs to go in a different file I can do that.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or would it be better if this becomes an AOU?

section "Behaviour Requirements" {

ScoreReq.CompReq ServerCallbacksAreSequential {
description = "The server shall serialize all callbacks belonging to the same IServer instance, such that no two such callbacks execute concurrently."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is an IServer instance?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understood this and the next comment as a suggestion to not use API names but more generic terms like Server & Client, and made changes accordingly

}

ScoreReq.CompReq ServerProcessesSinglePendingRequest {
description = "The server shall not dispatch a new sent-with-reply message callback on a given IServerConnection until the preceding request has been replied to via `IServerConnection::Reply()`."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again IServerConnection, this sounds like implementation detail - I think what you did below with ´ClientConnection´ is maybe a little bit more abstract?

}

ScoreReq.CompReq ClientConnectionMaintainsStateMachine {
description = "The `ClientConnection` shall maintain a state machine with the states `Starting`, `Ready`, `Stopping`, and `Stopped`."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the allowed transitions between these states? Should we draw this in a state diagram?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I already drew a state diagram and it is merged
https://github.com/eclipse-score/communication/blob/main/score/message_passing/dependability/software_architectural_design/client_connection_activity_diagram.puml

Should I link it here? If yes what is our way of doing that? Just a path to the file?

safety = ScoreReq.Asil.B
derived_from = [MessagePassingSEooC.ServerInterface@1]
version = 1
}

ScoreReq.CompReq IServerStopListeningAPI {
description = "`IServer` shall provide a `StopListening` method that releases all registered callbacks and closes all active server connections."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really like this way of writing the API requirements, without exactly specifying the C++ API!

@castler castler added this pull request to the merge queue Jun 26, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jun 26, 2026
@castler castler added this pull request to the merge queue Jun 26, 2026
Merged via the queue into eclipse-score:main with commit a8b2478 Jun 26, 2026
9 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in COM - Communication FT Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants