Project Details
Description
Event-based programming is used to construct software systems with
billions of users, including mobile apps, Web clients and servers, and
Internet-of-Things devices. Despite their popularity, event-based
systems are poorly understood and prone to errors because the
underlying platform, not the program, generates and invokes
events. These difficulties have wide-ranging consequences such as
losing users' work in mobile apps, silent errors or downtime in Web
services, and unexpected Internet-of-Things device behavior. This
project is (1) making event-based systems easier to analyze, (2)
constructing an approach for extracting order between certain key events
before the program runs, to prevent ordering errors, and (3) allowing
rigorous reasoning about event-induced volatility, to prevent errors
such as state loss and state inconsistency. The project is
introducing students to new approaches to event-based system
reliability, as well as providing researchers and software developers
with models and infrastructure for analyzing such systems. End-users
are expected to benefit from more reliable event-based systems, whether mobile,
browser/server, or Internet-of-Things. The project is increasing the
participation of underrepresented groups in computing via outreach,
mentoring, and research involvement.
Event-based systems continue to surge in popularity. The relative
novelty of this paradigm, coupled with essential programming
difficulties (such as non-deterministic event processing, asynchronous
state manipulation, and state destruction) complicate the construction
of robust, reliable applications. Furthermore, there is a shortage of
program-analysis approaches and tools for this space. To address these
issues, this project is introducing program-analysis foundations and
practical tools such as event sensitivity, making event
creation/initiation a first-class object of program analysis, and
allowing precise analysis via path-based event ordering. The project
is intended to result in: static analyses that incorporate the aforementioned
advances, enabling analysis of event-based applications; as well as
automatically-constructed platform models (which address
deficiencies in current, manual/ad-hoc platform models, and are intended to be
usable in other contexts, e.g., to facilitate program
understanding). The project is targeting the Android mobile platform,
JavaScript client and server programs, as well as Internet-of-Things
applications. Using these tools, developers and researchers are
able to gain effective insights into event-based applications
facilitating the construction of reliable applications as well as
exposing incorrect behavior in existing programs; this, in turn is
benefiting event-based ecosystems' users.
This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.
Status | Active |
---|---|
Effective start/end date | 9/24/18 → 9/30/25 |
Funding
- National Science Foundation: $600,000.00