SlideShare a Scribd company logo
1 of 107
Architecture-Driven Programming
for Sense/Compute/Control Applications


  Damien Cassou, Émilie Balland, Charles Consel, Julia Lawall




                               1
1.Design

•   facilitates communication

•   documents decisions

•   guides development
                                2
1.Design

•   facilitates communication

•   documents decisions
                     Architecture Description Languages
• guides development               (ADLs)
                                2
2.Implement

based on the design as a
contemplative document
                               General Purpose Languages
                                        (GPLs)
                           3
3.Check conformance




               4
3.Check conformance




 4
3.Check conformance




 4
3.Check conformance




 4
3.Check conformance




 4
3.Check conformance




manual operation    4
3.Check conformance
                    • costly
                    • slow
                    • error-prone




manual operation    4
Our Approach



     5
3.Check conformance
                    • costly
                    • slow
                    • error-prone




manual operation    6
3.Check conformance
                          • costly
                          • slow
                          • error-prone




      compiler
  produces a dedicated
programming framework     6
3.Check conformance
                          • costly      • free
                          • slow        • immediate
                          • error-prone • error-free




      compiler
  produces a dedicated
programming framework     6
compiler
           7
compiler


      builds a programming framework which
        • guides the implementation
        • provides high-level support
        • ensures conformance




                 7
compiler
                  dedicated to
                 the application

      builds a programming framework which
        • guides the implementation
        • provides high-level support
        • ensures conformance




                 7
compiler
                   dedicated to
                  the application

      builds a programming framework which
        • guides the implementation
        • provides high-level support
        • ensures conformance


               heavily rely on
           the Java type checker


                   7
Our Approach


        an ADL
           +
generation of a dedicated
programming framework



            8
Our Approach


 a domain-specific ADL
           +
generation of a dedicated
programming framework



            8
The Domain


Sense/Compute/Control applications (SCC)




                  9
The Domain


Sense/Compute/Control applications (SCC)

                 “applications that interact
                  with an environment”




                  9
The Domain
Sense/Compute/Control applications (SCC)
                        “applications that interact
                         with an environment”




                 10
The Domain
     Sense/Compute/Control applications (SCC)
                                 “applications that interact
                                  with an environment”
Cover various areas
  • building automation
  • application
     monitoring                environment
  • robotics
  • autonomic
     computing
  • ...                   10
The Domain
Sense/Compute/Control applications (SCC)




                      environment




                 11
The Domain
Sense/Compute/Control applications (SCC)




                      environment




            sensors
                 11
The Domain
Sense/Compute/Control applications (SCC)




                      environment




            sensors      Sense
                 11
The Domain
  Sense/Compute/Control applications (SCC)




                          environment

 context
operators


     raw data   sensors      Sense
                     11
The Domain
      Sense/Compute/Control applications (SCC)




                               environment

     context
    operators
Compute
          raw data   sensors      Sense
                          11
The Domain
        Sense/Compute/Control applications (SCC)



      control
     operators
  context                        environment
    data

      context
     operators
Compute
            raw data   sensors      Sense
                            11
The Domain
        Sense/Compute/Control applications (SCC)


              orders   actuators
      control
     operators
  context                          environment
    data

      context
     operators
Compute
            raw data   sensors        Sense
                              11
The Domain
        Sense/Compute/Control applications (SCC)


              orders   actuators
      control
     operators
  context                          environment
    data

      context
     operators
Compute
            raw data   sensors        Sense
                              11
The Domain
        Sense/Compute/Control applications (SCC)

        Control
              orders   actuators
      control
     operators
  context                          environment
    data

      context
     operators
Compute
            raw data   sensors        Sense
                              11
The Domain

            orders   actuators
    control
   operators
context
  data

    context
   operators


          raw data   sensors
                            12
The Domain
  actuators
          orders

   control
  operators
         context
           data

   context
  operators


        raw data



   sensors
         12
The Domain
         actuators

          control
         operators



          context
         operators




    12    sensors
Web Server Monitoring
                actuators

                 control
                operators



                 context
                operators




           13    sensors
Web Server Monitoring
                           actuators

                            control
                           operators


environment = the web server
                            context
                           operators




                  13           sensors
Web Server Monitoring
                actuators

                 control
                operators



                 context
                operators




           13    sensors
Web Server Monitoring
                          actuators

                           control
 IntrusionInformer
                          operators



                           context
                          operators




                     13    sensors
Web Server Monitoring
      Mailer              actuators

                           control
 IntrusionInformer
                          operators



                           context
                          operators




                     13    sensors
Web Server Monitoring
      Mailer                        actuators

                                     control
 IntrusionInformer   ProfileLogger
                                    operators



                                     context
                                    operators




                        13           sensors
Web Server Monitoring
      Mailer           Logger       actuators

                                     control
 IntrusionInformer   ProfileLogger
                                    operators



                                     context
                                    operators




                        13           sensors
Web Server Monitoring
      Mailer               Logger    actuators

                                      control
 IntrusionInformer    ProfileLogger
                                     operators



                                      context
               Accessing
                Profile
                                     operators




                           13         sensors
Web Server Monitoring
      Mailer               Logger    actuators

                                      control
 IntrusionInformer    ProfileLogger
                                     operators



                                      context
               Accessing
                Profile
                                     operators




                           13         sensors
Web Server Monitoring
      Mailer                Logger    actuators

                                       control
 IntrusionInformer     ProfileLogger
                                      operators

    Intrusion
     Detector
                                       context
                Accessing
                 Profile
                                      operators




                            13         sensors
Web Server Monitoring
      Mailer                Logger    actuators

                                       control
 IntrusionInformer     ProfileLogger
                                      operators

    Intrusion
     Detector
                                       context
                Accessing
                 Profile
                                      operators

   AccessLog
    Parser



                            13         sensors
Web Server Monitoring
      Mailer                Logger    actuators

                                       control
 IntrusionInformer     ProfileLogger
                                      operators

    Intrusion
     Detector
                                       context
                Accessing
                 Profile
                                      operators

   AccessLog
    Parser



AccessLogReader             13         sensors
Web Server Monitoring
      Mailer                 Logger     actuators

                                         control
 IntrusionInformer     ProfileLogger
                                        operators

    Intrusion
     Detector
                                         context
                Accessing
                 Profile
                                        operators

   AccessLog
                            IP2Profile
    Parser



AccessLogReader              13          sensors
Web Server Monitoring
      Mailer                 Logger     actuators

                                         control
 IntrusionInformer      ProfileLogger
                                        operators

    Intrusion
     Detector
                                         context
                Accessing
                 Profile
                                        operators

   AccessLog
                            IP2Profile
    Parser



AccessLogReader      NSLookup
                           13            sensors
Web Server Monitoring
      Mailer                 Logger      actuators

                                          control
 IntrusionInformer      ProfileLogger
                                         operators

    Intrusion
     Detector
                                          context
                Accessing
                 Profile
                                         operators

   AccessLog
                            IP2Profile
    Parser



AccessLogReader      NSLookup
                           13     LDAP    sensors
Web Server Monitoring
      Mailer                     Logger            actuators
          email(...)         log(AccessInfo,Profile)
                                                    control
 IntrusionInformer           ProfileLogger
                                                   operators
 AccessInfo

    Intrusion
     Detector      (AccessInfo,Profile)
                                                    context
                   Accessing
                    Profile              Profile     operators
    AccessInfo                       [IPAddress]

   AccessLog
                               IP2Profile
    Parser
                          String              Profile
          String       [IPAddress]           [String]

AccessLogReader          NSLookup
                               13        LDAP       sensors
context
            Accessing
             Profile
                                    operators

AccessLog
                        IP2Profile
 Parser



                         14          sensors
what the architect expresses


                                     context
            Accessing
             Profile
                                    operators

AccessLog
                        IP2Profile
 Parser



                         14          sensors
what the architect would like to express


                                     context
            Accessing
             Profile
                                    operators

