Copyright © 2007-2013


Special Language Features

Grids

Grids are tabular structures which are shared by all ProSpecs programs. This allows concurrently executing programs to exchange information (messages are another way, described later).

Grid values set up by one program (or concurrently executing programs) are persistent after their execution ends, so subsequent program executions can make use of grid values set up by the earlier programs.

Grid values are not persistent between runs of the ProSpecs application. Facilities are provided for the ProSpecs user to save a selected grid's values and to load a previously saved grid values file.

The ProSpecs user can clear selected grid values and select the number of columns in a selected grid and the ProSpecs language provides facilities for a program to do these same things.

Messages

Messages are structured collections of data exchanged between concurrently executing programs and read from or written to files. ProSpecs provides three simple file formats (Big Endian, Little Endian and Comma Separated Variable) and some environment-specific  recording formats.

Environment specific sets are allowed, each with its own message catalogue. The field type names fused by a message set are mapped onto internal ProSpecs field types, enabling consistent format interpretation even though the same type name may be used for different purposes in different environments (e.g. integer might refer to a 16 bit value in one and to a 32 bit value in another).

New mappings of field type name to internal types and new message definitions can be added to any message set and new message sets can be added, each with its own field type name mappings and message catalogue.

Multiple files of messages can be read, one after another or merged into a single message stream in time order. In either case multiple passes through the stream of messages are allowed and new messages can be created and merged into the input stream in time order.

User programs can modify input message field values and create complete new messages for  merging at the correct time into the input message stream. They can also select any message from the input message stream for output to one or more output message files.

Databases

ProSpecs implements an embedded Network Database System. It supports a flexible capability for expression and retrieval of facts in the form of n-tuples like “Fighter is a military aircraft”, “Fighter carries weapons”, “Destroyer is a military ship”, “Destroyer carries weapons”

It doesn't demand data entry according to a rigid schema and retrieval allows queries involving variables, like “?what carries weapons” (where ?what denotes a variable) and the query successively returns Fighter and Destroyer in the variable ?what. Its retrieval facilities make it possible to locate all references to a given term anywhere in the database.

For example, using the repetitive block statement for and the built-in reference database function, with the facts in the above example, the query for ?x = carries reference (?y) first returns a pointer to the 2-tuple Fighter carries in the variable ?x and to the object Fighter in the variable ?y. Next it returns a pointer to the 2-tuple Destroyer carries in the variable ?x and to the object Destroyer in the variable ?y.

Taken together the built-in database functions and repetitive block statements deliver an ability to make create, modify, retrieve and delete a wide range of specification forms, check for and  report anomalies and automate safe transition into an agreed, more formal form of expression.

ProSpecs databases are case sensitive and can distinguish between numbers and strings (and strings holding numeric forms of representation.

Diagrams

ProSpecs drawing facilities permit creation, saving and reading of diagrams and stylised maps to illustrate things like specification hierarchies and data flows and display of progress during inter-system simulations. Up to ten built-in diagram windows can be used to create and modify simple open and closed shapes and text as well as compound paths and curves and import of bitmaps.

There are facilities for controlling fill, line width and format (dotted, dashed, etc.), text font and colour as defaults or on a per-shape basis. There are also facilities for rotating, moving and modifying shapes selecting a viewport onto the diagram, selecting the part of the diagram to display to the user.

Simulation

Message handling and concurrent program execution facilities allow multiple, independently produced programs to simulate proposed new or changed systems which interact by exchanging messages. A simulation is capable of using random variations in the data it manages, while making it possible in subsequent re-runs to reproduce exactly the same behaviour.

There is a single time-ordered stream of input messages (possibly merged from multiple files and messages generated by the running programs) and each currently executing program processes the latest message in the stream before the next message becomes available. This proceeds until all messages have been processed and all programs have terminated.

Trials Support

Message handling and concurrent execution allow preparation of message streams for input to  real-time simulators during system acceptance trials. It also allows analysis of recorded message streams from trials for problems or to find the cause of system faults and failures.

Such testing programs can be produced by numerous independently funded teams – e.g. a customer support team, a quality control authority, a developer bench testing team. Any or all of the  programs thus produced can be run separately or concurrently on the same trials recordings.

When a problem is found it may also be possible to write more directed analysis programs to operate on the same recordings to isolate the cause and/or to simulate possible operational changes to avoid or remove the problem occurrence.

top of page