# Context-Aware End-User Development Review
## 4 Application Building Techniques
### Languages to Specify Rules  
Other approaches also involve languages to specify rules. Examples are ontology-based languages, domain-specific languages, and natural languages. The development tool reduces the complexity of the language for developers, and the target application can have a robust implementation (based on the language). iPlumber, presented by [PERSON] et al. [52], exploits the meta-design method [12] to create, share, and reuse context-aware applications. The system provides tools to create application templates (or meta-applications) based on an ontology rule language. A web sharing center allows for sharing the applications. End-users can check recommendations (e.g., user ratings, number of users) to decide which application to use. Afterward, end-users become application co-designers, performing configurations to meet their needs, personalizing the application. End-users also can simulate sensing values to test rules or test applications with real sensing values. [PERSON] et al. also introduced OPEN [54] to exploit the cooperation among developers, end-users, and between developers and end-users. They extend the ontology rule language to involve a broad category of users. They propose three programming modes/complexities to create/modify applications: incremental mode (high-level users who create/manage rules), composition mode (middle-level users who modify rules), and parameterization mode (low-level users who set parameters). [PERSON] et al. [67] introduce a domain-specific model and language to facilitate the development of applications to control smart things--i.e., things that interact and communicate with each other and with physical and virtual entities. The authors proposed abstracting sensing and actuation primitives. Then, the primitives' implementation is independent, e.g., graphical widgets, physical interactors, speech/gesture commands. The authors reify the abstraction as a language that implements an interactive component representing a physical or virtual component not reasonably sub-divisible (e.g., light switch). Interactive components communicate with interactors--i.e., a device or software used to interact, e.g., graphical interactors such as gauges, click wheels, knobs. The language represents interactive model components for storing, querying, and composing with a UI. SITE, presented by [PERSON] et al. [71], is a smart home solution to specify, monitor, and control IoT smart objects (SOs). The UI was developed using the LabVIEW [84] programming environment. The UI lists all available SOs, and the user selects the required ones. Then, the UI presents SOs information and the available options, i.e., visualize (monitor) real-time sensor measurement, configure rules, and run/stop controller to process gathered data applying fuzzy rules and generating actuation commands. The UI also allows scripting for advanced users. EasyContext, presented by [PERSON] et al. [77], is a visual tool to generate rules for context-aware mobile applications. The authors propose an abstraction of the Google Awareness API [85] and a Web-based tool that helps developers to create the rules. The abstraction is based on context-free grammar to define conditions and actions. Based on the grammar, the tool then generates a configuration file to be integrated into mobile devices. In general, languages are targeted to technical people, requiring learning the language concepts. Other approaches propose targeting non-technical people with natural language. [PERSON] et al. introduced SPOK [65], a development environment for smart home context-aware applications. Non-technical users develop applications in clients with a simplified language. End-users can compose applications using words from the language with a smart keyboard, which updates the available words based on the current entry and home state. [PERSON] et al. introduced CoRE (context-range editor) [72] which includes a constrained natural language text editor to edit logical expressions. [PERSON] et al.