84 research outputs found
Understanding the performance of interactive applications
Many if not most computer systems are used by human users. The performance of such interactive systems ultimately affects those users. Thus, when measuring, understanding, and improving system performance, it makes sense to consider the human user's perspective. Essentially, the performance of interactive applications is determined by the perceptible lag in handling user requests. So, when characterizing the runtime of an interactive application we need a new approach that focuses on the perceptible lags rather than on overall and general performance characteristics. Such a new characterization approach should enable a new way to profile and improve the performance of interactive applications. Imagine a way that would seek out these perceptible lags and then investigate the causes of these lags. Performance analysts could simply optimize responsible parts of the software, thus eliminating perceptible lag for interactive applications. Unfortunately, existing profiling approaches either incur significant overhead that makes them impractical for an interactive scenario, or they lack the ability to provide insight into the causes of long latencies. An effective approach for interactive applications has to fulfill several requirements such as an accurate view of the causes of performance problems and insignificant perturbation of the interactive application. We propose a new profiling approach that helps developers to understand and improve the perceptible performance of interactive applications and satisfies the above needs
Continuous, Evolutionary and Large-Scale: A New Perspective for Automated Mobile App Testing
Mobile app development involves a unique set of challenges including device
fragmentation and rapidly evolving platforms, making testing a difficult task.
The design space for a comprehensive mobile testing strategy includes features,
inputs, potential contextual app states, and large combinations of devices and
underlying platforms. Therefore, automated testing is an essential activity of
the development process. However, current state of the art of automated testing
tools for mobile apps poses limitations that has driven a preference for manual
testing in practice. As of today, there is no comprehensive automated solution
for mobile testing that overcomes fundamental issues such as automated oracles,
history awareness in test cases, or automated evolution of test cases.
In this perspective paper we survey the current state of the art in terms of
the frameworks, tools, and services available to developers to aid in mobile
testing, highlighting present shortcomings. Next, we provide commentary on
current key challenges that restrict the possibility of a comprehensive,
effective, and practical automated testing solution. Finally, we offer our
vision of a comprehensive mobile app testing framework, complete with research
agenda, that is succinctly summarized along three principles: Continuous,
Evolutionary and Large-scale (CEL).Comment: 12 pages, accepted to the Proceedings of 33rd IEEE International
Conference on Software Maintenance and Evolution (ICSME'17
Component-Based Tools for Educational Simulations
e-Learning is an effective medium for delivering knowledge and skills. In spite of improvements in electronic delivery technologies, e-Learning is still a long way away from offering anything close to efficient and effective learning environments. To improve e-Learning experiences, much literature supports simulation based e-Learning. This thesis begins identifying various types of simulation models and their features that induce experiential learning. We focus on designing and constructing an easy-to-use Discrete Event Simulation (DES) tool for building engaging and informative interactive DES models that allow learners to control the modelsâ parameters and visualizations through runtime interactions. DES has long been used to support analysis and design of complex systems but its potential to enhance learning has not yet been fully utilized. We first present an application framework and its resulting classes for better structuring DES models. However, importing relevant classes, establishing relationships between their objects and representing lifecycles of various types of active objects in a language that does not support concurrency demand a significant cognitive workload. To improve this situation, we utilize two design patterns to ease model structuring and logic representation (both in time and space) through a drag and drop component approach. The patterns are the Delegation Event Model, used for linking between components and delegating tasks of executing and updating active objectsâ lifecycles, and the MVC (Model-View-Controller) pattern, used for connecting the components to their graphical instrumentations and GUIs. Components implementing both design patterns support the process-oriented approach, can easily be tailored to store model states and visualizations, and can be extended to design higher level models through hierarchical simulation development. Evaluating this approach with both teachers and learners using ActionScript as an implementation language in the Flash environment shows that the resulting components not only help model designers with few programming skills to construct DES models, but they also allow learners to conduct various experiments through interactive GUIs and observe the impact of changes to model behaviour through a range of engaging visualizations. Such interactions can motivate learners and make their learning an enjoyable experience
Java, Java, Java: Object-Oriented Problem Solving
Open Access Textbook from Open Textbook Library:
Java, Java, Java, 3e was previously published by Pearson Education, Inc.
The first edition (2000) and the second edition (2003) were published by
Prentice-Hall. In 2010 Pearson Education, Inc. reassigned the copyright to
the authors, and we are happy now to be able to make the book available
under an open source license.
This PDF edition of the book is available under a Creative Commons
Attribution 4.0 International License, which allows the book to be used,
modified, and shared with attribution:
(https://creativecommons.org/licenses/by/4.0/).
â Ralph Morelli and Ralph Walde
â Hartford, CT
â December 30, 201
Applications of wireless sensor technologies in construction
The construction industry is characterised by a number of problems in crucial
fields such as health, safety and logistics. Since these problems affect the progress of
construction projects, the construction industry has attempted to introduce the use of
innovative information and communication technologies on the construction site. Specific
technologies which find applicability on the construction site are wireless sensors, and
especially radio-frequency identification (RFID) technology. RFID tagging is a
technology capable of tracking items. The technology has been applied on the
construction site for various applications, such as asset tracking. There are many
problems related to health, safety and logistics on the construction site which could be
resolved using RFID technology. In the health and safety field, the problems which exist
are the monitoring of dangerous areas on the construction site, such as large excavation
areas, the collisions between workers and vehicles, between vehicles and equipment and
between vehicles, the detection of hazardous substances on the construction site when the
construction work has been completed and the collection of hazard notifications from
specific areas of the construction site as feedback for the prevention of future accidents.
In the logistics field, the tracking of a material during its delivery on the construction site,
its transportation to specific subcontractors and its future utilisation as well as the
monitoring of the rate of use of materials on the construction site, the checking of the
sequence of steel members and the monitoring of the temperature of porous materials are
issues which can be realised using RFID technology. In order to facilitate the use of
RFID technology for the specific health, safety and logistics problems, a system has been
developed. The operation of this system is based on the combined use of hardware and
software elements. The hardware elements of the developed system are a wireless local
area network, RFID readers and tags. Its software elements are a software development
kit based on which, a number of graphical user interfaces have been created for the
interaction of the users with the REID tags, and Notepad files which store data collected
from REID tags through the graphical user interfaces. Each of the graphical user
interfaces is designed in such a way so that it corresponds to the requirements of the
health, safety or logistics situation in which it is used. The proposed system has been
tested on a simulated construction site by a group of experts and a number of findings
have been produced. Specifically, the testing of the proposed system showed that RFID
technology can connect the different stages which characterise the construction supply
chain. In addition, it showed the capability of the technology to be integrated with
construction processes. The testing of the system also revealed the barriers and the
enablers to the use of RFID technology in the construction industry. An example of such
a barrier is the unwillingness of the people of the construction industry to quit traditional
techniques in favour of a new technology. Enablers which enhance the use of RFID
technology in the construction industry are the lack of complexity which characterises the
operation of RFID tagging and the relatively low cost of RFID tags. In general, RFID
technology is an innovative sensor technology which can help the construction industry
through its asset tracking ability. However, further research should be done on the
improvement of RFID technology on specific characteristics, such as its inability to
provide location coordinates and the resilience of the electromagnetic signal emitted by
the RFID reader when there are metallic objects around the reader
Bridging the Gap between Machine and Language using First-Class Building Blocks
High-performance virtual machines (VMs) are increasingly reused for programming languages for which they were not initially designed. Unfortunately, VMs are usually tailored to specific languages, offer only a very limited interface to running applications, and are closed to extensions. As a consequence, extensions required to support new languages often entail the construction of custom VMs, thus impacting reuse, compatibility and performance. Short of building a custom VM, the language designer has to choose between the expressiveness and the performance of the language. In this dissertation we argue that the best way to open the VM is to eliminate it. We present Pinocchio, a natively compiled Smalltalk, in which we identify and reify three basic building blocks for object-oriented languages. First we define a protocol for message passing similar to calling conventions, independent of the actual message lookup mechanism. The lookup is provided by a self-supporting runtime library written in Smalltalk and compiled to native code. Since it unifies the meta- and base-level we obtain a metaobject protocol (MOP). Then we decouple the language-level manipulation of state from the machine-level implementation by extending the structural reflective model of the language with object layouts, layout scopes and slots. Finally we reify behavior using AST nodes and first-class interpreters separate from the low-level language implementation. We describe the implementations of all three first-class building blocks. For each of the blocks we provide a series of examples illustrating how they enable typical extensions to the runtime, and we provide benchmarks validating the practicality of the approaches
Bridging the Gap between Machine and Language using First-Class Building Blocks
High-performance virtual machines (VMs) are increasingly reused for programming languages for which they were not initially designed. Unfortunately, VMs are usually tailored to specific languages, offer only a very limited interface to running applications, and are closed to extensions. As a consequence, extensions required to support new languages often entail the construction of custom VMs, thus impacting reuse, compatibility and performance. Short of building a custom VM, the language designer has to choose between the expressiveness and the performance of the language. In this dissertation we argue that the best way to open the VM is to eliminate it. We present Pinocchio, a natively compiled Smalltalk, in which we identify and reify three basic building blocks for object-oriented languages. First we define a protocol for message passing similar to calling conventions, independent of the actual message lookup mechanism. The lookup is provided by a self-supporting runtime library written in Smalltalk and compiled to native code. Since it unifies the meta- and base-level we obtain a metaobject protocol (MOP). Then we decouple the language-level manipulation of state from the machine-level implementation by extending the structural reflective model of the language with object layouts, layout scopes and slots. Finally we reify behavior using AST nodes and first-class interpreters separate from the low-level language implementation. We describe the implementations of all three first-class building blocks. For each of the blocks we provide a series of examples illustrating how they enable typical extensions to the runtime, and we provide benchmarks validating the practicality of the approaches
Migration of Applications across Object-Oriented APIs
Software developers often encapsulate reusable code as Application Programming Interfaces (APIs). The co-evolution of applications and APIs may motivate an API migration: the replacement of application dependencies to an original API by dependencies to an alternative API that provides similar functionality and abstractions.
In this dissertation, we investigate issues associated with API migration in object-oriented systems, with special focus on wrapping approaches. We present two studies and a set of developer interviews that elicit issues in the process and techniques used in API migration in practice. The results suggest that the most pressing issues relate to discovery and specification of differences between APIs, and to assessment of migration correctness. This dissertation introduces techniques and a method to address these issues.
We propose the use of design patterns to support the specification of API wrappers. API wrapping design patterns encode solutions to common wrapping design problems. We present an initial catalog of such patterns that were abstracted from programming idioms found in existing API wrappers.
We introduce the concept of compliance testing for API migration, a form of automated testing. Compliance testing supports the discovery of behavioral differences between a wrapper and its corresponding original API, as well as assessment of wrapper correctness. Compliance testing uses API contracts and assertion tunings to explicitly capture and enforce the notion of a âgood enoughâ wrapper that is informal in practice.
We present the Koloo method for wrapper-based API migration. The method prescribes practical steps to use compliance testing as a means to elicit the requirements for the API migration, and to assess its correctness. Koloo fits within the iterative, sample-driven general API migration process usually followed by developers in practice.
We evaluate the Koloo method in an empirical study. The subjects cover the domains of XML processing, GUI programming and bytecode engineering. The results provide evidence that Koloo is superior to alternative methods in driving the development of a wrapper that is tailored for the application under migration. The results also show that API contracts help driving the evolution of the wrapper, and assertion tuning is necessary to relax the semantics of strict equality contracts, and useful to compromise on features that are difficult to emulate perfectly. Finally, we validate that the proposed design patterns are used in practical wrappers
Quantifying and Predicting the Influence of Execution Platform on Software Component Performance
The performance of software components depends on several factors, including the execution platform on which the software components run. To simplify cross-platform performance prediction in relocation and sizing scenarios, a novel approach is introduced in this thesis which separates the application performance profile from the platform performance profile. The approach is evaluated using transparent instrumentation of Java applications and with automated benchmarks for Java Virtual Machines
- âŠ