Skip to main content
Log in

Applying declarative analysis to industrial automotive software product line models

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

Abstract

Program analysis of automotive software has several unique challenges, including that the code base is ultra large, comprising over a hundred million lines of code running on a single vehicle; the code is structured as a software product line (SPL) for managing a family of related software products from a common set of artifacts; and the analysis results (despite being numerous and despite being variable) need to be presented to the engineer in a way that is manageable. In previous work, we reported on lifting declarative analyses to apply to a software product line, rather than to an individual product variant. This paper reports on milestone results from applying lifted declarative analyses (behaviour alteration, recursion analysis, simplifiable global variable analysis, and two of their variants) to automotive software product lines from General Motors and assessing the scalability of the analyses and the effectiveness of reporting to engineers conditional analysis results (i.e., results conditioned on SPL program variants). We also reflect on some of the lessons learned throughout this project.

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

Similar content being viewed by others

Data Availability

Data sharing not applicable to this article as no datasets were generated or analyzed during the current study.

Notes

  1. We use the syntax !, ∧, ∨ for the propositional operators not, and, and or, respectively, to be consistent with the syntax of PCs used in our interactive visualization tool (please see Section 4).

  2. https://clang.llvm.org/index.html

  3. The names of the entities are simplified for this example to improve legibility. In practice, Rex creates long identifier names that capture the entity’s context (i.e., enclosing function, class, etc., up to and including filename).

  4. https://www.misra.org.uk/

  5. https://neo4j.com/developer/neo4j-browser/

  6. https://neo4j.com/

  7. https://github.com/meteor/logic-solver

  8. Node labels and presence conditions on edges have been omitted from Fig. 8(b) to avoid revealing proprietary information.

  9. Neo4j Browser manual. https://neo4j.com/docs/browser-manual/current/

  10. Configuration parameters are feature variables, which were described in Section 2.1.

  11. This measurement was aided by the fact that the presence conditions are stored as Binary Decision Diagrams (BDDs) (Bryant 1992), and BDDs have canonical representations.

  12. https://github.com/toledorafael/emse2022userSurvey

