This blog is about my PhD research (now finished) at University of the West of England into User Driven Modelling. This is to make it possible for people who are not programmers to create software. I create software that converts visual trees into computer code. My web site is http://www.cems.uwe.ac.uk/~phale/. I'm continuing this research and the blog. My PhD is at http://eprints.uwe.ac.uk/17918/ and a journal paper at http://eprints.uwe.ac.uk/17817/.
Tuesday, August 12, 2008
Meta-Programming as a Model Creation Technique
The idea behind use of meta-programming in this thesis 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. Dmitriev (2006) advocates reducing dependency on languages and environments by enabling programmers to develop their own specific languages for solving each domain problem:
"If we are going to make creating languages easy, we need to separate the representation and storage of the program from the program itself. We should store programs directly as a structured graph, since this allows us to make any extensions we like to the language. Sometimes, we wouldn't even need to consider text storage at all. A good example of this today is an Excel spreadsheet. Ninety-nine percent of people don't need to deal with the stored format at all, and there are always import and export features when the issue comes up. The only real reason we use text today is because we don't have any better editors than text editors. But we can change this... Text editors... don't know how to work with the underlying graph structure of programs. But with the right tools, the editor could work directly with the graph structure, and give us freedom to use any visual representation we like in the editor. We could render the program as text, tables, diagrams, trees, or anything else. We could even use different representations for different purposes, e.g. a graphical representation for viewing, and a textual representation for editing. We could use domain specific representations for different parts of the code, e.g. graphical math symbols for math formulas, graphic charts for charts, rows and columns for spreadsheets, etc. We could use the most appropriate representation for the problem domain, which might be text, but is not limited to text. The best representation depends on how we think about the problem domain. This flexibility of representation would also enable us to make our editors more powerful than ever, since different representations could have specialized ways to edit them."
This provides a way to create programs that create programs so enabling the 3 step translation process used in this thesis, and this enables translations between people, between systems, and between languages. This could enable those who are not currently programmers to create models at their domain level using domain specific systems created for them by programmers. The mechanisms for this are recursive translation of the tree/graph code representation to multiple models and languages, where necessary aided by user/modeller choices.
References
Dmitriev, S., 2007. Language Oriented Programming: The Next Programming Paradigm - http://www.onboard.jetbrains.com/is1/articles/04/10/lop/.
Fischer, G., 2007. 'Meta-Design: A Conceptual Framework for End-User Software Engineering' http://drops.dagstuhl.de/opus/frontdoor.php?source_opus=1087 - Dagstuhl Seminar Proceedings.
Wikipedia (2008) Metaprogramming - http://en.wikipedia.org/wiki/Metaprogramming.
More information is available at - http://www.cems.uwe.ac.uk/amrc/seeds/softwareengineering.htm#MetaProgramming.
Friday, August 17, 2007
User-Driven Model-Driven Programming
User Driven Model Driven Programming
Ways my research is pursued in order to make User Driven Programming possible are :-
1 Semantic Web and Web 2.0 approach to enabling User Generated Content - http://www.cems.uwe.ac.uk/amrc/seeds/Ajax/ajax.htm.
2 User Centric Extensions to UML (Unified Modelling Language) e.g. http://www.himalia.net/ this approach also ventures into 1 and 3).
3 Visual Programming Extensions to spreadsheet type formulae based modelling, an example is http://wiki.vanguardsw.com/ enabled using approach 1.
This research links with the approach of enabling User Generated Content and providing a Visual Programming System. While my thesis concentrates mainly on 1 and 3, 2 is just as important and is referenced.
So there is considerable overlap between these three approaches and they must be integrated within interdisciplinary research to enable user driven programming. One approach to this is a Semantic User Interface, this is explained here -http://www.himalia.net/docs_semanticUI.html. This can enable Drag and Drop programming http://www.cems.uwe.ac.uk/amrc/seeds/Ajax/ajax.htm#DragandDropProgramming that combines the benefits of all three research approaches. The important factor is to connect the user interface with the underlying code, so the two share the same structure and users can properly see how their actions can change the underlying code.
The next step is to make possible collaborative user-driven programming by sharing the visualisation of models across computer networks and between collaborators. In order to make user driven modelling and programming possible, it is essential that a communication mechanism is established, which allows users to generate changes and receive changes generated by the modelling system.
My pages on subjects related to this are -
End-User Programming - http://www.cems.uwe.ac.uk/amrc/seeds/EndUserProgramming.htm.
Language and Tool Mapping - http://www.cems.uwe.ac.uk/~phale/#LanguageToolMapping.
Model-Driven Programming -http://www.cems.uwe.ac.uk/amrc/seeds/softwareengineering.htmModelDrivenProgramming.
Modelling and Semantic Web -http://www.cems.uwe.ac.uk/amrc/seeds/ModellingSemanticWeb.htm.
Semantic Web - http://www.cems.uwe.ac.uk/amrc/seeds/PeterHale/RDF/RDF.htm.
Wednesday, March 07, 2007
End User Modelling Tools
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.
In my research I examined the role of UML (Unified Modeling Language). However there are important gaps in the functionality of UML tools for user centred design. Palanque and Bastide (2003) identify these gaps "For the team of methodologists (Rumbaugh, Jacobson, Booch) that shaped the UML, User Centred Design was not a central concern." These gaps are of even greater importance when attempting to make it possible for people who are not programmers to create software. UML tools could assist software developers in creating a modelling environment suitable for domain experts to use to solve their problems. To achieve this would require a major change in UML tools to enable modelling of user interaction as the core concern. Enabling users themselves to create software using UML type tools would require development of a new type of UML tool specifically designed for ordinary users. This would be compact and simple, but provide enough capabilities to ensure users' designs are robust. This would also fill a gap left by engineering and scientific modelling tools which are powerful but do not have collaboration, communication, and ease of use as central concerns.
Palanque, P., Bastide R., 2003. UML for Interactive Systems: What is Missing INTERACT 2003 Closing the Gaps: Software Engineering and Human-Computer Interaction Zürich, Switzerland - http://www.se-hci.org/bridging/interact/p96-99.pdf.
My Research - http://www.cems.uwe.ac.uk/~phale/.
End User Programming - http://www.cems.uwe.ac.uk/amrc/seeds/EndUserProgramming.htm.