Abstract
Feature-oriented software development is a paradigm for the construction, customization, and synthesis of large-scale and variable software systems, focusing on structure, reuse and variation. In this tutorial, we provide a gentle introduction to software product lines, feature oriented programming, virtual separation of concerns, and variability-aware analysis. We provide an overview, show connections between the different lines of research, and highlight possible future research directions.
These tutorial notes share text with previous publications on feature-oriented software development [3,4,47,49].
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Adams, B., Van Rompaey, B., Gibbs, C., Coady, Y.: Aspect mining in the presence of the C preprocessor. In: Proc. AOSD Workshop on Linking Aspect Technology and Evolution (LATE), pp. 1–6. ACM Press (2008)
Anfurrutia, F.I., Díaz, Ó., Trujillo, S.: On Refining XML Artifacts. In: Baresi, L., Fraternali, P., Houben, G.-J. (eds.) ICWE 2007. LNCS, vol. 4607, pp. 473–478. Springer, Heidelberg (2007)
Apel, S., Hutchins, D.: A calculus for uniform feature composition. ACM Trans. Program. Lang. Syst. (TOPLAS) 32(5), 1–33 (2010)
Apel, S., Kästner, C.: An overview of feature-oriented software development. J. Object Technology (JOT) 8(5), 49–84 (2009)
Apel, S., Kästner, C., Größlinger, A., Lengauer, C.: Type safety for feature-oriented product lines. Automated Software Engineering 17(3), 251–300 (2010)
Apel, S., Kästner, C., Lengauer, C.: Feature Featherweight Java: A calculus for feature-oriented programming and stepwise refinement. In: Proc. Int’l Conf. Generative Programming and Component Engineering (GPCE), pp. 101–112. ACM Press (2008)
Apel, S., Kästner, C., Lengauer, C.: FeatureHouse: Language-independent, automated software composition. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 221–231. IEEE Computer Society (2009)
Apel, S., Kolesnikov, S., Liebig, J., Kästner, C., Kuhlemann, M., Leich, T.: Access control in feature-oriented programming. Science of Computer Programming (Special Issue on Feature-Oriented Software Development) 77(3), 174–187 (2012)
Apel, S., Leich, T., Rosenmüller, M., Saáke, G.: FeatureC++: On the Symbiosis of Feature-Oriented and Aspect-Oriented Programming. In: Glück, R., Lowry, M. (eds.) GPCE 2005. LNCS, vol. 3676, pp. 125–140. Springer, Heidelberg (2005)
Apel, S., Leich, T., Saake, G.: Aspectual feature modules. IEEE Trans. Softw. Eng. (TSE) 34(2), 162–180 (2008)
Apel, S., Lengauer, C.: Superimposition: A Language-Independent Approach to Software Composition. In: Pautasso, C., Tanter, É. (eds.) SC 2008. LNCS, vol. 4954, pp. 20–35. Springer, Heidelberg (2008)
Apel, S., Speidel, H., Wendler, P., von Rhein, A., Beyer, D.: Detection of feature interactions using feature-aware verification. In: Proc. Int’l Conf. Automated Software Engineering (ASE), pp. 372–375. IEEE Computer Society (2011)
Atkins, D.L., Ball, T., Graves, T.L., Mockus, A.: Using version control data to evaluate the impact of software tools: A case study of the Version Editor. IEEE Trans. Softw. Eng. (TSE) 28(7), 625–637 (2002)
Bass, L., Clements, P., Kazman, R.: Software Architecture in Practice. Addison-Wesley, Boston (1998)
Batory, D.: Feature Models, Grammars, and Propositional Formulas. In: Obbink, H., Pohl, K. (eds.) SPLC 2005. LNCS, vol. 3714, pp. 7–20. Springer, Heidelberg (2005)
Batory, D., Sarvela, J.N., Rauschmayer, A.: Scaling step-wise refinement. IEEE Trans. Softw. Eng. (TSE) 30(6), 355–371 (2004)
Baxter, I., Mehlich, M.: Preprocessor conditional removal by simple partial evaluation. In: Proc. Working Conf. Reverse Engineering (WCRE), pp. 281–290. IEEE Computer Society (2001)
Benavides, D., Seguraa, S., Ruiz-Cortés, A.: Automated analysis of feature models 20 years later: A literature review. Information Systems 35(6), 615–636 (2010)
Beuche, D., Papajewski, H., Schröder-Preikschat, W.: Variability management with feature models. Sci. Comput. Program. 53(3), 333–352 (2004)
Bono, V., Patel, A., Shmatikov, V.: A Core Calculus of Classes and Mixins. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 43–66. Springer, Heidelberg (1999)
Bosch, J.: Super-imposition: A component adaptation technique. Information and Software Technology (IST) 41(5), 257–273 (1999)
Bouge, L., Francez, N.: A compositional approach to superimposition. In: Proc. Symp. Principles of Programming Languages (POPL), pp. 240–249. ACM Press (1988)
Brabrand, C., Schwartzbach, M.I.: Growing languages with metamorphic syntax macros. In: Proc. Workshop on Partial Evaluation and Semantics-Based Program Manipulation (PEPM), pp. 31–40. ACM Press (2002)
Bracha, G., Cook, W.: Mixin-based inheritance. In: Proc. Int’l Conf. Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), pp. 303–311. ACM Press (1990)
Calder, M., Kolberg, M., Magill, E.H., Reiff-Marganiec, S.: Feature interaction: A critical review and considered forecast. Computer Networks 41(1), 115–141 (2003)
Chen, L., Babar, M.A., Ali, N.: Variability management in software product lines: A systematic review. In: Proc. Int’l Software Product Line Conference (SPLC), pp. 81–90. Carnegie Mellon University (2009)
Classen, A., Heymans, P., Schobbens, P.-Y., Legay, A., Raskin, J.-F.: Model checking lots of systems: Efficient verification of temporal properties in software product lines. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 335–344. ACM Press (2010)
Clements, P., Northrop, L.: Software Product Lines: Practices and Patterns. Addison-Wesley, Boston (2001)
Coppit, D., Painter, R., Revelle, M.: Spotlight: A prototype tool for software plans. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 754–757. IEEE Computer Society (2007)
Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. ACM Press/Addison-Wesley, New York (2000)
Czarnecki, K., Pietroszek, K.: Verifying feature-based model templates against well-formedness OCL constraints. In: Proc. Int’l Conf. Generative Programming and Component Engineering (GPCE), pp. 211–220. ACM Press (2006)
Ernst, M., Badros, G., Notkin, D.: An empirical analysis of C preprocessor use. IEEE Trans. Softw. Eng. (TSE) 28(12), 1146–1170 (2002)
Erwig, M., Walkingshaw, E.: The choice calculus: A representation for software variation. ACM Trans. Softw. Eng. Methodol. (TOSEM) 21(1), 6:1–6:27 (2011)
Favre, J.-M.: Understanding-in-the-large. In: Proc. Int’l Workshop on Program Comprehension, p. 29. IEEE Computer Society (1997)
Feigenspan, J., Schulze, M., Papendieck, M., Kästner, C., Dachselt, R., Köppen, V., Frisch, M.: Using background colors to support program comprehension in software product lines. In: Proc. Int’l Conf. Evaluation and Assessment in Software Engineering (EASE), pp. 66–75 (2011)
Filman, R.E., Elrad, T., Clarke, S., Aksit, M. (eds.): Addison-Wesley, Boston (2005)
Findler, R., Flatt, M.: Modular object-oriented programming with units and mixins. In: Proc. Int’l Conf. Functional Programming (ICFP), pp. 94–104. ACM Press (1998)
Flatt, M., Krishnamurthi, S., Felleisen, M.: Classes and mixins. In: Proc. Symp. Principles of Programming Languages (POPL), pp. 171–183. ACM Press (1998)
Garrido, A.: Program Refactoring in the Presence of Preprocessor Directives. PhD thesis, University of Illinois at Urbana-Champaign (2005)
Griss, M.L., Favaro, J., d’ Alessandro, M.: Integrating feature modeling with the RSEB. In: Proc. Int’l Conf. Software Reuse (ICSR), p. 76. IEEE Computer Society (1998)
Günther, S., Sunkle, S.: Feature-oriented programming with Ruby. In: Proc. GPCE Workshop on Feature-Oriented Software Development (FOSD), pp. 11–18. ACM Press (2009)
Habermann, A.N., Flon, L., Cooprider, L.: Modularization and hierarchy in a family of operating systems. Commun. ACM 19(5), 266–272 (1976)
Heidenreich, F., Şavga, I., Wende, C.: On controlled visualisations in software product line engineering. In: Proc. SPLC Workshop on Visualization in Software Product Line Engineering (ViSPLE), pp. 303–313. Lero (2008)
Janzen, D., De Volder, K.: Programming with Crosscutting Effective Views. In: Vetta, A. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 197–220. Springer, Heidelberg (2004)
John, I., Eisenbarth, M.: A decade of scoping – a survey. In: Proc. Int’l Software Product Line Conference (SPLC), pp. 31–40. Carnegie Mellon University (2009)
Kang, K., Cohen, S.G., Hess, J.A., Novak, W.E., Peterson, A.S.: Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report CMU/SEI-90-TR-21, SEI, Pittsburgh, PA (1990)
Kästner, C.: Virtual Separation of Concerns. PhD thesis, University of Magdeburg (2010)
Kästner, C., Apel, S.: Integrating compositional and annotative approaches for product line engineering. In: Proc. GPCE Workshop on Modularization, Composition and Generative Techniques for Product Line Engineering, pp. 35–40. University of Passau (2008)
Kästner, C., Apel, S.: Virtual separation of concerns – A second chance for preprocessors. Journal of Object Technology (JOT) 8(6), 59–78 (2009)
Kästner, C., Apel, S., Kuhlemann, M.: Granularity in software product lines. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 311–320. ACM Press (2008)
Kästner, C., Apel, S., Kuhlemann, M.: A model of refactoring physically and virtually separated features. In: Proc. Int’l Conf. Generative Programming and Component Engineering (GPCE), pp. 157–166. ACM Press (2009)
Kästner, C., Apel, S., Ostermann, K.: The road to feature modularity? In: Proceedings of the Third Workshop on Feature-Oriented Software Development (FOSD), pp. 5:1–5:8. ACM Press (September 2011)
Kästner, C., Apel, S., Thüm, T., Saake, G.: Type checking annotation-based product lines. ACM Trans. Softw. Eng. Methodol. (TOSEM) 21(3), 14:1–14:39 (2012)
Kästner, C., Apel, S., Trujillo, S., Kuhlemann, M., Batory, D.: Guaranteeing Syntactic Correctness for All Product Line Variants: A Language-Independent Approach. In: Oriol, M., Meyer, B. (eds.) TOOLS EUROPE 2009. LNBIP, vol. 33, pp. 175–194. Springer, Heidelberg (2009)
Kästner, C., Apel, S., ur Rahman, S.S., Rosenmüller, M., Batory, D., Saake, G.: On the impact of the optional feature problem: Analysis and case studies. In: Proc. Int’l Software Product Line Conference (SPLC), pp. 181–190. Carnegie Mellon University (2009)
Kästner, C., Giarrusso, P.G., Rendel, T., Erdweg, S., Ostermann, K., Berger, T.: Variability-aware parsing in the presence of lexical macros and conditional compilation. In: Proc. Int’l Conf. Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), pp. 805–824. ACM Press (October 2011)
Kästner, C., Thüm, T., Saake, G., Feigenspan, J., Leich, T., Wielgorz, F., Apel, S.: FeatureIDE: Tool framework for feature-oriented software development. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 611–614. IEEE Computer Society (2009)
Kästner, C., Trujillo, S., Apel, S.: Visualizing software product line variabilities in source code. In: Proc. SPLC Workshop on Visualization in Software Product Line Engineering (ViSPLE), pp. 303–313. Lero (2008)
Kim, C.H.P., Batory, D.S., Khurshid, S.: Reducing combinatorics in testing product lines. In: Proc. Int’l Conf. Aspect-Oriented Software Development (AOSD), pp. 57–68. ACM Press (2011)
Lauenroth, K., Pohl, K., Toehning, S.: Model checking of domain artifacts in product line engineering. In: Proc. Int’l Conf. Automated Software Engineering (ASE), pp. 269–280. IEEE Computer Society (2009)
Lee, J.J., Kang, K.C., Kim, S.: A Feature-Based Approach to Product Line Production Planning. In: Nord, R.L. (ed.) SPLC 2004. LNCS, vol. 3154, pp. 183–196. Springer, Heidelberg (2004)
Leich, T., Apel, S., Marnitz, L.: Tool support for feature-oriented software development: FeatureIDE: An eclipse-based approach. In: Proc. OOPSLA Workshop on Eclipse Technology eXchange (ETX), pp. 55–59. ACM Press (2005)
Li, H.C., Krishnamurthi, S., Fisler, K.: Modular verification of open features using three-valued model checking. Automated Software Engineering 12(3), 349–382 (2005)
Liebig, J., Kästner, C., Apel, S.: Analyzing the discipline of preprocessor annotations in 30 million lines of C code. In: Proc. Int’l Conf. Aspect-Oriented Software Development (AOSD), pp. 191–202. ACM Press (2011)
Liu, J., Batory, D., Lengauer, C.: Feature oriented refactoring of legacy applications. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 112–121. ACM Press (2006)
McCloskey, B., Brewer, E.: ASTEC: A new approach to refactoring C. In: Proc. Europ. Software Engineering Conf./Foundations of Software Engineering (ESEC/FSE), pp. 21–30. ACM Press (2005)
Mendonça, M., Wąsowski, A., Czarnecki, K.: SAT-based analysis of feature models is easy. In: Proc. Int’l Software Product Line Conference (SPLC), pp. 231–240. Carnegie Mellon University (2009)
Mendonça, M., Wąsowski, A., Czarnecki, K., Cowan, D.D.: Efficient compilation techniques for large scale feature models. In: Proc. Int’l Conf. Generative Programming and Component Engineering (GPCE), pp. 13–22. ACM Press (2008)
Mens, T.: A state-of-the-art survey on software merging. IEEE Trans. Softw. Eng. (TSE) 28(5), 449–462 (2002)
Ossher, H., Harrison, W.: Combination of inheritance hierarchies. In: Proc. Int’l Conf. Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), pp. 25–40. ACM Press (1992)
Ossher, H., Tarr, P.: Hyper/J: Multi-dimensional separation of concerns for Java. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 734–737. ACM Press (2000)
Oster, S., Markert, F., Ritter, P.: Automated Incremental Pairwise Testing of Software Product Lines. In: Bosch, J., Lee, J. (eds.) SPLC 2010. LNCS, vol. 6287, pp. 196–210. Springer, Heidelberg (2010)
Padioleau, Y.: Parsing C/C++ Code without Pre-processing. In: de Moor, O., Schwartzbach, M.I. (eds.) CC 2009. LNCS, vol. 5501, pp. 109–125. Springer, Heidelberg (2009)
Parnas, D.L.: On the design and development of program families. IEEE Trans. Softw. Eng. (TSE) 2(1), 1–9 (1976)
Pohl, K., Böckle, G., van der Linden, F.J.: Software Product Line Engineering: Foundations, Principles and Techniques. Springer, Heidelberg (2005)
Post, H., Sinz, C.: Configuration lifting: Verification meets software configuration. In: Proc. Int’l Conf. Automated Software Engineering (ASE), pp. 347–350. IEEE Computer Society (2008)
Prehofer, C.: Feature-Oriented Programming: A Fresh Look at Objects. In: Aksit, M., Auletta, V. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 419–443. Springer, Heidelberg (1997)
Rabiser, R., Grünbacher, P., Dhungana, D.: Supporting product derivation by adapting and augmenting variability models. In: Proc. Int’l Software Product Line Conference (SPLC), pp. 141–150. IEEE Computer Society (2007)
Refstrup, J.G.: Adapting to change: Architecture, processes and tools: A closer look at HP’s experience in evolving the Owen software product line. In: Proc. Int’l Software Product Line Conference, SPLC (2009), Keynote presentation
Rosenmüller, M., Apel, S., Leich, T., Saake, G.: Tailor-made data management for embedded systems: A case study on Berkeley DB. Data and Knowledge Engineering (DKE) 68(12), 1493–1512 (2009)
Schaefer, I., Bettini, L., Damiani, F.: Compositional type-checking for delta-oriented programming. In: Proc. Int’l Conf. Aspect-Oriented Software Development (AOSD), pp. 43–56. ACM Press (2011)
Siegmund, N., Rosenmüller, M., Kuhlemann, M., Kästner, C., Apel, S., Saake, G.: SPL Conqueror: Toward optimization of non-functional properties in software product lines. Software Quality Journal - Special issue on Quality Engineering for Software Product Lines (in press, 2012)
Sincero, J., Tartler, R., Lohmann, D., Schröder-Preikschat, W.: Efficient extraction and analysis of preprocessor-based variability. In: Proc. Int’l Conf. Generative Programming and Component Engineering (GPCE), pp. 33–42. ACM Press (2010)
Singh, N., Gibbs, C., Coady, Y.: C-CLR: A tool for navigating highly configurable system software. In: Proc. AOSD Workshop on Aspects, Components, and Patterns for Infrastructure Software (ACP4IS), p. 9. ACM Press (2007)
Smaragdakis, Y., Batory, D.: Mixin layers: An object-oriented implementation technique for refinements and collaboration-based designs. ACM Trans. Softw. Eng. Methodol. (TOSEM) 11(2), 215–255 (2002)
Spencer, H., Collyer, G.: #ifdef considered harmful or portability experience with C news. In: Proc. USENIX Conf., pp. 185–198. USENIX Association (1992)
Steger, M., Tischer, C., Boss, B., Müller, A., Pertler, O., Stolz, W., Ferber, S.: Introducing PLA at Bosch Gasoline Systems: Experiences and Practices. In: Nord, R.L. (ed.) SPLC 2004. LNCS, vol. 3154, pp. 34–50. Springer, Heidelberg (2004)
Szyperski, C.: Component Software: Beyond Object-Oriented Programming, 2nd edn. Addison-Wesley, Boston (2002)
Tarr, P., Ossher, H., Harrison, W., Sutton Jr., S.M.: N degrees of separation: Multi-dimensional separation of concerns. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 107–119. IEEE Computer Society (1999)
Tartler, R., Lohmann, D., Sincero, J., Schröder-Preikschat, W.: Feature consistency in compile-time-configurable system software: Facing the Linux 10,000 feature problem. In: Proc. European Conference on Computer Systems (EuroSys), pp. 47–60. ACM Press (2011)
Tešanović, A., Sheng, K., Hansson, J.: Application-tailored database systems: A case of aspects in an embedded database. In: Proc. Int’l Database Engineering and Applications Symposium, pp. 291–301. IEEE Computer Society (2004)
Thaker, S., Batory, D., Kitchin, D., Cook, W.: Safe composition of product lines. In: Proc. Int’l Conf. Generative Programming and Component Engineering (GPCE), pp. 95–104. ACM Press (2007)
Thüm, T., Apel, S., Kästner, C., Kuhlemann, M., Schaefer, I., Saake, G.: Analysis strategies for software product lines. Technical Report FIN-004-2012, School of Computer Science, University of Magdeburg (April 2012)
Thüm, T., Batory, D., Kästner, C.: Reasoning about edits to feature models. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 254–264. IEEE Computer Society (2009)
Thüm, T., Schaefer, I., Kuhlemann, M., Apel, S.: Proof composition for deductive verification of software product lines. In: Proc. Int’l Workshop on Variability-Intensive Systems Testing, Validation & Verification (VAST), pp. 270–277. IEEE Computer Society (2011)
Vittek, M.: Refactoring browser with preprocessor. In: Proc. European Conf. on Software Maintenance and Reengineering (CSMR), pp. 101–110. IEEE Computer Society (2003)
Weise, D., Crew, R.: Programmable syntax macros. In: Proc. Conf. Programming Language Design and Implementation (PLDI), pp. 156–165. ACM Press (1993)
Wirth, N.: Program development by stepwise refinement. Commun. ACM 14(4), 221–227 (1971)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Kästner, C., Apel, S. (2013). Feature-Oriented Software Development. In: Lämmel, R., Saraiva, J., Visser, J. (eds) Generative and Transformational Techniques in Software Engineering IV. GTTSE 2011. Lecture Notes in Computer Science, vol 7680. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-35992-7_10
Download citation
DOI: https://doi.org/10.1007/978-3-642-35992-7_10
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-35991-0
Online ISBN: 978-3-642-35992-7
eBook Packages: Computer ScienceComputer Science (R0)