ABSTRACT
The development of feature-oriented programming (FOP) and of (its generalization) delta-oriented programming (DOP) has focused primarily on SPLs of class-based object oriented programs. In this paper, we introduce delta-oriented SPLs of functional programs with algebraic data types (ADTs). To pave the way towards SPLs of multi-paradigm programs, we tailor our presentation to the functional sublanguage of the multi-paradigm modeling language ABS, which already features DOP support for its class-based object-oriented sublanguage. Our main contributions are: (i) we motivate and illustrate our proposal by an example from an industrial modeling scenario; (ii) we formalize delta-oriented SPLs for functional programs with ADTs in terms of a foundational calculus; (iii) we define family-based analyses to check whether an SPL satisfies certain well-formedness conditions and whether all variants can be generated and are well-typed; and (iv) we briefly outline how, in the context of the toolchain of ABS, the proposed delta-oriented constructs and analyses for functional programs can be integrated with their counterparts for object-oriented programs.
- Don Batory, Jacob Neal Sarvela, and Axel Rauschmayer. 2004. Scaling Step-Wise Refinement. IEEE Transactions on Software Engineering 30 (2004), 355--371. https://doi.org/10.1109/TSE.2004.23Google ScholarDigital Library
- Lorenzo Bettini, Ferruccio Damiani, and Ina Schaefer. 2013. Compositional type checking of delta-oriented software product lines. Acta Informatica 50, 2 (2013), 77--122. https://doi.org/10.1007/s00236-012-0173-zGoogle ScholarDigital Library
- Sheng Chen, Martin Erwig, and Eric Walkingshaw. 2012. An Error-Tolerant Type System for Variational Lambda Calculus (ICFP '12). Association for Computing Machinery, New York, NY, USA, 29--40. https://doi.org/10.1145/2364527.2364535Google ScholarDigital Library
- Sheng Chen, Martin Erwig, and Eric Walkingshaw. 2014. Extending Type Inference to Variational Programs. ACM Trans. Program. Lang. Syst. 36, 1, Article 1 (mar 2014), 54 pages. https://doi.org/10.1145/2518190Google ScholarDigital Library
- Dave Clarke, Radu Muschevici, José Proença, Ina Schaefer, and Rudolf Schlatte. 2010. Variability Modelling in the ABS Language. In FMCO (LNCS, Vol. 6957). Springer, 204--224. https://doi.org/10.1007/978-3-642-25271-6_11Google ScholarDigital Library
- Luis Damas and Robin Milner. 1982. Principal Type-Schemes for Functional Programs. In Proceedings of the 9th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Albuquerque, New Mexico) (POPL '82). Association for Computing Machinery, New York, NY, USA, 207--212. https://doi.org/10.1145/582153.582176Google ScholarDigital Library
- Ferruccio Damiani, Reiner Hähnle, Eduard Kamburjan, Michael Lienhardt, and Luca Paolini. 2023. Variability modules. Journal of Systems and Software 195 (2023), 111510. https://doi.org/10.1016/j.jss.2022.111510Google ScholarDigital Library
- Ferruccio Damiani and Michael Lienhardt. 2016. On Type Checking Delta-Oriented Product Lines. In Integrated Formal Methods - 12th International Conference, IFM 2016, Reykjavik, Iceland, June 1-5, 2016, Proceedings (LNCS, Vol. 9681). Springer, 47--62. https://doi.org/10.1007/978-3-319-33693-0_4Google ScholarDigital Library
- Ferruccio Damiani, Michael Lienhardt, Bruno Maugars, and Bertrand Michel. 2022. Towards a Modular and Variability-Aware Aerodynamic Simulator. In The Logic of Software. A Tasting Menu of Formal Methods (Lecture Notes in Computer Science, Vol. 13360). Springer, 147--172.Google ScholarCross Ref
- Benjamin Delaware, William R. Cook, and Don Batory. 2009. Fitting the Pieces Together: A Machine-checked Model of Safe Composition. In ESEC/FSE (Amsterdam, The Netherlands). ACM, 243--252. https://doi.org/10.1145/1595696.1595733Google ScholarDigital Library
- Richard A. Eisenberg, Joachim Breitner, and Simon Peyton Jones. 2018. Type Variables in Patterns. In Proceedings of the 11th ACM SIGPLAN International Symposium on Haskell (St. Louis, MO, USA) (Haskell 2018). Association for Computing Machinery, New York, NY, USA, 94--105. https://doi.org/10.1145/3242744.3242753Google ScholarDigital Library
- Martin Erwig and Eric Walkingshaw. 2011. The Choice Calculus: A Representation for Software Variation. ACM Trans. Softw. Eng. Methodol. 21, 1, Article 6 (dec 2011), 27 pages. https://doi.org/10.1145/2063239.2063245Google ScholarDigital Library
- A. Igarashi, B. Pierce, and P. Wadler. 2001. Featherweight Java: A Minimal Core Calculus for Java and GJ. ACM TOPLAS 23, 3 (2001), 396--450. https://doi.org/10.1145/503502.503505Google ScholarDigital Library
- Einar Broch Johnsen, Reiner Hähnle, Jan Schäfer, Rudolf Schlatte, and Martin Steffen. 2010. ABS: A Core Language for Abstract Behavioral Specification. In Formal Methods for Components and Objects - 9th International Symposium, FMCO 2010, Graz, Austria, November 29 - December 1, 2010. Revised Papers. 142--164.Google Scholar
- Eduard Kamburjan, Reiner Hähnle, and Sebastian Schön. 2018. Formal Modeling and Analysis of Railway Operations with Active Objects. Science of Computer Programming 166 (Nov. 2018), 167--193. https://doi.org/10.1016/j.scico.2018.07.001Google Scholar
- Michael Lienhardt and Dave Clarke. 2012. Conflict Detection in Delta-Oriented Programming. In ISoLA 2012, Heraklion, Crete, Greece, October 15-18, 2012, Proceedings, Part I (LNCS, Vol. 7609). Springer, 178--192. https://doi.org/10.1007/978-3-642-34026-0_14Google ScholarDigital Library
- Reza Mauliadi, Maya R. A Setyautami, Iis Afriyanti, and Ade Azurat. 2017. A platform for charities system generation with SPL approach. In Proc. Intl. Conf. on Information Technology Systems and Innovation (ICITSI) (Bandung, Indonesia). IEEE, New York, NY, USA, 108--113. https://doi.org/10.1109/ICITSI.2017.8267927Google ScholarCross Ref
- Benjamin C. Pierce. 2002. Types and programming languages. MIT Press.Google ScholarDigital Library
- Ina Schaefer, Lorenzo Bettini, Viviana Bono, Ferruccio Damiani, and Nico Tanzarella. 2010. Delta-Oriented Programming of Software Product Lines. In Software Product Lines: Going Beyond (SPLC 2010) (LNCS, Vol. 6287). 77--91. https://doi.org/10.1007/978-3-642-15579-6_6Google ScholarCross Ref
- Ina Schaefer, Rick Rabiser, Dave Clarke, Lorenzo Bettini, David Benavides, Goetz Botterweck, Animesh Pathak, Salvador Trujillo, and Karina Villela. 2012. Software diversity. International Journal on Software Tools for Technology Transfer 14, 5 (2012), 477--495. https://doi.org/10.1007/s10009-012-0253-yGoogle ScholarDigital Library
- Yudai Tanabe, Luthfan Anshar Lubis, Tomoyuki Aotani, and Hidehiko Masuhara. 2022. A Functional Programming Language with Versions. Art, Science, and Engineering of Programming 6, 1 (2022). https://doi.org/10.22152/programming-journal.org/2022/6/5Google Scholar
- Sahil Thaker, Don Batory, David Kitchin, and William Cook. 2007. Safe Composition of Product Lines. In Proceedings of the 6th International Conference on Generative Programming and Component Engineering (Salzburg, Austria) (GPCE '07). ACM, New York, NY, USA, 95--104. https://doi.org/10.1145/1289971.1289989Google ScholarDigital Library
- Thomas Thüm, Sven Apel, Christian Kästner, Ina Schaefer, and Gunter Saake. 2014. A Classification and Survey of Analysis Strategies for Software Product Lines. ACM Comput. Surv. 47, 1, Article 6 (2014), 45 pages. https://doi.org/10.1145/2580950Google ScholarDigital Library
- Peter Y. H. Wong, Nikolay Diakov, and Ina Schaefer. 2012. Modelling Distributed Adaptable Object Oriented Systems using HATS Approach: A Fredhopper Case Study (invited paper). In 2nd Intl. Conf. on Formal Verification of Object-Oriented Software, Torino, Italy (LNCS, Vol. 7421), Bernhard Beckert, Ferruccio Damiani, and Dilian Gurov (Eds.). Springer, 49--66. https://doi.org/10.1007/978-3-642-31762-0_5Google ScholarDigital Library
Index Terms
- Deltas for Functional Programs with Algebraic Data Types
Recommendations
Variability modules
AbstractA Software Product Line (SPL) is a family of similar programs, called variants, generated from a common artifact base. A Multi SPL (MPL) is a set of interdependent SPLs: each variant can depend on variants from other SPLs. MPLs are ...
Highlights- Extension of the standard concept of module to support multi product lines.
- ...
Delta-oriented multi software product lines
SPLC '14: Proceedings of the 18th International Software Product Line Conference - Volume 1Modern software systems outgrow the scope of traditional software product lines (SPLs) resulting in multi software product lines (MSPLs) with many interconnected subsystem versions and variants. Delta-oriented programming (DOP) is a flexible, modular ...
Name resolution strategies in variability realization languages for software product lines
FOSD 2016: Proceedings of the 7th International Workshop on Feature-Oriented Software DevelopmentSoftware Product Lines (SPLs) exploit reuse-in-the-large to enable customization by explicitly modeling commonalities and variabilities of closely related software systems. Different approaches exist to enable SPL development and product creation by ...
Comments