[an error occurred while processing this directive]
LSD (just a name, not an acronym) is a semi-structured notation which we use in empirical modelling for making an initial analysis of a domain or application. As an example, some fragments of the LSD for the vehicle cruise control model are given below.
While LSD is a simple notation, it relates to a fundamental, primitive stage in the modeller's conception of the real world problem or subject. As a notation it is still in a process of evolution. It has been usefully applied to many domains in its present (fairly stable) form, but there are no doubt further refinements and revisions to be made in the light of further experience. Suggestions of the problems and limitations of its present form, and for improvements, are welcome.
The main idea is to record what the modeller regards as the relevant features (observables) of the subject to be modelled. In the course of identifying these observables and from experience of the subject domain, the modeller also needs to identify the 'sources of change', the so-called state-changing 'agents' of the system. The observables are then grouped around the agents to which they are related. They are classified according to the way in which they are related to an agent as follows:
These categories are not exclusive (e.g. the variable engineStts is both a handle and an oracle to the agent driver in the fragment below).
Thus an LSD analysis is intended to capture the basic features of the initial conceptualisation (or mental picture) of a subject by a modeller. It is therefore initially a provisional, subjective, personal analysis. It will typically represent one or more viewpoints (via the agents identified) on the subject. An LSD script does not have a formal semantics and is not executable. It embraces a whole range of possible behaviours.
A given LSD analysis may be viewed both as a description of a system (from an external observer's viewpoint), and as an informal program specification. To derive an executable program from an LSD analysis we need to make further assumptions in order to prescribe particular behaviours for the sake of display and animation. Such further assumptions can be made in the context of the ADM (Abstract Definitive Machine); sometimes they can also be made directly in the notations Donald or SCOUT used for visualisation and animation.
The following fragments of the LSD analysis for the vehicle cruise control illustrate all the above features and distinctions made in LSD as it is currently used. A complete LSD analysis for the cruise control can viewed in ~wmb/public/demos/cruise/cruise.lsd.
agent vehicle { ....... state actSpeed : analog /* actual speed */ accel : analog /* acceleration */ windF : analog /* wind resistance force */ ...... oracle brakePos derivate windF = windK * sq(actSpeed) ..... accel = (tracF - brakF - gradF - rollF - windF) / mass actSpeed = integ_wrt_time(accel,0) ....... agent driver { handle engineStts, cruiseStts, cruiseSpeed oracle engineStts, cruiseStts, ... derivate brakePos = user_input(brakePos_Type) .... protocol engineStts == esOff -> engineStts = esOn /* engine on */ .... cruiseStts !== csOff -> cruiseStts = csOff /* switch off cruise control */