![](bg9.png)
with both the model and the informal specification.
Next, our tool generates working web services that in-
tegrate easily in a Laravel application (see Section 4).
Finally, we setup other parts of the Laravel applica-
tion to benefit from helper features such as external
dependencies management, database schema migrati-
ons or end-to-end tests.
Discussion. This case study is a first step to show
that our meta-model is flexible enough to express mi-
nimalistic yet realistic web services. Components of-
fer a first-class system to split computations into se-
veral smaller parts. Because assemblies of compo-
nents are checked to ensure their consistency, deve-
lopers can see them as black boxes which helps a
lot when designing, implementing and testing these
components. Implementing atomic components in the
same language and environment as the generation tar-
get allows to have a fine control on what is generated
without losing the advantages of building using high-
level constructions. Because generated code integra-
tes easily in a Laravel application, the result can be
deployed like any Laravel application thus benefiting
from good practices such as those described in (Wig-
gins 2012). Apart from generating code, our appro-
ach makes it easy to generate diagrams from models
that allow easy visualization of how services are im-
plemented or what are components dependencies, for
example. This might be a game changer for new deve-
lopers onboarding. Finally, MDE approach improves
maintainability. For example, if we want to make an
evolution and allow attendees to modify their registra-
tion information and status by adding a new service, it
is easy to implement it while reusing existing compo-
nents and still be confident about consistency, thanks
to the verification step.
Yet, we performed preliminary experiments with
the approach; developers of Startup Palace have
been involved in these experiments. However we plan
to implement systematic evaluation tools in order to
support more realistic (by nature and by size) case
studies.
6 RELATED WORK
The use of MDE for development and automatic ge-
neration of web services or web applications is not a
new topic (Bernardi, Cimitile, Di Lucca, et al. 2012;
Bernardi, Cimitile, and Maggi 2016; Rocheteau and
Sferruzza 2016; Scheidgen, Efftinge, and Marticke
2016).
This work is built on the approach of REIFIER,
presented in (Rocheteau and Sferruzza 2016). As in
REIFIER, we use a meta-model approach instead of a
meta-programming one, as recommended for server-
side code generation in (Scheidgen, Efftinge, and
Marticke 2016). We also share the meta-modeling
approach with the M3D tool introduced in (Bernardi,
Cimitile, Di Lucca, et al. 2012) and extended in (Ber-
nardi, Cimitile, and Maggi 2016), which is itself ba-
sed on Declare (see (van der Aalst, Pesic, and Scho-
nenberg 2009)). M3D uses as an input a 4-layers
meta-model: information layer by means of UML
class diagram, service layer by means of BPMN,
presentation layer by means of (Spring/Android)-like
meta-model and a process layer by means of Declare.
M3D is evaluated on a case study to show that 90% of
the time spent developing the application is spent on
modeling. This is advantageous as modeling is often
faster, produces more stable applications and models
are easier to maintain than code.
Our approach was developed with this idea in
mind, thus focusing on design-time support. But it
differs from existing tools in several different ways,
related to both flexibility and support. First, as REI-
FIER but not M3D, it is built to allow property verifi-
cation at design-time. This verification takes the form
of a set of rules that ensure structural consistency of
models. This ensures confidence in the resulting sy-
stems without the drawbacks of heavy formal met-
hods. Second, because our components are specified
in terms of preconditions and effects, instead of inputs
and outputs in REIFIER, we can ease their reusability
by minimizing the coupling to their instantiation con-
text while providing the same level of verification.
To avoid shortcomings such as described
in (Gronmo et al. 2004), that is WSDL models
contain too much technical details and are difficult to
understand for humans, our method makes it possible
to express technical details in components’ imple-
mentation that are not captured in the model. This
is an attempt to ease onboarding of new developers
by both offering lots of MDE-related advantages and
at the same time giving full flexibility on technology
and implementation details.
Our approach is more related to Eiffel (Meyer
1992), than to BPEL (Fu, Bultan, and Su 2004)
or to Join Calculus (Fournet and Gonthier 2002).
As BPEL, we acknowledge that programming-in-the-
large and programming-in-the-small require different
types of languages (DeRemer and Kron 1975); but
our meta-model is simpler than BPEL, thus relevant
for developing web services. Join Calculus is devo-
ted to the design or semantics of distributed langua-
ges, which is out of our scope. We share with Eif-
fel the principle of using contracts, of being exten-
sible, reusable, and reliable. However, because our
A Model-Driven Method for Fast Building Consistent Web Services in Practice
23