(*
*) (***************************************************************************** SLIDE Requirements Specification Written by; Dan Stearns and CSC 590 students, Fall 1994 Modification Record: 10/17/94 Initial work on objects and operations 10/19/94 Changes from 10/19 CSC 590 class 10/21/94 Added DEMO operation, student names, non-functional reqs 10/25/94 Fixed some of the links 10/27/94 Major work on object model by UI group 10/28/94 More work on object model by Stan and Dan 10/31/94 More work on model by DB and UI groups Overview: *****************************************************************************) (* RSL OBJECT-ORIENTED SPECIFICATION *) object ProjectLibrary has Project*; object Project components: name:string and header:Document and docNames:string*; description: (* A Project is a group of documents that has some meaning to the user. For example, all of the code, data and documents related to a particular software development project. *); operations: displayProject, editProject, loadProject, saveProject; end Project; object Document components: name:string and header:string and slobNames:string*; description: (* A document is a collection of SLOBs packaged together by the user. The user creates and manages a document - SLIDE tools, except for document managers, are unaware of documents *); operations: annotateLinkSlob, displayDocument, linkSlob, loadDocument, saveDocument; end Document; object SLOB components: name:string; description: (* SLOBs are objects that retain their state between SLIDE sessions Steve France and Todd McKinnon Theses *); operations: loadSlob, saveSlob; end SLOB; (* End of Database World *) object Graphic inherits from SLOB components: fileName:string and graphicType; description: ; operations: viewGraphic; end Graphic; object graphicType; object Drawing inherits from Graphic components: ; description: ; end Drawing; object Animation inherits from Graphic components: ; description: ; end Animation; object Video inherits from Animation components: ; description: ; operations: fastForward, pauseVideo, playVideo, rewindVideo, stepFrame; end Video; object Sound inherits from SLOB components: ; description: (* An audio object that can be played by Mosaic *); operations: playSound; end Sound; object Text inherits from SLOB components: contents:string; description: (* An object that can be represented on an ASCII screen *); operations: countWords, displayText; end Text; (* Specific Requirements objects *) object DFD is Drawing; object RequirementsSpec has DFD or RSLDoc:Document; object RequirementsTrace inherits from Report; (**** Software Design objects ****) object OMN inherits from Drawing components: ; description: ; end OMN; object UI inherits from Graphic; object DemoGeneratedUI inherits from UI; (**** Code objects ****) object Class is CPlusPlusCode; object CPlusPlusProgram; object Header is CPlusPlusCode; object Code inherits from Text components: ; description: (* We all know what code is *) ; operations: editCode; end Code; object Program has Code* and makefile:Text; object VisualProgram is Drawing; (**** Run-time Debugging Objects ****) object DebugDisplay has Heap and Stack and SymbolTable; object Heap; object Stack; object SymbolTable; (**** Test objects ****) object CoveragePercent is number; object Results; object TestSet; object VarianceReport inherits from Report; (**** Metrics and Project Management objects ****) object Metrics inherits from Report has KDSI; object KDSI is number; (**** Primitive Objects ****) object CPlusPlusCode; (* A generic name for anything in the SLIDE User Interface *) object Display; (* A report is a formatted text string that conveys information to the user *) object Report inherits from Text; (* RSL OPERATION-ORIENTED SPECIFICATION *) (**** Software Requirements and Design Operations ****) (* The user can use DEMO to create a User Interface *) (* Sufie Seifoddini Thesis *) op DesignUIbyDemo () -> (u:DemoGeneratedUI); op EditDFD (d:DFD) -> (d':DFD); op TraceRequirements (r:RequirementsSpec, r':RequirementsSpec) -> (rp:Report); (**** Programming Operations ****) op BrowseProgram (p:Program) -> (r':RequirementsSpec, d':OMN, p':Program); op EditProgram (p:Program) -> (p':Program); (* The user can create a OMN diagram from C++ source *) (* Jian Zheng Thesis *) op GenerateRumbaughObjectModel (p:Program) -> (d:OMN); op InterpretProgram (p:Program) -> (r:Results); (**** Testing Operations ****) op RunTest (p:Program) -> (r:Results); op GenerateMetrics (p:Program) -> (m:Metrics); op RunCoverage inherits from RunTest (p:Program, ts:TestSet) -> (r:Results,c:CoveragePercent); op RunRegression inherits from RunTest (p:Program, ts:TestSet, r:Results) -> (r':Results, v:VarianceReport); (**** Utility Operations ****) (* The user can browse persistent SLIDE objects, independently of other tools *) op BrowseSLOBs (p:SLOB*) -> (d:Display); (**)