TPL Dataflow (TPL, 2014), use a general purpose
programming language to define the atomic pro-
cesses. JFlow (Chen and Johnson, 2013) provides
a practical approach for the software developer to
refactor their code based on flow-based parallelism.
However, none of these works are targeted at help-
ing domain experts to utilize parallelism technologies
directly by themselves. Several works (Cie
´
slik and
Mura, 2011; Pelcat et al., 2009) have applied FBP for
specific domains. In (Friborg and Vinter, 2011), the
authors suggested using Python and PyCSP to struc-
ture scientific software through using Communicating
Sequential Processes. There are a number of scien-
tific workflow platforms, such as Taverna (Taverna,
2014), Pegasus (pegasus, 2014), and Triana (Taylor
et al., 2007), with various capabilities and purposes
and little compliance with standards. These work-
flows are often difficult to author, using languages
that are at an inappropriate level of abstraction, and
requiring too much knowledge of the underlying in-
frastructure. In this work we proposed a middle-ware
to design domain-specific flow-based languages that
can directly be used by domain experts to define their
domain specific applications that are inherently paral-
lel and highly reusable and simpler to maintain.
6 CONCLUSION
In this paper, we have introduced domain-specific
flow-based languages and described their specifica-
tions and the requirements to design a DSFBL. We
also introduced a framework and a meta-modeling
language to specify the different constructs of these
DSLs. We extended the meta-modeling language
from FORMULA which provides comprehensible
syntax for describing domains along with their struc-
tural semantics, as well as for describing behavioral
semantic mappings with transformations.
We have integrated the meta-modeling language
with MS DSL tools under the umbrella of MS Visual
Studio IDE. The DSL designers utilize DSL tools to
define the concrete syntax of the DSL and use the
meta-modeling language to formally specify the se-
mantics of the DSL. Since we developed this frame-
work based on the existing technologies and lan-
guages, the users do not need to learn new program-
ming languages or tools in order to develop these
DSLs. In addition, they do not need to provide any
code-generation or undertake further implementation
to integrate the DSL within a composite language like
FBP. We also provided a mechanism to validate the
composite processes by introducing a constraint spec-
ification language that can classify the different types
of processes in the domain.
The presented framework has two limitations.
One is, that since the process types are defined at
level M2, domain experts are not able to define a user-
defined process type. To tackle this problem another
DSL must be defined that allows domain experts to
define a process type and to use model transforma-
tions to translate it to a model of the process language
described here. The other is, the constraint language
for composition of the processes is simple and not ex-
pressive enough to specify complicated constraints.
In future work, we want to utilize existing process
constraint languages, such as Cascade, to specify flow
patterns in composite processes.
REFERENCES
Bergius, H. (2014). NoFlo. http://noflojs.org/ .
Chen, N. and Johnson, R. (2013). Jflow: Practical refac-
torings for flow-based parallelism. In Automated Soft-
ware Engineering (ASE), 2013 IEEE/ACM 28th Inter-
national Conference on, pages 202–212.
Cie
´
slik, M. and Mura, C. (2011). A lightweight, flow-
based toolkit for parallel and distributed bioinformat-
ics pipelines. BMC bioinformatics, 12:61.
DSPatch (2014). DSPatch - C++ flow-based programming
library. http://www.flowbasedprogramming.com/.
Friborg, R. M. and Vinter, B. (2011). Rapid development
of scalable scientific software using a process ori-
ented approach. Journal of Computational Science,
2(3):304 – 313.
IBM (2014). IBM InfoSphere DataStage. http://www
01.ibm.com/software/data/infosphere/datastage/.
Jackson, E. K., Bjørner, N., and Schulte, W. (2011). Canon-
ical regular types. ICLP (Technical Communications).
Jackson, E. K., Kang, E., Dahlweid, M., Seifert, D., and
Santen, T. (2010). Components, platforms and possi-
bilities: towards generic automation for mda. In Pro-
ceedings of the tenth ACM international conference
on Embedded software, pages 39–48. ACM.
Limena, C. (2012). Gpars: un ambiente evoluto per la pro-
grammazione concorrente in Java/Groovy. PhD the-
sis, UNIVERSITA DI PADOVA.
MDA (2001). Omg, model driven architecture. a technical
perspective. OMG Document-ormsc/01-07-01.
Morrison, J. P. (1978). Data stream linkage mechanism.
IBM Syst. J., 17(4):383–408.
Morrison, J. P. (2010). Flow-Based Programming, 2nd Edi-
tion: A New Approach to Application Development,
CreateSpace. CreateSpace Independent Publishing
Platform.
pegasus (2014). pegasus. http://pegasus.isi.edu/.
Pelcat, M., Piat, J., Wipliez, M., Aridhi, S., and Nezan, J.-F.
(2009). An open framework for rapid prototyping of
signal processing applications. EURASIP J. Embed-
ded Syst., 2009:11:3–11:3.
PyF (2014). PyF Python FBP implementation.
http://pyfproject.org/.
MODELSWARD 2018 - 6th International Conference on Model-Driven Engineering and Software Development
324