Seminar F4: Future directions and projects

Research areas: Programming Paradigms, Applications, Foundations, SE

Slide for different areas + James' quote + Brodner quote
 

1. Software Engineering
  Concerns to connect with formal specification. Connections with Z, CSP, CCS etc still hazily understood. Also origins of LSD in SDL. Would be good to evaluate in comparison with Lotos, SDL and Estelle. Other work related in the real-time and concurrency area: French school, StateCharts, UNITY, (Numerical) Petri Nets. Relationship to protocol specification and testing.

2. Programming Paradigms


Relevance to complexity theory, where there is a significant lack of appropriate ways to measure performance formally. Want to count abstract operations generally, so declarative languages are useless here, but procedural languages do not necessarily have the right expressive power. Not enough to construct abstract data types and calculate numbers of abstract operations. Of particular interest are complexity measures that concern maintenance of dynamic data structures. Possible interest in exploring definitive models in that area.

Abstractions to be more fully analysed and exploited

Higher-order definitions (EG UK'96 + Gehring)

Data structures (cf heapsort, ARCA, CADNO + R I Cartwright)

Examples of interesting challenges for definitive programming:

1) write an LR parser in such a way that the finite state machine associated with the grammar is specified by a definitive script.

2) write a text editor (developing Edward Yung's Unconventional Text Editor, the first EDEN program to be devised)

3) write definitive implementations of definitive software tools

3. AI and Applications


4. Foundations

How to express "all"! notions of CS in terms of semantics we are developing for LSD and definitive notations. Examples of concepts we can deal with to some extent:

agent, process, object, observation, experiment, program, execution.

More work needed on synchronisation, data types (specify the stack etc), time, constraints, hypermedia ...

How to represent models? Jaratsri's lines, chcruise etc
 

Potential MSc projects involving parallelism:

1. Investigate a computer architecture based on a definitive paradigm

2. Enhancement of the ADM

3. Parallel implementation of EDEN

4. Parallel implementation of ADM

5. Comparative study of concurrent systems modelling techniques

e.g. SDL vs Agent-oriented modelling, Statecharts vs LSD

6. Extension of LSD design:

parametrisation, roles and subagents, agent references

7. Code generation for parallel machine from definitive specification

8. Definitive implementation of EDEN

9. From requirements to formal specification of reactive systems

10. Formal association of requirements and testing

11. Applications in scientific visualisation with parallelism (cf GRN and Valery Adzhiev)

12. A definitive notation to specify synchronisation of events

13. Communications network simulation (BT)

14. Development of an environment for modelling reactive systems

15. Comprehensive formal analysis of a small LSD specification

16. Elaboration of LSD concepts in respect of

intention, obligation of agents

agents, roles, objects, processes etc

17. Detailed analysis and modelling of railway scenarios, such as in- depth study of one or more historic railway accidents

18. Investigate relevance of empirical modelling techniques to protocol analysis and specification (e.g. alternating bit protocol)

19. Physically-based modelling (SBR)

20. LSD specification of a specific machine architecture e.g. Parsytec or Acorn RiscPC

21. Applications to modelling Intelligent Agent interaction (ML)
 

Not so much directly parallel in orientation:

Donald with objects

ARCA revisited

Abstract definitive programming
 

Definitive Methods for Programming and Parallelism

How to approach parallelism?

1. Adaptation to existing parallel machines

"Powerful" parallel architectures exist, but who can program them?

Hardware technology outstrips software technology?

Will future developments be hardware or software driven?

Definitive approach:

So far primarily model the application, but could model the machine

[no clear distinction between modelling devices and system context]

Examples of this in a small way:

cf tank.e / tank.s, SCOUT for OpenWindows, Peco Rail, Systolic Arrays

SAND: systolic array definitive notation devised by Sockett in 1991

How about the Parsytec??

2. Translation techniques from a definitive specification
Interface with existing machines via an appropriate "high-level" language

Generate efficient code in OCCAM from high-level specification

Is this really just strategy 1 in disguise?

Definitive approach:
Use definitive methods as a requirements capture agent-oriented rather than object-oriented analysis technique.

Ingredients:

ATC moves the plane vs low-level divisible protocol

Could treat as preliminary phase in OOD for distributed machine

definitive state-transition models to Petri nets, CCS (Paul Ness)

[ small-scale case studies, as explored on Concurrency WorkBench ]
 

Possibly related projects

translation from EDEN to procedural language

[ most successful effort yet is to procedural EDEN ]

translation from ADM to procedural language

admira: a definitive miranda

3. Architecture software-driven by (generalised/adapted) ADM model
Presume definitive script good for parallelism in following respects:
VN bottleneck connected with need when updating procedural vars to update all the dependent variables ?? ... how about having background processing in memory maintaining updates, shipping only key actions from processor to memory? Obligatory update on call-by-need. Possibility of clever maintenance of update by virtual calls for values.

Possibly related project

definitive interpretation of definitive interpreters