<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="behavior.xsl"?>
  <behavioral manifest="SoftTools.1.sys.xml">
    <file>"BuildProcessor.1.xml"</file>
    <Author>Ozer Ozkaraoglu</Author>
    <version No="1.0" date="10/27/01"/>
    <!--

    -->
 
    <process name="Build Script Processor">
      Builds the code of a given manifest along with all other manifests it is directly/indirectly referring to.
    </process>
    <diagram diagramTitle="Build Script Context">
      softTools_buildScript_diagrams1_raster.jpg
    </diagram>
    <diagram diagramTitle="Build Script Data Flow">
      softTools_buildScript_diagrams2_raster.jpg
    </diagram>
    <inputs>
      <input variable="command">
      <def>contains information about type of the operation which will be performed</def>
      <text>The requested task is given by this input.</text>
      </input>
      <input variable="fileText">
        <def>is the data (content) coming from the foundry files</def>
        <text>Manifest and project files are read to gather the necessary information for build, while some other files (e.g. code files) are accessed during build process.</text>
      </input>
    </inputs>
    <outputs>
      <output variable="statusMessage">
        <def>contains information about the status of the operation</def>
        <text>The user notification messages about the current status of the operation, along with the possible warning messages of the compiler.</text>
      </output>
      <output variable="errorMessage">
        <def>contains the text about nature of the error</def>
        <text>An error message is created when an error occurs.</text>
      </output>
      <output variable="fileName">
        <def>contains the physical location of a file</def>
        <text>The file system is sent filename to begin writing an output of build operation.</text>
      </output>
      <output variable="fileText">
        <def>is the compiled data coming from the build script</def>
        <text>All data is created at saveDir, which was given by Build Script Command Line Handler</text>
      </output>
    </outputs>

    <requirements>
      <test No="Build_1">
        <def>building system manifest</def>
        <text>Builds an executable file for a system type manifest</text>
      </test>
      <test No="Build_2">
        <def>building program manifest, Req: (3.1.24.3)</def>
        <text>Builds an executable file for a program type manifest, and builds the dynamic link library compilation of all manifests it directly/indirectly refers to. These dll files may not be compiled if they already exist.</text>
      </test>
      <test No="Build_3">
        <def>building module manifest, Req: (3.1.24.1)</def>
        <text>Builds an executable file for the test driver and dynamic link library of a module type manifest. The dll files of all (in)directly referred files are also created. Again, they may not be created if they already exist.</text>
      </test>
      <test No="Build_4">
        <def>saveDir - all necessary files must already be extracted into this directory, Req: (3.1.24.2)</def>
        <text>Checks the validity of the path given by saveDir, and halts and passes an appropriate errorMessage if the directory is invalid. The program also halts whenever a necessary file is not found in this directory. All operations are made in this directory, and thus all MODIFICATIONS are made on files in this directory only.</text>
      </test>
      <test No="Build_5">
        <def>invalid manifestName given</def>
        <text>It should halt and return an appropriate errorMessage</text>
      </test>
      <test No="Build_6">
        <def>invalid buildConfig given</def>
        <text>It should halt and return an appropriate errorMessage</text>
      </test>
      <test No="Build_7">
        <def>compiler error</def>
        <text>errorMessage holding the message of compiler is passed to the standard output</text>
      </test>
      <test No="Build_8">
        <def>name conflict</def>
        <text>A manifest indirectly using two different versions of the same class is built.It sends statusMessage to standard output, which is the warning message of the compiler. The program, however, does not halt.</text>
      </test>

    </requirements>

    <!--
      The sibling tag, below, is used to identify lower level process descriptions.  Sibling tags have a visibility
      attribute, allowing them to be part of the parent's behavior model, or excluded, at the descretion of the
      behavior RI.
    -->
    <sibling ref="child2.xml" manifest="xmlTran.xml" visible="false"></sibling>
  </behavioral>