(1) A system represents an assembly of interacting application software, execution platform, and system components. Systems can have multiple modes, each representing a possibly different configuration of components and their connectivity contained in the system. Systems may require access to data and bus components declared outside the system and may provide access to data and bus components declared within. Systems may be hierarchically nested.
Legality Rules
Category |
Type |
Implementation |
system |
Features: · port · feature group · provides subprogram access · requires subprogram access · provides subprogram group access · requires subprogram group access · provides bus access · requires bus access · provides data access · requires data access · feature Flow specifications: yes Modes: yes Properties: yes |
Subcomponents: · data · subprogram · subprogram group · process · processor · virtual processor · memory · bus · virtual bus · device · system · abstract Subprogram calls: no Connections: yes Flows: yes Modes: yes Properties: yes |
(L1) A system component type can contain subprogram, subprogram group, data and bus access declarations, port, feature group declarations. It can also contain flow specifications as well as property associations.
(L2) A system component implementation can contain abstract, data, subprogram, subprogram group, process, and system subcomponent declarations as well as execution platform components, i.e., processor, virtual processor, memory, bus, virtual bus, and device.
(L3) A system implementation can contain a modes subclause, a connections subclause, a flows subclause, and property associations.
(L4) A thread group must not contain a subprogram calls subclause.
Standard Properties
-- Properties related to source text
Source_Text: inherit list of aadlstring
Source_Language: inherit list of Supported_Source_Languages
-- Process property that can be specified at the system level as well
-- Runtime enforcement of address space boundaries
Runtime_Protection : inherit aadlboolean
-- Inheritable thread properties
Synchronized_Component: inherit aadlboolean => true
Active_Thread_Handling_Protocol:
inherit Supported_Active_Thread_Handling_Protocols => abort
Period: inherit Time
Deadline: inherit Time => Period
-- execution time related properties
Reference_Processor: inherit classifier ( processor )
-- scheduling properties
Time_Slot: list of aadlinteger
Priority: inherit aadlinteger
-- Properties related binding of software component source text in
-- systems to processors and memory
Allowed_Processor_Binding_Class:
inherit list of classifier (processor, virtual processor, system)
Allowed_Processor_Binding: inherit list of reference (processor, virtual processor, system)
Actual_Processor_Binding: inherit list of reference (processor, virtual processor)
Allowed_Memory_Binding_Class:
inherit list of classifier (memory, system, processor)
Allowed_Memory_Binding: inherit list of reference (memory, system, processor)
Actual_Memory_Binding: inherit list of reference (memory)
Allowed_Connection_Binding_Class:
inherit list of classifier(processor, virtual processor, bus, virtual bus, device, memory)
Allowed_Connection_Binding: inherit list of reference (processor, virtual processor, bus, virtual bus, device, memory)
Actual_Connection_Binding: inherit list of reference (processor, virtual processor, bus, virtual bus, device, memory)
Collocated: record (
Targets: list of reference (data, thread, process, system, connection);
Location: classifier ( processor, memory, bus, system ); )
Not_Collocated: record (
Targets: list of reference (data, thread, process, system, connection);
Location: classifier ( processor, memory, bus, system ); )
-- Properties related systems as execution platforms
Hardware_Source_Language: Supported_Hardware_Source_Languages
-- mode related properties
Resumption_Policy: enumeration ( restart, resume )
-- Properties related to startup of processor contained in a system
Startup_Deadline: Time
Startup_Execution_Time: Time_Range
-- Properties related to system load times
Load_Time: Time_Range
Load_Deadline: Time
-- Properties related to the hardware clock
Clock_Jitter: Time
Clock_Period: Time
Clock_Period_Range: Time_Range
Semantics
(2) A system component represents an assembly of software and execution platform components. All subcomponents of a system are considered to be contained in that system.
(3) Some system components consist of purely software components all of which must be bound to execution platform components outside the system itself. An example is an application software system. Some system components consist purely of computing hardware components. They represent aggregations of processor, memory, and bus components that act as the hardware platform. Some system component is a composition of devices and buses that represent the physical environment that the embedded software system interacts with. Some system components may be combinations of the above. Some system components are self-contained in that all contained software components are bound to execution platform components contained within the same system. Such self-contained systems may have external connectivity in the form of logical connection points represented by ports and physical connection points in the form of required or provided bus access. Examples, of such systems are database servers, GPS receivers, and digital cameras. Such self-contained systems with an external interface may represent the implementation of devices. The device representation takes a black-box perspective, while the system representation takes a white-box perspective and is associated with the device through the Implemented_As property.
(4) A system component can contain a modes subclause. Each mode can represent an alternative system configuration of contained subcomponents and their connections. The transition between modes is determined by the mode transition declarations of specific property associations.
Processing Requirements and Permissions
(5) Processing methods may restrict data, subprogram, and subprogram group subcomponents to be part of only one process address space. In that case they may require those subcomponents to be placed inside a process, thread group, or thread, and not be allowed in system implementations.