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

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

internal model context diagram
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

internal model refinement diagram
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

extract formula refinement diagram
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

insert formula refinement diagram
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

getvalue refinement diagram
lookup program
* finds the program used by a cell *
interpret
* evaluates a program to get a value *

Object diagram of Internal Model

internal model object diagram
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 *

Spreadsheet Formula Language

formula ::= BLANK
          | =expr
          | ~widget
          | number
          | text

number ::= (  | + | -) non-negative

non-negative ::= numeral (numberal)*

numeral ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

text ::= character (character)*

expr ::= primary-expr (infix-operator primary-expr)*
       | prefix-operator(expr (; expr)*)

primary-expr ::= number
               | text
               | (expr)
               | cells-ref

infix-operator ::= + | - | * | /

cells-ref ::= cell-ref(| ..cell-ref) (, cell-ref | ..cell-ref))*

cell-ref ::= column-ref+row-ref

column-ref ::= (A | B..C | Z) (A | B..C | Z)*

row-ref ::= non-negative

prefix-operator ::= LOAD | SAVE
                  | BLUR | ROTATE | ...
                  | SUM | AVERAGE | MAX | ...
                  | SEQUENCE

widget ::= NUMBER
         | STRING