499 research outputs found
Context2Name: A Deep Learning-Based Approach to Infer Natural Variable Names from Usage Contexts
Most of the JavaScript code deployed in the wild has been minified, a process
in which identifier names are replaced with short, arbitrary and meaningless
names. Minified code occupies less space, but also makes the code extremely
difficult to manually inspect and understand. This paper presents Context2Name,
a deep learningbased technique that partially reverses the effect of
minification by predicting natural identifier names for minified names. The
core idea is to predict from the usage context of a variable a name that
captures the meaning of the variable. The approach combines a lightweight,
token-based static analysis with an auto-encoder neural network that summarizes
usage contexts and a recurrent neural network that predict natural names for a
given usage context. We evaluate Context2Name with a large corpus of real-world
JavaScript code and show that it successfully predicts 47.5% of all minified
identifiers while taking only 2.9 milliseconds on average to predict a name. A
comparison with the state-of-the-art tools JSNice and JSNaughty shows that our
approach performs comparably in terms of accuracy while improving in terms of
efficiency. Moreover, Context2Name complements the state-of-the-art by
predicting 5.3% additional identifiers that are missed by both existing tools
Supporting Collaboration in Mobile Environments
Continued rapid improvements in the hardware capabilities of mobile computing devices is driving a parallel need for a paradigm shift in software design for such devices with the aim of ushering in new classes of software applications for devices of the future. One such class of software application is collaborative applications that seem to reduce the burden and overhead of collaborations on human users by providing automated computational support for the more mundane and mechanical aspects of a cooperative effort. This dissertation addresses the research and software engineering questions associated with building a workflow-based collaboration system that can operate across mobile ad hoc networks, the most dynamic type of mobile networks that can function without dependence on any fixed external resources. While workflow management systems have been implemented for stable wired networks, the transition to a mobile network required the development of a knowledge management system for improving the predictability of the network topology, a mobility-aware specification language to specify workflows, and its accompanying algorithms that help automate key pieces of the software. In addition to details of the formulation, design, and implementation of the various algorithms and software components. this dissertation also describes the construction of a custom mobile workflow simulator that can be used to conduct simulation experiments that verify the effectiveness of the approaches presented in this document and beyond. Also presented are empirical results obtained using this simulator that show the effectiveness of the described approaches
Context-Sensitive Binding: Flexible Programming Using Transparent Context Maintenance
Context-aware computing is a new paradigm whose emergence has been fostered by a growing reliance on light and mobile computing devices, which adapt their behavior to changing environmental conditions. The dynamic nature of the environment is a direct result of the mobility of people and devices. Because the development of applications that entail a signiļ¬cant level of dynamic adaptation is a diļ¬cult and error-prone task, new design methods and constructs are needed. Precise and ļ¬exible speciļ¬cation of the resources needed to operate in speciļ¬c contexts combined with transparent context management can simplify the development process. In this paper we propose a particular embodiment of this general design strategy in the form of a novel programming construct called context-sensitive binding. The approach allows programmers to deļ¬ne and use in their programs objects whose behavior is supported by code discovered at runtime within the computing environment surrounding the de-vice. The binding between the object in the program and the support object that delivers its realization is maintained transparently and is altered as the environment changes, thus making the binding context sensitive. The criteria for choosing among viable support objects are prescribed at the time the object is ļ¬rst instantiated. The paper introduces the concept of context sensitive binding, describes a Java-based implementation, and explores the programming implications of the proposed construct
Fast Empirical Scenarios
We seek to extract a small number of representative scenarios from large and
high-dimensional panel data that are consistent with sample moments. Among two
novel algorithms, the first identifies scenarios that have not been observed
before, and comes with a scenario-based representation of covariance matrices.
The second proposal picks important data points from states of the world that
have already realized, and are consistent with higher-order sample moment
information. Both algorithms are efficient to compute, and lend themselves to
consistent scenario-based modeling and high-dimensional numerical integration.
Extensive numerical benchmarking studies and an application in portfolio
optimization favor the proposed algorithms.Comment: 22 pages, 7 figure
Distributed Allocation of Workflow Tasks in MANETs
When multiple participants work on a workflow that represents a large, collaborative activity, it is important to have a well defined process to determine the portions of the workflow that each participant is responsible for executing. In this paper, we describe a process and related algorithms required to assign tasks in a workflow, to hosts that are willing to carry out the execution of these tasks, and thereby contributing to the completion of the activity. This problem is a stylized form of the multi-processor scheduling algorithm which has been shown to be NP-Hard. Further complicating the issue is that we are targeting our approach to mobile ad hoc networks, where hosts are physically mobile, communication links are frequently interrupted, and spatiotemporal considerations become increasingly important. We describe a distributed approach to task allocation in mobile ad hoc networks that employs heuristics to assign tasks in a workflow to mobile hosts based on their capabilities and their mobility patterns. We have implemented our algorithms in the context of CiAN, a workflow management system (WfMS) supporting collaborations in a mobile environment. In addition, we also present performance data of our algorithm and compare it to naive and brute force approaches
CiAN: A Language and Middleware for Collaboration in Ad hoc Networks
Designing software that supports collaboration among multiple users in mobile ad hoc networks is challenging due to the dynamic network topology and inherent unpredictability of the environment. However, as we increasingly migrate to using mobile computing platforms, there is a pertinent need for software that can support a wide range of collaborative activities anywhere and at any time without relying on any external infrastructure. In this paper, we adopt the workflow model to represent the structure of an activity that involves multiple tasks being performed in a structured, collaborative fashion by multiple users. Using the workflow model as a base, we developed an XML based specification language called CiAN that can be used to build workflows that can be fragmented and distributed across the hosts of participating users so that the collaborative activity is executed in a distributed manner. The tasks specified in the CiAN language are executed by our Java based CiAN middleware, which runs on mobile hosts. Communication of task results between hosts occurs via a novel protocol that uses the workflow structure to make routing decisions on data packets. Complete implementation details and an evaluation of our approach are also presented
Automated Code Management for Service Oriented Computing in Ad Hoc Networks
Ad hoc networks are dynamic environments where fre-quent disconnections and transient interactions lead to de-coupled computing. Typically, participants in an ad hoc network are small mobile devices such as PDAs or cellu-lar phones that have a limited amount of resources avail-able locally, and must leverage the resources on other co-located devices to provide the user with a richer set of func-tionalities. Service-oriented computing (SOC), an emerging paradigm that seeks to establish a standard way of mak-ing resources and capabilities available for use by others in the form of services, is a useful model for engineering soft-ware that seeks to exploit capabilities on remote devices. This paper proposes an automatic code management sys-tem supporting SOC in ad hoc networks. The system is re-sponsible for ensuring that the binary code required to use a service on a remote machine is available on the local host only when required. To support this functionality, a local code base is maintained by discovering and installing code from remote hosts. Since the system is speciļ¬cally designed for ad hoc networks, it incorporates additional features that help it withstand the inherent dynamism of the network. We present an architecture for our system supporting automatic code management and follow it with a discussion of a Java-based implementation
Context Aware Session Management for Services in Ad Hoc Networks
The increasing ubiquity of wireless mobile devices is promoting unprecedented levels of electronic collaboration among devices interoperating to achieve a common goal. Issues related to host interoperability are addressed partially by the service-oriented computing paradigm. However, certain technical concerns relating to reliable interactions among hosts in ad hoc networks have not yet received much attention. We introduce āfollow-me sessionsā, where interaction occur between a client and a service, rather than a speciļ¬c provider or server. We allow the client to switch service providers if needed. The redundancy oļ¬ers scope for reliable communication in the presence of mobility induced disconnections. We exploit strategies involving the use of contextual information, strong process migration, context-sensitive binding, and location-agnostic communication protocols. We show how follow-me sessions mitigate issues related to proxy-based service-oriented architectures in ad hoc networks, making them more reliable
Service Oriented Computing Imperatives in Ad Hoc Wireless Settings
Service oriented computing is a new paradigm that is gaining popularity in dis-tributed computing environments due to its emphasis on highly specialized, modular and platform-agnostic code facilitating interoperability of systems. It borrows concepts from more mature paradigms such as object-oriented and component computing. This results in a progression from object-oriented computing to component computing and ļ¬nally to service oriented computing, a new paradigm for designing and delivering software. Just as an object encapsulates state and behavior at a ļ¬ne level of granularity, a service oļ¬ers similar encapsulation at a larger scale. This evolution raises the level of abstraction at which systems are engineered, while preserving beneļ¬cial properties such as modularity, substitution and encapsulation. Every participant in a service oriented computing system is a provider or user of a service, or both. The service oriented computing paradigm is characterized by a minimalist philosophy, in that a user needs to carry only a small amount of code in its local storage, and exploits other services by discovering and using their capabilities to complete its assigned task. This chapter is the result of our experiences with designing and building service oriented computing frameworks for ad hoc wireless networks (Handorean & Roman, 2002). It examines the salient imperatives required to deliver a service oriented computing frame-work for ad hoc wireless networks. Ad hoc wireless networks are collections of hosts capable of wireless communication. Hosts within proximity of each other opportunistically form a network which changes due to host mobility. An ad hoc wireless network is a dynamic environment by necessity, which exhibits transient interactions, decoupled computing, physical mobility of hosts, and logical mobility of code. The network infrastructure is supported by the participating hosts themselves and there is no dependence on external, ļ¬xed resources. Ad hoc wireless environments are especially challenging to program when compared against other classes of ļ¬xed wireless environments because of the implications of mobility, i.e., frequent disconnections and inherent dynamism of the network on program execution. An important class of ad hoc mobile systems is based on small, portable devices, and this class of systems is the focus of this chapter. Such devices have limited storage capacity and battery power, which restricts the number of programs they can store and run locally. Service oriented computing oļ¬ers a solution to this problem. By its very nature, service oriented computing is designed to facilitate sharing of capabilities while minimizing the amount of functionality a single host needs to maintain. Such a design is especially eļ¬ective in ad hoc networks where storage space on individual hosts is at a premium, yet where the open environment allows a large number of hosts to contribute small functions resulting in a rich set of capabilities being available in the network as a whole. Service oriented computing has received much attention from researchers worldwide. However, most of this work has been focused on architectures and implementations for wired networks. Migrating service oriented computing to ad hoc networks is non-trivial and requires a systematic rethinking of core concepts. Many lessons have been learned from the work done in the wired setting, especially regarding description and matching of services. However, the more demanding environment of an ad hoc wireless network requires novel approaches to advertising, discovering and invoking services. We envision such ad hoc networks being used in a range of application domains, such as response coordination by ļ¬remen and police at disaster sites, or command and control of military units in a battleļ¬eld. Such scenarios demand reliability despite the dynamic nature of the underlying network. The motivation for this chapter is to understand the unique imperatives for a viable service oriented computing framework in ad hoc wireless settings, and to illustrate selected solution strategies. We begin by examining current technologies, algorithms and capabilities that have been implemented for use in wired networks as a baseline. We then extend these concepts to cater to the special challenges of service oriented computing in ad hoc networks and direct the readerās attention to research issues in this area, presenting some of our own contributions in the process. The rest of the chapter is organized as follows. We describe existing service oriented computing architectures and the Semantic Web eļ¬ort in the Background section. The section on Ad Hoc Wireless Network Perspective on Service Oriented Computing represents the main thrust of this chapter and discusses the elements of a service oriented computing framework, examining current technologies alongside our ideas on how these concepts may be applied to ad hoc networks. We cover potential areas of research in the Future Trends section. Finally, we summarize our ļ¬ndings in the Conclusion section
- ā¦