Abstract
Dataflow programs are widely used. Each program is a directed graph where nodes are computations and edges indicate the flow of data. In prior work, we reverse-engineered legacy dataflow programs by deriving their optimized implementations from a simple specification graph using graph transformations called refinements and optimizations. In MDE speak, our derivations were PIM-to-PSM mappings. In this paper, we show how extensions complement refinements, optimizations, and PIM-to-PSM derivations to make the process of reverse engineering complex legacy dataflow programs tractable. We explain how optional functionality in transformations can be encoded, thereby enabling us to encode product lines of transformations as well as product lines of dataflow programs. We describe the implementation of extensions in the \(\mathtt{ReFlO}\) tool and present two non-trivial case studies as evidence of our work’s generality.
Similar content being viewed by others
Notes
In object-oriented parlance, \(\mathtt{E}\) is an extension of \(\mathtt{C}\) iff \(\mathtt{E}\) is a subclass of \(\mathtt{C}\).
In standard function composition notation, the order in which the transformations are listed is the reverse of the order in which they are applied.
Rule extensions need not be unique. Our experience to-date is that they are, largely because the increments in DfP functionality are sufficiently small for unique extensions to present themselves.
We can “relax” the correctness criteria of the simulation (and therefore change the behavior of the program) [57] to improve performance.
References
Abrial, J.-R.: Modeling in Event-B: System and Software Engineering, 1st edn. Cambridge University Press, Cambridge (2010)
Apel, S., Batory, D., Kästner, C., Saake, G.: Feature-Oriented Software Product Lines. Springer, Berlin (2013)
Apel, S., Kästner, C., Lengauer, C.: Featurehouse: language-independent, automated software composition. In: ICSE ’09: Proceeding of the 31st International Conference on Software Engineering, pp. 221–231 (2009)
Bae, J.H., Lee, K., Chae, H.S.: Modularization of the UML metamodel using model slicing. In: ITNG ’08: Proceedings of the 5th International Conference on Information Technology: New Generations, pp. 1253–1254 (2008)
Batory, D.: Feature-oriented programming and the AHEAD tool suite. In: ICSE ’04: Proceedings of the 26th International Conference on Software Engineering, pp. 702–703 (2004)
Batory, D.: Feature models, grammars, and propositional formulas. In: SPLC ’05: Proceedings of the 9th International Conference on Software Product Lines, pp. 7–20 (2005)
Batory, D., Sarvela, J., Rauschmayer, A.: Scaling Step-Wise Refinement. IEEE TSE (2004)
Bayer, J., Girard, J.-F., Würthner, M., DeBaud, J.-M., Apel, M.: Transitioning legacy assets to a product line architecture. ACM SIGSOFT Softw. Eng. Notes 24(6), 446–463 (1999)
Bettini, L., Damiani, F., Schaefer, I.: Compositional type checking of delta-oriented software product lines. Acta Inform. 50(2), 77–122 (2013)
Borger, E., Stark, R.F.: Abstract State Machines: A Method for High-Level System Design and Analysis. Springer, Berlin (2003)
Bruneton, E., Coupaye, T., Leclercq, M., Quéma, V., Stefani, J.-B.: The fractal component model and its support in Java: experiences with auto-adaptive and reconfigurable systems. Softw. Pract. Exp. 36(11–12), 1257–1284 (2006)
Bull, J.M., Smith, L.A., Westhead, M.D., Henty, D.S., Davey, R.A.: A benchmark suite for high performance Java. Concurr. Pract. Exp. 12(6), 81–88 (1999)
Chambers, C., Raniwala, A., Perry, F., Adams, S., Henry, R.R., Bradshaw, R., Weizenbaum N.: Flumejava: Easy, efficient data-parallel pipelines. In: PLDI ’10: Proceedings of the 2010 ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 363–375 (2010)
Clement, A., Kapritsos, M., Lee, S., Wang, Y., Alvisi, L., Dahlin, M., Riché, T.L.: UpRight cluster services. In: SOSP ’09: Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles, pp. 277–290 (2009)
Coppit, D., Painter, R.R., Revelle, M.: Spotlight: a prototype tool for software plans. In: ICSE ’07: Proceedings of the 29th International Conference on Software Engineering, pp. 754–757 (2007)
Czarnecki, K., Antkiewicz, M.: Mapping features to models: a template approach based on superimposed variants. In: GPCE ’05: Proceedings of the 4th International Conference on Generative Programming and Component Engineering, pp. 422–437 (2005)
Czarnecki, K., Eisenecker, U.W.: Generative Programming: Methods, Tools, and Applications. ACM Press/Addison-Wesley Publishing Co., New York, NY (2000)
Czarnecki, K., Pietroszek, K.: Verifying feature-based model templates against well-formedness OCL constraints. In: GPCE ’06: Proceedings of the 5th International Conference on Generative Programming and Component Engineering, pp. 211–220 (2006)
Darema, F.: The SPMD model: past, present and future. In: Cotronis, Y., Dongarra, J. (eds) Recent Advances in Parallel Virtual Machine and Message Passing Interface, vol. 2131. Springer, Berlin (2001)
DeWitt, D.J., Ghandeharizadeh, S., Schneider, D.A., Bricker, A., Hsiao, H.-I., Rasmussen, R.: The gamma database machine project. IEEE Trans. Knowl. Data Eng. 2(1), 44–62 (1990)
Feigenspan, J., Papendieck, M., Kästner, C., Frisch, M., Dachselt, R.: Featurecommander: colorful #ifdef world. In: SPLC ’11: Proceedings of the 15th International Software Product Line Conference, pp. 48:1–48:2 (2011)
Frenkel, D., Smit, B.: Understanding Molecular Simulation: From Algorithms to Applications. Academic Press, Waltham (2001)
Gonçalves R.C.: Parallel Programming by Transformation. PhD thesis, Universidades do Minho, Aveiro e Porto (2015)
Gonçalves, R.C., Batory, D., Sobral J.L.: ReFlO: An interactive tool for pipe-and-filter domain specification and program generation. Softw. Syst. Model. (2014). doi:10.1007/s10270-014-0403-7
Google Cloud Dataflow. https://cloud.google.com/dataflow/
Gorlick, M.M., Razouk, R.R.: Using weaves for software construction and analysis. In: ICSE ’91: Proceedings of the 13th International Conference on Software Engineering, pp. 23–34 (1991)
Haber, A., Kolassa, C., Manhart, P., Nazari, P.M.S., Rumpe, B., Schaefer, I.: First-class variability modeling in matlab/simulink. In: VaMoS ’13: Proceedings of the 7th International Workshop on Variability Modelling of Software-intensive Systems, pp. 4:1–4:8 (2013)
Heidenreich, F., Kopcsek, J., Wende, C.: FeatureMapper: mapping features to models. In: ICSE Companion ’08: Companion of the 30th International Conference on Software Engineering, pp. 943–944 (2008)
Jarzabek, S., Bassett, P., Zhang, H., Zhang, W.: XVCL: XML-based variant configuration language. In: ICSE ’03: Proceedings of the 25th International Conference on Software Engineering, pp. 810–811 (2003)
Kagdi, H., Maletic, J.I., Sutton A.: Context-free slicing of UML class models. In: ICSM ’05: Proceedings of the 21st IEEE International Conference on Software Maintenance, pp. 635–638 (2005)
Kahn, G.: The semantics of a simple language for parallel programming. In: Information Processing ’74: Proceedings of the IFIP Congress, pp. 471–475 (1974)
Kästner, C., Apel, S., Kuhlemann, M.: Granularity in software product lines. In: ICSE ’08: Proceedings of the 30th International Conference on Software Engineering, pp. 311–320 (2008)
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C.V., Loingtier, J.-M., Irwin, J.: Aspect-oriented programming. In: ECOOP ’97: Proceedings of the 11th European Conference on Object-Oriented Programming, pp. 220–242 (1997)
Kolb, R., Muthig, D., Patzke, T., Yamauchi, K.: A case study in refactoring a legacy component for reuse in a product line. In: ICSM ’05: Proceedings of the 21st IEEE International Conference on Software Maintenance, pp. 369–378 (2005)
Liebig, J., Apel, S., Lengauer, C., Kästner, C., Schulze, M.: An analysis of the variability in forty preprocessor-based software product lines. In: ICSE ’10: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, vol. 1, pp. 105–114 (2010)
Liu, J., Batory, D., Lengauer, C.: Feature oriented refactoring of legacy applications. In: ICSE ’06: Proceedings of the 28th International Conference on Software Engineering, pp. 112–121 (2006)
Mapreduce. http://en.wikipedia.org/wiki/MapReduce
Marker, B., Batory, D., van de Geijn, R.A.: Understanding performance stairs: elucidating heuristics. In: ASE ’14: Automated Software Engineering (2014)
Marker, B., Poulson, J., Batory, D., van de Geijn, R.A.: Designing linear algebra algorithms by transformation: mechanizing the expert developer. In: iWAPT ’12: International Workshop on Automatic Performance Tuning (2012)
McNeile, A., Simons, N.: State machines as mixins. J. Object Technol. 2(6), 85–101 (2003)
Md Product Line. http://alba.di.uminho.pt/research/md-product-line/
Pawlak, R.: Spoon: compile-time annotation processing for middleware. IEEE Distrib. Syst. Online 7(11), 1–13 (2006)
Pierce, B.: Basic Category Theory for Computer Scientists. MIT Press, Cambridge (1991)
Prehofer, C.: Plug-and-play composition of features and feature interactions with statechart diagrams. Softw. Syst. Model. 3(3), 221–234 (2004)
Python Code Generator. http://code.google.com/p/stepwise-ft/
Riché, T.L., Batory, D., Gonçalves, R.C., Marker, B.: Architecture Design by Transformation. Technical report TR-10-39, The University of Texas at Austin, Department of Computer Sciences, (2010)
Riché, T.L., Gonçalves, R.C., Marker, B., Batory, D.: Pushouts in software architecture design. In: GPCE ’12: Proceedings of the 11th ACM International Conference on Generative Programming and Component Engineering, pp. 84–92 (2012)
Silva, R.A., Sobral, J.L.: Optimizing molecular dynamics simulations with product lines. In: VaMoS ’11: Proceedings of the 5th Workshop on Variability Modeling of Software-Intensive Systems, pp. 151–157 (2011)
Simulink—Simulation and Model-Based Design. http://www.mathworks.com/products/simulink/
Singh, N., Gibbs, C., Coady, Y.: C-CLR: a tool for navigating highly configurable system software. In: ACP4IS ’07: Proceedings of the 6th Workshop on Aspects, Components, and Patterns for Infrastructure Software (2007)
Spivey, J.M.: The Z Notation: A Reference Manual. Prentice Hall, Upper Saddle River (1989)
Thaker, S., Batory, D., Kitchin, D., Cook, W.: Safe composition of product lines. In: GPCE ’07: Proceedings of the 6th International Conference on Generative Programming and Component Engineering, pp. 95–104 (2007)
The LabVIEW Environment. http://www.ni.com/labview/
Thies W.: Language and Compiler Support for Stream Programs. PhD thesis, MIT (2008)
Tisi, M., Jouault, F., Fraternali, P., Ceri, S. Bézivin, J.: On the use of higher-order model transformations. In: ECMDA-FA ’09: Proceedings of the 5th European Conference on Model Driven Architecture—Foundations and Applications, pp. 18–33 (2009)
Trujillo, S., Batory, D., Diaz, O.: Feature refactoring a multi-representation program into a product line. In: GPCE ’06: Proceedings of the 5th International Conference on Generative Programming and Component Engineering, pp. 191–200 (2006)
Verlet, L.: Computer “experiments” on classical fluids. I. Thermodynamical properties of Lennard-Jones molecules. Phys. Rev. 159(1), 98–103 (1967)
Wasowski, A.: Automatic generation of program families by model restrictions. In: Software Product Lines, vol. 3154 of Lecture Notes in Computer Science, pp. 73–89. Springer, Berlin (2004)
Weiser, M.: Program slicing. In: ICSE ’81: Proceedings of the 5th International Conference on Software Engineering, pp. 439–449 (1981)
Ziadi, T., Hélouët, L., Jézéquel, J.-M.: Towards a UML profile for software product lines. In: Software Product-Family Engineering, vol. 3014 of Lecture Notes in Computer Science, pp. 129–139. Springer, Berlin (2004)
Acknowledgments
We gratefully acknowledge helpful feedback from B. Marker (U. Texas) and from the anonymous reviewers. This work was partially supported by FCT—Fundação para a Ciência e a Tecnologia (Portuguese Foundation for Science and Technology) grant SFRH/BD/47800/2008. We also gratefully acknowledge support for this work by NSF grant CCF-0724979, CCF-1421211, and OCI-1148125.
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by Prof. Roel J. Wieringa.
Rights and permissions
About this article
Cite this article
Gonçalves, R.C., Batory, D., Sobral, J.L. et al. From software extensions to product lines of dataflow programs. Softw Syst Model 16, 929–947 (2017). https://doi.org/10.1007/s10270-015-0495-8
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10270-015-0495-8