Software & Systems Modeling

, Volume 16, Issue 4, pp 929–947 | Cite as

From software extensions to product lines of dataflow programs

  • Rui C. Gonçalves
  • Don Batory
  • João L. Sobral
  • Taylor L. Riché
Regular Paper

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.

Keywords

MDE PIM PSM Model transformations Software extensions Dataflow programs Software product lines 

References

  1. 1.
    Abrial, J.-R.: Modeling in Event-B: System and Software Engineering, 1st edn. Cambridge University Press, Cambridge (2010)CrossRefMATHGoogle Scholar
  2. 2.
    Apel, S., Batory, D., Kästner, C., Saake, G.: Feature-Oriented Software Product Lines. Springer, Berlin (2013)CrossRefGoogle Scholar
  3. 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)Google Scholar
  4. 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)Google Scholar
  5. 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)Google Scholar
  6. 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)Google Scholar
  7. 7.
    Batory, D., Sarvela, J., Rauschmayer, A.: Scaling Step-Wise Refinement. IEEE TSE (2004)Google Scholar
  8. 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)CrossRefGoogle Scholar
  9. 9.
    Bettini, L., Damiani, F., Schaefer, I.: Compositional type checking of delta-oriented software product lines. Acta Inform. 50(2), 77–122 (2013)MathSciNetCrossRefMATHGoogle Scholar
  10. 10.
    Borger, E., Stark, R.F.: Abstract State Machines: A Method for High-Level System Design and Analysis. Springer, Berlin (2003)CrossRefMATHGoogle Scholar
  11. 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)CrossRefGoogle Scholar
  12. 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. 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)Google Scholar
  14. 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)Google Scholar
  15. 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)Google Scholar
  16. 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)Google Scholar
  17. 17.
    Czarnecki, K., Eisenecker, U.W.: Generative Programming: Methods, Tools, and Applications. ACM Press/Addison-Wesley Publishing Co., New York, NY (2000)Google Scholar
  18. 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)Google Scholar
  19. 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)Google Scholar
  20. 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)CrossRefGoogle Scholar
  21. 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)Google Scholar
  22. 22.
    Frenkel, D., Smit, B.: Understanding Molecular Simulation: From Algorithms to Applications. Academic Press, Waltham (2001)MATHGoogle Scholar
  23. 23.
    Gonçalves R.C.: Parallel Programming by Transformation. PhD thesis, Universidades do Minho, Aveiro e Porto (2015)Google Scholar
  24. 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. 25.
    Google Cloud Dataflow. https://cloud.google.com/dataflow/
  26. 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)Google Scholar
  27. 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)Google Scholar
  28. 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)Google Scholar
  29. 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)Google Scholar
  30. 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)Google Scholar
  31. 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)Google Scholar
  32. 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)Google Scholar
  33. 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)Google Scholar
  34. 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)Google Scholar
  35. 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)Google Scholar
  36. 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)Google Scholar
  37. 37.
  38. 38.
    Marker, B., Batory, D., van de Geijn, R.A.: Understanding performance stairs: elucidating heuristics. In: ASE ’14: Automated Software Engineering (2014)Google Scholar
  39. 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)Google Scholar
  40. 40.
    McNeile, A., Simons, N.: State machines as mixins. J. Object Technol. 2(6), 85–101 (2003)CrossRefGoogle Scholar
  41. 41.
  42. 42.
    Pawlak, R.: Spoon: compile-time annotation processing for middleware. IEEE Distrib. Syst. Online 7(11), 1–13 (2006)Google Scholar
  43. 43.
    Pierce, B.: Basic Category Theory for Computer Scientists. MIT Press, Cambridge (1991)MATHGoogle Scholar
  44. 44.
    Prehofer, C.: Plug-and-play composition of features and feature interactions with statechart diagrams. Softw. Syst. Model. 3(3), 221–234 (2004)CrossRefGoogle Scholar
  45. 45.
  46. 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)Google Scholar
  47. 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)Google Scholar
  48. 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)Google Scholar
  49. 49.
    Simulink—Simulation and Model-Based Design. http://www.mathworks.com/products/simulink/
  50. 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)Google Scholar
  51. 51.
    Spivey, J.M.: The Z Notation: A Reference Manual. Prentice Hall, Upper Saddle River (1989)MATHGoogle Scholar
  52. 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)Google Scholar
  53. 53.
    The LabVIEW Environment. http://www.ni.com/labview/
  54. 54.
    Thies W.: Language and Compiler Support for Stream Programs. PhD thesis, MIT (2008)Google Scholar
  55. 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)Google Scholar
  56. 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)Google Scholar
  57. 57.
    Verlet, L.: Computer “experiments” on classical fluids. I. Thermodynamical properties of Lennard-Jones molecules. Phys. Rev. 159(1), 98–103 (1967)CrossRefGoogle Scholar
  58. 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)Google Scholar
  59. 59.
    Weiser, M.: Program slicing. In: ICSE ’81: Proceedings of the 5th International Conference on Software Engineering, pp. 439–449 (1981)Google Scholar
  60. 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)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2015

Authors and Affiliations

  1. 1.High-Assurance Software LaboratoryINESC TECBragaPortugal
  2. 2.Department of Computer ScienceThe University of Texas at AustinAustinUSA
  3. 3.Departamento de InformáticaUniversidade do MinhoBragaPortugal
  4. 4.National InstrumentsAustinUSA

Personalised recommendations