SlideShare a Scribd company logo
Leveraging Software Architecturesto Guide and Verify the Development of Sense/Compute/Control ApplicationsDamien Cassou1,2, Emilie Balland1, Charles Consel1, Julia Lawall31Phoenix, INRIA, France2Software Architecture Group, HPI, Germany3APL, DIKU, Denmark
ContributionsA design language to specify a software systemA compiler to process such specification for the verification of safety properties the guidance of the implementation the conformance2Context: Sense/Compute/Control software systems
Sense/Compute/Control (SCC)Software SystemEnvironmentComputeSense3Control
4Sense/Compute/Control (SCC)Software Systemaileron, engineControlComputedirectionSenseGPS, flight plan
5Sense/Compute/Control (SCC)Software Systemalarm triggeringControlEnvironmentComputeintrusion?Sensemotion detection
Found in various domainsavionics
home automation
tier-system monitoring
robotics
…6Sense/Compute/Control (SCC)Software SystemsEnvironment[Taylor et al., Software Architecture: Foundations, Theory, and Practice, 2009]
The SCC Architectural StylesourcessensorsactuatorsactionsorderscontroloperatorsEnvironmentrefined informationcontextoperatorsraw data7[Chen et al., Context aggregation and dissemination in ubiquitous computing, WMCSA’02][Edwards et al., Architecture-driven self-adaptation and self-management in robotics, SEAMS’09]
The SCC Architectural Style8sourcesactuatorssensorsactionsControlorderscontroloperatorsSenseEnvironmentComputerefined informationcontextoperatorsraw data
9EnvironmentInterfaceApplication LogicsourcesactuatorssensorsactionscontroloperatorsEnvironmentcontextoperators
10The SCC Architectural StylecontroloperatorsInformation useInformation refinementcontextoperators
Going Beyond the SCC Style11  Our approacha design language
a compiler  Objectivesto verify safety propertiesto guide implementationto ensure conformance
Compiling a DesignDesignLanguageabstractDesignconcreteDesign12
Compiling a DesignDesignLanguageabstractgeneratedDesignCompilerSoftware systemdefeats guidance and verificationconcreteDesign13
Compiling a DesignDesignLanguageabstractgeneratedDesignCompilerSoftware systemmixes design and implementationgeneratedconcreteSoftware SystemDesignCompiler14
Compiling a DesignDesignLanguageabstractgeneratedSoftware systemDesignCompilergeneratedCompilerSoftware SystemDesigngeneratedconcreteSoftware SystemDesignCompiler15
Our ApproachDesign languageGPLCompilerDesignGPLprogrammingframeworkdeveloper’s code16
Our ApproachverificationDeveloper’s codeCompilerProgrammingframeworkDesign17
Our ApproachverificationDeveloper’s codeCompilerProgrammingframeworkDesign18
Our Approachverificationby constructionDeveloper’s codeCompilerProgrammingframeworkDesign19
20Diving Into the Design LanguagesourcesactuatorssensorsactionsalarmtriggeringcontroloperatorsEnvironmentintrusion?contextoperatorsmotiondetection
21sourcesactuatorssensorsactionscontroloperatorscontextoperators
22sourcesactuatorssensorsactuatorsactionscontroloperatorscontroloperatorscontextoperatorscontextoperatorssensors
design language dedicated to SCCactuatorscontext Intrusion as Boolean {  context BuildingLocked;  context Presence;}controloperators23BooleanIntrusioncontextoperatorsBooleanBooleanPresenceBuildingLockedsensors
24keycodemotionKeypadMotionSensoractuatorscontroloperatorsBooleanIntrusioncontextoperatorsBooleanBooleanPresenceBuildingLockedBooleanIntegersensors
25keycodemotionKeypadMotionSensorAlarmactuatorsOnOffcontroloperatorsIntrusionManagercontroller IntrusionManager{  context Intrusion;  action OnOff on Alarm;}IntrusionBooleanBooleanPresenceBuildingLockedBooleanIntegersensors
keycodemotionimageAlarmMailerKeypadKeypadMotionSensorCameraactuatorsOnOffSendUpdateStcontroloperatorsIntrusionManagerSecurityManagerBooleanIntrusionFilecontextoperatorsBooleanBooleanSceneImagePresenceBuildingLocked26FileBooleanIntegersensors
actuatorscontroloperatorscontextoperators27IntrusionPresenceBuildingLockedsensors
28Interaction Descriptionevent3IntrusionIntrusionrequestevent2PresenceBuildingLocked1BuildingLockedPresencemultipleinterpretationsevent1request3IntrusionIntrusionrequestevent2requestrequest12BuildingLockedBuildingLocked2PresencePresence
29Interaction Descriptionevent3Intrusionrequesttoo abstract!event21BuildingLockedPresencemultipleinterpretationsevent1request3IntrusionIntrusionrequestevent2requestrequest12BuildingLockedBuildingLocked2PresencePresence
Interaction Contracts1requestMain1Activation condition30
Interaction ContractssourceSensor3eventMain1Activation conditionevent2Data requirement1request23Emission2requestContextOperator3ContextOperator231
Interaction Contracts3Intrusion1Activation conditioncontext Intrusion asBoolean {  context Presence;  context BuildingLocked;  interaction {    whenprovided Presence    get BuildingLocked    maybepublish  }}2Data requirement21323EmissionBuildingLockedPresence123
Compiling a Design33Developer’s codeProgrammingframeworkCompilerDesign
Programming FrameworkThe compilermapseach component description to an abstract class implementing the run-time support
each interaction contract to an abstract method constrained with type declarations34
Programming Framework35CompilerProgrammingframeworkDesignActivation conditionInteraction contract   Abstract method name
 parameters
 return type11Data requirement2123Emission33
