XSED – XML-based Description of Status–Event Components and Systems

Alan Dix1, Jair Leite2, Adrian Friday1

1 Computing Department, InfoLab21,
Lancaster University, Lancaster, UK


2 Departamento de Informática e Matemática Aplicada,
Universidade Federal do Rio Grande do Norte,
Lagoa Nova, 59078-970, Natal, RN, Brazil

< alan on the web > < jair on the web > < adrian on the web >

Paper at Engineering Interactive Systems 2007, 22-24 March 2007, Salamanca, Spain.
Proceedings published as Springer LNCS 4940 (December 2008) Volume DOI=10.1007/978-3-540-92698-6


Most user interfaces and ubiquitous systems are built around event-based paradigms.  Previous work has argued that interfaces, especially those heavily depending on context or continuous data from sensors, should also give attention to status phenomena – that is continuously available signals and state.  Focusing on both status and event phenomena has advantages in terms of adequacy of description and efficiency of execution.  This paper describes a collection of XML-based specification notations (called XSED) for describing, implementing and optimising systems that take account of this dual status–event nature of the real world. These notations cover individual components, system configuration, and separated temporal annotations. Our work also presents a implementation to generate Status-Event Components that can run in a stand-alone test environment. They can also be wrapped into a Java Bean to interoperate with other software infrastructure, particularly the ECT platform.

keywords: status–event analysis, reflective dialogue notation, ubiquitous computing infrastructure, XML, temporal properties 

Full reference:
A. Dix, J. Leite, and A. Friday (2007). XSED – XML-based Description of Status–Event Components and Systems. In Proceedings of Engineering Interactive Systems 2007, IFIP WG2.7/13.4 Conference, Salamanca, March 22-24, 2007, LNCS 4940, pp. 210-226.
see also:
more on status-event analysis

Examples of XML Specifications

Listing 1.  XMLSE – Status–Status Mapping

     <status name="alisonInRoom" type="boolean"/>
     <status name="brianInRoom" type="boolean"/>
     <status name=" alisonWithBrian" type="boolean"/>
     <status name="nosInRoom" type="int"/>
    <state id="s1" start="true"><!-- only state -->
     <status-out name="alisonWithBrian" value="alisonInRoom&&brianInRoom"/>
     <status-out name="nosInRoom" value="alisonInRoom + brianInRoom"/>
           <!-- using JavaScript type coercion true/false to 1/0 -->

Listing 2.  XMLSE – Converting Events to Status

       <event name="alisonEnters" type="void"/>
       <event name="alisonLeaves" type="void"/>
       <status name="alisonInRoom" type="boolean"/>
     <state id="s1" start="true"><!-- initially Alison not in the room -->
       <status-out name="alisonInRoom" value="false"/>
     <state id="s2">
       <status-out name="alisonInRoom" value="true"/>
     <transition from-state="s1" to-state="s2">
       <event-in name="alisonEnters"/>
     <transition from-state="s2" to-state="s1">
       <event-in name="alisonLeaves"/>

Listing 3.  Configuration file

     <export name="world" />
       <comp name="world">
           <status name="y" type="int" />
           <event name="x" type="void" />
       <comp name="A">
           <event name="stranger_enters" type="void" />
           <status name="ade_in_room" type="boolean" />
           <event name="meeting" type="void"/>
           <status name="nos_in_room" type="int" />
       ... more components ...
       <status id="3562">
          <from name="A" port="nos_in_room" />
          <to name="world" port="y" />
       <event id="32">
          <from name="A" port="meeting" />
          <to name="B" port="b" />
       ... more links ...

Listing 4.  Annotation file

     <status-link id="60">
     <event-link id="31"> <time>10</time> <last>true</last> </event-link>
     <sync> <status-link id="60" /> <status-link id="61" /> </sync>





Alan Dix 15/2/2007