Friday, June 23, 2006

Research Summary - Enabling End User Programming

The intention of the research into User Driven Modelling (UDM) and more widely User Driven Programming (UDP) is to enable non-programmers to create software from a user interface that allows them to model a particular problem or scenario. This involves a user entering information visually in the form of a tree diagram. The research involves developing ways of automatically translating this information into program code in a variety of computer languages. This is very important and useful for many employees that have insufficient time to learn programming languages, and for amateurs, home users and open source communities. To achieve this, visual editors are used to create and edit taxonomies to be translated into code. To make this possible, it is also important to examine visualisation, and visualisation techniques to create a human computer interface that allows non-experts to create software.

Translation

So far in my research I have edited the ontology representation of the program to be created in an ontology tool Protégé, and investigated Jena. For each node in the tree there is a value (end nodes), or a mathematical formula that relates that node to other nodes. The ontology created is saved in a database and then read by a Decision Support tool Vanguard Studio. This tool interates through the ontology, and for each tree, and each node in the tree calculates the results of all the formulae. The calculated tree is then displayed with the results and a full visual description of the calculation e.g. Spar Tree.

The results can also be exported into representations using various combinations of HTML, XML, Java, Javascript or Flash as required, for a web page view and could be output in virtually any language by adapting my existing outputter code. Links from my home page demonstrate this. A further transformation can be made to translate the tree based representation of a component e.g. a spar to a diagrammatic view of the design.

program-transformation.org - Program Transformation - - Program-Transformation.Org: The Program Transformation Wiki.

Ontology Editing

There is a strong need for uniting of the approaches of top down ontology definition by a small group of experts with that of the bottom up approach of allowing all users to define the ontology. Software applications are needed that allow users with little software knowledge to edit and update ontologies themselves. The extent to which an organisation allows this depends on its structure but if this is completely prevented or not enabled in the first place, there will be user dissatisfaction resulting from their lack of involvement. It is also likely that progress in defining and editing the ontology would be delayed.

Capturing Information

One possibility that I have begun investigating is the use of XForms based web forms to capture the information required for each node in a tree. The XForms could be made to look like a web page, spreadsheet, or whatever tool the user is most familiar with. This could be used as a way to capture the information from the users for an ontology.

Some useful links for this are

FormFaces - http://www.formfaces.com/main.html - XForm - XML Form editing tool Tool.
FormsPlayer - http://www.formsplayer.com/content/index.html - XForm - XML Form editing tool Tool.
Orbeon - http://www.orbeon.com/ - Orbeon XForms Presentation Server.


Final Research - Putting it all together

Further possibilities for automation of the User-Driven interface involve the use of additional components to ontology tools, that would allow for integration and higher level manipulation of the ontology, translation software, calculation software, and the visual interface. This would allow me to concentrate more on the creation of the user interface for end-users, and the software architecture required for this rather than on the translation software itself, and enable me to create a fully finished User-Driven Programming application environment.

Some useful links for this are

Genral Electric ACUITy application - presentation.
Genral Electric ACUITy application - paper.

Metamomix - m3t4 and Metamomix Wiki

Thursday, June 15, 2006

End User Programming

The graph below shows that users, given the right tools to program with, would be by far the largest group of program developers. As well as users there are two intermediate groups, and a small group of professional programmers.



Source - Scaffidi et al. [2005] based on data from US bureau of Labour Statistics.

These statistics were also explained and referred to in Myers et al. [2006].

A presentation of this is available at http://www.cs.cmu.edu/~bam/papers/EUPchi2006overviewColor.pdf.

Software development is time consuming and error prone because of the need to learn computer languages. If people could instruct a computer without this requirement they could concentrate all their effort on the problem to be solved. I call this User Driven Programming (UDP), I use the term User Driven Modelling (UDM) to explain the application of User Driven Programming to model development. My research and those of others in the field aims to create software that enables people to program using visual metaphors. Users enter information in a diagram, which for these examples is tree based. Tree based visualisation is often a good way of representing information structures and/or program code structures. The software developed as part of this research translates this human readable representation into computer languages. The tree also shows the flow of information. This technique is a kind of End User Programming, research in this area is undertaken by the EUSES (End Users Shaping Effective Software) research collaboration in the USA http://eusesconsortium.org/ and Network of Excellence on End User Development in Europe http://giove.cnuce.cnr.it/eud-net.htm. Fabio Paternò has investigated this subject as part of the End User Development in Europe network - Paternò [2005] http://giove.cnuce.cnr.it/cameleon/pdf/last-model-based%20approaches-IwC.pdf..

The diagram below illustrates the problem to be solved, this is the need to translate between human and computer. It also demonstrates the complexity of the problem that needs solving. This is the complexity that is present in most software systems. Complexity varies according to the needs of the application. The complexity of calculation increases as we move from the domains of knowledge management through to decision support and simulation. The increase in complexity is of calculation in this direction from knowledge management to decision support to simulation, and of information in the other direction from simulation to decision support to knowledge management. Kurt Cagle explains this complexity problem well on his blog at http://www.understandingxml.com/.



User involvement is important in the development of software but a domain expert does not necessarily possess expertise in software development, and a software developer cannot have expertise in every domain to which software might apply. So it is important to make it possible for software to be created, using methods that are as close as possible to that which the domain expert normally uses. The proportion of domain experts in a particular domain (aerospace engineering) for example who can develop their own programs is fairly low, but the proportion that are computer literate in the everyday use of computers is much higher. If this computer literacy is harnessed to allow the domain experts to develop and share models, the productivity for software development will be increased and the proportion of misunderstandings between domain experts and developers reduced. The domain experts can then explore a problem they are trying to solve and produce code to solve it. The role of developers would then become more that of a mentor and enabler rather than someone who has to translate all the ideas of experts into code themselves. Other developers may work at providing better translation software for the experts.

The research I have undertaken in this is available on My Home Page. There are many examples, papers and explanations on my site. I will write a summary of the research in my next posts.

There is a conference in Brighton - UK this year that is relevant to this research -

IEEE Symposium on Visual Languages and Human-Centric Computing - http://www.cmis.brighton.ac.uk/vlhcc/ - 2006 - Brighton, UK.

Kevin Morrill's Blog outlines ideas for functionality users might want, if they were enabled to create a program to provide it -

References

Myers, B., Ko, A., Burnett M. (2006). Invited Research Overview: End-User Programming Extended Abstracts, CHI'2006: pp. 75-80, Montreal, Canada.

Paternò, F. (2005) Model-based tools for pervasive usability. Interacting with Computers 17 (3), 291-315.

Scaffidi, C., Shaw, M., Myers, B. (2005). Estimating the Numbers of End Users and End User Programmers, IEEE Symposium on Visual Languages and Human-Centric Computing, (VL/HCC'05): 207-214 Dallas, Texas.