| The advances in computing and communication and the availability of very inexpensive wireless devices have excited the imagination of Computer Science and Engineering researchers, leading to such ambitious projects as MIT's Oxygen which aims to make computing as available as oxygen; and CMU's Aura that aims to design systems that address demanding human needs, including proactively anticipating and self-tuning available resources to meet user needs. Our goal is much more modest and focused to address one aspect of such future computing needs to provide practical software engineering methodologies for the design of intelligent proactive agents.; Over the past decade the agent paradigm has been gaining popularity because agents bring intelligence, reasoning and autonomy to software systems. Agents are being used in an increasingly wide variety of applications from simple email filter programs to complex mission control and safety critical systems including air traffic control and nuclear power plant operations. Recent advances in middleware and run-time systems have helped in designing such agent-based software systems. However, there appears to be very little work in defining software architecture, modeling and analysis tools that can be used by software engineers. This should be contrasted with an object-oriented paradigm that is supported by modeling languages such as UML and a variety of CASE tools that aid during the analysis, design, implementation and validation phases of object-oriented software systems, all of which contributed to the universal acceptance of object-oriented paradigm. Only recently there have been a few proposals for Agent-oriented Software Engineering and extensions to UML. In our research, we propose a framework and extensions to UML to address this need. Our approach is rooted in the BDI formalism but stresses practical software design methods instead of reasoning theories. |