summaryrefslogtreecommitdiffstats
path: root/spec-glossary/glossary/softwarecomponent.yml
blob: ae70d6ff1b61ffe365e6c6e154a50e9d33713ba9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
copyrights:
- Copyright (C) 2019 embedded brains GmbH & Co. KG
enabled-by: true
glossary-type: term
links:
- role: glossary-member
  uid: ../glossary-general
term: software component
text: |
  This term is defined by ECSS-E-ST-40C 3.2.28 as a "part of a software
  system".  For this project a *software component* shall be any of the
  following items and nothing else:

  * ${softwareunit:/term}

  * explicitly defined ${elf:/term} symbol in a
    ${sourcecode:/term} file

  * ${assemblerlanguage:/term} data in a source code file

  * ${clanguage:/term} object with static storage duration

  * C language object with thread-local storage duration

  * ${thread:/term}

  * ${interruptservice:/term}

  * collection of *software components* (this is a software architecture
    element)

  Please note that explicitly defined ELF symbols and assembler language
  data are considered a software component only if they are defined in a
  ${sourcecode:/term} file.  For example, this rules out symbols
  and data generated as side-effects by the toolchain (compiler, assembler,
  linker) such as jump tables, linker trampolines, exception frame information,
  etc.
type: glossary