Extending a Tool Integration Language

TheMarvel environment supports rule based modeling of software processes Marvel invokes external tools to carry out steps in a software process One of the major objectives of this research is to invoke existing external tools without needing to modify them This is achieved by encapsulating tools in envelopes designed to abstract the details of a tool from the Marvel kernel thereby providing a black box interface Initially we used the Unix shell language to write envelopes Due to several limitations of the shell language however the black box abstraction could not be fully supported We describe these limitations and discuss how we extended the shell language to obtain a new envelope language that fully supports the black box abstraction c Mark A Gisi and Gail E Kaiser This version appears in the First International Conference on the Software Process October Gisi is supported in part by National Science Foundation grant CCR Kaiser is supported by National Science Foundation grants CCR CDA and CCR by grants from AT T BNR DEC IBM SRA and Xerox by the New York State Center for Advanced Technology on Computer and Information Systems and by the NSF Engineering Research Center for Telecommunications Research Introduction Marvel is a rule based environment that assists users with the software development process and stores software components their attributes and relations in an objectbase Unlike most other process modeling systems Marvel employs existing external tools to carry out the steps of a software process Since tools are expensive to develop in terms of both time and cost a major objective is to employ existing tools without modifying them We achieve this by encapsulation of external tool interactions within envelopes The envelope concept was introduced in the ISTAR environment Each step of a process is represented in the process model by an activity An activity may involve building an executable running a test suite or simply invoking an editor An activity s execution often involves the invocation of one or more commercial o the shelf COTS tools To support the integration of COTS tools without modi cation or even access to their source code the Marvel kernel views each activity as a black box it only knows the activity s input and output re quirements In addition an activity should know nothing about the Marvel kernel For example suppose we want to execute an activity that compiles a C le The activity needs the C source le a set of header include les and the object code le location The activity invokes cc the C compiler with these parameters When the activity completes it returns a status code to the Marvel kernel indicating the status of cc s execution e g success failure An envelope represents an activity s implementation It abstracts the details of the interface of a tool Envelopes were initially written in the Unix shell language which has several advantages it already exists many reusable Unix utilities are available and it provides a means of connecting existing tools together into di erent useful con gurations However the shell language has at least two limitations in supporting the black box abstraction It does not support the declaration of an activity s interface i e input output There is no way to declare the types of incoming and outgoing data in a clean controlled manner It does not support the return of an arbitrary number of data values a shell script can only return an integer status code via the exit command Sometimes it is desirable for an activity to return more information We discuss how we extended the shell language to eliminate these limitations Marvel Rules and Tools Each activity is encapsulated in a rule composed of three parts a condition the activity and one or more e ects Before an activity can execute its condition a logical expression must be satis ed After the activity executes it returns a status code that is used to select the proper e ect which asserts some changes in the state of the objectbase Figure provides an example of a rule that compiles a C le Variable f denotes a variable is assigned an object with attribute compile status The class hierarchy of the objectbase is de ned by a data model gure shows a small segment In lines of gure we search the