package CarSystem public with SoftwareApps, Sensors, UserInterface,Actuators,HardwarePlatform,SEI; system MyCar properties SEI::WeightLimit => 57.0 kg; end MyCar; system implementation MyCar.parts subcomponents ecu: system HardwarePlatform::cc_mcu; wrs: device Sensors::WheelRotationSensor; bp: device Sensors::BrakePedal; ui: device UserInterface::UserInput; ta: device Actuators::ThrottleActuator; ud: device UserInterface::UserDisplay; -- cc is a software component without weight cc: system SoftwareApps::CruiseControl; end MyCar.parts; system implementation MyCar.CruiseControl subcomponents ecu: system HardwarePlatform::cc_mcu; wrs: device Sensors::WheelRotationSensor; bp: device Sensors::BrakePedal; ui: device UserInterface::UserInput; ta: device Actuators::ThrottleActuator; ud: device UserInterface::UserDisplay; -- cc is a software component without weight cc: system SoftwareApps::CruiseControl; connections bp_cc_conn: feature group bp.bp_cc <-> cc.cc_bp; wrs_cc_conn: feature group wrs.wrs_cc <-> cc.cc_wrs; ui_cc_conn: feature group ui.ui_cc <-> cc.cc_ui; cc_ta_conn: feature group cc.cc_ta <-> ta.ta_cc; cc_ud_conn: feature group cc.cc_ud <-> ud.ud_cc; flows Flow_B_T: end to end flow bp.bp_source -> bp_cc_conn -> cc.Flow_B_T -> cc_ta_conn -> ta.ta_sink {Latency => 50ms .. 50ms;}; Flow_W_T: end to end flow wrs.wrs_source -> wrs_cc_conn -> cc.Flow_W_T -> cc_ta_conn -> ta.ta_sink {Latency => 40ms .. 40ms;}; end MyCar.CruiseControl; end CarSystem;