high-level behavioral models. The novelty of this
system resides in that Flow does not transform these
models into executable code for target platforms.
Instead, Flow executes those models directly on the
cloud, and uses a coordination mechanism with the final
app when user-iteration is required. This allows the
creation of generic applications that are can be easily
adapted to different platforms. In this way, Flow makes
it easier for people without technical skills to develop
and maintain applications across platforms. Users do
not need to understand the cloud-based logic and can
simultaneously see the effects of changes they make to
the models.
The paper is organized as follows: Section 2 presents
related work in cross-platform app development.
Section 3 introduces the overall architecture and
definitions of Flow. Section 4 discusses the setup and
results of user evaluation. In Section 5, the implications
of Flow are discussed further before concluding with a
summary in Section 6.
2. Related Work
In general, previous research has distinguished five
approaches for developing cross-platform applications
(Biørn-Hansen et al., 2018). First, the progressive
web approach essentially develops a web application
optimized for the mobile device screen. The app
cannot be installed on the mobile device and needs
to be executed within a browser app. Progressive
Web Apps (PWA) introduced by Google integrates the
services workers, a manifest file, and a bundle of static
user interface components not dependent on dynamic
content, which results in a performance comparable
to that of native apps (Biørn-Hansen et al., 2017).
However, even with enhanced capabilities, the access to
device or platform features are still limited for web apps.
The hybrid approach allows developers to develop
mobile apps using web development tools such as
HTML, CSS, and JavaScript. Apache Cordova (Bosnic
et al., 2016) is one of the most popular tools for
developing hybrid apps. It initializes the Native app
with a WebView (embeddable web browser) and the
communication between the WebView and Native code,
enabling the specification of business logic through
JavaScript and interfaces through HTML and CSS. In
addition, libraries such as Ionic Framework (Yusuf,
2016) and Sencha Touch (Clark and Johnson, 2013)
facilitate the development of user interfaces (UIs) for
hybrid apps and make them adhering to the guidelines
of the targeted platforms.
By contrast, the interpreted approach relies on a
runtime component, and app developers can access the
underlying functionality through the API (Biørn-Hansen
et al., 2020). The app is typically written using
programming languages such as JavaScript and the
invocation of foreign function interfaces is achieved
through proprietary plugin-based bringing systems (e.g.,
React Native and NativeScript (Brito et al., 2018)).
Consequently, plugin developed for one system may not
work in the other, which fragments the frameworks and
tools and becomes a major drawback for this approach.
The cross-compiled approach maps the input
application to a target platforms through compiling to
Native byte code. The access to Native device features
is exposed to app developers through the Software
Development Kit (SDK) rather than the bridging
components in hybrid and interpreted approaches.
The generated user interfaces are rendered as Native
interface components (Willocx et al., 2015). One
of the most recent cross-compile frameworks is
Google’s Flutter (Windmill, 2020), which recreates the
appearance of user interfaces through Skia Canvas.
The model-driven approach uses the high level
abstract representation to develop apps. It utilizes
textual or graphical Domain Specific Languages (DSLs)
or the Unified Modeling Language (UML) to construct
models. Code generators convert the models into
Native source code for the targeted platforms. Ideally,
the generated apps will be the same as native apps.
Numerous model-driven frameworks exist in both
industry and academia. For example, the MD2
(Heitk¨
otter and Majchrzak, 2013) framework uses
textual DSL to specify the components of an app and
does not require any knowledge of platform-specific
programming languages. However, most model-driven
frameworks develop distinct DSLs, which makes it
difficult to transfer the knowledge from one to another
(Le Goaer and Waltham, 2013).
Despite the advantages of aforementioned
approaches, most of them are not friendly to
non-technical people. The model-driven approach
may be appropriate for non-technical people, as it does
not require a background in any programming language.
Moreover, there is a lack of usability evaluation in
cross-platform app development research. Rieger
(2018) proposed the M¨
unster App Modeling Language
(MAML) framework and evaluated it with software
developers, process modelers, and domain experts,
resulting in better comprehensibility and usability
than other frameworks. Based on the advantage of
DSLs, our work further improves the experience for
non-technical users by introducing the mechanism
to isolate client-side models from changes on the
server-side, which makes it easier to develop, deploy,
and maintain apps. We conducted a rigorous user