Technology has advanced to the point where many people feel it has created a world with an insurmountable amount of information. Information includes messages people send to each other, logged data from their activities, and the services available to them. This problem has been exaggerated in modern societies by high availability of Internet connectivity. All types of information contains context, whether they have been stated explicitly or understood implicitly. Understanding, handling, and using context represents one of the most critical steps towards coping with the amount of information available today.
In this dissertation, we examine two topics: context and the design of a context-aware platform. We describe fundamental types of context associated with every piece of information and discuss issues which may occur when implementing a system which utilizes context.
We present a context-aware platform called Rover. The Rover architecture provides a conceptual framework geared towards understanding how application developers can utilize a variety of aspects of context to assist the development of modern applications. To aid developers in figuring out what context may be useful in their application, we describe the concept of a Rover ecosystem: a logical organization analogous to how similar groups of people interact with each other. We also discuss how information and context can be shared between ecosystems.
To examine the feasibility of the Rover architecture's conceptual framework, we have implemented a reference implementation of the core unit of a Rover ecosystem: the Rover server. We discuss the details of the Rover server and describe the implementation of an emergency response application which demonstrates the utility of the conceptual framework.
Rover: An Integration and Fusion Platform to Enhance Situational AwarenessChristian B. Almazan, Moustafa Youssef, Ashok K. AgrawalaThe 1st International Workshop on Research Challenges in Next Generation Networks for First Responders and Critical Infrastructures. Appears in the 26th IEEE International Performance Computing and Communications Conference, pages 582-587. New Orleans, Louisiana, United States. April 2007.
First responders need to be able to have the most amount of situational awareness of the operations they perform while not being overwhelmed by all of the information that may be made available to them. This paper presents the Rover integration and fusion platform to alleviate the fusing of multiple information sources, which may not be known prior to the beginning of an operation. Rover can aid fusing sources by providing as much contextual information which often will be forgotten when designing programs, mapping contextual information into a view in which programs and users can use, and automate well-known and designed tasks. All of this occurs while deploying Rover to first responder incident scenes without the need for an existing network infrastructure prior to an incident.
A Comparison of Bug Finding Tools for JavaNick Rutar, Christian B. Almazan, and Jeffrey S. FosterThe 15th IEEE International Symposium on Software Reliability Engineering, pages 245-256. Saint-Malo, Bretagne, France. November 2004.
Bugs in software are costly and difficult to find and fix. In recent years, many tools and techniques have been developed for automatically finding bugs by analyzing source code or intermediate code statically (at compile time). Different tools and techniques have different tradeoffs, but the practical impact of these tradeoffs is not well understood. In this paper, we apply five bug finding tools, specifically Bandera, ESC/Java 2, FindBugs, JLint, and PMD, to a variety of Java programs. By using a variety of tools, we are able to cross-check their bug reports and warnings. Our experimental results show that none of the tools strictly subsumes another, and indeed the tools often find non-overlapping bugs. We discuss the techniques each of these tools is based on, and we suggest how particular techniques affect the output of the tools. Finally, we propose a meta-tool that combined the output of the tools together, looking for particular lines of code, methods, and classes that many tools warn about.