Automatic implementation generation for pervasive applications

Pervasive computing promises to put computers in almost every corner of our life. Unfortunately, it also promises to make programmers’ jobs harder since they cannot know what components are available in the run-time environment and as such, cannot statically plan out their programs. To help this situation, we propose goal-oriented programming, which may be more amenable to programming pervasive applications. Goal-oriented programming adds a level of indirection between Goals, high-level intentions such as “make me available for chat,” and Techniques, the code that implements the intentions. Each Technique is a combination of code and prerequisite subgoals, so that a Technique can be itself goal-oriented. By decomposing an application this way, it is possible to automatically build parts of it based on the runtime environment. When an application would like a Goal satisfied, the implementation Planner first finds Techniques that can satisfy the Goal, and then recurses to satisfy the Techniques’ subgoals. After a sufficient number of Techniques are found, the Planner evaluates the Techniques in some user-defined way, and chooses a set to execute. This work focuses on programming framework that isolates the planning aspect of goal-oriented programming from the Goals and Techniques themselves. We provide a reference Planner and evaluate its how well the Planner performs in simulation. Thesis Supervisor: Steve Ward Title: Professor

[1]  Daniel G. Bobrow,et al.  Common lisp object system specification , 1988, SIGP.

[2]  Nickolai Zeldovich,et al.  Control for Multi-Processor Event-Driven Systems , 2002 .

[3]  Robbert van Renesse Goal-oriented programming, or composition using events, or threads considered harmful , 1998, EW 8.

[4]  Craig Chambers,et al.  Object-Oriented Multi-Methods in Cecil , 1992, ECOOP.

[5]  David E. Culler,et al.  SEDA: an architecture for well-conditioned, scalable internet services , 2001, SOSP.

[6]  Henry A. Kautz,et al.  BLACKBOX: A New Approach to the Application of Theorem Proving to Problem Solving , 1998 .

[7]  David Garlan,et al.  Aura: an Architectural Framework for User Mobility in Ubiquitous Computing Environments , 2002, WICSA.

[8]  Daniel S. Weld Recent Advances in AI Planning , 1999, AI Mag..

[9]  Willy Zwaenepoel,et al.  Flash: An efficient and portable Web server , 1999, USENIX Annual Technical Conference, General Track.

[10]  Oren Etzioni,et al.  Intelligence without Robots: A Reply to Brooks , 1993, AI Mag..

[11]  Daniel G. Bobrow,et al.  CommonLoops: Merging Lisp and Object-Oriented Programming , 1986, OOPSLA.

[12]  Robert Tappan Morris,et al.  Event-driven programming for robust software , 2002, EW 10.

[13]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[14]  Richard Fikes,et al.  STRIPS: A New Approach to the Application of Theorem Proving to Problem Solving , 1971, IJCAI.

[15]  Oren Etzioni,et al.  A softbot-based interface to the Internet , 1994, CACM.

[16]  Anupam Joshi,et al.  DReggie: Semantic Service Discovery for M-Commerce Applications , 2001 .