Skip to main content
Log in

From software extensions to product lines of dataflow programs

  • Regular Paper
  • Published:
Software & Systems Modeling Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16
Fig. 17
Fig. 18
Fig. 19
Fig. 20
Fig. 21
Fig. 22
Fig. 23
Fig. 24

Similar content being viewed by others

Notes

  1. In object-oriented parlance, \(\mathtt{E}\) is an extension of \(\mathtt{C}\) iff \(\mathtt{E}\) is a subclass of \(\mathtt{C}\).

  2. In standard function composition notation, the order in which the transformations are listed is the reverse of the order in which they are applied.

  3. 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.

  4. We can “relax” the correctness criteria of the simulation (and therefore change the behavior of the program) [57] to improve performance.

References

  1. Abrial, J.-R.: Modeling in Event-B: System and Software Engineering, 1st edn. Cambridge University Press, Cambridge (2010)

    Book  MATH  Google Scholar 

  2. Apel, S., Batory, D., Kästner, C., Saake, G.: Feature-Oriented Software Product Lines. Springer, Berlin (2013)

    Book  Google Scholar 

  3. 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)

  4. 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)

  5. 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)

  6. 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)

  7. Batory, D., Sarvela, J., Rauschmayer, A.: Scaling Step-Wise Refinement. IEEE TSE (2004)

  8. 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)

    Article  Google Scholar 

  9. Bettini, L., Damiani, F., Schaefer, I.: Compositional type checking of delta-oriented software product lines. Acta Inform. 50(2), 77–122 (2013)

    Article  MathSciNet  MATH  Google Scholar 

  10. Borger, E., Stark, R.F.: Abstract State Machines: A Method for High-Level System Design and Analysis. Springer, Berlin (2003)

    Book  MATH  Google Scholar 

  11. 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)

    Article  Google Scholar 

  12. 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)

    Google Scholar 

  13. 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)

  14. 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)

  15. 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)

  16. 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)

  17. Czarnecki, K., Eisenecker, U.W.: Generative Programming: Methods, Tools, and Applications. ACM Press/Addison-Wesley Publishing Co., New York, NY (2000)

  18. 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)

  19. 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)

  20. 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)

    Article  Google Scholar 

  21. 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)

  22. Frenkel, D., Smit, B.: Understanding Molecular Simulation: From Algorithms to Applications. Academic Press, Waltham (2001)

    MATH  Google Scholar 

  23. Gonçalves R.C.: Parallel Programming by Transformation. PhD thesis, Universidades do Minho, Aveiro e Porto (2015)

  24. 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

  25. Google Cloud Dataflow. https://cloud.google.com/dataflow/

  26. 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)

  27. 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)

  28. 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)

  29. 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)

  30. 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)

  31. Kahn, G.: The semantics of a simple language for parallel programming. In: Information Processing ’74: Proceedings of the IFIP Congress, pp. 471–475 (1974)

  32. 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)

  33. 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)

  34. 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)

  35. 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)

  36. 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)

  37. Mapreduce. http://en.wikipedia.org/wiki/MapReduce

  38. Marker, B., Batory, D., van de Geijn, R.A.: Understanding performance stairs: elucidating heuristics. In: ASE ’14: Automated Software Engineering (2014)

  39. 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)

  40. McNeile, A., Simons, N.: State machines as mixins. J. Object Technol. 2(6), 85–101 (2003)

    Article  Google Scholar 

  41. Md Product Line. http://alba.di.uminho.pt/research/md-product-line/

  42. Pawlak, R.: Spoon: compile-time annotation processing for middleware. IEEE Distrib. Syst. Online 7(11), 1–13 (2006)

  43. Pierce, B.: Basic Category Theory for Computer Scientists. MIT Press, Cambridge (1991)

    MATH  Google Scholar 

  44. Prehofer, C.: Plug-and-play composition of features and feature interactions with statechart diagrams. Softw. Syst. Model. 3(3), 221–234 (2004)

    Article  Google Scholar 

  45. Python Code Generator. http://code.google.com/p/stepwise-ft/

  46. 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)

  47. 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)

  48. 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)

  49. Simulink—Simulation and Model-Based Design. http://www.mathworks.com/products/simulink/

  50. 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)

  51. Spivey, J.M.: The Z Notation: A Reference Manual. Prentice Hall, Upper Saddle River (1989)

    MATH  Google Scholar 

  52. 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)

  53. The LabVIEW Environment. http://www.ni.com/labview/

  54. Thies W.: Language and Compiler Support for Stream Programs. PhD thesis, MIT (2008)

  55. 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)

  56. 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)

  57. Verlet, L.: Computer “experiments” on classical fluids. I. Thermodynamical properties of Lennard-Jones molecules. Phys. Rev. 159(1), 98–103 (1967)

    Article  Google Scholar 

  58. 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)

  59. Weiser, M.: Program slicing. In: ICSE ’81: Proceedings of the 5th International Conference on Software Engineering, pp. 439–449 (1981)

  60. 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)

Download references

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

Authors

Corresponding author

Correspondence to Rui C. Gonçalves.

Additional information

Communicated by Prof. Roel J. Wieringa.

Appendices

Appendix 1: UpRight commuting diagrams

See Figs. 25 and 26

Fig. 25
figure 25

\(^{\mathtt{SCFT}} \searrow _{\mathtt{AACFT}_\Omega }\) commuting diagram focusing the DfPs of the derivations

Fig. 26
figure 26

\(^{\mathtt{SCFT}} \searrow _{\mathtt{AACFT}_\Omega }\) commuting diagram focusing the rewrite rules used

Fig. 27
figure 27

\(^{\mathtt{MDCore}} \searrow _{\mathtt{CBNMDCore}_\Omega }\) commuting diagram focusing the rewrite rules used

Appendix 2: MolDyn commuting diagrams

See Figs. 27 and 28

Fig. 28
figure 28

\(^{\mathtt{MDCore}} \searrow _{\mathtt{CBNMDCore}_\Omega }\) commuting diagram focusing the DfPs of the derivations

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10270-015-0495-8

Keywords

Navigation