SysMA SOFTWARE ENGINEERING FOR SERVICEORIENTED AND AUTONOMIC SYSTEMS - INTRODUCTION TO AUTONOMIC SYSTEMS- Francesco Tiezzi (francesco.tiezzi@imtlucca.it) Lucca (Italy) – October, 2014 In co-operation with ASCENS members, in particular R. De Nicola (IMT), M. Loreti (UNIFI) and R. Pugliese (UNIFI) Software-intensive distributed systems Software-intensive systems are those complex systems where software contributes essential influences to the design, construction, deployment and evolution of the system as a whole [IEEE Standard 1471] Software-Intensive Distributed Systems (SIDS) – large-scale, decentralised, heterogeneous, highlydynamic, open-ended, adaptive, … – SIDS feature complex interactions among components – SIDS may interact with other systems, devices, sensors, people, … 2 Software-intensive distributed systems everywhere Embedded automotive systems Robotic systems Cloud systems Business processes (web services) e-Health systems 3 Autonomic systems Modern software-intensive systems feature • • • • massive numbers of components complex interactions operating in open and non-deterministic environments dynamically adapting to new requirements, technologies and environmental conditions This class of complex systems is also referred with term ensembles [IST Coordinated Action InterLink] Autonomic Computing paradigm permits mastering the challenges posed by such systems Autonomic systems 4 Autonomic Computing vision Challenge: mastering the complexity Inspiration: management of a massively complex systems, the human body by the autonomic nervous system 5 Autonomic Computing Systems can manage themselves by continuously • monitoring their behaviour (self-awareness) and their working environment (context-awareness) • analysing the acquired knowledge to identify changes • planning reconfigurations Analyze • executing plan actions Monitor Knowledge Plan Execute IBM’s MAPE-K loop 6 Autonomic Computing: Self-∗ properties Current computing Self-configuration Corporate data centers have Autonomic computing multiple vendors and platforms. Installing, configuring, and integrating systems is time consuming and error prone. Automated configuration of components and systems follows high-level policies. Rest of system adjusts automatically and seamlessly. Self-optimization Systems have hundreds of manually set, nonlinear tuning parameters, and their number increases with each release. Components and systems continually seek opportunities to improve their own performance and efficiency. Self-healing Problem determination in large, complex systems can take a team of programmers weeks. System automatically detects, diagnoses, and repairs localized software and hardware problems. Self-protection Detection of and recovery from attacks and cascading failures is manual. System automatically defends against malicious attacks or cascading failures. It uses early warning to anticipate and prevent systemwide failures. Self-awareness, Self-organization, Self-expression, … 7 Autonomic systems: robot swarm example Embedded automotive systems Robotic systems A simple swarm robotics scenario Robots of a swarm have to reach different target zones according to their assigned tasks (help other robots, reach a safe area, clear a minefield, etc.) Robots have: • limited battery lifetime • to discover the location of the target Business processes e-Health systems • to inform each other about locations (web services) Cloud systems 8 Autonomic systems: issues and challenges Complexity in their development is due to – complex interactions among components and with humans and other systems (understand the emergent behaviour) – distributed and concurrent nature – large size – open and non-deterministic operating environments (need of adaptation) The challenge is engineering trustworthy autonomic systems 9 Autonomic systems: engineering approach This calls for a formal-based approach for engineering trustworthy autonomic systems 10 Autonomic systems: engineering approach This calls for a formal-based approach for engineering trustworthy autonomic systems • • • • • Design Modelling Analysis Programming Deployment 11 Autonomic systems: engineering approach example This calls for aWarmup formal-based approach for • engineering Consider the trustworthy code x = 1; autonomic y = x++ + systems x++; • What is the value of x and y after its execution? Why formal-based? • understanding the overall behaviour resulting from system interactions can be tricky and error-prone • It is even more critical when concurrency and interactions enter the game… 12 Autonomic systems: engineering approach This calls for a formal-based methodology for engineering trustworthy SIS The programmer can avoid operator ++, but Why • weformal-based? cannot afford to stop building complex systems • understanding the overall behaviour resulting from • system we need to build trustworthy systems interactions can be tricky and error-prone • solid mathematical foundations lay the basis for formal reasoning on systems behavior (hence, for developing trustworthy systems) 13 Formal-based approach for engineering autonomic systems 14 Formal-based approach for engineering trustworthy systems Ingredients of the approach 1. specification language – – equipped with a formal semantics the semantics associates mathematical models to language terms 2. verification techniques – – built on top of the models logics used to express properties of interest for the considered application domain 3. software support – – – programming framework runtime environment verification tools 15 Formal-based approach for engineering trustworthy systems Linguistic approach: languages play a key role on the engineering of systems Why do we need a new language for each specific application domain? Systems must be specified as naturally as possible • distinctive aspects of the domain are first-class citizens intuitive/concise spec., no encodings • high-level abstract models feasible analysis • analysis results are in terms of system features, not their low-level representation feedbacks 16 Formal-based approach for engineering trustworthy systems Linguistic approach: languages play a key role on the engineering of systems Challenge for language designers devise appropriate abstractions and linguistic primitives to deal with the specificities of the systems under consideration 17 Formal-based approach at work on autonomic systems Instantiation of the general approach 1. specification language – SCEL – FACPL 2. verification techniques – Model checking with Spin – Simulation and statistical model checking 3. programming framework and runtime environment – jRESP 18 Autonomic systems as Ensembles Our appoach Systems are structured as Autonomic Components (AC) dynamically forming AC ensembles (ACE) via interactions • AC have an interface exposing component attributes Attribute-based communication Predicates over AC attributes dynamically specify ACE as targets of communication actions Ensembles are not rigid networks but rather highly flexible structures where components linkages are dynamically established 19 Autonomic systems as Ensembles 20 For further details, please visit http://rap.dsi.unifi.it/scel/ 21