External Specification
This contains the dataflow diagrams for the spreadsheet. Object diagrams show the major objects used in the internal
model and the data which flows between them. The formula language to be used by the spreadsheet is also specified.
Spreadsheet context diagram
 image
 * selection of standard image formats *
 command
 * variety of standard spreadsheet commands such as new spreadsheet, close spreadsheet, copy, paste,... and specific
image spreadsheet commands such as load image, zoom in, zoom out, ... *
 formula
 * string *
 selection
 * name of cell that has been selected *
 value
 [blank  number  text  image  error]
 blank
 * value of empty formula *
 number
 * floating point number *
 text
 * string *
 error
 [ * value of cell in circular reference*  *value of formula with incorrect inputs* ]
 Spreadsheet
 * the entire spreadsheet *
Context diagram for Internal Model
 name
 [ * standard spreadsheet cell name*  * cell name with number first* ]
 newformula
 name + formula
 size
 width + height
 replacement
 name + value
 update
 value + name
 Internal Model
 * spreadsheet with no user interface *
Refinement of Internal Model
 reference
 * an actual cell within the spreadsheet, irrespective of name *
 extract formula
 * finds the formula of the given cell *
 insert formula
 * the formula of the given cell is set to this, the names of all cells whose values have changed are output *
 get value
 * finds the value of the given cell *
Refinement of extract formula
 program
 * ast representation of a formula *
 lookup name
 * find reference to cell from name *
 lookup formula
 * find the program used by the cell *
 decompile
 * convert program to formula *
Refinement of insert formula
 compile
 * convert formula to program*
 insert program
 * set the program used by given cell *
 workout updates
 * finds all those cells whose values may have changed because of a change of program in a cell *
Refinement of get value
 lookup program
 * finds the program used by a cell *
 interpret
 * evaluates a program to get a value *
Object diagram of Internal Model
 P
 program
 F
 formula
 N
 name
 R
 reference
 S
 * message to start working *
 U
 name
* this cell's value has changed *
 DE
 reference
* either a cell does or does not depend on another *
 I
 image
 RQ
 (program) + (size) + (priority)
* information needed to find a value and return it *
 D
 value
 Formula Line
 * inserts and retrieves programs into cells given the name and formula *
 Compiler
 * converts formula to programs and back *
 Grid
 * converts cell name to references and back *
 Notifier
 * signals cells that they should update their value, detects cycles *
 Cell
 * stores data value (unless it is an image), handles or passes on requests for its data, keeps track of cell
dependency *
 Cache
 * store image values, removes them if there is insufficient memory *
 Interpreter
 * evaluates programs into values *
formula ::= BLANK
 =expr
 ~widget
 number
 text
number ::= (  +  ) nonnegative
nonnegative ::= numeral (numberal)*
numeral ::= 0  1  2  3  4  5  6  7  8  9
text ::= character (character)*
expr ::= primaryexpr (infixoperator primaryexpr)*
 prefixoperator(expr (; expr)*)
primaryexpr ::= number
 text
 (expr)
 cellsref
infixoperator ::= +    *  /
cellsref ::= cellref( ..cellref) (, cellref  ..cellref))*
cellref ::= columnref+rowref
columnref ::= (A  B..C  Z) (A  B..C  Z)*
rowref ::= nonnegative
prefixoperator ::= LOAD  SAVE
 BLUR  ROTATE  ...
 SUM  AVERAGE  MAX  ...
 SEQUENCE
widget ::= NUMBER
 STRING
