In the context of Internet of Things (IoT), the research of this dissertation is concerned with the development of applications for end-user devices, i.e. devices through which the end-user directly interacts with systems. The complexity of such applications is partly due to network intricacies, and partly because GUI (Graphical User Interface) development is generally complicated and time consuming. We employ a middleware framework called PalCom to manage the former, and focus our research on the problems of the latter, by expanding the scope of PalCom to also enable GUI development. In particular, the research goal is a more efficient GUI development approach that does not require program code to be written.To enable end-users with little or no programming experience to participate in the GUI development process, we eliminate the need for programming by introducing a new development approach. We view this approach as “inverted” in that the development focus is on presenting functionality from an application model as graphical components in a GUI, rather than on retroactively attaching functionality to manually added graphical components. The inverted GUI development approach is supported in two steps. First, we design a language for describing GUIs, and implement interpreters that communicate with remotely hosted application models and render GUI descriptions as fully functional GUIs. Second, we implement a graphical editor for developing GUIs in order to make the language more accessible.The presented solution is evaluated by its application in a number of research projects in the domain of e-health. From the GUIs developed in those projects, we conclude that the GUI language is practically viable for building full-blown, professional grade GUIs. Furthermore, the presented graphical editor is evaluated by direct comparison to a market leading product in a controlled experiment. From this, we conclude that the editor is accessible to new users, and that it can be more efficient to use than the commercial alternative