References

  • Apel S, Beyer D (2011) Feature cohesion in software product lines: an exploratory study. In: Proc. of ICSE’11. ACM, New York, pp 421–430

  • Apel S, Kaestner C (2009) An overview of feature-oriented software development. J Object Technol 8:49–84

    Article  Google Scholar 

  • Arendt T, Biermann E, Jurack S, Krause C, Taentzer G (2010) Henshin: advanced concepts and tools for in-place EMF model transformations. In: Proc. of MODELS’10. Springer-Verlag, Berlin, pp 121–135

  • Asadi M, Soltani S, Gašević D, Hatala M (2016) The effects of visualization and interaction techniques on feature model configuration. Empir Softw Eng 21(4):1706–1743

    Article  Google Scholar 

  • Benton WC, Fischer CN (2007) Interactive, Scalable, Declarative Program Analysis: From Prototype to Implementation. In: Proc. of PPDP’07. ACM, New York, pp 13–24

  • Beuche D, Schulze M, Duvigneau M (2016) When 150% is too much: supporting product centric viewpoints in an industrial product line. In: Proceedings of the 20th international systems and software product line conference, SPLC ’16. Association for Computing Machinery, New York, pp 262–269

  • Bodden E, Tolêdo T, Ribeiro M, Brabrand C, Borba P, Mezini M (2013) SPLLIFT: statically analyzing software product lines in minutes instead of years. In: Proc. of PLDI’13. ACM, pp 355–364

  • Botterweck G, Thiel S, Nestor D, Bin Abid S, Cawley C (2008) Visual tool support for configuring and understanding software product lines. In: Proc. of SPLC’08. IEEE, pp 77–86

  • Bravenboer M, Smaragdakis Y (2009) Strictly declarative specification of sophisticated points-to analyses. In: Proc. of OOPSLA’09. ACM, New York, pp 243–262

  • Bryant R E (1992) Symbolic boolean manipulation with ordered binary-decision diagrams. ACM Comput Surv 24(3):293–318

    Article  MathSciNet  Google Scholar 

  • Ceri S, Gottlob G, Tanca L (1989a) What you always wanted to know about Datalog (And Never Dared to Ask). IEEE Trans Knowl Data Eng 1(1):146–166

    Article  Google Scholar 

  • Ceri S, Gottlob G, Tanca L et al (1989b) What you always wanted to know about Datalog (And Never Dared to Ask). IEEE Trans Knowl Data Eng 1(1):146–166

    Article  Google Scholar 

  • Classen A, Heymans P, Schobbens PY, Legay A, Raskin JF (2010) Model checking lots of systems: efficient verification of temporal properties in software product lines. In: Proc. of ICSE’10. ACM, New York, pp 335–344

  • Classen A, Cordy M, Schobbens PY, Heymans P, Legay A, Raskin JF (2013) Featured transition systems: foundations for verifying variability-intensive systems and their application to LTL model checking. IEEE Trans Softw Eng 39 (8):1069–1089

    Article  Google Scholar 

  • Clements P, Northrop L (2001) Software product lines: practices and patterns. Addison-Wesley Professional, Reading

    Google Scholar 

  • Czarnecki K, Pietroszek K (2006) Verifying feature-based model templates against well-formedness OCL constraints. In: Proc. of GPCE’06, pp 211–220

  • Dawson S, Ramakrishnan CR, Warrenm DS (1996) Practical program analysis using general purpose logic programming systems: a case study. In: Proc. of PLDI’96. ACM, New York, pp 117–126

  • Ernst MD, Badros GJ, Notkin D (2002) An empirical analysis of C preprocessor use. IEEE Trans Softw Eng 28(12):1146–1170

    Article  Google Scholar 

  • Gacek C, Anastasopoules M (2001) Implementing product line variabilities. In: Proc. of SSR’01

  • Gazzillo P, Grimm R (2012) SuperC: Parsing all of C by taming the preprocessor. In: Proc. of PLDI’12. ACM, pp 323–334

  • Grech N, Smaragdakis Y (2017) P/Taint: Unified points-to and taint analysis. Proc ACM Program Lang 1:1–28

    Article  Google Scholar 

  • Heidenreich F, Şavga I, Wende C (2008) On controlled visualisations in software product line engineering. In: Proc. of ViSPLE@SPLC’08, pp 335–341

  • Kang K, Cohen S, Hess J, Novak W, Peterson A (1990) Feature-oriented domain analysis (FODA) feasibility study. Tech. Rep. CMU/SEI-90-TR-021, Software Engineering Institute Carnegie Mellon University, Pittsburgh, PA

  • Kästner C, Apel S, Trujillo S, Kuhlemann M, Batory D (2009a) Guaranteeing syntactic correctness for all product line variants: a language-independent approach. In: Oriol M, Meyer B (eds) Objects, components, models and patterns. Springer, Berlin, pp 175–194

  • Kästner C, Apel S, Trujillo S, Kuhlemann M, Batory D (2009b) Guaranteeing syntactic correctness for all product line variants: a language-independent approach. In: Proc. of int. conf. on objects, components, models and patterns. Springer, pp 175–194

  • Kästner C, Giarrusso PG, Rendel T, Erdweg S, Ostermann K, Berger T (2011) Variability-aware parsing in the presence of lexical macros and conditional compilation. In: Proc. of OOPSLA’11. ACM, pp 805–824

  • Kästner C, Apel S, Thüm T, Saake G (2012) Type checking annotation-based product lines. ACM Trans Softw Eng Methodol 21(3):14:1–14:39

    Article  Google Scholar 

  • Liebig J, Apel S, Lengauer C, Kästner C, Schulze M (2010) An analysis of the variability in forty preprocessor-based software product lines. In: Proc. of ICSE’10. ACM, New York, pp 105–114

  • Liebig J, von Rhein A, Kästner C, Apel S, Dörre J, Lengauer C (2013) Scalable analysis of variable software. In: Proc. of ESEC/FSE’13, pp 81–91

  • Loesch F, Ploedereder E (2007) Optimization of variability in software product lines. In: Proc. of SPLC’07. IEEE, pp 151–162

  • Midtgaard J, Dimovski AS, Brabrand C, Wa̧sowski A (2015) Systematic derivation of correct variability-aware program analyses. Sci Comput Program 105(C):145–170

    Article  Google Scholar 

  • Muscedere BJ, Hackman R, Anbarnam D, Atlee JM, Davis IJ, Godfrey MW (2019) Detecting feature-interaction symptoms in automotive software using lightweight analysis. In: Proc. of SANER’19. IEEE, pp 175–185

  • Reps T, Horwitz S, Sagiv M (1995) Precise interprocedural dataflow analysis via graph reachability. In: Proc. of POPL’95. ACM, pp 49–61

  • Salay R, Famelis M, Rubin J, Di Sandro A, Chechik M (2014) Lifting model transformations to product lines. In: Proc. of ICSE’14. ACM, New York, pp 117–128

  • Schaefer I, Bettini L, Bono V, Damiani F, Tanzarella N (2010) Delta-oriented programming of software product lines. In: Bosch J, Lee J (eds) Proc. of SPLC’10. Springer, Berlin, pp 77–91

  • Shahin R, Chechik M (2020a) Automatic and efficient variability-aware lifting of functional programs. In: Proc. of OOPSLA’20, pp 1–27

  • Shahin R, Chechik M (2020b) Variability-aware datalog. In: Komendantskaya E, Liu Y A (eds) Proc. of PADL’20, LNCS, vol 12007. Springer, pp 213–221

  • Shahin R, Chechik M, Salay R (2019) Lifting datalog-based analyses to software product lines. In: Proc. of ESEC/FSE’19. ACM, New York, pp 39–49

  • Shahin R, Akhundov M, Chechik M (2021a) Software Product Line Analysis Using Variability-aware Datalog. IEEE Transactions on Software Engineering (to appear). https://doi.org/10.36227/techrxiv.14870187.v1

  • Shahin R, Hackman R, Toledo R, Ramesh S, Atlee JM, Chechik M (2021b) Applying declarative analysis to software product line models: an industrial study. In: 2021 ACM/IEEE 24th international conference on model driven engineering languages and systems (MODELS). https://doi.org/10.1109/MODELS50736.2021.00023, pp 145–155

  • Strüber D, Anjorin A, Berger T (2020) Variability representations in class models: an empirical assessment. In: Proceedings of the 23rd ACM/IEEE international conference on model driven engineering languages and systems, pp 240–251

  • Thüm T, Apel S, Kästner C, Schaefer I, Saake G (2014) A classification and survey of analysis strategies for software product lines. ACM Comput Surv 47(1):6:1–6:45

    Article  Google Scholar 

  • Von Landesberger T, Kuijper A, Schreck T, Kohlhammer J, van Wijk JJ, Fekete JD, Fellner DW (2011) Visual analysis of large graphs: state-of-the-art and future research challenges. In: Computer graph forum, Wiley Online Library, vol 30, pp 1719–1749

  • Young B, Cheatwood J, Peterson T, Flores R, Clements P (2017) Product line engineering meets model based engineering in the defense and automotive industries. In: Proc. of SPLC’17, New York, pp 175–179

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Ramy Shahin.

Ethics declarations

Conflict of Interests

The authors have no relevant financial or non-financial interests to disclose.

Additional information

Communicated by: Sigrid Eldh, Davide Falessi, Burak Turhan

Publisher’s note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

This article belongs to the Topical Collection: Software Engineering in Practice

Rights and permissions

Springer Nature or its licensor (e.g. a society or other partner) holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Shahin, R., Toledo, R., Hackman, R. et al. Applying declarative analysis to industrial automotive software product line models. Empir Software Eng 28, 40 (2023). https://doi.org/10.1007/s10664-023-10290-2

Download citation

  • Accepted:

  • Published:

  • DOI: https://doi.org/10.1007/s10664-023-10290-2

Keywords

Navigation