Download presentation
Presentation is loading. Please wait.
Published byFrank Strickland Modified over 10 years ago
1
Towards Context-oriented Self-adaptation in Resource-constrained Cyberphysical Systems Mikhail Afanasov*, Luca Mottola*† and Carlo Ghezzi* *Politecnico di Milano (Italy), †SICS Swedish ICT
2
Problem CPSs are intimately tied to the real world – Multiple environment dimensions at hand – Continuously changing environment The software must adapt Missing design and programming support
3
Example: Wildlife Tracking
4
Problem module ReportLogs{ uses interface Collection; uses interface DataStore; } implementation { int base_station_reachable = 0; event msg_t Beacon.receive(msg_t msg) { if (!acceleromenter_detects_activity()) return; if (call Battery.energy() <= THRESHOLD) return; base_station_reachable = 1; call GPS.stop() call BaseStationReset.stop(); call BaseStationReset.startOneShot(TIMEOUT); } event void BaseStationReset.fired() { base_station_reachable = 0; } event void ReportPeriod.fired() { switch (base_station_reachable){ case 0: call DataStore.deposit(msg); case 1: call Collection.send(msg);} }
5
Solution Context Context-Oriented Programming (COP) Language-independent design concepts Programming support
6
Solution context Unreachable { uses interface DataStore; } implementation { layered command void report(msg_t msg){ call DataStore.deposit(msg);} } context group BaseStationG { layered command void report(msg_t msg); } implementation { contexts Reachable, Unreachable is default, MyErrorC is error; components Routing, Logging; Reachable.Collection -> Routing; Unreachable.DataStore -> Logging; } context Reachable { uses interface Collection; } implementation { layered command void report(msg_t msg){ call Collection.send(msg);} } Functionality are decoupled; implementations are individually simpler
7
Context-oriented Programming Layered functions change the behavior depending on the context
8
Context-oriented Programming Java Python Erlang Lisp Objective-C Layered functions change the behavior depending on the context 8Kb RAM
9
Design Concepts Context group as collection of environmental situations sharing the same characteristics Context represents a single environmental situation in a group Context group Context
10
Wildlife Tracking Design
11
Programming: ConesC Context-Oriented extension of nesC Enable layered functions (commands) in nesC Redefine component and configuration
12
Execution Example call BaseStationG.report(msg);
13
activate BaseStationG.Reachable; //... activate BaseStationG.Unreachable; Execution Example
14
call BaseStationG.report(msg); activate BaseStationG.Reachable; //... activate BaseStationG.Unreachable; context Reachable { uses interface Collection; } implementation { //... layered command void report(msg_t msg){ call Collection.send(msg);}} context Unreachable { uses interface DataStore; } implementation { //... layered command void report(msg_t msg){ call DataStore.deposit(msg);}} Execution Example
15
call BaseStationG.report(msg); activate BaseStationG.Reachable; //... activate BaseStationG.Unreachable; context Reachable { uses interface Collection; } implementation { //... layered command void report(msg_t msg){ call Collection.send(msg);}} context Unreachable { uses interface DataStore; } implementation { //... layered command void report(msg_t msg){ call DataStore.deposit(msg);}} Execution Example
16
call BaseStationG.report(msg); activate BaseStationG.Reachable; //... activate BaseStationG.Unreachable; context Reachable { uses interface Collection; } implementation { //... layered command void report(msg_t msg){ call Collection.send(msg);}} context Unreachable { uses interface DataStore; } implementation { //... layered command void report(msg_t msg){ call DataStore.deposit(msg);}} Execution Example
17
call BaseStationG.report(msg); activate BaseStationG.Reachable; //... activate BaseStationG.Unreachable; context Reachable { uses interface Collection; } implementation { //... layered command void report(msg_t msg){ call Collection.send(msg);}} context Unreachable { uses interface DataStore; } implementation { //... layered command void report(msg_t msg){ call DataStore.deposit(msg);}} context group BaseStationG { layered command void report(msg_t msg); } implementation { contexts Reachable, Unreachable is default, MyErrorC is error; components Routing, Logging; Reachable.Collection -> Routing; Unreachable.DataStore -> Logging;} Execution Example
18
Transition Control Design issues Programming errors Hardware faults
19
Transition Control context NotMoving { transitions Resting; } implementation {//...} Design issues Programming errors Hardware faults
20
Transition Control context Unreachable { transitions Reachable iff ActivityG.Running; } implementation {//...} Design issues Programming errors Hardware faults
21
Transition Control context Reachable { //... } implementation { //... command bool check(){ return call BatteryG.getContext() == BatteryG.Normal;} } Design issues Programming errors Hardware faults
22
Translator and Benchmarks Wildlife tracking Smart-home controller Adaptive protocol stack
23
Evaluation: Coupling W. Stevens et al. Classics in software engineering. Chapter Structured Design. 1979. Easier to maintain Strongest Weakest
24
Evaluation: Complexity Easier to understand
25
Evaluation: Run-time Overhead MCU Overhead Memory Overhead Turning an LED on is 8 MCU cycles Max 2.5%! Negligible Overhead
26
Conclusion Context as a CPS programming concept – Language independent design – Programming support: ConesC Key results: – Easier to maintain and to understand – Negligible performance overhead
27
Future Work Domain-specific model-checking Source-code generator Context-Oriented programming for other CPS platforms
28
Questions?
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.