Code Generation36AlarmMailercontroller IntrusionManager{  context Intrusion;  contextSceneImage; interaction {    whenprovided Intrusion    getSceneImage    do OnOff on Alarm,Send on Mailer  }}OnOffSendIntrusionManagerBooleanFileIntrusionSceneImageabstractclassAbstractIntrusionManager {abstract Actions onIntrusion(                               boolean intrusion, SceneImagesceneImage, Select select);protectedfinalclass Actions { … }  protectedfinalclass Select  { … }  protectedfinalclassSceneImage { … } }generated framework code
Code Generation37AlarmMailercontroller IntrusionManager{  context Intrusion;  contextSceneImage; interaction {    whenprovided Intrusion    getSceneImage    do OnOff on Alarm,Send on Mailer  }}OnOffSendIntrusionManagerBooleanFileIntrusionSceneImageabstractclassAbstractIntrusionManager {abstract Actions onIntrusion(                               boolean intrusion, SceneImagesceneImage, Select select);protectedfinalclass Actions { … }  protectedfinalclass Select  { … }  protectedfinalclassSceneImage { … } }generated framework code
Code Generation38AlarmMailercontroller IntrusionManager{  context Intrusion;  contextSceneImage; interaction {    whenprovided Intrusion    getSceneImage    do OnOff on Alarm,Send on Mailer  }}OnOffSendIntrusionManagerBooleanFileIntrusionSceneImageabstractclassAbstractIntrusionManager {abstract Actions onIntrusion(                               boolean intrusion, SceneImagesceneImage, Select select);protectedfinalclass Actions { … }  protectedfinalclass Select  { … }  protectedfinalclassSceneImage { … } }generated framework code
Code Generation39AlarmMailercontroller IntrusionManager{  context Intrusion;  contextSceneImage; interaction {    whenprovided Intrusion    getSceneImage    do OnOff on Alarm,Send on Mailer  }}OnOffSendIntrusionManagerBooleanFileIntrusionSceneImageabstractclassAbstractIntrusionManager {abstract Actions onIntrusion(                               boolean intrusion, SceneImagesceneImage, Select select);protectedfinalclass Actions { … }  protectedfinalclass Select  { … }  protectedfinalclassSceneImage { … } }generated framework code
Code Generation40AlarmMailercontroller IntrusionManager{  context Intrusion;  contextSceneImage; interaction {    whenprovided Intrusion    getSceneImage    do OnOff on Alarm,Send on Mailer  }}OnOffSendIntrusionManagerBooleanFileIntrusionSceneImageabstractclassAbstractIntrusionManager {abstract Actions onIntrusion(                               boolean intrusion, SceneImagesceneImage, Select select);protectedfinalclass Actions { … }  protectedfinalclass Select  { … }  protectedfinalclassSceneImage { … } }generated framework code
Code Generation41AlarmMailercontroller IntrusionManager{  context Intrusion;  contextSceneImage; interaction {    whenprovided Intrusion    getSceneImage    do OnOff on Alarm,Send on Mailer  }}OnOffSendIntrusionManagerBooleanFileIntrusionSceneImageabstractclassAbstractIntrusionManager {abstract Actions onIntrusion(                               boolean intrusion, SceneImagesceneImage, Select select);protectedfinalclass Actions { … }  protectedfinalclass Select  { … }  protectedfinalclassSceneImage { … } }generated framework code
Code Generation42AlarmMailercontroller IntrusionManager{  context Intrusion;  contextSceneImage; interaction {    whenprovided Intrusion    getSceneImage    do OnOff on Alarm,Send on Mailer  }}OnOffSendIntrusionManagerBooleanFileIntrusionSceneImageabstractclassAbstractIntrusionManager {abstract Actions onIntrusion(                               boolean intrusion, SceneImagesceneImage, Select select);protectedfinalclass Actions { … }  protectedfinalclass Select  { … }  protectedfinalclassSceneImage { … } }generated framework code
Code Generation43AlarmMailercontroller IntrusionManager{  context Intrusion;  contextSceneImage; interaction {    whenprovided Intrusion    getSceneImage    do OnOff on Alarm,Send on Mailer  }}OnOffSendIntrusionManagerBooleanFileIntrusionSceneImageabstractclassAbstractIntrusionManager {abstract Actions onIntrusion(                               boolean intrusion, SceneImagesceneImage, Select select);protectedfinalclass Actions { … }  protectedfinalclass Select  { … }  protectedfinalclassSceneImage { … } }generated framework code
Code Generation44AlarmMailercontroller IntrusionManager{  context Intrusion;  contextSceneImage; interaction {    whenprovided Intrusion    getSceneImage    do OnOff on Alarm,Send on Mailer  }}OnOffSendIntrusionManagerBooleanFileIntrusionSceneImageabstractclassAbstractIntrusionManager {abstract Actions onIntrusion(                               boolean intrusion, SceneImagesceneImage, Select select);protectedfinalclass Actions { … }  protectedfinalclass Select  { … }  protectedfinalclassSceneImage { … } }generated framework code
Code Generation45AlarmMailercontroller IntrusionManager{  context Intrusion;  contextSceneImage; interaction {    whenprovided Intrusion    getSceneImage    do OnOff on Alarm,Send on Mailer  }}OnOffSendIntrusionManagerBooleanFileIntrusionSceneImageabstractclassAbstractIntrusionManager {abstract Actions onIntrusion(                               boolean intrusion, SceneImagesceneImage, Select select);protectedfinalclass Actions { … }  protectedfinalclass Select  { … }  protectedfinalclassSceneImage { … } }generated framework code
Code Generation46AlarmMailercontroller IntrusionManager{  context Intrusion;  contextSceneImage; interaction {    whenprovided Intrusion    getSceneImage    do OnOff on Alarm,Send on Mailer  }}OnOffSendIntrusionManagerBooleanFileIntrusionSceneImageabstractclassAbstractIntrusionManager {abstract Actions onIntrusion(                               boolean intrusion, SceneImagesceneImage, Select select);protectedfinalclass Actions { … }  protectedfinalclass Select  { … }  protectedfinalclassSceneImage { … } }generated framework code
ImplementationabstractclassAbstractIntrusionManager {abstract ActionsonIntrusion(   boolean intrusion, SceneImagesceneImage, Select select);}47AlarmMailerOnOffSendIntrusionManagergenerated framework codeBooleanFileIntrusionSceneImageclassIntrusionManagerextendsAbstractIntrusionManager {  ActionsonIntrusion(boolean intrusion, SceneImagesceneImage, Select select){if (intrusion) {      Actions actions;      actions = select.alarms().all().on();      Mailer mailer = select.mailers().anyOne();      File image = sceneImage.get();actions.add(mailer.send(“Intrusion !”, “admin”, image));return actions;    }}developer code
Implementation48AlarmMailerabstractclassAbstractIntrusionManager {abstract ActionsonIntrusion(   boolean intrusion, SceneImagesceneImage, Select select);}OnOffSendIntrusionManagergenerated framework codeBooleanFileIntrusionSceneImageclassIntrusionManagerextendsAbstractIntrusionManager {  ActionsonIntrusion(boolean intrusion, SceneImagesceneImage, Select select){if (intrusion) {      Actions actions;      actions = select.alarms().all().on();      Mailer mailer = select.mailers().anyOne();      File image = sceneImage.get();actions.add(mailer.send(“Intrusion !”, “admin”, image));return actions;    }}developer code
Implementation49AlarmMailerabstractclassAbstractIntrusionManager {abstract ActionsonIntrusion(   boolean intrusion, SceneImagesceneImage, Select select);}OnOffSendIntrusionManagergenerated framework codeBooleanFileIntrusionSceneImageclassIntrusionManagerextendsAbstractIntrusionManager {  ActionsonIntrusion(boolean intrusion, SceneImagesceneImage, Select select){if (intrusion) {      Actions actions;      actions = select.alarms().all().on();      Mailer mailer = select.mailers().anyOne();      File image = sceneImage.get();actions.add(mailer.send(“Intrusion !”, “admin”, image));return actions;    }}developer code
Implementation50AlarmMailerabstractclassAbstractIntrusionManager {abstract ActionsonIntrusion(   boolean intrusion, SceneImagesceneImage, Select select);}OnOffSendIntrusionManagergenerated framework codeBooleanFileIntrusionSceneImageclassIntrusionManagerextendsAbstractIntrusionManager {  ActionsonIntrusion(boolean intrusion, SceneImagesceneImage, Select select){if (intrusion) {      Actions actions;      actions = select.alarms().all().on();      Mailer mailer = select.mailers().anyOne();      File image = sceneImage.get();actions.add(mailer.send(“Intrusion !”, “admin”, image));return actions;    }}developer code
Implementation51AlarmMailerabstractclassAbstractIntrusionManager {abstract ActionsonIntrusion(   boolean intrusion, SceneImagesceneImage, Select select);}OnOffSendIntrusionManagergenerated framework codeBooleanFileIntrusionSceneImageclassIntrusionManagerextendsAbstractIntrusionManager {  ActionsonIntrusion(boolean intrusion, SceneImagesceneImage, Select select){if (intrusion) {      Actions actions;      actions = select.alarms().all().on();      Mailer mailer = select.mailers().anyOne();      File image = sceneImage.get();actions.add(mailer.send(“Intrusion !”, “admin”, image));return actions;    }}developer code
Implementation52AlarmMailerabstractclassAbstractIntrusionManager {abstract ActionsonIntrusion(   boolean intrusion, SceneImagesceneImage, Select select);}OnOffSendIntrusionManagergenerated framework codeBooleanFileIntrusionSceneImageclassIntrusionManagerextendsAbstractIntrusionManager {  ActionsonIntrusion(boolean intrusion, SceneImagesceneImage, Select select){if (intrusion) {      Actions actions;      actions = select.alarms().all().on();      Mailer mailer = select.mailers().anyOne();      File image = sceneImage.get();actions.add(mailer.send(“Intrusion !”, “admin”, image));return actions;    }}developer code
Implementation53AlarmMailerabstractclassAbstractIntrusionManager {abstract ActionsonIntrusion(   boolean intrusion, SceneImagesceneImage, Select select);}OnOffSendIntrusionManagergenerated framework codeBooleanFileIntrusionSceneImageclassIntrusionManagerextendsAbstractIntrusionManager {  ActionsonIntrusion(boolean intrusion, SceneImagesceneImage, Select select){if (intrusion) {      Actions actions;      actions = select.alarms().all().on();      Mailer mailer = select.mailers().anyOne();      File image = sceneImage.get();actions.add(mailer.send(“Intrusion !”, “admin”, image));return actions;    }}developer code
Implementation54AlarmMailerabstractclassAbstractIntrusionManager {abstract ActionsonIntrusion(   boolean intrusion, SceneImagesceneImage, Select select);}OnOffSendIntrusionManagergenerated framework codeBooleanFileIntrusionSceneImageclassIntrusionManagerextendsAbstractIntrusionManager {  ActionsonIntrusion(boolean intrusion, SceneImagesceneImage, Select select){if (intrusion) {      Actions actions;      actions = select.alarms().all().on();      Mailer mailer = select.mailers().anyOne();      File image = sceneImage.get();actions.add(mailer.send(“Intrusion !”, “admin”, image));return actions;    }}developer code
Implementation55AlarmMailerabstractclassAbstractIntrusionManager {abstract ActionsonIntrusion(   boolean intrusion, SceneImagesceneImage, Select select);}OnOffSendIntrusionManagergenerated framework codeBooleanFileIntrusionSceneImageclassIntrusionManagerextendsAbstractIntrusionManager {  ActionsonIntrusion(boolean intrusion, SceneImagesceneImage, Select select){if (intrusion) {      Actions actions;      actions = select.alarms().all().on();      Mailer mailer = select.mailers().anyOne();      File image = sceneImage.get();actions.add(mailer.send(“Intrusion !”, “admin”, image));return actions;    }}developer code
Implementation56  do not require any documentation
  leverage code completionclassIntrusionManagerextendsAbstractIntrusionManager {  ActionsonIntrusion(boolean intrusion, SceneImagesceneImage, Select select){if (intrusion) {      Actions actions;      actions = select.alarms().all().on();      Mailer mailer = select.mailers().anyOne();      File image = sceneImage.get();actions.add(mailer.send(“Intrusion !”, “admin”, image));return actions;    }}developer code

More Related Content

Similar to Leveraging Software Architectures to Guide and Verify the Development of Sense/Compute/Control Applications (20)

PDF
Functional solid
Matt Stine
 
KEY
Cocoa Design Patterns
sgleadow
 
PDF
We learned that war-driving refers to the creation of a software ap.pdf
felixhenrygeorge
 
PDF
Building Reactive Systems with Akka (in Java 8 or Scala)
Jonas Bonér
 
PDF
ME4AWSN - a Modeling Environment for Architecting WSNs
Ivano Malavolta
 
PPTX
Evolution of Patterns
Chris Eargle
 
PDF
Building Reactive Applications with Akka & Java 8 - Bonèr
Codemotion
 
PDF
Designpatterns
reynolds
 
PPT
Software engg. pressman_ch-8
Dhairya Joshi
 
PDF
software defined network, openflow protocol and its controllers
Isaku Yamahata
 
PDF
Android IPC Mechanism
National Cheng Kung University
 
PPT
Arch stylesandpatternsmi
lord14383
 
PDF
Please discuss Superscalar Processors.Please discuss embedded appl.pdf
ajinthaenterprises
 
PDF
The Architecture Of Software Defined Radios Essay
Divya Watson
 
PDF
A coding fool design patterns
leo_priv00
 
PDF
Design Patterns in Cocoa Touch
Eliah Nikans
 
PPT
Oo Design And Patterns
Anil Bapat
 
PDF
Framework Engineering
YoungSu Son
 
DOCX
UNIT 4 REFINING THE SYSTEM DEFINITION.docx
jeevaakatiravanhod
 
Functional solid
Matt Stine
 
Cocoa Design Patterns
sgleadow
 
We learned that war-driving refers to the creation of a software ap.pdf
felixhenrygeorge
 
Building Reactive Systems with Akka (in Java 8 or Scala)
Jonas Bonér
 
ME4AWSN - a Modeling Environment for Architecting WSNs
Ivano Malavolta
 
Evolution of Patterns
Chris Eargle
 
Building Reactive Applications with Akka & Java 8 - Bonèr
Codemotion
 
Designpatterns
reynolds
 
Software engg. pressman_ch-8
Dhairya Joshi
 
software defined network, openflow protocol and its controllers
Isaku Yamahata
 
Android IPC Mechanism
National Cheng Kung University
 
Arch stylesandpatternsmi
lord14383
 
Please discuss Superscalar Processors.Please discuss embedded appl.pdf
ajinthaenterprises
 
The Architecture Of Software Defined Radios Essay
Divya Watson
 
A coding fool design patterns
leo_priv00
 
Design Patterns in Cocoa Touch
Eliah Nikans
 
Oo Design And Patterns
Anil Bapat
 
Framework Engineering
YoungSu Son
 
UNIT 4 REFINING THE SYSTEM DEFINITION.docx
jeevaakatiravanhod
 

Recently uploaded (20)

PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PPTX
Designing Production-Ready AI Agents
Kunal Rai
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Designing Production-Ready AI Agents
Kunal Rai
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Biography of Daniel Podor.pdf
Daniel Podor
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
July Patch Tuesday
Ivanti
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Ad

Leveraging Software Architectures to Guide and Verify the Development of Sense/Compute/Control Applications

Editor's Notes

  • #2: Software architectures have long been used as a way to make software design explicit. However, these architectures are barely leveraged to guide subsequent phases of a software development cycle. In this work, we propose to leverage software architectures for the implementation and verification phases
  • #4: SCC applications are applications that interact with an external environment
  • #8: In this pattern, sensors…Interactions between these components are restricted.Explain that it separates the logic and the environment handling
  • #9: In this style, sensors…Interactions between these components are restricted
  • #10: In this style, sensors…Interactions between these components are restricted
  • #11: In this style, sensors…Interactions between these components are restricted
  • #12: The pattern guides the architect in describing his application. We want to go further and use this description to guide…
  • #33: REQUEST + EVENT
  • #64: CONFORMANCE