Since most software systems provide their users with interactive features, building user interfaces (UI) is one of the core software engineering tasks. It consists in designing, implementing and testing ever more sophisticated and versatile ways for users to interact with software systems, and safely connecting these interactions with commands querying or modifying their state. However, most UI frameworks still rely on a low level model, the bare bone UI event processing model. This model was suitable for the rather simple UIs of the early 80s (menus, buttons, keyboards, mouse clicks), but now exhibits major software engineering flaws for modern, highly interactive UIs. These flaws include lack of separation of concerns, weak modularity and thus low reusability of code for advanced interactions, as well as low testability. To mitigate these flaws, we propose Interacto as a high level user interaction processing model. By reifying the concept of user interaction, Interacto makes it easy to design, implement and test modular and reusable advanced user interactions, and to connect them to commands with built-in undo/redo support. To demonstrate its applicability and generality, we briefly present two open source implementations of Interacto for Java/JavaFX and TypeScript/Angular. We evaluate Interacto interest (1) on a real world case study, where it has been used since 2013, and with (2) a controlled experiment with 44 master students, comparing it with traditionnal UI frameworks.
翻译:由于大多数软件系统都为用户提供互动功能,因此,建立用户界面(UI)是核心软件工程任务之一,包括设计、实施和测试用户与软件系统互动的更为复杂和多用途的方法,安全地将这些互动与询问或修改其状态的指令连接起来;然而,大多数用户界面框架仍然依赖于一个低层次的模型,即赤骨界面事件处理模型。这一模型适用于80年代初的相当简单的UI(菜单、按钮、键盘、鼠标点击),但现在却显示出现代、高度互动的UI的重大软件工程缺陷。这些缺陷包括缺乏对各种关切的区分,模块性弱,从而使得用户与软件与软件系统互动的代码的可重复性较低,以及测试性较低。为减轻这些缺陷,我们建议Interacto作为一个高层次的用户互动处理模型。通过重塑用户互动的概念,Interato便于设计、实施和测试模块和可再使用高级用户互动,并将用户与内建/再置支持的指令连接起来。为了展示其适用性和一般性和一般性,我们简短地展示了自2013年以来用于Inter-Swa/Java案的两种开放源的实验。