
NSF Org: |
CCF Division of Computing and Communication Foundations |
Recipient: |
|
Initial Amendment Date: | July 18, 2014 |
Latest Amendment Date: | June 25, 2015 |
Award Number: | 1438982 |
Award Instrument: | Standard Grant |
Program Manager: |
Anindya Banerjee
abanerje@nsf.gov (703)292-7885 CCF Division of Computing and Communication Foundations CSE Directorate for Computer and Information Science and Engineering |
Start Date: | September 1, 2014 |
End Date: | August 31, 2018 (Estimated) |
Total Intended Award Amount: | $666,665.00 |
Total Awarded Amount to Date: | $682,665.00 |
Funds Obligated to Date: |
FY 2015 = $16,000.00 |
History of Investigator: |
|
Recipient Sponsored Research Office: |
506 S WRIGHT ST URBANA IL US 61801-3620 (217)333-2187 |
Sponsor Congressional District: |
|
Primary Place of Performance: |
IL US 61820-7473 |
Primary Place of
Performance Congressional District: |
|
Unique Entity Identifier (UEI): |
|
Parent UEI: |
|
NSF Program(s): |
Software & Hardware Foundation, Exploiting Parallel&Scalabilty |
Primary Program Source: |
01001516DB NSF RESEARCH & RELATED ACTIVIT |
Program Reference Code(s): |
|
Program Element Code(s): |
|
Award Agency Code: | 4900 |
Fund Agency Code: | 4900 |
Assistance Listing Number(s): | 47.070 |
ABSTRACT
Title: XPS: FULL: FP: Collaborative Research: Model-based, Event Driven Scalable Programming for the Mobile Cloud
Applications running on mobile devices backed by cloud servers and storage (mobile cloud apps) are an important paradigm that is not well supported by current programming technology. Although cloud computing technology makes massive computational resources readily available, current frameworks for developing applications provide no simple and flexible way to map user-level application code to these resources. The intellectual merits of this project are to develop a new methodology for building mobile cloud applications that can leverage cloud resources in a scalable way while dramatically simplifying the development effort. The project's broader significance and importance are that it will provide a method for software development teams to build and deploy distributed mobile applications that exploit massive concurrency and data storage with less effort than is required to build simple web applications today.
Applications built following the proposed methodology have two distinct levels: a user level specifying the semantics of user interaction, and an architecture level specifying the allocation of computational resources. At each level, behavior can be expressed in a simple but powerful language thus providing modularity. The research project involves: (a) developing these languages; (b) devising automatic semantics-preserving translation from the user to the architecture level that allows the developer to adjust the application semantics and tune performance independently; (c) building a toolset that enables a range of analyses (including new forms of testing, model checking, and static analysis) that are less costly and more effective than traditional testing.
PUBLICATIONS PRODUCED AS A RESULT OF THIS RESEARCH
Note:
When clicking on a Digital Object Identifier (DOI) number, you will be taken to an external
site maintained by the publisher. Some full text articles may not yet be available without a
charge during the embargo (administrative interval).
Some links on this page may take you to non-federal websites. Their policies may differ from
this site.
PROJECT OUTCOMES REPORT
Disclaimer
This Project Outcomes Report for the General Public is displayed verbatim as submitted by the Principal Investigator (PI) for this award. Any opinions, findings, and conclusions or recommendations expressed in this Report are those of the PI and do not necessarily reflect the views of the National Science Foundation; NSF has not approved or endorsed its content.
Distributed software is common in the real-world but remains error-prone. Even when the underlying logic is inherently sequential and simple, addressing distributed aspects results in complex cross-cutting code that undermines such simplicity. The project developed methods and tools to make distributed programming more robust. One approach was to provide a clean separation of concerns and retains the simplicity of sequential computation, using it as a basis onto which distributed aspects are added without corrupting the essential sequential structure, while offloading much of the complexity of implementing distributed concerns to the compiler. The approach was demonstrated on web applications.
New methods for ensuring the correctness of distributed programs developed include methods for specifying and inferring the concurrency structure of distributed programs, as well as for testing programs. One area explored was to find erroneous assumptions in Java code by checking client code against models of library methods, which encode all behaviors allowed by the specifications. This was developed into a tool and demonstrated by applying to 46 tests. The results provide new insights into the complexity of exploring the behaviors of code that uses underdetermined APIs and the structure of state spaces that arise in the exploration. It also provides a basis for future work on better detecting faults in tests that invoke underdetermined APIs as well as developing tool support for writing and maintaining more robust test suites. The project further developed an approach to make regression testing—the process of testing programs that continuously updated—more efficient.
A key problem in testing distributed programs is that there are too many potential schedules (orders in which concurrent activity may take places). The project developed methods which are effective in inferring if there are feasible schedules that could lead to problematic executions. A tool was developed for a popular programming framework (actors) used for distributed programming in industry (AKKA). Our evaluation showed that the tool achieved a relatively high target coverage (78% on 1,000 potentially problematic executions or targets) and detected previously unreported bugs.
The project developed a dynamic inference tool to determine the intended concurrency structure of a distributed program. Such a structure can be expressed as pluggable types, checked and extended statically (without execution), and used as basis of transforming concurrent programs so that they are suitable for distributed execution (e.g. on the cloud and on mobile devices). The project also developed methods for inferring the evolution of the interface of a large class of programs, as different actors change state and are unable to perform certain functions at different times. Such evolution affects their interaction with other actors. By ensuring that only certain invocations are made in a particular order, we can enforce interaction protocols which avoid potentially problematic behaviors. Session type systems enable inference and enforcement of message exchange patterns for distributed programs. Essentially, session types can capture the evolution of interfaces of different actors in a system, including cross-program causal message passing dependencies. The project developed methods for specifying and inferring mutiparty session types, both to ensure safety and, for an important class of programs, to guarantee that the system makes progress.
Many safety critical applications in the real-world, such as IoT devices, medical devices, industrial process controllers, and sensor networks, involve distributed systems. The results of project will further research in the field and suggests a number of ways to improve the safety and reliability of such distributed software in the future.
Last Modified: 11/26/2018
Modified by: Gul A Agha
Please report errors in award information by writing to: awardsearch@nsf.gov.