AccessLog
                        IP2Profile
 Parser



                         14          sensors
what the architect would like to express


                                     context
            Accessing
             Profile
                                    operators

AccessLog
                        IP2Profile
 Parser



                         14          sensors
what the architect would like to express


                                     context
            Accessing
             Profile
                                    operators

AccessLog
                        IP2Profile
 Parser



                         14          sensors
what the architect would like to express

activation
 condition                               context
                Accessing
                 Profile
                                        operators

    AccessLog
                            IP2Profile
     Parser



                             14          sensors
what the architect would like to express

                                  data    context
            Accessing         requirement
             Profile
                                        operators

AccessLog
                        IP2Profile
 Parser



                         14              sensors
what the architect would like to express
                         emission

                                     context
            Accessing
             Profile
                                    operators

AccessLog
                        IP2Profile
 Parser



                         14          sensors
Behavioral Contracts



                                      context
             Accessing
              Profile
                                     operators

 AccessLog
                         IP2Profile
  Parser



                          15          sensors
Behavioral Contracts


⟨                   ;              ;     ⟩

                                              context
                 Accessing
                  Profile
                                             operators

     AccessLog
                             IP2Profile
      Parser



                              15              sensors
Behavioral Contracts

activation
 condition

⟨⇑AccessLogParser ;              ;     ⟩

                                            context
               Accessing
                Profile
                                           operators

   AccessLog
                           IP2Profile
    Parser



                            15              sensors
Behavioral Contracts

activation     data
 condition requirement

⟨⇑AccessLogParser ; ⇓IP2Profile ;       ⟩

                                            context
               Accessing
                Profile
                                           operators

   AccessLog
                           IP2Profile
    Parser



                            15              sensors
Behavioral Contracts

activation     data
                       emission
 condition requirement

⟨⇑AccessLogParser ; ⇓IP2Profile ; ⇑self⟩

                                           context
               Accessing
                Profile
                                          operators

   AccessLog
                           IP2Profile
    Parser



                            15             sensors
Behavioral Contracts



                          context
                         operators

           IP2Profile



       NSLookup
             16   LDAP    sensors
Behavioral Contracts


⟨   ;              ;    ⟩

                               context
                              operators

            IP2Profile



        NSLookup
              16       LDAP    sensors
Behavioral Contracts

activation
 condition

⟨⇓self ;                ;    ⟩

                                    context
                                   operators

                 IP2Profile



             NSLookup
                   16       LDAP    sensors
Behavioral Contracts

activation     data
 condition requirement

⟨⇓self ; (⇓NSLookup, ⇓LDAP) ;    ⟩

                                        context
                                       operators

                      IP2Profile



                 NSLookup
                       16       LDAP    sensors
Behavioral Contracts

activation     data
                       emission
 condition requirement

⟨⇓self ; (⇓NSLookup, ⇓LDAP) ; ∅⟩

                                     context
                                    operators

                      IP2Profile



                 NSLookup
                       16    LDAP    sensors
Web Server Monitoring
      Mailer                 Logger      actuators

                                          control
 IntrusionInformer      ProfileLogger
                                         operators

    Intrusion
     Detector
                                          context
                Accessing
                 Profile
                                         operators

   AccessLog
                            IP2Profile
    Parser



AccessLogReader      NSLookup
                           17     LDAP    sensors
Mailer                 Logger      actuators   3.Check conformance
                                          control
 IntrusionInformer      ProfileLogger
                                         operators

    Intrusion
     Detector
                                          context
                Accessing
                 Profile
                                         operators

    AccessLog
                            IP2Profile
     Parser



 AccessLogReader     NSLookup     LDAP    sensors




      compiler
  produces a dedicated
programming framework                                 18
Programming Framework

     Mailer                 Logger


IntrusionInformer      ProfileLogger


   Intrusion
    Detector

               Accessing
                Profile

  AccessLog
                           IP2Profile
   Parser



AccessLogReader     NSLookup     LDAP

                                        19
Programming Framework

     Mailer                 Logger


IntrusionInformer      ProfileLogger


   Intrusion
                                             For each component:
    Detector                                  • an abstract class
               Accessing
                Profile

  AccessLog
                           IP2Profile
   Parser



AccessLogReader     NSLookup     LDAP

                                        19
Programming Framework

     Mailer                 Logger
                                             For each component:
IntrusionInformer      ProfileLogger           • an abstract class
   Intrusion
                                             For each interaction:
    Detector                                   • an abstract method
               Accessing
                Profile

  AccessLog
                           IP2Profile
   Parser



AccessLogReader     NSLookup     LDAP

                                        19
Programming Framework
                                             For each component:
                                              • an abstract class
     Mailer                 Logger
                                             For each interaction:
IntrusionInformer      ProfileLogger            • an abstract method
   Intrusion
                                             Dedicated support:
    Detector                                  • interfaces
               Accessing                      • proxies
                Profile
                                              • composites
  AccessLog
   Parser
                           IP2Profile          • discovery
                                              • RPC
AccessLogReader     NSLookup     LDAP         • ...
                                        19
Accessing
             Profile

AccessLog
                        IP2Profile
 Parser




                                    20
(AccessInfo,Profile)
                                                         architecture
                   Accessing          Profile
    AccessInfo      Profile         [IPAddress]

AccessLog                                        ⟨   ;          ;   ⟩
                               IP2Profile
 Parser




abstract class AccessingProfile {

 abstract
 Pair<AccessInfo,Profile>
 onNewAccessLogParser(AccessInfo newAccess,
                                        IP2ProfileClosure ip2Pro);

}
                                                         framework

                                            20
(AccessInfo,Profile)
                                                                       architecture
                   Accessing          Profile
    AccessInfo      Profile         [IPAddress]

AccessLog                                        ⟨⇑AccessLogParser ;          ;   ⟩
                               IP2Profile
 Parser




abstract class AccessingProfile {

 abstract
 Pair<AccessInfo,Profile>
 onNewAccessLogParser(AccessInfo newAccess,
                                        IP2ProfileClosure ip2Pro);

}
                                                                       framework

                                            20
(AccessInfo,Profile)
                                                                      architecture
                   Accessing          Profile
    AccessInfo      Profile         [IPAddress]

AccessLog                                        ⟨⇑AccessLogParser ; ⇓IP2Profile ;   ⟩
                               IP2Profile
 Parser




abstract class AccessingProfile {

 abstract
 Pair<AccessInfo,Profile>
 onNewAccessLogParser(AccessInfo newAccess,
                                        IP2ProfileClosure ip2Pro);

}
                                                                       framework

                                            20
(AccessInfo,Profile)
                                                                      architecture
                   Accessing          Profile
    AccessInfo      Profile         [IPAddress]

AccessLog                                        ⟨⇑AccessLogParser ; ⇓IP2Profile ; ⇑self⟩
                               IP2Profile
 Parser




abstract class AccessingProfile {

 abstract
 Pair<AccessInfo,Profile>
 onNewAccessLogParser(AccessInfo newAccess,
                                        IP2ProfileClosure ip2Pro);

}
                                                                        framework

                                            20
(AccessInfo,Profile)
                                                          architecture
                Accessing          Profile
 AccessInfo      Profile         [IPAddress]

AccessLog                                     ⟨       ;          ;      ⟩
                            IP2Profile
 Parser




abstract class AccessingProfile { abstract onNewAccessLogParser(...);}
                                                          framework
class StdAccessingProfile extends AccessingProfile {

 @Override
 Pair<AccessInfo,Profile>
 onNewAccessLogParser(AccessInfo newAccess,
                                             IP2ProfileClosure ip2Pro){
   Profile profile = ip2Pro.get(newAccess.getHost_ip());
   return new Pair<AccessInfo,Profile>(newAccess, profile);

 }                                                           user code
                                         21
(AccessInfo,Profile)
                                                                    architecture
                Accessing          Profile
 AccessInfo      Profile         [IPAddress]

AccessLog                                     ⟨⇑AccessLogParser ;
                                              ⟨                            ;   ⟩
                            IP2Profile
 Parser




abstract class AccessingProfile { abstract onNewAccessLogParser(...);}
                                                                    framework
class StdAccessingProfile extends AccessingProfile {

