Tuesday, September 19, 2006

PhD summary

I thought it would be useful to put a summary of my PhD on my blog, and this can help anyone visiting to know whether this research is of interest to them. As well as looking at my blog, anyone who is interested can look at the explanations, examples, and publications I have on my web site at http://www.cems.uwe.ac.uk/~phale/.

This thesis outlines the technique of user driven modelling. The idea behind this is that software users (in this case engineers) can create models that perform and visualise calculations (cost of manufacture and the reasons behind this cost). The advantage of this is that the engineers can share and adjust models without needing to call upon a software developer to create the model. The time saved can give engineers the chance to cost designs early. This could allow the design to be changed before most of the future costs are incurred.

The thesis explains how the above aims can be achieved, in order to enable decision support during product development, whilst minimising dependence on specialist software and detailed programming effort. The basis of this is an ontology that can be visualised and edited in tree form.

The early part of the PhD covers research of others from the 1960s to present day in End User Computing. This involves making it easier for those who aren't professional programmers to instruct computers. I'm particularly interested in visualisation of information, and allowing people to interact with this visualisation directly. This can allow the person to instruct the computer to perform calculations, and see the result without needing to write computer code.

I explore research into the semantic web which has been developed from the work of Tim Berners-Lee - http://www.w3.org/People/Berners-Lee/. I examine and demonstrate how this can be applied to decision support and modelling for engineers. I also examine how the semantic web technology could be applied more widely to modelling, and end user programming.

Examples demonstrate the application of meta-programming to the problem of program development. Meta programming is the writing of programs that write or manipulate other programs (or themselves) as their data. The idea behind my use of this technique is that instead of writing programs to do a task a domain expert needs the program for, the meta program developer creates an environment which all domain experts, in this and similar fields, can use to create their own solutions. The developer then only needs to maintain and improve this programming environment, and can concentrate on this task; the domain expert can concentrate on solving the problem at hand without having to ask the developer to create the code on his or her behalf. This can prevent problems of misunderstanding, delay, and expense that often result from communication of difficult concepts between people who are experts in different areas (domain expert and programming expert).

The examples are applied to the problem of assessing cost at an early stage in the design. To achieve this I examined the problems that prevented software products being effectively used to reduce cost at this early stage. These problems were lack of interoperability of software models created, and lack of structure for sharing and re-using models. A further problem was the difficulty found by engineers in attempting to understand and interpret models (mainly spreadsheets) created by their colleagues. The solution explored was to build into the software capabilities to save in neutral formats, to share and re-use models, and visualisation and interactivity, to ease model building and understanding.

It is very important to be able to establish an estimate of the cost of early designs, as failure to do so results in most of the cost being designed into the product at an early stage. By the later stages most of the costs are built in and it is too late to make major cost reductions. When engineering organisations design and manufacture products they categorise this process into stages. From the early concept stage to the final design stage and manufacture, software is used to aid and record the process. It is common for different software to be used at different stages. If the software applications do not use open standards languages to communicate between these stages and between the various teams involved, information gets lost and not re-used as the chain of information breaks. An open standard language is a language whose structure and syntax has been agreed by the World Wide Web consortium (W3C), http://www.w3.org/. The detail and accuracy of the information that can be provided to define the product varies along this chain. The best opportunities for cost reduction are early in the product life cycle, so it is important to gather together any information that is available on that component and any similar products. It is important that users who enter information about a design concept be guided by historical values where possible, and guidance information such as explanations, diagrams, and examples. The use of statistical modelling is necessary to ensure a cost can be calculated at this early stage when there is a high level of uncertainty.

The User-Driven Programming approach and its application to the problem above is explained using examples ranging from the visualisation and calculation of the area of a rectangle, to the modelling and costing of complex processes, and the visualisation of component design.

No comments: