An Approach to Developing Extensible Application Composition Environments for End Users
MetadataShow full item record
Most software is now developed by professional programmers, and the millions of users of “shrink-wrapped” applications never meet the developers. The skills of professional programmers are obviously required in many software development projects. However, there are also reasons, ranging from practical and economical to philosophical and educational, why people without this background may want to develop their own applications or tailor applications to their own use. The general purpose programming languages and development tools used by professional programmers are not suitable for people outside this profession. Instead, people outside this profession need more high-level tools that allow them to express solutions using domain and task specific terms. Despite the accumulated experience from such environments within the end-user programming community, creating a new application development environment for a domain or task remains a large development task, and can be too time-consuming and costly to be found worthwhile. This thesis presents an approach to reducing the effort needed in developing extensible application composition environments for end users. We use the term “end user” in the same way as the end-user programming community, to denote a person who wants to develop an application or tailor an application to a specific use, without needing professional programming skills. The work in the thesis was initiated based on experience from development of proof-of-concept implementations of such environments in two European research projects. With this background, a set of user and developer roles are identified and organised into a value chain for development of such environments. Further, the approach combines the research areas of component-based software engineering and end-user programming to propose an overall architecture, component frameworks and tools suitable to support development of such environments. The validity of the results is established through partial prototyping of the frameworks and tools, combined with qualitative analyses of how these can be fully implemented and of their suitability for their intended purpose. The main contributions of this thesis are: • a value chain for development of application composition environments, with identification and description of tasks of each of the identified developer roles; • an overall architecture for developing extensible application composition environments based on component frameworks; • architecture of two component frameworks defining mechanisms and rules of behaviour for components ensuring extensibility at runtime and edit time; • definition and description of a set of UML stereotypes for modelling domain frameworks based on the component frameworks, and a mapping to Java/JavaBeans allowing a code generator tool to produce part of the implementation; • definition and description of tools which use the model of a domain framework as input and partially transform the work of creating composition environments and editors for domain objects from a programming task to a configuration task.