While a number of books on related topics such as self-adaption and self-organisation, and even self-awareness concepts in computing, have already beenpublished, this book is unique as i
Trang 1Natural Computing Series
An Engineering Approach
Trang 2Natural Computing Series
Series Editors: G Rozenberg
Th Bäck A.E Eiben J.N Kok H.P Spaink
Leiden Center for Natural Computing
˘
ttp://www.springer.com/series/
Advisory Board: S Amari G Brassard K.A De Jong C.C.A.M Gielen
T Head L Kari L Landweber T Martinetz Z Michalewicz M.C Mozer
E Oja G Paun J Reif H Rubin A Salomaa M Schoenauer H.-P Schwefel C Torras D Whitley E Winfree J.M Zurada
Trang 4Peter R Lewis • Marco Platzner • Bernhard Rinner
Trang 5ISSN 1619-7127
Natural Computing Series
ISBN 978-3-319-39674-3 ISBN 978-3-319-39675-0 (eBook)
DOI 10.1007/978-3-319-39675-0
Library of Congress Control Number:
© Springer International Publishing Switzerland 2016
This work is subject to copyright All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed
The use of general descriptive names, registered names, trademarks, service marks, etc in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and therefore free for general use
The publisher, the authors and the editors are safe to assume that the advice and information in this book are believed to be true and accurate at the date of publication Neither the publisher nor the authors or the editors give a warranty, express or implied, with respect to the material contained herein
or for any errors or omissions that may have been made
Printed on acid-free paper
This Springer imprint is published by Springer Nature
The registered company is Springer International Publishing AG Switzerland
2016942574
School of Engineering & Applied Science
Aston University
Germany Bernhard Rinner
Institute of Networked and Embedded Systems
Department of Informatics Alpen-Adria-Universität Klagenfurt
University of Oslo Klagenfurt am Wörthersee
Oslo, Norway Austria
Xin Yao
University
Birmingham, United Kingdom of Birmingham
Department of Computer SciencePaderborn University
School of Computer Science
Jim T rresenø
Trang 6This book considers the design of new computation systems that are in some waysmore responsive to the environment and their own state than current system designsand aim to be more reliable through the creation of self-aware and self-expressivesystems One of the driving forces of this work is the realisation of the growth insystem complexity and the difficulty of using current “standard” methods and de-signs to continue to create working systems This is certainly relevant, as the interest
in the design and understanding of complex computing systems in technical cations has been growing significantly in various research initiatives like autonomic,organic, pervasive or ubiquitous computing and in the multi-agent system commu-nity There have been many novel applications demonstrating a wide range of self-*properties, as well as studies looking also at emerging global behaviour due to self-organised local interaction The authors of this book present the results of a largeEuropean cooperative project focusing specifically on self-awareness, which may
appli-be seen as one of the essential backgrounds for developing and supporting the otherself-* properties, which is addressed here by the term “self-expression”
Ever since researchers have realised that machines could be programmed to haveincreasingly adaptive behaviors, there has been much research on how to introduceadaptive behaviour and more biological like capabilities into systems – more types
of reasoning, more types of awareness, and more types of intelligent processing.Particularly important in adaptation is that the system has the knowledge and thecapabilities that allow it to do these adaptations in novel situations and at runtime.There are many examples of large-scale programmes to foster the understanding
of the necessary attributes and architectures of systems capable of these tions Hence there were programs on adapting routers and networks in real time(e.g., DARPA’s Active Networks), platforms and other plug and play architectureswith robust real time services (e.g., DARPA’s META program; Europe’s AUTOSAR(AUTomotive Open System ARchitecture), programs that worked to understandemergent behaviour and make use of it (Europe’s Organic Computing), systemswith computational reflection used for resource management (e.g., reflective archi-tectures), and, of course, an enormous amount of work on multi-agent systems andautonomous computing
adapta-v
Trang 7In this landmark EU project, these slowly developing themes, drawn from a widediversity of fields, have been brought together and further developed with boththoughtful discussions on foundations and new research and developments in theengineering of several application areas.
One particularly important aspect of this book is the way in which it builds upour repertoire of engineering methods for self-awareness by purposely drawing itsconcepts for self-awareness from a diversity of fields and its examples from a diver-sity of applications Most importantly, these applications span across different levels
of computational systems, from agents and applications (interactive music systems
in Chapter 14) to middleware services (Chapter 11) to adaptive networks (Chapter10) and even hardware (Chapters 8, 9 and 12.)
Starting from insights into “self-awareness” achieved by other disciplines likepsychology and philosophy, the notions of “computational self-awareness” and
“self-expression” are systematically developed The majority of the book focuses
on computational systems that require some form of anticipation where the new gorithms and methods are needed to provide the appropriate anticipatory behaviour
al-In practice, these methods can include different forms of self-awareness (such asawareness of goals, of the current state and readiness of system resources, of one’splanning process and of the ordering of events), such that the system is not sim-ply reacting to events and changes, but can anticipate them The ideas and mecha-nisms outlined are applied to a number of interesting applications: Computationalfinance applications using heterogeneous computing clusters are investigated and in-clude self-adaptive algorithms that are supported by hardware; low-latency adaptivenetwork processing; run-time reconfigurable hardware acceleration; heterogeneouscomputing and hardware/software co-processing for algorithmic trading and recon-figurable hardware acceleration of self-optimisation of reconfigurable hardware de-signs Self-awareness in distributed smart camera networks is considered for bothsingle cameras at a node level and multiple camera systems within a network In-teresting bio-inspired methods are aimed at the network level, artificial pheromonesare employed to construct a local neighbourhood graph, allowing adaptation in thenetwork as topologies change A hypermusic demonstrator is considered as a thirdapplication This considers various methods and techniques to enable adaptability(self-expression) in musical output Three methods within this application are thefocus of this work, each providing different input information and overall levels
of information: SoloJam provides rather overarching rhythmic shaping; Funky Sole
Music provides what might be considered more specific, lower level, inputs such as
walking tempo, movement types and foot activity; PheroMusic considers more links
between musical soundscapes
Thus, the book provides a comprehensive introduction to self-aware computationproviding a broad range of new theoretical background and foundation before mov-ing on to consider details of architectures and techniques to help design self-awarecomputational systems, from nodes to networks Many of the problems that havebeen addressed in this book will continue to be timely for many years to come andcould well provide the focus of research strands within many research fields Partic-ular challenges remain with respect to performance, safety and security properties
Trang 8of such systems Although self-awareness is supposed to improve the performance
of computational systems in complex environments, there is still a lack of formalframeworks for rigorously arguing about the behaviour of such systems
The authors are all well known in this research area and the editors, Lewis,what is an excellent book
March 2016
vii
Platzner, Rinner, T rresen and Yao have done an excellent job in pulling togetherø
Trang 10This book is the first ever to focus on the emerging field of self-aware computingfrom an engineering perspective It first comprehensively introduces fundamentalsfor self-awareness and self-expression in computing systems, proposing the new
notion of computational self-awareness It then focuses on architectures and
tech-niques for designing self-aware computing systems at the node and network levels.Finally, the effectiveness of these techniques is demonstrated on a variety of casestudies While a number of books on related topics such as self-adaption and self-organisation, and even self-awareness concepts in computing, have already beenpublished, this book is unique as it provides a holistic view of self-aware comput-ing including its relationship with self-expression, and the process of engineeringsuch systems, i.e., a thorough understanding of how to model and build self-awarecomputing systems based on design patterns and techniques
This book targets graduate students and professionals in the fields of computerscience, computer engineering, and electrical engineering, but also practitioners andscientists from other fields interested in engineering systems with advanced proper-
ix
Self-aware computing is an emerging field of research It considers systems and plications able to proactively gather and maintain knowledge about aspects of them-selves, learning and reasoning on an ongoing basis, and finally expressing them-selves in dynamic ways, in order to meet their goals under changing conditions Theaspects they might be aware of include their own internal state, capabilities, goals,environment, behaviour and interactions The presence of gathered knowledge per-mits advanced intelligent decision making leading to self-expression: that is, effec-tive, autonomous and adaptive behaviour, based on self-awareness Self-awarenessand self-expression capabilities are key to designing and operating future computingsystems that will inherently and autonomously deal with high levels of dynamicsand uncertainty, heterogeneity, scalability, resource constraints and decentralisation.Concepts of self-awareness have been established in psychology, philosophy andcognitive science but are relatively new to computing In computing systems, ourconcepts of self-awareness and self-expression integrate and enhance a number ofrecent approaches dealing with systems with so-called self-* properties, e.g., self-adaptation, self-organisation and self-healing
Trang 11ap-ties relying on their ability to reason about themselves in a complex environment.The authors and editors of this book are active researchers in various aspects related
to self-aware computing systems They have a strong track record in successfullycollaborating on this topic, for example, through the European FET project “Engi-neering Proprioception in Computing Systems (EPiCS)” The extensive joint expe-rience of the contributors makes this edited book consistent and well integrated
The book reports some of the latest results in self-aware and self-expressive puting, and we hope it serves as a launchpad for further research discussions andnew ideas in the future
Trang 12• Chapters 6 and 7 were also supported by EPSRC Grants (Nos EP/I010297/1,
EP/K001523/1 and EP/J017515/1)
• Chapter 8 was also supported by the German Research Foundation (DFG)
within the Collaborative Research Centre “On-The-Fly Computing” (SFB 901)and the International Graduate School on Dynamic Intelligent Systems ofPaderborn University
• Chapter 9 was also supported in part by HiPEAC NoE, by the European Union
Seventh Framework Programme under grant agreement numbers 287804 and
318521, by the UK EPSRC, by the Maxeler University Programme, and byXilinx
• Chapter 12 was also supported in part by the China Scholarship Council, by
the European Union Seventh Framework Programme under grant agreementnumbers 287804 and 318521, by the UK EPSRC, by the Maxeler UniversityProgramme, and by Xilinx
• Chapter 13 was also supported by the research initiative Mobile Vision with
funding from the Austrian Institute of Technology and the Austrian FederalMinistry of Science, Research and Economy HRSMV programme BGBl II
no 292/2012
• Chapter 14 was also supported by the Research Council of Norway under grant
agreement number 240862/F20
• Peter Lewis would like to thank the participants of the Dagstuhl Seminar
“Model-Driven Algorithms and Architectures for Self-aware Computing tems”, Seminar Number 15041, for many insightful discussions on notions ofself-aware computing
Trang 141 Self-aware Computing: Introduction and Motivation . 1
Peter R Lewis, Marco Platzner, Bernhard Rinner, Jim T rresen, and Xin Yao 1.1 Self-aware Computing: A New Paradigm 1
1.2 Organisation of This Book 4
Part I Concepts and Fundamentals 2 Self-awareness and Self-expression: Inspiration from Psychology . 9
Peter R Lewis, Arjun Chandra, and Kyrre Glette 2.1 Introduction to Self-awareness 9
2.2 Key Concepts for Self-aware Systems 11
2.2.1 Public and Private Self-awareness 12
2.2.2 Levels of Self-awareness 13
2.2.3 Self-awareness in Collective Systems 15
2.2.4 Self-expression 15
2.3 Computational Self-awareness 16
2.3.1 Private and Public Computational Self-awareness 16
2.3.2 Levels of Computational Self-awareness 17
2.3.3 Collective and Emergent Computational Self-aware Systems 19
2.4 Summary 21
3 Relationships to Other Concepts 23
Kyrre Glette, Peter R Lewis, and Arjun Chandra 3.1 Introduction 23
3.2 Self-awareness in Artificial Intelligence 25
3.3 Self-awareness in Collective Systems 25
3.4 Formal Models for Self-awareness 26
3.5 Self-awareness in Engineering 27
3.6 Self-awareness in Pervasive Computing 29
xiii
ø
Trang 153.7 Self-awareness in Robotics 29
3.8 Self-awareness in Autonomic Systems 30
3.9 Self-awareness in Organic Computing 32
3.10 Self-expression in Computing 33
3.11 Summary 34
4 Reference Architecture for Self-aware and Self-expressive Computing Systems 37
Arjun Chandra, Peter R Lewis, Kyrre Glette, and Stephan C Stilkerich 4.1 Introduction 37
4.2 Architectures for Designing Self-adaptive Systems 38
4.3 Generic Reference Architecture for Designing Self-aware and Self-expressive Computing Systems 42
4.3.1 Reference Architecture for Agents 43
4.3.2 Architecting Collectives 47
4.4 Reference Architecture in Practice 49
Part II Patterns and Techniques 5 Design Patterns and Primitives: Introduction of Components and Patterns for SACS 53
Tao Chen, Funmilade Faniyi, and Rami Bahsoon 5.1 Introduction and Motivation 53
5.2 Patterns for Self-aware Architecture Style 54
5.2.1 Basic Notations 54
5.2.2 The Self-aware Patterns 56
5.3 Architectural Primitives and Attributes for Self-aware Systems 70
5.3.1 Taxonomy of Primitives 71
5.3.2 List of Architectural Primitives and Attributes 71
5.4 Discussion 73
5.4.1 Phase 1: Collect Requirements and Constraints 73
5.4.2 Phase 2: Propose Candidate Architecture 74
5.4.3 Phase 3: Select the Best Pattern(s) 74
5.4.4 Phase 4: Fit the Selected Pattern(s) 75
5.4.5 Step 5: Determine the Important Primitives and the Possible Alternatives for Non-functional Requirements 75
5.4.6 Step 6: Create Scenarios 76
5.4.7 Step 7: Score the Alternative of Primitives Against Each Non-functional Attribute Using Analytical or Simulation Models 76
5.4.8 Step 8: Find the Best Alternatives for the Final Architecture View 78
5.5 Conclusion 78
Trang 16Contents xv
6 Knowledge Representation and Modelling: Structures and
Trade-Offs 79
Leandro L Minku, Lukas Esterle, Georg Nebehay, and Renzhi Chen 6.1 Introduction 80
6.2 Adaptivity 80
6.2.1 Definition and Examples 81
6.2.2 Implications 83
6.3 Robustness 89
6.3.1 Definitions and Examples 89
6.3.2 Implications 92
6.4 Multi-objectivity 96
6.4.1 Definition and Examples 96
6.4.2 Implications 99
6.5 Decentralisation 104
6.5.1 Definitions and Examples 105
6.5.2 Implications 108
6.6 Summary 111
7 Common Techniques for Self-awareness and Self-expression 113
Shuo Wang, Georg Nebehay, Lukas Esterle, Kristian Nymoen, and Leandro L Minku 7.1 Introduction 114
7.2 Online Learning 114
7.2.1 Example Application 115
7.2.2 Benefits and Challenges at Levels of Self-awareness 119
7.2.3 Other Related Techniques 120
7.3 Nature-Inspired Learning 125
7.3.1 Example Application 125
7.3.2 Benefits and Challenges at Levels of Self-awareness 130
7.3.3 Other Related Techniques 132
7.4 Socially-Inspired Learning in Collective Systems 133
7.4.1 Example Application 134
7.4.2 Benefits and Challenges at Levels of Self-awareness 139
7.4.3 Other Related Techniques 141
Part III Nodes and Networks 8 Self-aware Compute Nodes 145
Andreas Agne, Markus Happe, Achim L¨osch, Christian Plessl, and Marco Platzner 8.1 Heterogeneous Multi-cores 146
8.2 Related Work on Self-aware Compute Nodes 147
8.3 Reference Architecture for Self-aware Compute Nodes 150
8.4 ReconOS 151
8.4.1 Architecture and Programming 152
8.4.2 Partial Reconfiguration 153
Trang 178.4.3 Sensors and Actuators 154
8.4.4 Availability of ReconOS 156
8.5 Case Study for a Self-aware Heterogeneous Multi-core 156
8.5.1 Self-expression Under Performance Constraints 158
8.5.2 Self-expression Under Conflicting Constraints 162
8.5.3 Comparison of Self-expression Strategies 163
8.6 Discussion and Conclusion 165
9 Self-adaptive Hardware Acceleration on a Heterogeneous Cluster 167
Xinyu Niu, Tim Todman, and Wayne Luk 9.1 Overview of Heterogeneous Computing 168
9.1.1 Heterogeneous Clusters: Performance 168
9.1.2 Heterogeneous Clusters: Verification 172
9.2 Architectures of Heterogeneous Clusters 173
9.2.1 Overview of Existing Heterogeneous Clusters 173
9.2.2 Software Layers in Heterogeneous Clusters 174
9.3 Self-aware and Self-adaptive Applications for Heterogeneous Clusters 177
9.3.1 Self-awareness in Heterogeneous Clusters 177
9.3.2 Runtime Scenarios 178
9.3.3 Monitoring 179
9.3.4 Adaptive Strategies in Heterogeneous Clusters 182
9.3.5 Computational Capacity 182
9.3.6 Workload Distribution 183
9.3.7 Communication Scheduling 183
9.4 Evaluation Results 184
9.4.1 Benchmark Applications 184
9.4.2 Self-adaptive Temperature Control 186
9.4.3 Self-adaptivity for Resource Availability Variations 186
9.5 Verification of Heterogeneous Clusters 188
9.5.1 Verification of Hardware-Software Codesign 189
9.5.2 Runtime Verification by In-Circuit Statistical Assertions 191 9.5.3 Results 192
9.6 Summary 192
10 Flexible Protocol Stacks 193
Markus Happe and Ariane Trammell-Keller 10.1 Introduction 194
10.2 Concepts and Methodologies 194
10.2.1 Self-aware/expressive Network Node Architecture 197
10.2.2 Protocol Stack Negotiation and Adaptations 198
10.2.3 Dynamic Hardware/Software Mapping 199
10.3 EmbedNet Execution Environment 200
10.4 Case Studies 202
10.4.1 Sensor Network 203
10.4.2 Smart Camera Network 204
Trang 18Contents xvii
10.5 Comparison to Related Research Projects 211
10.6 Conclusion 213
11 Middleware Support for Self-aware Computing Systems 215
Jennifer Simonjan, Bernhard Dieber, and Bernhard Rinner 11.1 Introduction to Middleware Systems 216
11.1.1 Middleware Basics 216
11.1.2 Application Example of a Distributed Self-aware Computing System 217
11.2 Middleware Requirements 219
11.3 Middleware Paradigms 221
11.3.1 Host-Centric Middleware 222
11.3.2 Content-Centric Middleware 225
11.3.3 Requirements Conformity of Middleware Paradigms 227
11.4 Publish/Subscribe 228
11.4.1 Publish/Subscribe Flavours 230
11.4.2 Decoupling 231
11.4.3 Publish/Subscribe for SACS 231
11.5 Ella: A Publish/Subscribe-Based Hybrid Middleware 232
11.5.1 Architecture 232
11.5.2 SACS-Specific Features in Ella 235
11.5.3 Ella in Practice 236
11.6 Conclusion 237
Part IV Applications and Case Studies 12 Self-aware Hardware Acceleration of Financial Applications on a Heterogeneous Cluster 241
Maciej Kurek, Tobias Becker, Ce Guo, Stewart Denholm, Andreea-Ingrid Funie, Mark Salmon, Tim Todman, and Wayne Luk 12.1 Introduction 242
12.1.1 Overview of Techniques and Tools 242
12.2 Rule-Based Algorithmic Trading 243
12.3 Model-Based Algorithmic Trading 245
12.4 Market Data Feed Arbitration 245
12.5 In Detail: ARDEGO — Machine Learning-Based Optimisation of Reconfigurable Systems 246
12.5.1 Background 247
12.5.2 ARDEGO Approach 251
12.5.3 Acceleration of ARDEGO 255
12.5.4 Evaluation 256
12.6 Conclusion 260
Trang 1913 Self-aware Object Tracking in Multi-Camera Networks 261
Lukas Esterle, Jennifer Simonjan, Georg Nebehay, Roman Pflugfelder, Gustavo Fern´andez Dom´ınguez, and Bernhard Rinner 13.1 Smart Camera Networks 262
13.2 Object Tracking 263
13.3 Multi-camera Tracking Coordination 264
13.4 Self-aware and Self-expressive Building Blocks 265
13.4.1 Object Tracking 266
13.4.2 Object Handover 267
13.4.3 Topology Learning 269
13.4.4 Strategy Selection 269
13.4.5 Resource Monitoring 270
13.4.6 Constraints and Objectives 270
13.5 Camera Network Case Study 271
13.5.1 Camera Network Setup 271
13.5.2 Tracking Results 272
13.5.3 Topology Learning 274
13.5.4 Communication and Utility Trade-off 274
13.6 Conclusion and Outlook 275
14 Self-awareness in Active Music Systems 279
Kristian Nymoen, Arjun Chandra, and Jim T rresen 14.1 Introduction 279
14.2 Decentralised Circulation of Musical Control 281
14.2.1 SoloJam Algorithmic Details 282
14.2.2 SoloJam Implementation 284
14.3 Adaptive Mapping in Active Music Systems 286
14.3.1 Gesture Recognition in Active Music Systems 288
14.3.2 Pheromone-Inspired Gait Recognition 288
14.3.3 Music Synthesis in Funky Sole Music 290
14.3.4 Adaptive Mapping 290
14.4 Pheromone Trails in a Musical Space 292
14.4.1 Flexible Musical Scenes 292
14.4.2 Pheromone Mechanism 294
14.5 Conclusion 296
15 Conclusions and Outlook 297
Peter R Lewis, Marco Platzner, Bernhard Rinner, Jim T rresen, and Xin Yao 15.1 Computational Self-awareness 298
15.2 Challenges and Research Questions 299
References 301
Index 323
ø
ø
Trang 20Alpen-Adria-Universit¨at Klagenfurt, Austria e-mail:lukas.esterle@aau.at
Gustavo Fern´andez Dom´ınguez
Austrian Institute of Technology, Austria e-mail:gustavo.fernandez@ait.ac.at
Trang 22List of Contributors xxi
University of Oslo, Norway e-mail:jimtoer@ifi.uio.no
Trang 24ACO Ant Colony Optimisation
AES Advanced Encryption Standard
ALA Ant Learning Algorithm
API Application Programming Interface
BSD Berkeley Software Distribution
CDC Concept Drift Committee
CDT Correct Detected Track
CMT Consensus-Based Matching and Tracking
CPU Central Processing Unit
CUDA Compute Unified Device Architecture
CV Computer Vision
DDD Diversity for Dealing with Drifts
DDM Drift Detection Method
DPS Dynamic Protocol Stack
DWM Dynamic Weight Majority
EA Evolutionary Algorithm
EDDM Early Drift Detection Method
EGO Efficient Global Optimisation
FAT False Alarm Track
FB Functional Block
FF Flip-Flop
FPGA Field-Programmable Gate Array
FPS Frames per Second
FMC FPGA Mezzanine Card
FOV Field of View
Trang 25HLS High Level Synthesis
HMM Hidden Markov Models
HPC High Performance Computing
ICAP Internal Configuration Access Port
IDP Information Dispatch Point
ILP Integer Linear Programming
IP Internet Protocol
IPC Inter-process Communication
LUT Look-up Table
MAC Media Access Protocol
MLO Machine Learning Optimiser
MOEA/D Multi-objective Evolutionary Algorithm Based on DecompositionMOP Multi-objective Optimisation Problem
MPI Message Passing Interface
MTBF Mean Time Between Failures
NoC Network-on-Chip
OSC Open Sound Control
OT Object Tracking
PE Processing Element
RAP Redundancy Allocation Problem
RAM Random Access Memory
RTM Reverse Time Migration
S2H Software-to-Hardware
SA Self-aware
SACS Self-aware Computing Systems
SDRAM Synchronous Dynamic Random Access Memory
SE Self-expression
SIMD Single Instruction, Multiple Data
SMT Satisfiability Modulo Theories
SVM Support Vector Machine
SoC System-on-Chip
SOP Single-Objective Optimisation Problem
SSE Streaming SIMD Extensions
STEPD Statistical Test of Equal Proportions
TCP Transmission Control Protocol
TDF Track Detection Failure
TPOT-RL Team-Partitioned Opaque-Transition Reinforcement LearningTodi Two Online Classifiers for Learning and Detecting Concept Drift
TLD Tracking-Learning-Detection
UDP User Datagram Protocol
VHDL Very High Speed Integrated Circuit Hardware Description Language
Trang 26This glossary lists important terms used in this book, in particular in Part I cepts and Fundamentals”, with accompanying descriptions or definitions The glos-sary is organised into four sections: concepts of self-awareness and self-expression,engineering self-aware systems, related approaches, and general terms The terms
“Con-in each of the sections are listed alphabetically
Concepts of Self-awareness and Self-expression
self-awareness Self-awareness is a broad concept which describes the property of asystem (typically a human) which has knowledge of “itself”, based on its own senses(perceptual) and internal models (conceptual) This knowledge may take differentforms (cf levels of self-awareness), and be based on perceptions of both internaland external phenomena (cf public vs private self-awareness) It can be a property
of single systems (e.g., agents) and collective systems
collective self-awareness Collective self-awareness refers to the self-awarenessproperty of a collective system, i.e., as opposed to a single agent Levels of, andpublic/private self-awareness apply also at this abstraction This means that a self-aware system is not required to have a central “knowledge” component (though itmay have, if desired)
computational self-awareness Computational self-awareness is a notion we havedeveloped to refer to a computational interpretation of self-awareness Since much
of the literature on self-awareness does not readily make sense to engineers or plies directly to technical systems, aspects of computational self-awareness are de-signed to describe self-awareness properties of computational systems, inspired byself-awareness in humans
ap-emergent self-awareness This is a special case of collective self-awareness, whenthe collective self-awareness properties are present, but it is not obvious how thiscomes about by simply examining the behaviour of individual nodes within a col-lective
xxv
Trang 27level(s) of self-awareness A very common theme in self-awareness theory is thedistinction between several levels of self-awareness, to describe different aspects
or capabilities which comprise a system’s complex self-awareness There are manyexamples of “sets of levels” to be found in the literature In developing our notion
of computational self-awareness, we have based a set of levels of computationalself-awareness on the set of levels (for humans) proposed by Ulric Neisser Notethat our levels are not hierarchical, do not build on each other, nor are they in anyparticular order, save that the ecological self/stimulus awareness is the most basic,and the conceptual self/meta-self-awareness is typically the most complex
meta-self-awareness Meta-self-awareness is one of the levels of computationalself-awareness we propose, indeed the highest one in our framework It refers tothe capability of a system to be aware of its own self-awareness This can be veryuseful, since it means a system has knowledge, obtained at run time, about its ownself-awareness processes, including, for example, how effective its learning is atpresent, or how much resource is being spent to maintain its knowledge Meta-self-awareness is closely related to, and permits, meta-reasoning It is a concept inspireddirectly from human psychology
private self-awareness Private self-awareness refers to a system’s ability to obtainknowledge based on phenomena that are internal to itself A system needs internalsensors to achieve this Again, this is a notion which exists in human self-awarenesstheory, and also features in computational self-awareness
public self-awareness Public self-awareness refers to a system’s ability to obtainknowledge based on phenomena external to itself Such knowledge depends on howthe system itself senses/observes/measures aspects of the environment it is situated
in, and includes knowledge of its situation and context, as well as (potential) pact and role within its environment This is a notion which exists in human self-awareness theory, and also features in computational self-awareness
im-scope of self-awareness The im-scope of self-awareness refers to the domain of nomena able to be sensed and modelled by the self in question For a system which
phe-is only privately self-aware, the scope may be the same as the span (i.e., it has noperception of its environment) For a system which has some private and some pub-lic self-awareness, the scope would be larger than the span, and include externalsocial or physical aspects of the environment The term scope can be useful to avoidhaving to use the word “level” to mean multiple things simultaneously in a passage
of text
self-aware system We do not formally define this in the book, however we ally consider a self-aware system to be one which (at least) obtains and maintainsknowledge relating to itself (including its perspective of its environment), withoutexternal control
gener-self-awareness capability When a particular level of gener-self-awareness is present in
a system, we refer to this as the system having that particular self-awareness bility For example, a node may have a time-awareness capability, indicating that
Trang 28capa-Glossary xxvii
it implements the time-awareness level Levels may be realised in different wayssimultaneously in the same system, meaning that, for example, a system may haveseveral time-awareness capabilities
self-explanation Another form of self-expression when based on self-awareness,self-explanation is the ability of a system to explain/justify its behaviour to an entity
on the outside (such as a user or another system)
expression Self-expression is, in the general sense, behaviour based on awareness It may include a wide range of different actions, enacted through a sys-tem’s actuators, including self-adaptation, self-explanation, or just normal systembehaviour Self-expression can also be considered as a property of a collective, since
self-a collective’s behself-aviour cself-an self-also be bself-ased on collective self-self-awself-areness Exself-amples
of this might include the adaptive behaviour of a flock of birds in response to anexternal (to the flock) stimulus
self-expression capability As with self-awareness capabilities, self-expression pabilities refer to the presence of an implementation of self-expression in a system.For example, a system which adapts its parameters in response to its goal-awareness,would have a self-expression capability Again, multiple self-expression capabilitiesmay be present simultaneously
ca-self-knowledge Self-knowledge is a general term for knowledge (usually held in
a learnt model) concerning the system itself, which typically is produced as part
of a self-awareness process Note that this can include objective self-knowledge(i.e., about the system as an object in the world, how it interacts with others, howits internal state changes, etc.) and also subjective self-knowledge (i.e., about itsexperiences, sensor data, changing context, etc.)
self-optimisation Self-optimisation is a form of self-expression; self-optimisation
is the ability of a system to optimise itself by improving metrics such as performance
or power consumption
span of self-awareness We use this term to refer to the domain of the subject ofthe self-awareness, i.e., it is the answer to the question: who is the self here? Forexample, if a single agent is self-aware, then the span is the agent If we are con-sidering the collective self-awareness of a network of smart sensors, then the spanwould be the network The term span can be useful to avoid having to use the word
“level” to mean multiple things simultaneously in a passage of text
Engineering Self-aware Systems
(architectural) pattern We produced eight architectural patterns, which are rived from the reference architecture and describe how various capabilities (such
de-as levels of self-awareness, etc.) can be included or excluded de-as appropriate to theapplication need
Trang 29methodology for engineering self-aware systems We developed a methodologyfor engineering self-aware systems, based on the reference architecture and the de-rived architectural patterns.
primitive A primitive is a particular block in the reference architecture, ing, for example, a level of self-awareness, self-expression and a sensor They areinstantiated for particular applications
represent-reference architecture We developed a represent-reference architecture which captures thecore aspects of computational self-awareness The aim is to provide a common, prin-cipled basis on which researchers and practitioners can structure their work We haveargued that the psychological foundations, while not strictly necessary, can provide
a means of channelling a wide range of ideas, which would perhaps otherwise nothave occurred to engineers, acting to inspire the design of future computing sys-tems The architecture can also be used as a template for identifying common ways
of implementing self-awareness capabilities Different implementations of the samecapability can thereby be compared and evaluated Further, we have derived a set ofarchitectural patterns from the reference architecture
(self-aware) node We use the term self-aware node to refer to various types of tem that are self-aware, e.g., an agent, a robot and a camera Agent is an alternativeterm, but node can be used when not wanting to be specific about a particular sys-tem being an agent We also claim that self-aware collectives (see next entry) can beviewed as self-aware nodes, at a higher level of abstraction A node may or may notcorrespond to a physical system—this is not a requirement, but it may often makesense to make it correspond
sys-tactic/algorithm/technique A tactic is a particular instantiation of a primitive inthe reference architecture, typically referred to as a particular algorithm, technique,etc These are application specific Multiple tactics may be suitable for a particularprimitive, and some tactics may implement multiple primitives simultaneously
Related Approaches
autonomic (computing) Autonomic computing is a vision originally pioneered
by IBM, of engineered systems which manage themselves This self-management
is stated to include: configuration, optimisation, healing and protection The aim is to reduce the need for human involvement in the management
self-of complex computing systems Some autonomic computing literature mentions theneed for self-awareness as a characteristic to support self-management, though theliterature on autonomic computing does not significantly expand on this (Not to beconfused with autonomous.)
autonomous (system) Autonomy is a broad notion with much disagreement rounding it However, in general, an autonomous system is one which acts withoutany external direction Examples include robots, vehicles and software agents Inmany cases, this ability to make decisions is based on a method of decision makingpre-programmed into the system, in other cases it is learnt online at run time The
Trang 30sur-Glossary xxxix
types of systems we are concerned with in this book are ones which would typically
be considered to be autonomous to a greater or lesser extent (Not to be confusedwith autonomic.)
metacognition/metareasoning Metareasoning is reasoning about reasoning, andhas been the topic of a significant amount of research primarily in the US, where
it has been primarily led by DARPA Metareasoning relies on meta-self-awareness,and again the metareasoning community has discussed self-awareness as being im-portant, but not expanded on the notion significantly
organic computing This is a vision from a long-running (primarily) German search project to create “life-like” engineered systems, in which self-organisingemergent behaviour is controlled (by an observer/controller component), to ensuredesirability in the self-organisation The Organic Computing literature also men-tioned self-awareness as beneficial, but again does not expand on this significantly
be used when there is a need to talk generally of these types of systems, withoutrestricting the discussion to a specific one
learnt model A learnt model is a model which has been induced through a process
of (typically online) learning, based on data from sensors and other existing models.Learnt models hold the conceptual knowledge a self-aware system has concerningitself, its interactions, history, expectations, goals, etc
model We use the term model in a very general way, to refer to a conceptual resentation of some knowledge, typically obtained through sensors A model couldsimply be a direct representation of some data, or could be abstractions of that data,
rep-or further data synthesised from sensrep-ory input
online learning Online learning is the process of learning a model from data on
an ongoing basis Typically, not all data is available in advance (e.g., it arrives in
a streaming fashion from sensors), and the concept being learnt may change over
self-adaptive system A system which adapts (typically its behaviour) in response
to external or internal changes, but without external control We have argued that
time (i.e., concept drift) In online learning, models are often used (e.g., throughself-expression in this case) before learning “completes”, if indeed it ever does.Hence most online learning algorithms also need to be anytime algorithms, implyingthat models are used and improved continuously as time goes by
Trang 31awareness is an enabling property for effective adaptation When adaptation behaviour is based on self-awareness, it is a form of self-expression.self-organising system A system which changes its organisation (e.g., its structure,architecture, topology), without external control.
Trang 32self-Chapter 1
Self-aware Computing: Introduction and
Motivation
1.1 Self-aware Computing: A New Paradigm
Designing and operating computing and communication systems are becoming creasingly challenging tasks, due to a multitude of reasons First, compute nodesare evolving towards parallel and heterogeneous architectures to realise perfor-mance gains while minimising their power consumption Progress in micro(nano)-electronics allows us to integrate more and more functionality on a single computenode, but at the same time requires us to deal with increasing numbers of faultyand unreliable components Second, distributed systems are growing in the num-bers and heterogeneity of nodes and must be able to cope with an increasing level ofdynamics The network topology and the collective resources of a distributed sys-tem can vary strongly during runtime since nodes may leave and enter the networkdynamically The position, functionality and available resources of each node mayalso change dynamically Third, future challenging application domains have quitedivergent requirements with respect to functionality and flexibility, performance, re-source usage and costs, reliability and safety, and security Fuelled by technologicalprogress, applications with exciting levels of user interaction will be possible, andthese dynamic socio-technical systems bring with them numerous additional run-time trade-offs to consider Fourth, the size and complexity of decentralised com-
Alpen-Adria-Universit¨at Klagenfurt, Austria, e-mail: bernhard.rinner@aau.at
University of Oslo, Norway, e-mail: jimtoer@ifi.uio.no
Xin Yao
University of Birmingham, UK, e-mail: x.yao@cs.bham.ac.uk
1
© Springer International Publishing Switzerland 2016
P.R Lewis et al (eds.), Self-aware Computing Systems, Natural Computing Series,
DOI 10.1007/978-3-319-39675-0_1
Peter R Lewis, Marco Platzner, Bernhard Rinner, Jim T rresen, and Xin Yaò
Jim T rresen ø
Trang 33puting systems have grown at an increasingly fast rate, posing new challenges interms of scalability and complexity Based on our experience, we believe that currentdesign and operation principles and methods will neither be able to scale with fu-ture systems, nor efficiently handle the variety and changing nature of requirementsand optimisation goals Novel design and operation principles and methods, such asthose incorporating self-awareness (SA) and self-expression (SE), are needed.Self-aware computing describes a new paradigm for systems and applicationsthat proactively gather information; maintain knowledge about their own internalstates and environments; and then use this knowledge to reason about behaviours.This paradigm is well suited for advanced intelligent decision making in dynamicand uncertain environments, which can in turn support effective and explainable au-tonomy and self-adaptation Self-expression describes behaviours that are based onthe knowledge acquired through system self-awareness, such as self-adaptation andself-explanation A self-expressive system can adapt to its environment including itsusers, and thus limits the need for users to adapt to fixed system behaviours [390].Self-awareness is not a new concept and has been studied for a long time in thefields of psychology and cognitive science [275] However, a clear understandingand interpretation of self-awareness in computer science and engineering is lacking.There has been no universally agreed and accepted definition of self-aware comput-ing in spite of frequent use of the word “self-aware” in different contexts Althoughthere are systems that are declared to be self-aware in one sense or another, little hasbeen said about engineering methodologies that can help to build such systems Ithas not previously been clear what properties a self-aware system could and shouldhave, and what capabilities such a system might have.
This book attempts to bridge the gaps in the literature related to self-aware puting, in the spirit of recent work to translate concepts of self-awareness frompsychology to computing [236] It focuses on key ideas from self-awareness the-
com-ory, leading to working definitions and pragmatic principles of computational
self-awareness that can be used in engineering self-aware systems and understanding
their behaviours While it surveys a range of views concerning self-awareness, itdoes not attempt to engage in more philosophical debates on the ability of machines
to achieve so-called “true” self-awareness, or what that might mean As an example
of the pragmatic approach taken in this book, building on notions from ogy, different levels of self-awareness as they apply to computing systems are de-scribed, examples are then used to illustrate what capabilities a system could havewith which level(s) of self-awareness, how these might be implemented, and whatbenefits and costs are associated with such functionality An engineering methodol-ogy is then introduced to facilitate the design of self-aware systems with differentrequired capabilities
psychol-This book builds on and extends earlier work in the related fields including nomic computing [105] and organic computing [277] and architectures like MAPE-
auto-K and auto-Kramer and Magee’s three-layered architecture [225] It takes an engineeringapproach to the design of self-aware computing systems, that includes consideringdifferent levels of self-awareness and the introduction of a reference architecturefor designing self-aware and self-expressive computing systems As a more con-
Trang 341 Self-aware Computing: Introduction and Motivation 3
crete guide to engineering self-aware and self-expressive systems, this book givesdetailed architectural patterns and primitives for systems with different levels ofself-awareness, to facilitate the design of such systems
Many techniques and algorithms are needed to support and implement awareness and self-expression at different levels For example, proactively acquiringknowledge about oneself (e.g., as a compute node in a large decentralised system)and then building a model(s) of one’s internal state and environment based on suchknowledge requires online learning, i.e., learning while the system is running On-line learning algorithms are one of the key ingredients employed in self-aware andself-expressive systems These algorithms try to make the most appropriate (trade-off) decision among several conflicting goals in a dynamic and uncertain environ-ment, including what information to acquire, which level of abstraction to use tocapture and model such information, and what resources to use for such informa-tion acquiring and modelling so as to maximise the expected performance gain andminimise the resource usage, etc Such online learning must be able to deal withconcept drifts because both the computing system and the environment it is operat-ing in are changing and have uncertainty The system needs to learn new concepts
self-as they appear and forget old concepts self-as they become obsolete In this book wewill describe how some of the existing online learning algorithms could be used oradapted for self-aware and self-expressive systems Examples will be given to il-lustrate how online learning algorithms could be implemented to support self-awareand self-expressive systems with desired capabilities
Importantly, we do not propose a preferred online learning paradigm to supportself-aware and self-expressive systems There are many techniques and algorithmsthat can be used specifically for either self-awareness or self-expression In fact, one
of the key observations from our own studies revealed that using different learningtechniques or strategies at different compute nodes in a large decentralised systemcan often lead to enhanced performance or efficiency gain compared to that achieved
by a system where all nodes use the same learning technique/strategy This bookpresents one such example to illustrate how heterogeneous learning strategies forself-expression in a smart camera network could help to achieve better system per-formance
Performance has often been a primary concern of many studies For example,fast learning to recognise a face from a video accurately is always of great interest.However, there might be some additional factors that a system should consider in thereal world For example, fast and accurate learning might imply heavy consumption
of computing resources, which might not be available or necessary It might alsolead to higher energy consumption due to heavy computing, which is undesirablefor any battery-driven autonomous system As a result, fast and accurate learningmight not be the most appropriate choice for a resource-constrained system/node.However, the availability of resources is not fixed in the real world It is changing Aself-aware system needs to learn such changing conditions, learn the changing im-portance of different goals (performance vs energy consumption), and learn the besttrade-off among conflicting goals at run-time This is one of several key issues thatwill be discussed in this book Other issues that will be discussed and often consid-
Trang 35ered in self-aware and self-expressive systems include robustness, decentralisation,and multi-objectivity of the systems.
1.2 Organisation of This Book
The book consists of four parts Part I motivates the concepts of self-awareness andself-expression for engineering computing systems by looking into other disciplinesand related concepts It introduces a reference architecture for describing and en-gineering computational self-awareness and self-expression in computing systems.The architecture provides a common language which paves a way for identifying ar-chitectural patterns influencing the engineering of computational self-awareness andself-expression capabilities across a range of applications Chapter 2 translates con-cepts from psychology to the domain of computing, introducing key ideas in self-aware computing Chapter 3 relates our concepts of computational self-awarenessand self-expression to other efforts in computer science and engineering under theself-awareness label Depending on the fields, the term self-awareness may havedifferent meanings Chapter 4 concludes the first part by presenting our referencearchitecture for describing self-aware and self-expressive computing systems.Part II outlines some common architectural primitives and guidelines for engi-neering self-aware systems using design patterns and different knowledge represen-tation techniques, respectively Chapter 5 provides design patterns and primitives
on how to design self-aware and self-expressive computing systems in a principledway It discusses how the proposed patterns and primitives can be used in real soft-ware system projects Chapter 6 explains issues which may be present in self-awareand self-expressive systems such as adaptivity, robustness, multi-objectivity and de-centralization, and discusses their implications in terms of knowledge representationand modelling choices Finally, Chapter 7 concludes the second part by introducingcommon techniques that could be used in self-aware and self-expressive systems,including classical online learning, nature-inspired learning and socially-inspiredlearning in collective systems
Part III presents the design of nodes and networks which provide self-aware andself-expressive capabilities Many modern compute nodes are heterogeneous multi-cores that integrate several CPU cores with fixed function or reconfigurable hard-ware cores In Chapter 8 we present a node architecture, programming model andexecution environment for heterogeneous multi-cores, and show how the compo-nents of the reference architecture can be implemented on top of the operating sys-tem ReconOS Chapter 9 describes how to build a heterogeneous cluster that canadapt to application requirements Chapter 10 presents flexible protocol stacks as
a promising alternative to today’s static Internet architecture Self-aware and expressive network nodes cooperate to select the protocol stacks that fulfil all com-munication requirements at the minimal cost at run-time Finally, Chapter 11 com-pares different middleware paradigms and their suitability to support self-awareness
Trang 36self-1 Self-aware Computing: Introduction and Motivation 5
in distributed applications and briefly describes a dedicated middleware tation
implemen-Part IV demonstrates how self-awareness and self-expression are useful in thethree widely different application domains of hardware acceleration of financialcomputation, object tracking in multi-camera networks, and active music sys-tems, respectively Chapter 12 demonstrates how complex financial models can bespeeded up using reconfigurable hardware combined with optimisation algorithms.Object tracking in multi-camera networks is the topic of Chapter 13, where au-tonomous monitoring of each camera in a network is combined with learning mech-anisms to adapt its behaviour to changing conditions Finally, Chapter 14 illustrateshow persons without musical skills can influence music in interactive music systemsusing nature and socially-inspired methods
The book is a result of extensive teamwork through the EU-funded researchproject “Engineering Proprioception in Computing Systems (EPiCS)” Eight re-search groups in five different countries collaborated to develop concepts and foun-dations for self-awareness and self-expression in computing systems and tested anddemonstrated their usefulness in highly different domains While the book includessome of the research results, it also, and more importantly, serves the purpose ofstimulating further research into the field of self-aware and self-expressive comput-ing systems
Trang 37Concepts and Fundamentals
Trang 38Part I motivates the concepts of self-awareness and self-expression for ing computing systems by looking into other disciplines and related concepts Itintroduces a reference architecture for describing and engineering computationalself-awareness and self-expression in computing systems The architecture provides
engineer-a common lengineer-anguengineer-age which pengineer-aves engineer-a wengineer-ay for identifying engineer-architecturengineer-al pengineer-atterns encing the engineering of computational self-awareness and self-expression capa-bilities across a range of applications Chapter 2 translates concepts from psychol-ogy to the domain of computing, introducing key ideas in self-aware computing.Chapter 3 relates our concepts of computational self-awareness and self-expression
influ-to other efforts in computer science and engineering under the self-awareness bel Depending on the fields, the term self-awareness may have different meanings.Chapter 4 concludes the first part by presenting our reference architecture for de-scribing self-aware and self-expressive computing systems
Trang 39la-Self-awareness and Self-expression: Inspiration from Psychology
Peter R Lewis, Arjun Chandra, and Kyrre Glette
Abstract Self-awareness concepts from psychology are inspiring new approachesfor engineering computing systems which operate in complex dynamic environ-ments There has been a broad and long-standing interest in self-awareness for com-puting, but only recently has a systematic understanding of self-awareness and how
it can be used and evaluated been developed In this chapter, we take inspirationfrom human self-awareness to develop new notions of computational self-awarenessand self-expression We translate concepts from psychology to the domain of com-puting, introducing key ideas in self-aware computing In doing so, this chaptertherefore paves the way for subsequent work in this book
2.1 Introduction to Self-awareness
The Oxford English Dictionary defines awareness as “knowledge or perception of
a situation or fact.” Informally, we might typically consider that humans build upknowledge, or become aware of things, by perceiving the world around them Weobserve interactions, listen to other people, watch television, read books, and, par-ticularly in early life, learn through play When considering awareness in humans,
it is common to consider that all the knowledge we possess, all of our awareness,
is acquired through perception This idea was first postulated by Hume [187], whoargued that all human knowledge is induced from experience What then does it
mean for a human to be self-aware? For Hume, the “self” is not a defined physical
entity, but instead describes the bundle of experiences or perceptions unique to an
© Springer International Publishing Switzerland 2016
P.R Lewis et al (eds.), Self-aware Computing Systems, Natural Computing Series,
DOI 10.1007/978-3-319-39675-0_2
Trang 4010 Peter R Lewis, Arjun Chandra, and Kyrre Glette
individual A Humean form of self-awareness might then be considered to consist
of an individual’s knowledge of its experiences Kant [210] criticised Hume’s view,extending the scope of the self significantly, arguing that there is some entity which
is the subject of these experiences, and is common through space and time ThisKantian self synthesises information from experiences with concepts held in themind and with the imagination Kant further argued that as an individual performsactions within the world, since its actions are based on its synthesised knowledge,they represent its self, giving rise to the self also as an object This object in turn issomething which can be perceived and experienced
Though there is a long history of analysis of the nature of the self in philosophy,more recently, psychology has made a more pragmatic attempt to develop an under-standing of the varieties of knowledge individuals possess concerning themselves.The notion of self-awareness first appears in the literature around the turn of thetwentieth century [25, 382], perhaps most importantly with James [197] making thedistinction between two forms of self based on the differences between the Humean
and Kantian views described above First, the implicit self, often referred to as the
self-as-subject, or the “I”, is the self which is the subject of experiences These periences are unique to the individual, and they are from the individual’s own point
ex-of view, determined by factors such as their sensing apparatus, their situation within
the world, and other factors associated with their own state Second, the explicit self,
or self-as-object, can be discerned Here the self is an object of knowledge It is athing which can be recognised, modelled and reasoned about, including in relation
to other objects in the world An individual’s awareness of its explicit self is oftenconsidered the more advanced form of self-awareness in this distinction, building
on implicit self-awareness Indeed, implicit self-awareness emerges much earlier inthe lives of human infants than its explicit counterpart does [231]
One commonly considered form of self-awareness is that as measured by the
so-called mirror test [140] A subject being evaluated is presented with a mirror,
to which it is then allowed to get accustomed The subject is then distracted and,without its knowledge, a visible change is made to its appearance This is usuallydone by marking its face, e.g., putting a spot on its cheek or forehead The subject
is then presented with the mirror again Any behaviour directed towards this marker
by the subject implies self-recognition, which is seen as being enabled by a mentalrepresentation of oneself (also known as a secondary representation) As Asendorpf
et al [18] put it:
“[secondary representation] is not a perception of oneself but rather a constructed mental model of oneself that can be manipulated in fantasy Therefore, the ability to recognise oneself in a mirror that requires linking a mirror image (a primary representation) with one’s self marks the capacity for secondary representation.”
Explicit self-awareness requires a subject to possess the capacity to constructsuch a secondary conceptual representation of itself What then does the mirrortest tell us about self-awareness? Humans, primates and some other animals have
“passed” the mirror test [140, 18], however, Haikonen [155] showed that very littlesophistication in computing machinery can enable a computational system with vi-sual sensors to also pass Haikonen therefore goes on to suggest that the ability or