Module Structure Overview#

As described in the Technology Overview chapter, Eclipse S-CORE consists of multiple bazel modules, typically stored in separate repositories. Most modules reside in the Eclipse S-CORE GitHub organization, while some originate from other Eclipse projects and are reused here. This chapter introduces the most important bazel modules and repositories in Eclipse S-CORE GitHub organization.

module deps

Eclipse S-CORE Platform#

GitHub Link: eclipse-score/score

This is the central repository of the project. It contains:

  • stakeholder requirements

  • Assumptions of Use (AoUs) for potential users

  • the list of platform features

  • the high-level architecture

  • the decomposition of the architecture into modules

  • the definition of logical interfaces and module functionality

Process Description#

GitHub Link: eclipse-score/process_description

Hint

We automatically generate for every repository html documentation from rst files. You can easily open it as shown at the picture below.

Generated Doc in GitHub

The process repository describes the Eclipse S-CORE software development process. It describes:

  • the general concepts and principles of the Eclipse S-CORE software development process

  • all process areas in detail

  • how work products such as requirements and architecture must be specified

  • PMP describes, how the processes are deployed within S-CORE Project Management Plan

Process areas

Doc-as-Code#

GitHub Link: eclipse-score/docs-as-code

Doc-as-code repository provides the tooling around sphinx and sphinx-needs framework, including:

  • traceability between requirements, architecture, and tests

  • linking process artefacts

  • checks that validate the Eclipse S-CORE metamodel, as defined in the process description

The implementation status of tooling requirements is available in the Tool Requirements Overview.

Tooling#

GitHub Link: eclipse-score/tooling

Tooling repository collects all supporting tools for the Eclipse S-CORE project, e.g., format_checkers.

Toolchains and bazel platform#

GitHub Link:

These repositories define toolchains (gcc/qnx/rust) including compiler and linker flags used to build the Eclipse S-CORE software. The repository called “bazel platforms” defines the platforms supported by Eclipse S-CORE (e.g., x86_64-qnx), as shown in the following BUILD file.

Bazel Registry#

GitHub Link: eclipse-score/bazel_registry

Bazel registry is essential for publishing official releases of all Eclipse S-CORE bazel modules. It enables consistent and reliable module referencing across the entire project.

Software Modules#

GitHub Link (e.g. for baselibs): eclipse-score/baselibs

Each software module is a bazel module stored in its own repository. Software modules typically include:

  • component requirements and architecture

  • detailed design

  • implementation

  • unit- and component tests

  • documentation

Modules usually depend on other modules in the Eclipse S-CORE GitHub organization, especially on

  • eclipse-score module to reference feature requirements and architecture in the component requirements and architecture

  • eclipse-score/docs-as-code module for sphinx/sphinx-needs framework and tooling around it

  • toolchains modules for the compiler toolchains.

Reference Integration#

GitHub Link: eclipse-score/reference_integration

This repository is a key part of the Eclipse S-CORE project. All Eclipse S-CORE modules are integrated together to ensure, that they match to each other. It integrates all software modules into reference images (e.g., a qnx x86 image) to verify that:

  • all module dependencies are consistent

  • modules work correctly together

  • feature requirements are fulfilled

Feature integration tests are executed on these reference images to validate the complete platform.