Abstract
A software product line (SPL) is a family of related program variants in a well-defined domain, generated from a set of features. A fundamental difference from classical application development is that engineers develop not a single program but a whole family with hundreds to millions of variants. This makes it infeasible to separately check every distinct variant for errors. Still engineers want guarantees on the entire SPL. A further challenge is that an SPL may contain artifacts in different languages (code, documentation, models, etc.) that should be checked. In this paper, we present CIDE, an SPL development tool that guarantees syntactic correctness for all variants of an SPL. We show how CIDE’s underlying mechanism abstracts from textual representation and we generalize it to arbitrary languages. Furthermore, we automate the generation of plug-ins for additional languages from annotated grammars. To demonstrate the language-independent capabilities, we applied CIDE to a series of case studies with artifacts written in Java, C++, C, Haskell, ANTLR, HTML, and XML.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Apel, S., Kästner, C., Lengauer, C.: FeatureHouse: Language-Independent, Automatic Software Composition. In: Proc. Int’l Conf. on Software Engineering (ICSE) (2009)
Apel, S., Leich, T., Saake, G.: Aspectual Feature Modules. IEEE Trans. Softw. Eng. 34(2), 162–180 (2008)
Batory, D., Sarvela, J.N., Rauschmayer, A.: Scaling Step-Wise Refinement. IEEE Trans. Softw. Eng. 30(6), 355–371 (2004)
Beuche, D., Papajewski, H., Schröder-Preikschat, W.: Variability Management with Feature Models. Sci. Comput. Program. 53(3), 333–352 (2004)
Bray, T., et al.: Extensible Markup Language (XML) 1.1. 2nd edn. W3C Recommendation, W3C (2006)
Clements, P., Krueger, C.: Point/Counterpoint: Being Proactive Pays Off/Eliminating the Adoption Barrier. IEEE Software 19(4), 28–31 (2002)
Clements, P., Northrop, L.: Software Product Lines: Practices and Patterns. Addison-Wesley, Reading (2001)
Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. ACM Press, 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 Eng. (GPCE), pp. 211–220 (2006)
Delaware, B., Cook, W., Batory, D.: A Machine-Checked Model of Safe Composition. In: Proc. AOSD Workshop on Foundations of Aspect-Oriented Languages (FOAL), pp. 31–35 (2009)
Dörre, J.: Feature-Oriented Composition of XML Artifacts. Master’s thesis, University of Passau, Germany (2009)
Fuhrer, R., Keller, M., Kieżun, A.: Advanced Refactoring in the Eclipse JDT: Past, Present, and Future. In: Proc. ECOOP Workshop on Refactoring Tools (WRT), pp. 31–32 (2007)
Garrido, A.: Program Refactoring in the Presence of Preprocessor Directives. PhD thesis, University of Illinois at Urbana-Champaign (2005)
Gosling, J., Joy, B., Steele, G., Bracha, G.: JavaTMLanguage Specification, 3rd edn. The JavaTM Series. Addison-Wesley Professional, Reading (2005)
Grechanik, M., Batory, D., Perry, D.: Design of Large-Scale Polylingual Systems. In: Proc. Int’l Conf. on Software Engineering (ICSE), pp. 357–366 (2004)
Huang, S., Zook, D., Smaragdakis, Y.: Statically Safe Program Generation with SafeGen. In: Glück, R., Lowry, M. (eds.) GPCE 2005. LNCS, vol. 3676, pp. 309–326. Springer, Heidelberg (2005)
Huang, S.S., Smaragdakis, Y.: Expressive and Safe Static Reflection with MorphJ. In: Proc. Conf. Programming Language Design and Implementation (PLDI), pp. 79–89 (2008)
Jarzabek, S., et al.: XVCL: XML-based Variant Configuration Language. In: Proc. Int’l Conf. on Software Engineering (ICSE), pp. 810–811 (2003)
Johnson, R.E., Foote, B.: Designing Reusable Classes. Journal of Object-Oriented Programming 1(2), 22–35 (1988)
Kang, K., et al.: Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report CMU/SEI-90-TR-21, Software Engineering Institute (1990)
Kästner, C., Apel, S.: Type-checking Software Product Lines - A Formal Approach. In: Proc. Int’l Conf. Automated Software Engineering (ASE), pp. 258–267 (2008)
Kästner, C., Apel, S., Kuhlemann, M.: Granularity in Software Product Lines. In: Proc. Int’l Conf. on Software Engineering (ICSE), pp. 311–320 (2008)
Kästner, C., Apel, S., Trujillo, S., Kuhlemann, M., Batory, D.: Language-Independent Safe Decomposition of Legacy Applications into Features. Technical Report 2/08, School of Computer Science, University of Magdeburg, Germany (2008)
Kiczales, G., et al.: Aspect-Oriented Programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)
Kim, C.H.P., Kästner, C., Batory, D.: On the Modularity of Feature Interactions. In: Proc. Int’l Conf. Generative Programming and Component Eng. (GPCE), pp. 23–34 (2008)
Krueger, C.: Easing the Transition to Software Mass Customization. In: Proc. Int’l Workshop on Software Product-Family Eng., pp. 282–293 (2002)
Pohl, K., Böckle, G., van der Linden, F.J.: Software Product Line Engineering: Foundations, Principles and Techniques. Springer, Heidelberg (2005)
Pohl, K., Metzger, A.: Software Product Line Testing. Commun. ACM 49(12), 78–81 (2006)
Poppleton, M., Fischer, B., Franklin, C., Gondal, A., Snook, C., Sorge, J.: Towards Reuse with Feature-Oriented Event-B. In: Proc. GPCE Workshop on Modularization, Composition and Generative Techniques for Product Line Engineering (2008)
Post, H., Sinz, C.: Configuration Lifting: Verification meets Software Configuration. In: Proc. Int’l Conf. Automated Software Engineering (ASE), pp. 347–350 (2008)
Simonyi, C.: The Death of Computer Languages, the Birth of Intentional Programming. In: NATO Science Committee Conference (1995)
Spencer, H., Collyer, G.: #ifdef Considered Harmful or Portability Experience With C News. In: Proc. USENIX Conf., pp. 185–198 (1992)
Staples, M., Hill, D.: Experiences Adopting Software Product Line Development without a Product Line Architecture. In: Proc. Asia-Pacific Software Engineering Conf. (APSEC), pp. 176–183 (2004)
Tevanlinna, A., Taina, J., Kauppinen, R.: Product Family Testing: a Survey. SIGSOFT Softw. Eng. Notes 29(2), 12 (2004)
Thaker, S., Batory, D., Kitchin, D., Cook, W.: Safe Composition of Product Lines. In: Proc. Int’l Conf. Generative Programming and Component Eng. (GPCE), pp. 95–104 (2007)
Uzuncaova, E., Garcia, D., Khurshid, S., Batory, D.: A Specification-Based Approach to Testing Software Product Lines. In: Proc. Europ. Software Engineering Conf./Foundations of Software Engineering (ESEC/FSE), pp. 525–528 (2007)
Wile, D.: Abstract Syntax from Concrete Syntax. In: Proc. Int’l Conf. on Software Engineering (ICSE), pp. 472–480 (1997)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kästner, C., Apel, S., Trujillo, S., Kuhlemann, M., Batory, D. (2009). Guaranteeing Syntactic Correctness for All Product Line Variants: A Language-Independent Approach. In: Oriol, M., Meyer, B. (eds) Objects, Components, Models and Patterns. TOOLS EUROPE 2009. Lecture Notes in Business Information Processing, vol 33. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-02571-6_11
Download citation
DOI: https://doi.org/10.1007/978-3-642-02571-6_11
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-02570-9
Online ISBN: 978-3-642-02571-6
eBook Packages: Computer ScienceComputer Science (R0)