Abstract |
When properly applied, modern software engineering techniques allow developers to develop many kinds of software systems in a predictable and cost-effective manner. Increasingly, however, engineers are developing systems which exhibit characteristics that are not well supported by current approaches, e.g., systems with constantly changing requirements, operating on massive numbers of mobile devices, backed by a heterogeneous and constantly changing set of cloud-based services provided by independent vendors. We call these kinds of systems ensembles. Apart from the technological challenges of massive scale and heterogeneity, the increasingly personal nature of computing devices and the amounts of intimate sensor and behavioral data they can collect about their users presents previously unknown problems for developers: What can an ensemble infer about its user’s physiological and social situation; how should it react to this information; and how can we ensure that ensembles don’t fail in ways not foreseen by developers? This talk presents several results and approaches that are promising candidates for addressing some of these aspects: engineering techniques for autonomic ensembles, physiological computing, and scalable and run-time formal methods that allow local reasoning about global system properties. |