 @Override
 Pair<AccessInfo,Profile>
 onNewAccessLogParser(AccessInfo newAccess,
                                             IP2ProfileClosure ip2Pro){
   Profile profile = ip2Pro.get(newAccess.getHost_ip());
   return new Pair<AccessInfo,Profile>(newAccess, profile);

 }                                                                     user code
                                         21
(AccessInfo,Profile)
                                                                   architecture
                Accessing          Profile
 AccessInfo      Profile         [IPAddress]

AccessLog                                     ⟨⇑AccessLogParser ; ⇓IP2Profile ;   ⟩
                            IP2Profile
 Parser




abstract class AccessingProfile { abstract onNewAccessLogParser(...);}
                                                                    framework
class StdAccessingProfile extends AccessingProfile {

 @Override
 Pair<AccessInfo,Profile>
 onNewAccessLogParser(AccessInfo newAccess,
                                             IP2ProfileClosure ip2Pro){
   Profile profile = ip2Pro.get(newAccess.getHost_ip());
   return new Pair<AccessInfo,Profile>(newAccess, profile);

 }                                                                      user code
                                         21
(AccessInfo,Profile)
                                                                   architecture
                Accessing          Profile
 AccessInfo      Profile         [IPAddress]

AccessLog                                     ⟨⇑AccessLogParser ; ⇓IP2Profile ; ⇑self⟩
                            IP2Profile
 Parser




abstract class AccessingProfile { abstract onNewAccessLogParser(...);}
                                                                     framework
class StdAccessingProfile extends AccessingProfile {

 @Override
 Pair<AccessInfo,Profile>
 onNewAccessLogParser(AccessInfo newAccess,
                                             IP2ProfileClosure ip2Pro){
   Profile profile = ip2Pro.get(newAccess.getHost_ip());
   return new Pair<AccessInfo,Profile>(newAccess, profile);

 }                                                                      user code
                                         21
(AccessInfo,Profile)
                                                                   architecture
                Accessing          Profile
 AccessInfo      Profile         [IPAddress]

AccessLog                                     ⟨⇑AccessLogParser ; ⇓IP2Profile ; ⇑self⟩
                            IP2Profile
 Parser                                          only ways to interact!


abstract class AccessingProfile { abstract onNewAccessLogParser(...);}
                                                                     framework
class StdAccessingProfile extends AccessingProfile {

 @Override
 Pair<AccessInfo,Profile>
 onNewAccessLogParser(AccessInfo newAccess,
                                             IP2ProfileClosure ip2Pro){
   Profile profile = ip2Pro.get(newAccess.getHost_ip());
   return new Pair<AccessInfo,Profile>(newAccess, profile);

 }                                                                      user code
                                         21
Profile
[IPAddress]                                         architecture
         IP2Profile
   String             Profile
                                ⟨        ;                 ;   ⟩
[IPAddress]          [String]

    NSLookup    LDAP




abstract class IP2Profile {

 abstract
 Profile
 get(IPAddress paramIPAddress, NSLookupClosure nsLookup,
                                                LDAPClosure ldap);

}
                                                     framework

                                    22
Profile
[IPAddress]                                         architecture
         IP2Profile
   String             Profile
                                ⟨⇓self ;                   ;   ⟩
[IPAddress]          [String]

    NSLookup    LDAP




abstract class IP2Profile {

 abstract
 Profile
 get(IPAddress paramIPAddress, NSLookupClosure nsLookup,
                                                LDAPClosure ldap);

}
                                                     framework

                                   22
Profile
[IPAddress]                                          architecture
         IP2Profile
   String             Profile
                                ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ;   ⟩
[IPAddress]          [String]

    NSLookup    LDAP




abstract class IP2Profile {

 abstract
 Profile
 get(IPAddress paramIPAddress, NSLookupClosure nsLookup,
                                                LDAPClosure ldap);

}
                                                       framework

                                  22
Profile
[IPAddress]                                          architecture
         IP2Profile
   String             Profile
                                ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ; ∅⟩
[IPAddress]          [String]

    NSLookup    LDAP




abstract class IP2Profile {

 abstract
 Profile
 get(IPAddress paramIPAddress, NSLookupClosure nsLookup,
                                                LDAPClosure ldap);

}
                                                      framework

                                  22
Profile
[IPAddress]                                              architecture
         IP2Profile
   String             Profile
                                  ⟨        ;                  ;   ⟩
[IPAddress]          [String]

     NSLookup    LDAP



abstract class IP2Profile { abstract Profile get(...); }
                                                         framework
class StdIP2Profile extends IP2Profile {

 @Override
 Profile
 get(IPAddress paramIPAddress, NSLookupClosure nsLookup,
                                                LDAPClosure ldap){
   String host = nsLookup.get(paramIPAddress);
   return ldap.pull(host);
 }                                                          user code
}                                     23
Profile
[IPAddress]                                              architecture
         IP2Profile
   String             Profile
                                  ⟨⇓self ;                    ;   ⟩
[IPAddress]          [String]

     NSLookup    LDAP



abstract class IP2Profile { abstract Profile get(...); }
                                                         framework
class StdIP2Profile extends IP2Profile {

 @Override
 Profile
 get(IPAddress paramIPAddress, NSLookupClosure nsLookup,
                                                LDAPClosure ldap){
   String host = nsLookup.get(paramIPAddress);
   return ldap.pull(host);
 }                                                          user code
}                                    23
Profile
[IPAddress]                                              architecture
         IP2Profile
   String             Profile
                                  ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ;   ⟩
[IPAddress]          [String]

     NSLookup    LDAP



abstract class IP2Profile { abstract Profile get(...); }
                                                         framework
class StdIP2Profile extends IP2Profile {

 @Override
 Profile
 get(IPAddress paramIPAddress, NSLookupClosure nsLookup,
                                                LDAPClosure ldap){
   String host = nsLookup.get(paramIPAddress);
   return ldap.pull(host);
 }                                                          user code
}                                    23
Profile
[IPAddress]                                              architecture
         IP2Profile
   String             Profile
                                  ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ;   ⟩
[IPAddress]          [String]

     NSLookup    LDAP



abstract class IP2Profile { abstract Profile get(...); }
                                                         framework
class StdIP2Profile extends IP2Profile {

 @Override
 Profile
 get(IPAddress paramIPAddress, NSLookupClosure nsLookup,
                                                LDAPClosure ldap){
   String host = nsLookup.get(paramIPAddress);
   return ldap.pull(host);
 }                                                          user code
}                                    23
Profile
[IPAddress]                                              architecture
         IP2Profile
   String             Profile
                                  ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ; ∅⟩
[IPAddress]          [String]

     NSLookup    LDAP



abstract class IP2Profile { abstract Profile get(...); }
                                                         framework
class StdIP2Profile extends IP2Profile {

 @Override
 Profile
 get(IPAddress paramIPAddress, NSLookupClosure nsLookup,
                                                LDAPClosure ldap){
   String host = nsLookup.get(paramIPAddress);
   return ldap.pull(host);
 }                                                          user code
}                                    23
Unpresented
              Contributions
•   splash/oopsla 2010

    •   Formalization of the model

    •   Analysis on the architecture

    •   Architecture refinement

    •   Coordination of data (synchronization / disjunction)



                              24
A suite of tools




       25
DiaSpec
a DSL to describe SCC applications
device AccessLogReader extends StoppableDevice {
  source line as String;
}
context AccessLogParser as Access {
  source line from AccessLogReader;
}
context AccessingProfile as IdentifiedAccess {
  context AccessLogParser;
  context IP2Profile;
}
context IP2Profile as Profile indexed by ip as IPAddress {
  source ip2host from NSLookup;
  source host2profile from LDAPServer;
}
controller ProfileLogger {
  context AccessingProfile;
  action Log on Logger;
}


