## 2 Related Works
### Web Service Composition and Mashups Development  
The service composition field is a concerned with connecting atomic, self-contained, modular services into a composite service, and creating tools and languages that facilitate business applications' integration [36]. Typically, this process is very complex and daunting [36]. Service composition includes four key phases; namely, definition, selection, deployment, and execution [37]. The definition phase creates the abstract composition process model, which specifies the requirements, including activities, data flow, and control flow dependencies. The selection phase involves choosing the appropriate services to satisfy the requirements of each activity of the composition. The deployment phase involves deploying the composite service to enable end-users to utilize the service functionalities. The execution phase involves the execution of the composite service instance. Owing to the complexity of traditional, syntax-based service composition languages [2; 36], e.g., BPML, BPEL4 WS, and WSCDL, research efforts have transformed these languages into visual languages and representations that are more user-friendly, easier to use, and less error-prone [38; 39]. However, such languages are still targeted at experienced software developers [26; 40]. To make service composition accessible to non-programmers, graphical tools, e.g., ServFace Builder [41], were developed based on Human Computer Interaction concepts, such as \"direct manipulation of objects\" and \"what you see is what you get,\" whereby end-users specify programmable actions and behaviour in a purely graphical manner without going into arcane syntax. This approach is referred to as visual programming. In SOA, composition at the presentation layer is gaining momentum, where composite applications are integrated using merely their user interfaces [42]. The importance and benefits of SOA for software development are well recognized [1]. However, efforts to simplify its use for a wider audience, especially among non-programmers, are still timid. [PERSON] et al. [11; 34] explored, through a set of user studies, the issues non-programmers face when performing service composition tasks. Major issues reported included: comprehending and specifying dataflow connections, linking between design time actions and runtime results, and understanding technical jargon. [PERSON] et al. [17] conducted a contextual enquiry with 10 accountants to elicit requirements for the Wisdom-Aware development tool, developed to propose interactive recommendations learnt from existing compositions made by professional developers to prospective end-users. Results revealed that help is most effective when received from technical experts and automatic/contextual help was preferred over on-request help. Despite these efforts, several service-development challenges are still being unraveled, such as the difference between programmers and non-programmers design strategies. Mashups are web applications developed by wiring information, in the form of content, application logic, and user interface components, from different sources into a unified view [43]. The continuous increase of mashups and their APIs has encouraged the development of various mashup development tools, such as Microsoft Pofly, Yahoo! Pipes, and Intel Mash Maker [44]. However, most of these tools did not follow a user-centric design approach, nor were they evaluated appropriately with the targeted end-users. Mashup development tools and approaches for creating mashups are published elsewhere [43; 44]. A few attempts have tried to identify the issues end-users face when mashing up various sources of information. [PERSON] and [PERSON] [45] analysed forum conversations of end-users of Yahoo! Pipes mashup tool to understand the obstacles they face and their collaborative debugging strategies. Two types of engagement were observed: core engagement where users actively asked and answered questions, and peripheral engagement were users read but did not post content.