Skip to main content
Log in

A code tagging approach to software product line development

An application to satellite communication libraries

  • SW-Diversity
  • Published:
International Journal on Software Tools for Technology Transfer Aims and scope Submit manuscript

Abstract

Software product line engineering seeks to systematise reuse when developing families of similar software systems so as to minimise development time, cost and defects. To realise variability at the code level, product line methods classically advocate usage of inheritance, components, frameworks, aspects or generative techniques. However, these might require unaffordable paradigm shifts for developers if the software was not thought at the outset as a product line. Furthermore, these techniques can be conflicting with a company’s coding practices or external regulations. These concerns were the motivation for the industry–university collaboration described in this paper in which we developed a minimally intrusive coding technique based on tags. The approach was complemented with traceability from code to feature diagrams which were exploited for automated configuration. It is supported by a toolchain and is now in use in the partner company for the development of flight-grade satellite communication software libraries.

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.

Institutional subscriptions

Similar content being viewed by others

References

  1. Anastasopoulos, M., Muthig, D.: An evaluation of aspect-oriented programming as a product line implementation technology. In: Proceedings of ICSR’04, pp. 141–156. Springer, Berlin (2004)

  2. Antkiewicz, M., Czarnecki, K.: Featureplugin: feature modeling plug-in for eclipse. In: Proceedings of Eclipse’04 (OOPSLA workshop), pp. 67–72. ACM, New York (2004)

  3. Apel S., Leich T., Saake G.: Aspectual feature modules. IEEE Trans. Softw. Eng. 34(2), 162–180 (2008)

    Article  Google Scholar 

  4. Batory, D.S.: Feature-oriented programming and the ahead tool suite. In: Proceedigs of ICSE’04, pp. 702–703. IEEE (2004)

  5. Batory, D.S.: Feature models, grammars, and propositional formulas. In: Proceedings of SPLC’05, pp. 7–20. Springer, Berlin (2005)

  6. Batory, D.S., Sarvela, J.N., Rauschmayer, A.: Scaling step-wise refinement. In: Proceedings of ICSE’03, pp. 187–197. IEEE (2003)

  7. Benavides D., Segura S., Cortés A.R.: Automated analysis of feature models 20 years later: a literature review. Inf. Syst. 35(6), 615–636 (2010)

    Article  Google Scholar 

  8. Beuche D.: Modeling and building software product lines with pure: variants. In: Proceedings SPLC’08. IEEE (2008)

  9. Boucher, Q., Classen, A., Heymans, P., Bourdoux, A., Demonceau, L.: Tag and prune: a pragmatic approach to software product line implementation. In: Proceedings of ASE’10, pp. 333–336. ACM, New York (2010)

  10. CCSDS. CCSDS File Delivery Protocol (CFDP): Blue Book, Issue 4 and Green Book, Issue 3. Number CCSDS 727.0-B-4, CCSDS 720.1-G-3. NASA (2007)

  11. Classen, A., Heymans, P., Schobbens, P.-Y.: What’s in a feature: a requirements engineering perspective. In: Proceedings of FASE’08. LNCS, vol. 4961, pp. 16–30. Springer, Berlin (2008)

  12. Clements P.C., Northrop L.: Software Product Lines: Practices and Patterns. Addison-Wesley, Reading (2001)

    Google Scholar 

  13. Czarnecki K., Eisenecker U.W.: Generative Programming Methods Tools and Applications. Addison-Wesley, Reading (2000)

    Google Scholar 

  14. Czarnecki K., Helsen S., Eisenecker U.W.: Staged configuration through specialization and multilevel configuration of feature models. Softw. Process: Improvement Practice 10(2), 143–169 (2005)

    Article  Google Scholar 

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

  16. Ebraert, P., Classen, A., Heymans, P., D’Hondt, T.: Feature diagrams for change-oriented programming. In: Proceedings of ICFI/FIW’09, pp. 107–122. IOS Press (2009)

  17. Gacek C., Anastasopoules M.: Implementing product line variabilities. SIGSOFT Softw. Eng. Notes 26(3), 109–117 (2001)

    Article  Google Scholar 

  18. Gauthier, C., Classen, A., Boucher, Q., Heymans, P., Storey, M.-A., Mendonca, M.: XToF: a tool for tag-based product line implementation. In: Proceedings of VaMoS’10, pp. 163–166. University of Duisburg-Essen (2010)

  19. Heidenreich, F., Kopcsek, J., Wende, C.: Featuremapper: mapping features to models. In: Proceedings of ICSE’08, pp. 943–944. ACM, New York (2008)

  20. Hubaux, A., Classen, A., Heymans, P.: Formal modelling of feature configuration workflows. In: Proceedings of SPLC’09, pp. 221–230. ACM, New York (2009)

  21. Jarzabek, S., Bassett, P., Zhang, H., Zhang: Xvcl: Xml-based variant configuration language. In: Proceedings of ICSE’03, pp. 810–811. IEEE (2003)

  22. Kang, K., Cohen, S., Hess, J., Nowak, W., Peterson, S.: Feature-oriented domain analysis (FODA) feasibility study. Technical Report CMU/SEI- 90-TR-21, SEI, Carnegie Mellon University, Nov 1990

  23. Kästner, C., Apel, S.: Integrating compositional and annotative approaches for product line engineering. In: Proceedings of GPCE’08, pp. 35–40. University of Passau (2008)

  24. Kästner, C., Apel, S.: Type-checking software product lines—a formal approach. In: Proceedings of ASE’08, pp. 258–267. IEEE (2008)

  25. Kästner, C., Apel, S., Batory, D.S.: A case study implementing features using aspectj. In: Proceedings of SPLC’07, pp. 223–232. IEEE (2007)

  26. Kästner, C., Apel, S., Kuhlemann, M.: Granularity in software product lines. In: Proceedings of ICSE’08, pp. 311–320. ACM, New York (2008)

  27. Kästner, C., Apel, S., Thüm, T., Saake, G.: Type checking annotation-based product lines. ACM Trans. Softw. Eng. Methodol. (2012, to appear)

  28. Kästner, C., Apel, S., Trujillo, S., Kuhlemann, M., Batory, D.S.: Guaranteeing syntactic correctness for all product line variants: a language-independent approach. In: Proceedings of TOOLS Europe’09, pp. 175–194. Springer, Berlin (2009)

  29. Kästner, C., Thüm, T., Saake, G., Feigenspan, J., Leich, T., Wielgorz, F., Apel, S.: Featureide: a tool framework for feature-oriented software development. In: Proceedings of ICSE’09, pp. 611–614. IEEE (2009)

  30. Krueger, C.W.: Biglever software gears and the 3-tiered spl methodology. In: Proceedings of OOPSLA’07, pp. 844–845. ACM, New York (2007)

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

  32. Liebig, J., Kästner, C., Apel, S.: Analyzing the discipline of preprocessor annotations in 30 million lines of c code. In: Proceedings of AOSD’11, pp. 191–202. ACM, New York (2011)

  33. Mendonca, M., Branco, M., Cowan, D.: S.p.l.o.t.: Software product lines online tools. In: Proceeding of OOPSLA’09, pp. 761–762. ACM, New York (2009)

  34. MISRA. MISRA-C: Guidelines for the Use of the C Language in Critical Systems. Motor Industry Research Association, UK (2008)

  35. Patzke, T., Muthig, D.: Product line implementation with frame technology: a case study. Technical Report 018.03/E, Fraunhofer IESE (2003)

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

    Article  Google Scholar 

  37. Pohl K., Böckle G., van der Linden F.J.: Software Product Line Engineering: Foundations, Principles and Techniques. Springer, Secaucus (2005)

    MATH  Google Scholar 

  38. Pohl, K., Metzger, A.: Variability management in software product line engineering. In: Proceedings of ICSE’06, pp. 1049–1050. ACM, New York (2006)

  39. Schobbens, P.-Y., Heymans, P., Trigaux, J.-C.: Feature diagrams: a survey and a formal semantics. In: Proceedings of RE’06, pp. 136–145. IEEE (2006)

  40. Smaragdakis Y., Batory D.S.: Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs. ACM Trans. Softw. Eng. Methodol. 11(2), 215–255 (2002)

    Article  Google Scholar 

  41. Spencer, H., Collyer, G.: #ifdef considered harmful, or portability experience with c news. In: Proceedings of USENIX’92, pp. 185–198. USENIX Association (1992)

  42. Storey, M.-A., Cheng, L.-T., Bull, I., Rigby, P.: Shared waypoints and social tagging to support collaboration in software development. In: Proceedings of CSCW’06, pp. 195–198. ACM, New York (2006)

  43. Szyperski C.A.: Component software—beyond object-oriented programming. Addison-Wesley-Longman, Reading (1998)

    Google Scholar 

  44. Tarr, P., Ossher, H., Harrison, W., Sutton, S.M.J.: N degrees of separation: multi-dimensional separation of concerns. In: Proceedings of ICSE’99, pp. 107–119. ACM, New York (1999)

  45. Thaker, S., Batory, D.S., Kitchin, D., Cook, W.: Safe composition of product lines. In: Proceedings of GPCE’07, pp. 95–104. ACM, New York (2007)

  46. Tun, T.T., Boucher, Q., Classen, A., Hubaux, A., Heymans, P.: Relating requirements and feature configurations: a systematic approach. In: Proceedings of SPLC’09, pp. 201–210. ACM, New York (2009)

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Quentin Boucher.

Additional information

This paper was extended version of [9].

Rights and permissions

Reprints and permissions

About this article

Cite this article

Heymans, P., Boucher, Q., Classen, A. et al. A code tagging approach to software product line development. Int J Softw Tools Technol Transfer 14, 553–566 (2012). https://doi.org/10.1007/s10009-012-0242-1

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10009-012-0242-1

Keywords

Navigation