                     [GPCE’09]
                           26
A suite of tools
device AccessLogReader extends StoppableDevice {
  source line as String;
}


                                                           a DSL to describe SCC applications
context AccessLogParser as Access {
  source line from AccessLogReader;
}
context AccessingProfile as IdentifiedAccess {
  context AccessLogParser;
  context IP2Profile;
}
context IP2Profile as Profile indexed by ip as IPAddress {                [GPCE’09]
  source ip2host from NSLookup;
  source host2profile from LDAPServer;
}
controller ProfileLogger {
  context AccessingProfile;
  action Log on Logger;
}




                                                               27
DiaSim
 a simulator with 2D rendering




[Mobiquitous’09] + [Demo at PERCOM’09]
                  28
A suite of tools
device AccessLogReader extends StoppableDevice {
  source line as String;
}


                                                           a DSL to describe SCC applications
context AccessLogParser as Access {
  source line from AccessLogReader;
}
context AccessingProfile as IdentifiedAccess {
  context AccessLogParser;
  context IP2Profile;
}
context IP2Profile as Profile indexed by ip as IPAddress {                  [GPCE’09]
  source ip2host from NSLookup;
  source host2profile from LDAPServer;
}
controller ProfileLogger {
  context AccessingProfile;
  action Log on Logger;
}




                                                             a simulator with 2D rendering
                                                            [Mobiquitous’09] + [Demo at PERCOM’09]




                                                                29
Pantagruel
a graphical language to prototype
pervasive computing applications

  SENSORS            CONTROLLERS    ACTUATORS

 showerdoor              R3          showerdoor
                         AND
state is CLOSED
                          1
 state is OPEN            2
 mixingvalve                         mixingvalve

                                    regulate(WARM)
                         R4
                                        run()
                         OR
                                        stop()

showermotion                        showermotion

 detected is true

 detected is false




       [DSL’09] + [Demo at PERCOM’10]
                               30
A suite of tools
device AccessLogReader extends StoppableDevice {
  source line as String;
}


                                                           a DSL to describe SCC applications
context AccessLogParser as Access {
  source line from AccessLogReader;
}
context AccessingProfile as IdentifiedAccess {
  context AccessLogParser;
  context IP2Profile;
}
context IP2Profile as Profile indexed by ip as IPAddress {                  [GPCE’09]
  source ip2host from NSLookup;
  source host2profile from LDAPServer;
}
controller ProfileLogger {
  context AccessingProfile;
  action Log on Logger;
}




                                                             a simulator with 2D rendering
                                                            [Mobiquitous’09] + [Demo at PERCOM’09]


    SENSORS

   showerdoor
                       CONTROLLERS

                           R3
                                     ACTUATORS

                                      showerdoor
                                                            a graphical language to prototype
                                                            pervasive computing applications
                           AND
  state is CLOSED
                            1
   state is OPEN            2
   mixingvalve                        mixingvalve

                                     regulate(WARM)
                           R4
                                         run()


                                                               [DSL’09] + [Demo at PERCOM’10]
                           OR
                                         stop()

  showermotion                       showermotion

   detected is true

   detected is false



                                                                31
A suite of tools
device AccessLogReader extends StoppableDevice {
  source line as String;
}


                                                           a DSL to describe SCC applications
context AccessLogParser as Access {
  source line from AccessLogReader;
}
context AccessingProfile as IdentifiedAccess {
  context AccessLogParser;
  context IP2Profile;
}
context IP2Profile as Profile indexed by ip as IPAddress {                 [GPCE’09]
  source ip2host from NSLookup;
  source host2profile from LDAPServer;
}
controller ProfileLogger {
  context AccessingProfile;
  action Log on Logger;
}




