17-811 Self-Healing Systems: Class Discussion Summary

David Garlan
Spring Semester 2003

Summary of Class Discussion for April 21 by Sukanya Ratanotayanon

    Formal approach
            - how to specify system using logic algebra
            - how to make a structure and behavior of component

    Specifying Distributed SW Arch.
            - Darwin can be view as a specific architectural style
            - How could people use darwin to specify public/subscribe ?
                    - specify a special connector
                    - model event as a component
            - Distinction between binding and connector
                    - acme/ explicitly specify connector
                    - darwin/ binding implicit in the interface
            - Dynamic component creation
                    - how to terminate
                    - how to do the dynamically configuration
            - Fig 9.
                    - no port in the box outside poller
                            - no explicit binding specify
                            - may be because it's dynamically created
            - what criteria to choose the dynamic instantiation
            - using ¶-calculus for binding
                    - underscore = port/channel
                    - binding = handshaking two components at runtime
                    - behavior refers to binding of components not how they interact
            - How do they specify a specific system change
                    - conic = a shell to do binding and unbinding
            - how to have binding from outside & inside from multiple port
                    - acme - could specify a special type of binding
                            - but not provide the solid tool for binding
                            - binding does not provide semantic in understanding the communication
                              between outside component
                            - capture more abstract idea than binding
                            - can think of binding as semantic link
                    - for architecture-based, there's a need to change the structure at runtime
                    - Pi calculus
                            - flexible
                            - can execute but not really analyzable ( to flexible to reason about the system)

    Architecture Primitives for Distributed and Mobility
            - want to specify the movement in the system, moving or resource change
            - specify what the component do at runtime
            - User component
                    - is designed as - 1 input/ 1 output / 4 action
                    - makes a state transition to local state with input, and throw the output according to the state change

            - Connector
                    - example connector in paper - being a channel that connect the components
                    - take multiple name and rename it to one name to represent them
                    - can define behavior with the action in connector
            - How to adapt to component moving
                    - environment told component about change
                    - component can make it own decision where to go when the environement change

    Another approach to formal stuff

                            -----------------
                            |                        |
                            |         Spec       |
                            |            <--      |
                            -----------------
                                    |  |
                                    |  | Refinement
                            -----------------
                            |       -->           |
                            |     System       |
                            |                       |
                            -----------------
            - define a certain relationship between spec and system
            control example
            - given all behavior in spec, can it causes system to become deadlock