  As IoT systems are given more responsibility and autonomy, they offer greater
benefits, but also carry greater risks. We believe this trend invigorates an
old challenge of software engineering: how to develop high-risk
software-intensive systems safely and securely under market pressures? As a
first step, we conducted a systematic analysis of recent IoT failures to
identify engineering challenges. We collected and analyzed 22 news reports and
studied the sources, impacts, and repair strategies of failures in IoT systems.
We observed failure trends both within and across application domains. We also
observed that failure themes have persisted over time. To alleviate these
trends, we outline a research agenda toward a Failure-Aware Software
Development Life Cycle for IoT development. We propose an encyclopedia of
failures and an empirical basis for system postmortems, complemented by
appropriate automated tools.
