Skip to main content Skip to navigation

Lab 4: Construal comprehension groundwork

Though the overall exercise is teamwork, it is important that each individual MSc student develops the basic skills required to contribute. On that basis, you should either work independently or (preferably) team up with an MEng student and work as a pair. Though MEng students will not be doing this exercise for credit, they are encouraged to engage with the theme, as analysing the Pjawns construals can give valuable insight into how EM can in principle be deployed in software development and what challenges need to be addressed where current tools are concerned. This is relevant even for students who are proposing to focus on working with JS-EDEN.

Exercise 0: Read through the assignment carefully and check that you understand what is expected of the team. For the present, there is no need to focus on any particular aspect of the agenda of "five key issues" set out in the specification. At a later stage, it will be helpful to discuss this agenda as a team with a view to focusing on different aspects.

Exercise 1: Try playing around informally with the two construals pjawnsMartin2003 and pjawnsBowen2003, and read the rules of Pjawns. You should first check that you can do this in conjunction with the EMPE, as packaged within the subdirectories prespjawnsMartin2003 and prespjawnsBowen2003 within the UsingEMPE directory introduced in Labs 1 and 2:

cd /dcs/emp/empublic/teaching/cs405-2011/UsingEMPE/prespjawnsMartin2003/
tkeden run.eden
Running the construals in this way makes the history of interaction very difficult to understand. For this reason, it is better to run the construals directly within the subdirectories pjawnsMartin2003 and pjawnsBowen2003 within the UsingEMPE directory:
cd /dcs/emp/empublic/teaching/cs405-2011/UsingEMPE/prespjawnsMartin2003/pjawnsMartin2003/
tkeden run.eden

The following paragraph is extracted from the assignment specification:

"In order to tackle the comprehension exercise, you will first need to develop a basic understanding of the principal EDEN notations (Eden, Scout and Donald) covered in the forthcoming EM labs and lectures. You will also be given additional documentation, guidance and specific tools to assist you in your task. The first of these is the "symbol info" tool that will help you to extract and record observables in the given models (as introduced in Lab 2B). [Note that in order to use the symbol info tool to record observables and dependencies most conveniently you will need to be working in a directory in which you have write permission.] Since not all the features you will encounter in the models are covered explicitly in the lab sessions, and some are not prominently documented, you should keep in close touch with the module tutors and organisers by contacting them in person or posting your questions on the module Forum."

Exercises 2 and 3 address the concerns highlighted in bold:

Exercise 2: In parallel, carry out the following exercises ...

Exercise 2A: Check out the CS405 lecture slides on EDEN, Donald and Scout. (These will be briefly reviewed prior to the lab.) Make sure that

  • you are familiar with the File Open, File Execute, Help, View history and View ... definitions mechanisms in EDEN.
  • you understand the basic mechanisms by which you can interrogate observables and write out their values, and that you know how Donald and Scout observables are translated into Eden observables.
  • you are aware of the content of the EDEN Handbook and the Notes on Definitive Notations.
  • you appreciate how definitions, functions and actions are intended to be used in EDEN.
  • you know how to recover the histories of your most recent interactions with EDEN as recorded in .tkeden-history files.

Exercise 2B: Get more familiarity with Eden, Donald and Scout by looking at the first part of Lab 4 from 2010-11. This involves making a copy of the roomviewerYung1991 construal from the EM project archive and interpreting some files of definitions by executing the definitions in them step-by-step.

When you have experimented with your personal copy of roomviewerYung1991 in this way:

Exercise 3: Introduce the "symbol info" tool to support your exploration of the model. You can do this by navigating to the UsingEMPE directory (recall that you made a local copy in Lab 2B - and be sure to update this with the most recent version of /dcs/emp/empublic/teaching/cs405-2011/UsingEMPE) using the File menu on the EDEN Input Window and loading the file run.eden into the interpreter. With the symbol info tool loaded into EDEN, return to your local "roomviewer" directory, and use the tool to make a small inventory of observables from the roomviewerYung1991 construal, following the guidance on "identifying observables" in the assignment specification.

An alternative to this rather tricky way in which to load the symbol info tool manually is to carry out the same process automatically by executing the following commands:

curr_dir = cwd();
syminfo_dir = "/dcs/emp/empublic/teaching/cs405-2011/UsingEMPE/syminfoBeynon2011/";
## you can also specify the absolute address of syminfoBeynon2011 within your local UsingEMPE directory on the RHS cd(syminfo_dir); include("run.eden"); cd(curr_dir);

To keep a record of the information you find, you can load the EDEN code in two files outputdefns.e and reclistobslistinfoobs.e within the subdirectory syminfoBeynon2011. A simple way to do this is to open these files in a text editor. By cutting-and-pasting the content of the files outputdefns.e and reclistobslistinfoobs.e into the Input Window and pressing Accept, you can respectively generate:

  • the extract from the script comprising all definitions of observables currently recorded in the symbol info tool (this will be a file called somedefns.eden).
  • the current values of the listobs and listinfoobs observables (this will be a file called syminfodefns.eden).
The manual process of loading these two files can also be carried out automatically, via the commands:
syminfo_dir = "/dcs/emp/empublic/teaching/cs405-2011/UsingEMPE/syminfoBeynon2011/";
The strategy of cutting-and-pasting EDEN code into the Input Window via a text editor is useful with small files that contain context-independent code (i.e. that do not refer to files in the current working directory etc). Indeed, if you are running in a context where GEL is already loaded (e.g. in the presence of the EMPE), including the file symbolinfo.e in this manner is the most convenient way in which to load the symbol info tool itself.

Exercise 4: Follow the link in the assignment specification to the DMT tool dmtWong2003. Download the java file dmt072.jar and execute this via:

java - jar dmt072.jar

Select the 'Script' tab from the menu in the DMT, and select the 'Input window' option. Cut-and-paste the contents of the file somedefns.eden generated in Exercise 4 into this window to obtain a graph representing the dependencies between observables in the script. Rearrange the nodes in the graph manually to achieve the most pleasing / intelligible layout.

When you have successfully completed Exercises 3 and 4:

Exercise 5: Repeat the processes carried out in Exercises 3 and 4 with one of the Pjawns construals which can either be retrieved from the EM projects archive or found within your UsingEMPE directory.

Exercises 1-5 cover most of the technical issues to be addressed for the construal comprehension assignment. These exercises help you to interact with the construals freely in ways that are not scaffolded by an existing presentation. For the assignment, you will also need to be able to make your own individual presentations. For this purpose, you should first study the notes on Using the Empirical Modelling Presentation Environment (EMPE)in the assignment specification, then check that you understand:

  • how to edit and add slides to a presentation;
  • how to store and restore a presentation you have made;
  • how to use the <script> and <eden> tags.

(More background on the GEL environment used to construct the EMPE will be given in the introduction to the lab should you wish to venture anything more ambitious.)