CSC 508 Milestone 7 Details and Milestone 8

CSC 508 Milestone 7 Details and Milestone 8 --
Formal Model Specification




M7 DETAILS, ISSUED: Monday 22 November 1999
M7 DUE: Monday 29 November 1999

M8 ISSUED: Monday 22 November 1999
M8 DUE: Friday 10 December 1999


Milestone 7 Details

Per the original Milestone 7 writeup, the work of M7 focuses on the formal specification of the specialized artifact object for your project. As discussed in Lecture Notes weeks 6 and 7, tool-specific model objects will inherit from the generic Artifact object, a revised definition of which will appear in


kdat:~yliu/projects/work/artifact-navigator/specification/artifact.rsl

An example of artifact specialization (for the DesignArtifact) is attached, and online at

kdat:~gfisher/projects/work/inferno/specification/artifact-hierarchy.rsl

The following are specific Milestone 7 details for each group:

Process Navigator (Ying-Pong, Yajun, Alfedo, J.T.)
Define extensions to the Process object, as indicated in the comments in the revised process.rsl; separate the specific objects to be extended into separate .rsl files to avoid file conflicts
Artifact Navigator (Bob, Andrew)
Define extensions to the Artifact object, as indicated in the comments in the revised artifact.rsl; the extensions are in the area of artifact linking
Requirements Tool (Joe, Paul)
Define RequirementsArtifact with a components based on the simple structured text and graphics grammars discussed in our meetings.
Prototyping Tool (Sharon, Ryan)
Define PrototypeArtifact as an extension to the RequirementsArtifact structure with additions to model the canvas and scripting objects specific to the prototyping tool.
Design Tool (Margaret, Ahmed)
Define DesignArtifact with a components based on a subset of the Java grammar, as discussed in our meetings.
Implementation Tool (Luke, Eric)
Define ImplementationArtifact with a components based on a subset of the Java grammar, as discussed in our meetings.
Configuration Tool (John, Alan)
Define ConfigurationArtifact based on the syntactic structure of a config file. NOTE: Fisher will define the artifact structure for version control information.
Testing Tool (Kathryn, Jim)
Define TestingArtifact based on the revised artifact structure discussed in meetings.
Administration Tools (Don, Peter)
Define AdministrationArtifact based on the syntactic structure of the inferno Process (in process.rsl), with the addition of subtasks and milestones.
Milestone 8

The tasks of Milestone 8 are the following:

  1. Complete any pending requirements work from Milestone 6.
  2. Define model operations for your tool, including pre- and postconditions.
In addition to the tool-specific artifact definition, each group also defines a subclass of the generic Tool object, defined in

kdat:~gfisher/projects/work/inferno/specification/tool.rsl

The commentary in this file describes in general how a specific tool specializes the Tool object to define its external operational interface. The basic strategy is to define each tool as a module that exports all public operations of the tool. The "public operations" are those traceable to the external user interface of the tool, which are the operations on the tool's menu(s).

(*
 * Module ArtifactHiearchy is a self-contained example illustrating how a
 * tool-specific artifact specializes the generic Artifact definition.  The
 * general idea is that the artifact specializations for each process level
 * (e.g., design, etc) use the inherited SubArtifacts list to hold their
 * children, for as far down as they want the Artifact Navigator to see the
 * children.  For strong typing, a generic specialization of SubArtifacts is
 * defined for each level.
 *)


module ArtifactHiearchy;

  obj Artifact is n:Name and gi:GraphicIcon and sa:SubArtifacts and ...
    description: (*
       This is a reduced definition of Artifact to illustrate how a
       specialization deals with the SubArtifacts list.
    *);
  end;

  obj SubArtifacts is Artifact*
    description: (*
        This object is a place-holder for the specialized components of a
        specialized, tool-specific artifact.
    *);
  end;

  obj DesignArtifact < Artifact
    where: SubArtifacts = DesignSubArtifacts;
    description: (*
        This is an example of how the top-level artifact of a specific tool, in
        this case the design tool, specializes Artifact.  Note the use of the
        where clause, which defines generic instantiation in RSL.  See the RSL
        reference manual, Section 4.2, page 24.
    *);
  end;

  obj DesignSubArtifacts inherits from SubArtifacts
    where: Artifact = PackageOrClass;
    description: (*
        This is an example of the further specialization required to fully
        specify the type of subartifact element within a design artifact.
  end;

  obj PackageOrClass is PackageArtifact or ClassArtifact
    description: (*
        In the case of a design artifact, the elements of a design are an
        interspersed collection of packages and/or classes.
    *);
  end;

  obj PackageArtifact inherits from Artifact is ClassArtifact*;
  obj ClassArtifact inherits from Artifact is Name and (Member or Method)*;

  (* Stubs *)
  obj GraphicIcon;
  obj Name;
  obj Member;
  obj Method;

end ArtifactHiearchy;