Learn More
Software Product-lines (SPLs) are software architectures that use modular software components that can be reconfigured into different variants for different requirements sets. Feature modeling is a common method used to capture the configuration rules for an SPL architecture. A key challenge developers face when maintaining an SPL is determining how to(More)
—The increasing complexity and cost of software-intensive systems has led developers to seek ways of reusing software components across development projects. One approach to increasing software reusability is to develop a Software Product-line (SPL), which is a software architecture that can be reconfigured and reused across projects. Rather than developing(More)
Software product-lines (SPLs) are software platforms that can be readily reconfigured for different project requirements. A key part of an SPL is a model that captures the rules for reconfiguring the software. SPLs commonly use feature models to capture SPL configuration rules. Each SPL configuration is represented as a selection of features from the(More)
New and planned mobile Internet devices, such as Apple's iPhone and Motorola's Droid, have powerful processors and a variety of sensors that can be leveraged to build cyber-physical applications that collect sensor data from the real world and communicate it back to Internet services for processing and aggregation. This paper presents a sampling of key R&D(More)
Traffic accidents are one of the leading causes of fatalities in the US. An important indicator of survival rates after an accident is the time between the accident and when emergency medical personnel are dispatched to the scene. Eliminating the time between when an accident occurs and when first responders are dispatched to the scene decreases mortality(More)
The increasing complexity and cost of software-intensive systems has led developers to seek ways of increasing software reusability. One software reuse approach is to develop a Software Product-line (SPL), which is a reconfigurable software architecture that can be reused across projects. Creating configurations of the SPL that meets arbitrary requirements(More)
Cloud computing can reduce power consumption by using virtualized computational resources to provision an application's computational resources on-demand. Auto-scaling is an important cloud computing technique that dynamically allocates computational resources to applications to match their current loads precisely, thereby removing resources that would(More)
Future embedded and ubiquitous computing systems will operate continuously on mobile devices, such as smartphones, with limited processing capabilities, memory, and power. A critical aspect of developing future applications for mobile devices will be ensuring that the application provides sufficient performance while maximizing battery life. Determining how(More)
Accident detection systems help reduce fatalities stemming from car accidents by decreasing the response time of emergency responders. Smartphones and their onboard sensors (such as GPS receivers and accelerometers) are promising platforms for constructing such systems. This paper provides three contributions to the study of using smartphone-based accident(More)
Distributed real-time and embedded (DRE) systems can be composed of hundreds of software components running across tens or hundreds of networked processors that are physically separated from one another. A key concern in DRE systems is determining the spatial deployment topology, which is how the software components map to the underlying hardware(More)