Villarejo (Kosower and Lopez-Villarejo, 2015). Their
approach needs human interactions to add annotations
which is not an easy task. Especially for large appli-
cations, containing millions of lines of code. Moreo-
ver, the generated workflow can be executed contrary
to the workflow produced by Zou and al (Zou et al.,
2004) which can be used as a documentation only. It
is worthy to note that due to the fact that the gene-
rated workflow has a hierarchical structure, it can be
used for documentation as well. It is up to the one
using it (e.g. developer, architect, etc.) to decide at
which level of details he wants to stop. In addition,
unlike the workflow produced by Zou and al (Zou
et al., 2004), data dependencies between tasks are ex-
plicitly expressed in our workflow. To the best of our
knowledge, only our approach recovers both data and
control flows from source code.
Note that, several works rely on workflows in or-
der to perform dynamic configuration to optimize re-
sources usage in the cloud, and thus to reduce exe-
cution costs (Zhu et al., 2016; Masdari et al., 2016;
Fakhfakh et al., 2014; Xu et al., 2009; Lin and Lu,
2011). In our future works, we intend either to use
these works to run the generated workflow or to pro-
pose a new approach inspired from them.
8 CONCLUSION
The main contribution of the work presented in this
paper is the refactoring of OO source code to gene-
rate a workflow. For this purpose, first a mapping mo-
del between OO programming concepts and workflow
concepts was defined. In order to identify the map-
ping, a three steps process was proposed. It is worthy
to note that the generated workflow can be used to de-
ploy code and data on paying platforms such as the
cloud and reducing execution costs. As a part of fu-
ture work, we plan to apply our approach on real and
complex case studies. In addition to this, we intend
to improve the generated workflow by enhancing the
granularity level of the identified tasks. In fact, some
of them are fin-grained. Finally, we plan to propose an
approach to run the generated workflow on the cloud
while reducing costs.
REFERENCES
Aho Alfred, V., Ravi, S., and Ullman Jeffrey, D. (1986).
Compilers: principles, techniques, and tools. Rea-
ding: Addison Wesley Publishing Company.
Bass, L. (2007). Software architecture in practice. Pearson
Education India.
Budhkar, S. and Gopal, A. (2011). Reverse engineering java
code to class diagram: An experience report. Inter-
national Journal of Computer Applications, 29(6):36–
43.
Buy, U., Orso, A., and Pezze, M. (2000). Automated testing
of classes. In ACM SIGSOFT Software Engineering
Notes, volume 25, pages 39–48. ACM.
Charalampidou, S., Ampatzoglou, A., Chatzigeorgiou, A.,
Gkortzis, A., and Avgeriou, P. (2016). Identifying
extract method refactoring opportunities based on
functional relevance. IEEE Transactions on Software
Engineering.
Chen, M.-H. and Kao, H. M. (1999). Testing object-
oriented programs-an integrated approach. In Soft-
ware Reliability Engineering, 1999. Proceedings.
10th International Symposium on, pages 73–82. IEEE.
Clarke, D., Wrigstad, T., and Noble, J. (2013). Aliasing
in Object-oriented Programming: Types, Analysis and
Verification, volume 7850. Springer.
Dillon, T., Wu, C., and Chang, E. (2010). Cloud compu-
ting: issues and challenges. In Advanced Information
Networking and Applications (AINA), 2010 24th IEEE
International Conference on, pages 27–33. Ieee.
Espadas, J., Molina, A., Jim
´
enez, G., Molina, M., Ram
´
ırez,
R., and Concha, D. (2013). A tenant-based resource
allocation model for scaling software-as-a-service ap-
plications over cloud computing infrastructures. Fu-
ture Generation Computer Systems, 29(1):273–286.
Fakhfakh, F., Kacem, H. H., and Kacem, A. H. (2014).
Workflow scheduling in cloud computing: A sur-
vey. In Enterprise Distributed Object Computing Con-
ference Workshops and Demonstrations (EDOCW),
2014 IEEE 18th International, pages 372–378. IEEE.
Garlan, D. and Shaw, M. (1993). An introduction to soft-
ware architecture. Advances in software engineering
and knowledge engineering, 1(3.4).
Hollingsworth, D. (1995). Workflow management coali-
tion: The workflow reference model.
Kaur, N., Aulakh, T. S., and Cheema, R. S. (2011). Com-
parison of workflow scheduling algorithms in cloud
computing. International Journal of Advanced Com-
puter Science and Applications, 2(10).
Kaya, M. and Fawcett, J. W. (2013). Identifying extract
method opportunities based on variable references (s).
In SEKE, pages 153–158.
Kaya, M. and Fawcett, J. W. (2016). Identification of extract
method refactoring opportunities through analysis of
variable declarations and uses. International Journal
of Software Engineering and Knowledge Engineering,
pages 1–21.
Korshunova, E., Petkovic, M., Van Den Brand, M., and
Mousavi, M. R. (2006). Cpp2xmi: reverse engi-
neering of uml class, sequence, and activity diagrams
from c++ source code. In Reverse Engineering, 2006.
WCRE’06. 13th Working Conference on, pages 297–
298. IEEE.
Kosower, D. A. and Lopez-Villarejo, J. J. (2015). Flowgen:
Flowchart-based documentation for c++ codes. Com-
puter Physics Communications, 196:497–505.
ENASE 2018 - 13th International Conference on Evaluation of Novel Approaches to Software Engineering
122