Overview of Teknowledge's domain-specific software architecture program
Authors: Terry Allan , Hayes-Roth Frederick , Erman Lee , Coleman Norman , Devito Mary , Papanagopoulos George , Hayes-Roth Barbara 
Published: July 2004

As part of the ARPA DSSA program, we are developing a methodology and integrating a suite of supporting tools to help specify, design, validate, package and deploy distributed intelligent control and management (DICAM) applications. Our domain of specialization is vehicle management systems, and our near-term focus is on advanced artillery systems. To attain higher levels of performance and functionality while reducing the time and cost required for development, we are recommending a generic control architecture suitable for use as a single intelligent agent or as multiple cooperating agents. This reference architecture combines a task-oriented domain controller with a meta-controller that schedules activities within the domain controller. The domain controller provides functions for model-based situation assessment and planning, and inter-controller communication. Typically, these functions are performed by components taken from a repository of reusable software. In tasks that are simple, deterministic or time-stressed, the modules may be complied into or replaced by conventional control algorithms. In complex, distributed, cooperative, non-deterministic or unstressed situations, these modules will usually exploit knowledge-based reasoning and deliberative control.To improve the controller development process, we are combining many of the best ideas from software engineering and knowledge engineering in a software environment. This environment includes a blackboard-like development workspace to represent both the software under development and the software development process itself. In this workspace, controllers are realized by mapping requirements into specializations of the reference architecture. The workspace also provides mechanisms for triggering applications of software tools, including knowledge-based software design assistants.We are currently in the third year of a five-year program. In conjunction with our collaborators at ARDEC, we have produced a schema for describing architectures which is being used by ARDEC's community of contractors, by an ARPA architecture specification project for the Joint Task Force ATD, and by the Stanford Knowledge Systems Laboratory. We have released the second major version of our development environment, which is being used at ARDEC and in support of this ARPA architecture specification program. This version of the development environment is focused on initial requirements, architecture, and design. It provides both CASE-like editing of architectures and textual browsing/editing of repository descriptions expressed in the schema mentioned above. In the remaining years of the program we will be expanding the suite of tools and improving the methodologies required to build intelligent, distributed, hybrid controllers capable of spanning multiple levels of organization and system hierarchy. This technology holds considerable promise for near-term value, and the associated methodology provides a candidate approach for realizing the goals of mega-programming practice in control software. In assessing this prospect, we discuss some of the remaining shortfalls in both methodology and tools that require additional research and development.