                                                             a simulator with]2D rendering
                                                                            0
                                                  PERC     OM+1  ’
                                     [   Dem o at[Mobiquitous’09] [Demo at PERCOM’09]

    SENSORS

   showerdoor
                       CONTROLLERS

                           R3
                                     ACTUATORS

                                      showerdoor
                                                            a graphical language to prototype
                                                            pervasive computing applications
                           AND
  state is CLOSED
                            1
   state is OPEN            2
   mixingvalve                        mixingvalve

                                     regulate(WARM)
                           R4
                                         run()


                                                               [DSL’09] + [Demo at PERCOM’10]
                           OR
                                         stop()

  showermotion                       showermotion

   detected is true

   detected is false



                                                               31
Conclusion

•   Existing ADLs do not
    automate conformance
    checking

•   Our ADL is dedicated to
    SCC applications

•   Implementation is

    •   driven by the framework

    •   correct by construction
                                   http://diasuite.inria.fr
                              32
Conclusion & Future Work

•   Existing ADLs do not
                                   •   Architecture-driven
    automate conformance
    checking                           •   testing


•   Our ADL is dedicated to            •   analysis
    SCC applications
                                   •   Non-functional properties
                                       [splash’10]
•   Implementation is

    •   driven by the framework
                                   •   Validation with a customer


    •   correct by construction
                                   •   Generalization to other
                                       architectural styles
                                       http://diasuite.inria.fr
                              32

More Related Content

Similar to Architecture-Driven Programming for Sense/Compute/Control Applications

Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization mentoresd
 
Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what’s...
Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what’s...Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what’s...
Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what’s...wwwally
 
Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what...
Techdays 2013   managing your hybrid cloud datacenter with scom 2012 and what...Techdays 2013   managing your hybrid cloud datacenter with scom 2012 and what...
Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what...CompuTrain. De IT opleider.
 
Brief about Windows Azure Platform
Brief about Windows Azure Platform Brief about Windows Azure Platform
Brief about Windows Azure Platform K.Mohamed Faizal
 
Выявление и локализация проблем в сети с помощью инструментов Riverbed
Выявление и локализация проблем в сети с помощью инструментов RiverbedВыявление и локализация проблем в сети с помощью инструментов Riverbed
Выявление и локализация проблем в сети с помощью инструментов RiverbedElena Marianenko
 
Engine Yard Cloud Architecture Enhancements
Engine Yard Cloud Architecture EnhancementsEngine Yard Cloud Architecture Enhancements
Engine Yard Cloud Architecture EnhancementsEngine Yard
 
SCOM 2012 & SCCM 2012
SCOM 2012 & SCCM 2012SCOM 2012 & SCCM 2012
SCOM 2012 & SCCM 2012Amit Gatenyo
 
Android. behind the scenes_programatica 2012
Android. behind the scenes_programatica 2012Android. behind the scenes_programatica 2012
Android. behind the scenes_programatica 2012Agora Group
 
Pandora FMS - Technical presentation
Pandora FMS - Technical presentationPandora FMS - Technical presentation
Pandora FMS - Technical presentationSancho Lerena
 
Christ Vriens@Agile Community Event - March 19th, 2009
Christ Vriens@Agile Community Event - March 19th, 2009Christ Vriens@Agile Community Event - March 19th, 2009
Christ Vriens@Agile Community Event - March 19th, 2009guest19a937
 
Nagios Conference 2012 - Andreas Ericsson - Merlin
Nagios Conference 2012 - Andreas Ericsson - MerlinNagios Conference 2012 - Andreas Ericsson - Merlin
Nagios Conference 2012 - Andreas Ericsson - MerlinNagios
 
Dell web monsters-oct2011-v6-public
Dell web monsters-oct2011-v6-publicDell web monsters-oct2011-v6-public
Dell web monsters-oct2011-v6-publicBarton George
 
How-To: Linux Performance Monitoring & Management for your Multi-Vendor Network
How-To: Linux Performance Monitoring & Management for your Multi-Vendor Network How-To: Linux Performance Monitoring & Management for your Multi-Vendor Network
How-To: Linux Performance Monitoring & Management for your Multi-Vendor Network SolarWinds
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Opersys inc.
 
Monitoring applications on cloud - Indicthreads cloud computing conference 2011
Monitoring applications on cloud - Indicthreads cloud computing conference 2011Monitoring applications on cloud - Indicthreads cloud computing conference 2011
Monitoring applications on cloud - Indicthreads cloud computing conference 2011IndicThreads
 
Managing application performance for cloud apps bmc
Managing application performance for cloud apps bmcManaging application performance for cloud apps bmc
Managing application performance for cloud apps bmcKhazret Sapenov
 
Rover technology ppt
Rover technology pptRover technology ppt
Rover technology pptsindhupriya97
 
Webinar The App Lifecycle Platform
Webinar The App Lifecycle PlatformWebinar The App Lifecycle Platform
Webinar The App Lifecycle PlatformService2Media
 
Windows Azure Platform
Windows Azure PlatformWindows Azure Platform
Windows Azure PlatformAsmTrash
 

Similar to Architecture-Driven Programming for Sense/Compute/Control Applications (20)

Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization
 
Thesis defense
Thesis defenseThesis defense
Thesis defense
 
Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what’s...
Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what’s...Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what’s...
Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what’s...
 
Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what...
Techdays 2013   managing your hybrid cloud datacenter with scom 2012 and what...Techdays 2013   managing your hybrid cloud datacenter with scom 2012 and what...
Techdays 2013 managing your hybrid cloud datacenter with scom 2012 and what...
 
Brief about Windows Azure Platform
Brief about Windows Azure Platform Brief about Windows Azure Platform
Brief about Windows Azure Platform
 
Выявление и локализация проблем в сети с помощью инструментов Riverbed
Выявление и локализация проблем в сети с помощью инструментов RiverbedВыявление и локализация проблем в сети с помощью инструментов Riverbed
Выявление и локализация проблем в сети с помощью инструментов Riverbed
 
Engine Yard Cloud Architecture Enhancements
Engine Yard Cloud Architecture EnhancementsEngine Yard Cloud Architecture Enhancements
Engine Yard Cloud Architecture Enhancements
 
SCOM 2012 & SCCM 2012
SCOM 2012 & SCCM 2012SCOM 2012 & SCCM 2012
SCOM 2012 & SCCM 2012
 
Android. behind the scenes_programatica 2012
Android. behind the scenes_programatica 2012Android. behind the scenes_programatica 2012
Android. behind the scenes_programatica 2012
 
Pandora FMS - Technical presentation
Pandora FMS - Technical presentationPandora FMS - Technical presentation
Pandora FMS - Technical presentation
 
Christ Vriens@Agile Community Event - March 19th, 2009
Christ Vriens@Agile Community Event - March 19th, 2009Christ Vriens@Agile Community Event - March 19th, 2009
Christ Vriens@Agile Community Event - March 19th, 2009
 
Nagios Conference 2012 - Andreas Ericsson - Merlin
Nagios Conference 2012 - Andreas Ericsson - MerlinNagios Conference 2012 - Andreas Ericsson - Merlin
Nagios Conference 2012 - Andreas Ericsson - Merlin
 
Dell web monsters-oct2011-v6-public
Dell web monsters-oct2011-v6-publicDell web monsters-oct2011-v6-public
Dell web monsters-oct2011-v6-public
 
How-To: Linux Performance Monitoring & Management for your Multi-Vendor Network
How-To: Linux Performance Monitoring & Management for your Multi-Vendor Network How-To: Linux Performance Monitoring & Management for your Multi-Vendor Network
How-To: Linux Performance Monitoring & Management for your Multi-Vendor Network
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
 
Monitoring applications on cloud - Indicthreads cloud computing conference 2011
Monitoring applications on cloud - Indicthreads cloud computing conference 2011Monitoring applications on cloud - Indicthreads cloud computing conference 2011
Monitoring applications on cloud - Indicthreads cloud computing conference 2011
 
Managing application performance for cloud apps bmc
Managing application performance for cloud apps bmcManaging application performance for cloud apps bmc
Managing application performance for cloud apps bmc
 
Rover technology ppt
Rover technology pptRover technology ppt
Rover technology ppt
 
Webinar The App Lifecycle Platform
Webinar The App Lifecycle PlatformWebinar The App Lifecycle Platform
Webinar The App Lifecycle Platform
 
Windows Azure Platform
Windows Azure PlatformWindows Azure Platform
Windows Azure Platform
 

More from Damien Cassou

Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013Damien Cassou
 
Metaprogramming and Reflection in Common Lisp
Metaprogramming and Reflection in Common LispMetaprogramming and Reflection in Common Lisp
Metaprogramming and Reflection in Common LispDamien Cassou
 
Leveraging Software Architectures to Guide and Verify the Development of Sen...
Leveraging Software Architectures to Guide and Verify the Development of Sen...Leveraging Software Architectures to Guide and Verify the Development of Sen...
Leveraging Software Architectures to Guide and Verify the Development of Sen...Damien Cassou
 
A Generative Programming Approach to Developing Pervasive Computing Systems
A Generative Programming Approach to Developing Pervasive Computing SystemsA Generative Programming Approach to Developing Pervasive Computing Systems
A Generative Programming Approach to Developing Pervasive Computing SystemsDamien Cassou
 

More from Damien Cassou (6)

Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013
 
Metaprogramming and Reflection in Common Lisp
Metaprogramming and Reflection in Common LispMetaprogramming and Reflection in Common Lisp
Metaprogramming and Reflection in Common Lisp
 
Leveraging Software Architectures to Guide and Verify the Development of Sen...
Leveraging Software Architectures to Guide and Verify the Development of Sen...Leveraging Software Architectures to Guide and Verify the Development of Sen...
Leveraging Software Architectures to Guide and Verify the Development of Sen...
 
PhD thesis defense
PhD thesis defensePhD thesis defense
PhD thesis defense
 
A Generative Programming Approach to Developing Pervasive Computing Systems
A Generative Programming Approach to Developing Pervasive Computing SystemsA Generative Programming Approach to Developing Pervasive Computing Systems
A Generative Programming Approach to Developing Pervasive Computing Systems
 
Smalltalk
SmalltalkSmalltalk
Smalltalk
 

Recently uploaded

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Recently uploaded (20)

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Architecture-Driven Programming for Sense/Compute/Control Applications

  • 1. Architecture-Driven Programming for Sense/Compute/Control Applications Damien Cassou, Émilie Balland, Charles Consel, Julia Lawall 1
  • 2. 1.Design • facilitates communication • documents decisions • guides development 2
  • 3. 1.Design • facilitates communication • documents decisions Architecture Description Languages • guides development (ADLs) 2
  • 4. 2.Implement based on the design as a contemplative document General Purpose Languages (GPLs) 3
  • 11. 3.Check conformance • costly • slow • error-prone manual operation 4
  • 13. 3.Check conformance • costly • slow • error-prone manual operation 6
  • 14. 3.Check conformance • costly • slow • error-prone compiler produces a dedicated programming framework 6
  • 15. 3.Check conformance • costly • free • slow • immediate • error-prone • error-free compiler produces a dedicated programming framework 6
  • 16. compiler 7
  • 17. compiler builds a programming framework which • guides the implementation • provides high-level support • ensures conformance 7
  • 18. compiler dedicated to the application builds a programming framework which • guides the implementation • provides high-level support • ensures conformance 7
  • 19. compiler dedicated to the application builds a programming framework which • guides the implementation • provides high-level support • ensures conformance heavily rely on the Java type checker 7
  • 20. Our Approach an ADL + generation of a dedicated programming framework 8
  • 21. Our Approach a domain-specific ADL + generation of a dedicated programming framework 8
  • 23. The Domain Sense/Compute/Control applications (SCC) “applications that interact with an environment” 9
  • 24. The Domain Sense/Compute/Control applications (SCC) “applications that interact with an environment” 10
  • 25. The Domain Sense/Compute/Control applications (SCC) “applications that interact with an environment” Cover various areas • building automation • application monitoring environment • robotics • autonomic computing • ... 10
  • 27. The Domain Sense/Compute/Control applications (SCC) environment sensors 11
  • 28. The Domain Sense/Compute/Control applications (SCC) environment sensors Sense 11
  • 29. The Domain Sense/Compute/Control applications (SCC) environment context operators raw data sensors Sense 11
  • 30. The Domain Sense/Compute/Control applications (SCC) environment context operators Compute raw data sensors Sense 11
  • 31. The Domain Sense/Compute/Control applications (SCC) control operators context environment data context operators Compute raw data sensors Sense 11
  • 32. The Domain Sense/Compute/Control applications (SCC) orders actuators control operators context environment data context operators Compute raw data sensors Sense 11
  • 33. The Domain Sense/Compute/Control applications (SCC) orders actuators control operators context environment data context operators Compute raw data sensors Sense 11
  • 34. The Domain Sense/Compute/Control applications (SCC) Control orders actuators control operators context environment data context operators Compute raw data sensors Sense 11
  • 35. The Domain orders actuators control operators context data context operators raw data sensors 12
  • 36. The Domain actuators orders control operators context data context operators raw data sensors 12
  • 37. The Domain actuators control operators context operators 12 sensors
  • 38. Web Server Monitoring actuators control operators context operators 13 sensors
  • 39. Web Server Monitoring actuators control operators environment = the web server context operators 13 sensors
  • 40. Web Server Monitoring actuators control operators context operators 13 sensors
  • 41. Web Server Monitoring actuators control IntrusionInformer operators context operators 13 sensors
  • 42. Web Server Monitoring Mailer actuators control IntrusionInformer operators context operators 13 sensors
  • 43. Web Server Monitoring Mailer actuators control IntrusionInformer ProfileLogger operators context operators 13 sensors
  • 44. Web Server Monitoring Mailer Logger actuators control IntrusionInformer ProfileLogger operators context operators 13 sensors
  • 45. Web Server Monitoring Mailer Logger actuators control IntrusionInformer ProfileLogger operators context Accessing Profile operators 13 sensors
  • 46. Web Server Monitoring Mailer Logger actuators control IntrusionInformer ProfileLogger operators context Accessing Profile operators 13 sensors
  • 47. Web Server Monitoring Mailer Logger actuators control IntrusionInformer ProfileLogger operators Intrusion Detector context Accessing Profile operators 13 sensors
  • 48. Web Server Monitoring Mailer Logger actuators control IntrusionInformer ProfileLogger operators Intrusion Detector context Accessing Profile operators AccessLog Parser 13 sensors
  • 49. Web Server Monitoring Mailer Logger actuators control IntrusionInformer ProfileLogger operators Intrusion Detector context Accessing Profile operators AccessLog Parser AccessLogReader 13 sensors
  • 50. Web Server Monitoring Mailer Logger actuators control IntrusionInformer ProfileLogger operators Intrusion Detector context Accessing Profile operators AccessLog IP2Profile Parser AccessLogReader 13 sensors
  • 51. Web Server Monitoring Mailer Logger actuators control IntrusionInformer ProfileLogger operators Intrusion Detector context Accessing Profile operators AccessLog IP2Profile Parser AccessLogReader NSLookup 13 sensors
  • 52. Web Server Monitoring Mailer Logger actuators control IntrusionInformer ProfileLogger operators Intrusion Detector context Accessing Profile operators AccessLog IP2Profile Parser AccessLogReader NSLookup 13 LDAP sensors
  • 53. Web Server Monitoring Mailer Logger actuators email(...) log(AccessInfo,Profile) control IntrusionInformer ProfileLogger operators AccessInfo Intrusion Detector (AccessInfo,Profile) context Accessing Profile Profile operators AccessInfo [IPAddress] AccessLog IP2Profile Parser String Profile String [IPAddress] [String] AccessLogReader NSLookup 13 LDAP sensors
  • 54. context Accessing Profile operators AccessLog IP2Profile Parser 14 sensors
  • 55. what the architect expresses context Accessing Profile operators AccessLog IP2Profile Parser 14 sensors
  • 56. what the architect would like to express context Accessing Profile operators AccessLog IP2Profile Parser 14 sensors
  • 57. what the architect would like to express context Accessing Profile operators AccessLog IP2Profile Parser 14 sensors
  • 58. what the architect would like to express context Accessing Profile operators AccessLog IP2Profile Parser 14 sensors
  • 59. what the architect would like to express activation condition context Accessing Profile operators AccessLog IP2Profile Parser 14 sensors
  • 60. what the architect would like to express data context Accessing requirement Profile operators AccessLog IP2Profile Parser 14 sensors
  • 61. what the architect would like to express emission context Accessing Profile operators AccessLog IP2Profile Parser 14 sensors
  • 62. Behavioral Contracts context Accessing Profile operators AccessLog IP2Profile Parser 15 sensors
  • 63. Behavioral Contracts ⟨ ; ; ⟩ context Accessing Profile operators AccessLog IP2Profile Parser 15 sensors
  • 64. Behavioral Contracts activation condition ⟨⇑AccessLogParser ; ; ⟩ context Accessing Profile operators AccessLog IP2Profile Parser 15 sensors
  • 65. Behavioral Contracts activation data condition requirement ⟨⇑AccessLogParser ; ⇓IP2Profile ; ⟩ context Accessing Profile operators AccessLog IP2Profile Parser 15 sensors
  • 66. Behavioral Contracts activation data emission condition requirement ⟨⇑AccessLogParser ; ⇓IP2Profile ; ⇑self⟩ context Accessing Profile operators AccessLog IP2Profile Parser 15 sensors
  • 67. Behavioral Contracts context operators IP2Profile NSLookup 16 LDAP sensors
  • 68. Behavioral Contracts ⟨ ; ; ⟩ context operators IP2Profile NSLookup 16 LDAP sensors
  • 69. Behavioral Contracts activation condition ⟨⇓self ; ; ⟩ context operators IP2Profile NSLookup 16 LDAP sensors
  • 70. Behavioral Contracts activation data condition requirement ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ; ⟩ context operators IP2Profile NSLookup 16 LDAP sensors
  • 71. Behavioral Contracts activation data emission condition requirement ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ; ∅⟩ context operators IP2Profile NSLookup 16 LDAP sensors
  • 72. Web Server Monitoring Mailer Logger actuators control IntrusionInformer ProfileLogger operators Intrusion Detector context Accessing Profile operators AccessLog IP2Profile Parser AccessLogReader NSLookup 17 LDAP sensors
  • 73. Mailer Logger actuators 3.Check conformance control IntrusionInformer ProfileLogger operators Intrusion Detector context Accessing Profile operators AccessLog IP2Profile Parser AccessLogReader NSLookup LDAP sensors compiler produces a dedicated programming framework 18
  • 74. Programming Framework Mailer Logger IntrusionInformer ProfileLogger Intrusion Detector Accessing Profile AccessLog IP2Profile Parser AccessLogReader NSLookup LDAP 19
  • 75. Programming Framework Mailer Logger IntrusionInformer ProfileLogger Intrusion For each component: Detector • an abstract class Accessing Profile AccessLog IP2Profile Parser AccessLogReader NSLookup LDAP 19
  • 76. Programming Framework Mailer Logger For each component: IntrusionInformer ProfileLogger • an abstract class Intrusion For each interaction: Detector • an abstract method Accessing Profile AccessLog IP2Profile Parser AccessLogReader NSLookup LDAP 19
  • 77. Programming Framework For each component: • an abstract class Mailer Logger For each interaction: IntrusionInformer ProfileLogger • an abstract method Intrusion Dedicated support: Detector • interfaces Accessing • proxies Profile • composites AccessLog Parser IP2Profile • discovery • RPC AccessLogReader NSLookup LDAP • ... 19
  • 78. Accessing Profile AccessLog IP2Profile Parser 20
  • 79. (AccessInfo,Profile) architecture Accessing Profile AccessInfo Profile [IPAddress] AccessLog ⟨ ; ; ⟩ IP2Profile Parser abstract class AccessingProfile { abstract Pair<AccessInfo,Profile> onNewAccessLogParser(AccessInfo newAccess, IP2ProfileClosure ip2Pro); } framework 20
  • 80. (AccessInfo,Profile) architecture Accessing Profile AccessInfo Profile [IPAddress] AccessLog ⟨⇑AccessLogParser ; ; ⟩ IP2Profile Parser abstract class AccessingProfile { abstract Pair<AccessInfo,Profile> onNewAccessLogParser(AccessInfo newAccess, IP2ProfileClosure ip2Pro); } framework 20
  • 81. (AccessInfo,Profile) architecture Accessing Profile AccessInfo Profile [IPAddress] AccessLog ⟨⇑AccessLogParser ; ⇓IP2Profile ; ⟩ IP2Profile Parser abstract class AccessingProfile { abstract Pair<AccessInfo,Profile> onNewAccessLogParser(AccessInfo newAccess, IP2ProfileClosure ip2Pro); } framework 20
  • 82. (AccessInfo,Profile) architecture Accessing Profile AccessInfo Profile [IPAddress] AccessLog ⟨⇑AccessLogParser ; ⇓IP2Profile ; ⇑self⟩ IP2Profile Parser abstract class AccessingProfile { abstract Pair<AccessInfo,Profile> onNewAccessLogParser(AccessInfo newAccess, IP2ProfileClosure ip2Pro); } framework 20
  • 83. (AccessInfo,Profile) architecture Accessing Profile AccessInfo Profile [IPAddress] AccessLog ⟨ ; ; ⟩ IP2Profile Parser abstract class AccessingProfile { abstract onNewAccessLogParser(...);} framework class StdAccessingProfile extends AccessingProfile { @Override Pair<AccessInfo,Profile> onNewAccessLogParser(AccessInfo newAccess, IP2ProfileClosure ip2Pro){ Profile profile = ip2Pro.get(newAccess.getHost_ip()); return new Pair<AccessInfo,Profile>(newAccess, profile); } user code 21
  • 84. (AccessInfo,Profile) architecture Accessing Profile AccessInfo Profile [IPAddress] AccessLog ⟨⇑AccessLogParser ; ⟨ ; ⟩ IP2Profile Parser abstract class AccessingProfile { abstract onNewAccessLogParser(...);} framework class StdAccessingProfile extends AccessingProfile { @Override Pair<AccessInfo,Profile> onNewAccessLogParser(AccessInfo newAccess, IP2ProfileClosure ip2Pro){ Profile profile = ip2Pro.get(newAccess.getHost_ip()); return new Pair<AccessInfo,Profile>(newAccess, profile); } user code 21
  • 85. (AccessInfo,Profile) architecture Accessing Profile AccessInfo Profile [IPAddress] AccessLog ⟨⇑AccessLogParser ; ⇓IP2Profile ; ⟩ IP2Profile Parser abstract class AccessingProfile { abstract onNewAccessLogParser(...);} framework class StdAccessingProfile extends AccessingProfile { @Override Pair<AccessInfo,Profile> onNewAccessLogParser(AccessInfo newAccess, IP2ProfileClosure ip2Pro){ Profile profile = ip2Pro.get(newAccess.getHost_ip()); return new Pair<AccessInfo,Profile>(newAccess, profile); } user code 21
  • 86. (AccessInfo,Profile) architecture Accessing Profile AccessInfo Profile [IPAddress] AccessLog ⟨⇑AccessLogParser ; ⇓IP2Profile ; ⇑self⟩ IP2Profile Parser abstract class AccessingProfile { abstract onNewAccessLogParser(...);} framework class StdAccessingProfile extends AccessingProfile { @Override Pair<AccessInfo,Profile> onNewAccessLogParser(AccessInfo newAccess, IP2ProfileClosure ip2Pro){ Profile profile = ip2Pro.get(newAccess.getHost_ip()); return new Pair<AccessInfo,Profile>(newAccess, profile); } user code 21
  • 87. (AccessInfo,Profile) architecture Accessing Profile AccessInfo Profile [IPAddress] AccessLog ⟨⇑AccessLogParser ; ⇓IP2Profile ; ⇑self⟩ IP2Profile Parser only ways to interact! abstract class AccessingProfile { abstract onNewAccessLogParser(...);} framework class StdAccessingProfile extends AccessingProfile { @Override Pair<AccessInfo,Profile> onNewAccessLogParser(AccessInfo newAccess, IP2ProfileClosure ip2Pro){ Profile profile = ip2Pro.get(newAccess.getHost_ip()); return new Pair<AccessInfo,Profile>(newAccess, profile); } user code 21
  • 88. Profile [IPAddress] architecture IP2Profile String Profile ⟨ ; ; ⟩ [IPAddress] [String] NSLookup LDAP abstract class IP2Profile { abstract Profile get(IPAddress paramIPAddress, NSLookupClosure nsLookup, LDAPClosure ldap); } framework 22
  • 89. Profile [IPAddress] architecture IP2Profile String Profile ⟨⇓self ; ; ⟩ [IPAddress] [String] NSLookup LDAP abstract class IP2Profile { abstract Profile get(IPAddress paramIPAddress, NSLookupClosure nsLookup, LDAPClosure ldap); } framework 22
  • 90. Profile [IPAddress] architecture IP2Profile String Profile ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ; ⟩ [IPAddress] [String] NSLookup LDAP abstract class IP2Profile { abstract Profile get(IPAddress paramIPAddress, NSLookupClosure nsLookup, LDAPClosure ldap); } framework 22
  • 91. Profile [IPAddress] architecture IP2Profile String Profile ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ; ∅⟩ [IPAddress] [String] NSLookup LDAP abstract class IP2Profile { abstract Profile get(IPAddress paramIPAddress, NSLookupClosure nsLookup, LDAPClosure ldap); } framework 22
  • 92. Profile [IPAddress] architecture IP2Profile String Profile ⟨ ; ; ⟩ [IPAddress] [String] NSLookup LDAP abstract class IP2Profile { abstract Profile get(...); } framework class StdIP2Profile extends IP2Profile { @Override Profile get(IPAddress paramIPAddress, NSLookupClosure nsLookup, LDAPClosure ldap){ String host = nsLookup.get(paramIPAddress); return ldap.pull(host); } user code } 23
  • 93. Profile [IPAddress] architecture IP2Profile String Profile ⟨⇓self ; ; ⟩ [IPAddress] [String] NSLookup LDAP abstract class IP2Profile { abstract Profile get(...); } framework class StdIP2Profile extends IP2Profile { @Override Profile get(IPAddress paramIPAddress, NSLookupClosure nsLookup, LDAPClosure ldap){ String host = nsLookup.get(paramIPAddress); return ldap.pull(host); } user code } 23
  • 94. Profile [IPAddress] architecture IP2Profile String Profile ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ; ⟩ [IPAddress] [String] NSLookup LDAP abstract class IP2Profile { abstract Profile get(...); } framework class StdIP2Profile extends IP2Profile { @Override Profile get(IPAddress paramIPAddress, NSLookupClosure nsLookup, LDAPClosure ldap){ String host = nsLookup.get(paramIPAddress); return ldap.pull(host); } user code } 23
  • 95. Profile [IPAddress] architecture IP2Profile String Profile ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ; ⟩ [IPAddress] [String] NSLookup LDAP abstract class IP2Profile { abstract Profile get(...); } framework class StdIP2Profile extends IP2Profile { @Override Profile get(IPAddress paramIPAddress, NSLookupClosure nsLookup, LDAPClosure ldap){ String host = nsLookup.get(paramIPAddress); return ldap.pull(host); } user code } 23
  • 96. Profile [IPAddress] architecture IP2Profile String Profile ⟨⇓self ; (⇓NSLookup, ⇓LDAP) ; ∅⟩ [IPAddress] [String] NSLookup LDAP abstract class IP2Profile { abstract Profile get(...); } framework class StdIP2Profile extends IP2Profile { @Override Profile get(IPAddress paramIPAddress, NSLookupClosure nsLookup, LDAPClosure ldap){ String host = nsLookup.get(paramIPAddress); return ldap.pull(host); } user code } 23
  • 97. Unpresented Contributions • splash/oopsla 2010 • Formalization of the model • Analysis on the architecture • Architecture refinement • Coordination of data (synchronization / disjunction) 24
  • 98. A suite of tools 25
  • 99. DiaSpec a DSL to describe SCC applications device AccessLogReader extends StoppableDevice { source line as String; } context AccessLogParser as Access { source line from AccessLogReader; } context AccessingProfile as IdentifiedAccess { context AccessLogParser; context IP2Profile; } context IP2Profile as Profile indexed by ip as IPAddress { source ip2host from NSLookup; source host2profile from LDAPServer; } controller ProfileLogger { context AccessingProfile; action Log on Logger; } [GPCE’09] 26
  • 100. A suite of tools device AccessLogReader extends StoppableDevice { source line as String; } a DSL to describe SCC applications context AccessLogParser as Access { source line from AccessLogReader; } context AccessingProfile as IdentifiedAccess { context AccessLogParser; context IP2Profile; } context IP2Profile as Profile indexed by ip as IPAddress { [GPCE’09] source ip2host from NSLookup; source host2profile from LDAPServer; } controller ProfileLogger { context AccessingProfile; action Log on Logger; } 27
  • 101. DiaSim a simulator with 2D rendering [Mobiquitous’09] + [Demo at PERCOM’09] 28
  • 102. A suite of tools device AccessLogReader extends StoppableDevice { source line as String; } a DSL to describe SCC applications context AccessLogParser as Access { source line from AccessLogReader; } context AccessingProfile as IdentifiedAccess { context AccessLogParser; context IP2Profile; } context IP2Profile as Profile indexed by ip as IPAddress { [GPCE’09] source ip2host from NSLookup; source host2profile from LDAPServer; } controller ProfileLogger { context AccessingProfile; action Log on Logger; } a simulator with 2D rendering [Mobiquitous’09] + [Demo at PERCOM’09] 29
  • 103. Pantagruel a graphical language to prototype pervasive computing applications SENSORS CONTROLLERS ACTUATORS showerdoor R3 showerdoor AND state is CLOSED 1 state is OPEN 2 mixingvalve mixingvalve regulate(WARM) R4 run() OR stop() showermotion showermotion detected is true detected is false [DSL’09] + [Demo at PERCOM’10] 30
  • 104. A suite of tools device AccessLogReader extends StoppableDevice { source line as String; } a DSL to describe SCC applications context AccessLogParser as Access { source line from AccessLogReader; } context AccessingProfile as IdentifiedAccess { context AccessLogParser; context IP2Profile; } context IP2Profile as Profile indexed by ip as IPAddress { [GPCE’09] source ip2host from NSLookup; source host2profile from LDAPServer; } controller ProfileLogger { context AccessingProfile; action Log on Logger; } a simulator with 2D rendering [Mobiquitous’09] + [Demo at PERCOM’09] SENSORS showerdoor CONTROLLERS R3 ACTUATORS showerdoor a graphical language to prototype pervasive computing applications AND state is CLOSED 1 state is OPEN 2 mixingvalve mixingvalve regulate(WARM) R4 run() [DSL’09] + [Demo at PERCOM’10] OR stop() showermotion showermotion detected is true detected is false 31
  • 105. A suite of tools device AccessLogReader extends StoppableDevice { source line as String; } a DSL to describe SCC applications context AccessLogParser as Access { source line from AccessLogReader; } context AccessingProfile as IdentifiedAccess { context AccessLogParser; context IP2Profile; } context IP2Profile as Profile indexed by ip as IPAddress { [GPCE’09] source ip2host from NSLookup; source host2profile from LDAPServer; } controller ProfileLogger { context AccessingProfile; action Log on Logger; } a simulator with]2D rendering 0 PERC OM+1 ’ [ Dem o at[Mobiquitous’09] [Demo at PERCOM’09] SENSORS showerdoor CONTROLLERS R3 ACTUATORS showerdoor a graphical language to prototype pervasive computing applications AND state is CLOSED 1 state is OPEN 2 mixingvalve mixingvalve regulate(WARM) R4 run() [DSL’09] + [Demo at PERCOM’10] OR stop() showermotion showermotion detected is true detected is false 31
  • 106. Conclusion • Existing ADLs do not automate conformance checking • Our ADL is dedicated to SCC applications • Implementation is • driven by the framework • correct by construction http://diasuite.inria.fr 32
  • 107. Conclusion & Future Work • Existing ADLs do not • Architecture-driven automate conformance checking • testing • Our ADL is dedicated to • analysis SCC applications • Non-functional properties [splash’10] • Implementation is • driven by the framework • Validation with a customer • correct by construction • Generalization to other architectural styles http://diasuite.inria.fr 32

Editor's Notes

  1. standard ADL =&gt; poor expressiveness =&gt; few support
  2. standard ADL =&gt; poor expressiveness =&gt; few support
  3. instanciate the pattern (environment = webserver) role of this application?
  4. instanciate the pattern (environment = webserver) role of this application?
  5. instanciate the pattern (environment = webserver) role of this application?
  6. instanciate the pattern (environment = webserver) role of this application?
  7. instanciate the pattern (environment = webserver) role of this application?
  8. instanciate the pattern (environment = webserver) role of this application?
  9. instanciate the pattern (environment = webserver) role of this application?
  10. instanciate the pattern (environment = webserver) role of this application?
  11. instanciate the pattern (environment = webserver) role of this application?
  12. instanciate the pattern (environment = webserver) role of this application?
  13. instanciate the pattern (environment = webserver) role of this application?
  14. instanciate the pattern (environment = webserver) role of this application?
  15. instanciate the pattern (environment = webserver) role of this application?
  16. instanciate the pattern (environment = webserver) role of this application?
  17. instanciate the pattern (environment = webserver) role of this application?
  18. instanciate the pattern (environment = webserver) role of this application?
  19. instanciate the pattern (environment = webserver) role of this application?
  20. instanciate the pattern (environment = webserver) role of this application?
  21. instanciate the pattern (environment = webserver) role of this application?
  22. instanciate the pattern (environment = webserver) role of this application?
  23. instanciate the pattern (environment = webserver) role of this application?
  24. instanciate the pattern (environment = webserver) role of this application?
  25. instanciate the pattern (environment = webserver) role of this application?
  26. instanciate the pattern (environment = webserver) role of this application?
  27. instanciate the pattern (environment = webserver) role of this application?
  28. instanciate the pattern (environment = webserver) role of this application?
  29. instanciate the pattern (environment = webserver) role of this application?
  30. instanciate the pattern (environment = webserver) role of this application?
  31. instanciate the pattern (environment = webserver) role of this application?
  32. instanciate the pattern (environment = webserver) role of this application?
  33. instanciate the pattern (environment = webserver) role of this application?
  34. instanciate the pattern (environment = webserver) role of this application?
  35. Too few description =&gt; too many implementations =&gt; no support
  36. Too few description =&gt; too many implementations =&gt; no support
  37. Too few description =&gt; too many implementations =&gt; no support
  38. Too few description =&gt; too many implementations =&gt; no support
  39. Too few description =&gt; too many implementations =&gt; no support
  40. Too few description =&gt; too many implementations =&gt; no support
  41. Too few description =&gt; too many implementations =&gt; no support
  42. Too few description =&gt; too many implementations =&gt; no support
  43. Too few description =&gt; too many implementations =&gt; no support
  44. Too few description =&gt; too many implementations =&gt; no support
  45. Too few description =&gt; too many implementations =&gt; no support
  46. Too few description =&gt; too many implementations =&gt; no support
  47. Too few description =&gt; too many implementations =&gt; no support
  48. Too few description =&gt; too many implementations =&gt; no support
  49. Too few description =&gt; too many implementations =&gt; no support
  50. present the formalisation =&gt; use it to describe the rest Problem then solution