Title: Abstracting Event-Driven Systems with Lifestate Rules,
Abstract: We present lifestate rules--an approach for abstracting event-driven object
protocols. Developing applications against event-driven software frameworks is
notoriously difficult. One reason why is that to create functioning
applications, developers must know about and understand the complex protocols
that abstract the internal behavior of the framework. Such protocols intertwine
the proper registering of callbacks to receive control from the framework with
appropriate application programming interface (API) calls to delegate back to
it. Lifestate rules unify lifecycle and typestate constraints in one common
specification language. Our primary contribution is a model of event-driven
systems from which lifestate rules can be derived. We then apply specification
mining techniques to learn lifestate specifications for Android framework
types. In the end, our implementation is able to find several rules that
characterize actual behavior of the Android framework.