An analysis of the variability in forty preprocessor-based software product lines

Over 30 years ago, the preprocessor cpp was developed to extend the programming language C by lightweight metaprogramming capabilities. Despite its error-proneness and low abstraction level, the preprocessor is still widely used in present-day software projects to implement variable software. Howeve...

Full description

Saved in:
Bibliographic Details
Published in:2010 ACM/IEEE 32nd International Conference on Software Engineering Vol. 1; pp. 105 - 114
Main Authors: Liebig, Jörg, Apel, Sven, Lengauer, Christian, Kästner, Christian, Schulze, Michael
Format: Conference Proceeding
Language:English
Published: New York, NY, USA ACM 01.05.2010
IEEE
Series:ACM Conferences
Subjects:
ISBN:9781605587196, 1605587192
ISSN:0270-5257
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Abstract Over 30 years ago, the preprocessor cpp was developed to extend the programming language C by lightweight metaprogramming capabilities. Despite its error-proneness and low abstraction level, the preprocessor is still widely used in present-day software projects to implement variable software. However, not much is known about how cpp is employed to implement variability. To address this issue, we have analyzed forty open-source software projects written in C. Specifically, we answer the following questions: How does program size influence variability? How complex are extensions made via cpp's variability mechanisms? At which level of granularity are extensions applied? Which types of extension occur? These questions revive earlier discussions on program comprehension and refactoring in the context of the preprocessor. To provide answers, we introduce several metrics measuring the variability, complexity, granularity, and types of extension applied by preprocessor directives. Based on the collected data, we suggest alternative implementation techniques. Our data set is a rich source for rethinking language design and tool support.
AbstractList Over 30 years ago, the preprocessor cpp was developed to extend the programming language C by lightweight metaprogramming capabilities. Despite its error-proneness and low abstraction level, the preprocessor is still widely used in present-day software projects to implement variable software. However, not much is known about how cpp is employed to implement variability. To address this issue, we have analyzed forty open-source software projects written in C. Specifically, we answer the following questions: How does program size influence variability? How complex are extensions made via cpp's variability mechanisms? At which level of granularity are extensions applied? Which types of extension occur? These questions revive earlier discussions on program comprehension and refactoring in the context of the preprocessor. To provide answers, we introduce several metrics measuring the variability, complexity, granularity, and types of extension applied by preprocessor directives. Based on the collected data, we suggest alternative implementation techniques. Our data set is a rich source for rethinking language design and tool support.
Author Apel, Sven
Schulze, Michael
Liebig, Jörg
Kästner, Christian
Lengauer, Christian
Author_xml – sequence: 1
  givenname: Jörg
  surname: Liebig
  fullname: Liebig, Jörg
  organization: University of Passau
– sequence: 2
  givenname: Sven
  surname: Apel
  fullname: Apel, Sven
  organization: University of Passau
– sequence: 3
  givenname: Christian
  surname: Lengauer
  fullname: Lengauer, Christian
  organization: University of Passau
– sequence: 4
  givenname: Christian
  surname: Kästner
  fullname: Kästner, Christian
  organization: University of Magdeburg
– sequence: 5
  givenname: Michael
  surname: Schulze
  fullname: Schulze, Michael
  organization: University of Magdeburg
BookMark eNqNkEtLAzEUhQNWsNauXbjJ0s2MuTN5TJal-IKCCLoOycwNRqeTkoxK_71T2h_g3ZwLH-csvksyG-KAhFwDKwG4uIOGSaV1ecgG9BlZatWAZEI0CrSckTmrFCtEJdQFWeb8yaaTNQNgc_K6GqgdbL_PIdPo6fiB9MemYF3ow7inYaA-punZJdyl2GLOMRXOZuxojn78tQknFrvvdqR9GDBfkXNv-4zLUy7I-8P92_qp2Lw8Pq9Xm8KCrMaCe6sYdIJblKJTstLAQde1Vt5q4QSvsPbceya4rLvWe9l67bzjrUSnNNQLcnPcDYhodilsbdobyWTFVDPR8khtuzUuxq9sgJmDL3PyZU6-jEsB_VS4_Weh_gNMFms8
ContentType Conference Proceeding
Copyright 2010 ACM
Copyright_xml – notice: 2010 ACM
DBID 6IE
6IH
CBEJK
RIE
RIO
DOI 10.1145/1806799.1806819
DatabaseName IEEE Electronic Library (IEL) Conference Proceedings
IEEE Proceedings Order Plan (POP) 1998-present by volume
IEEE Xplore All Conference Proceedings
IEEE Electronic Library (IEL)
IEEE Proceedings Order Plans (POP) 1998-present
DatabaseTitleList

Database_xml – sequence: 1
  dbid: RIE
  name: IEEE Electronic Library (IEL)
  url: https://ieeexplore.ieee.org/
  sourceTypes: Publisher
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EndPage 114
ExternalDocumentID 6062078
Genre orig-research
GroupedDBID 6IE
6IF
6IG
6IH
6IK
6IL
6IM
6IN
AAJGR
ACM
ADPZR
ALMA_UNASSIGNED_HOLDINGS
APO
BEFXN
BFFAM
BGNUA
BKEBE
BPEOZ
CBEJK
GUFHI
IEGSK
IERZE
IJVOP
OCL
RIB
RIC
RIE
RIL
RIO
-~X
.4S
.DC
123
23M
29O
5VS
8US
AAWTH
ABLEC
ADZIZ
AFFNX
ARCSS
AVWKF
CHZPO
EDO
FEDTE
I-F
I07
IPLJI
M43
RNS
XOL
ID FETCH-LOGICAL-a162t-4fa701d54ae65d762914193397fa95b542e3f4ff05463dcff6cf9bfb4c6eb7913
IEDL.DBID RIE
ISBN 9781605587196
1605587192
ISSN 0270-5257
IngestDate Wed Aug 27 02:38:14 EDT 2025
Wed Jan 31 06:43:37 EST 2024
IsPeerReviewed false
IsScholarly true
Keywords software product lines
C preprocessor
empirical study
Language English
License Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Permissions@acm.org
LinkModel DirectLink
MeetingName ICSE '10: 32nd International Conference on Software Engineering
MergedId FETCHMERGED-LOGICAL-a162t-4fa701d54ae65d762914193397fa95b542e3f4ff05463dcff6cf9bfb4c6eb7913
PageCount 10
ParticipantIDs ieee_primary_6062078
acm_books_10_1145_1806799_1806819_brief
acm_books_10_1145_1806799_1806819
PublicationCentury 2000
PublicationDate 20100501
2010-May
PublicationDateYYYYMMDD 2010-05-01
PublicationDate_xml – month: 05
  year: 2010
  text: 20100501
  day: 01
PublicationDecade 2010
PublicationPlace New York, NY, USA
PublicationPlace_xml – name: New York, NY, USA
PublicationSeriesTitle ACM Conferences
PublicationTitle 2010 ACM/IEEE 32nd International Conference on Software Engineering
PublicationTitleAbbrev icse
PublicationYear 2010
Publisher ACM
IEEE
Publisher_xml – name: ACM
– name: IEEE
SSID ssj0000630110
ssj0006499
Score 2.279021
Snippet Over 30 years ago, the preprocessor cpp was developed to extend the programming language C by lightweight metaprogramming capabilities. Despite its...
SourceID ieee
acm
SourceType Publisher
StartPage 105
SubjectTerms C preprocessor
Complexity theory
Correlation
empirical study
Feature extraction
General and reference -- Cross-computing tools and techniques -- Metrics
Measurement
Scattering
Software and its engineering -- Software notations and tools
Software and its engineering -- Software notations and tools -- Compilers -- Preprocessors
software product lines
Software systems
Title An analysis of the variability in forty preprocessor-based software product lines
URI https://ieeexplore.ieee.org/document/6062078
Volume 1
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlZ1LS8QwEMcHVzx48o3riwiCF6NN82hzFFE8iCgoeCtJmsAe7C7dVfHbO2mzK4IgnpqWHsrQzvxn0vkNwEngUhXM5xTlbqDCiJLaLBiaqzKU3CqnQ8eZvSvu78uXF_2wBGeLXhjvfffzmT-Py24vvx67t1gqu0CxnWNIG8CgKFTfq7Wop0R2VBfKkhdWopsdiVlXRiPxMzZ1oXSXmCDoPLGe5ucqMX-YkBesjKUVfR6PZeTvDIx7_TF6pYs8N2v_e-Z12P5u4SMPi-C0AUu-2YS1-QwHkj7pLXi8bIhJYBIyDgT1IHnH_LnHd3-SUUNQ1uJiEvGXXVPBuKUx9tVkii78w7SeTHpsLImSdboNzzfXT1e3NI1ZoIapfEZFMEXGaimMV7JG56iZQFmHQiUYLa0UuedBhJBFcn7tQlAuaBuscMrbQjO-A8vNuPG7QDzPneC8ttaVqMOM1dJn3DDOPC_QlwzhGK1ZxfxhWvUt0bJKFq-SxYdw-uc9lW1HPgxhK9q7mvRcjiqZeu_3y_uwOt_5z9gBLM_aN38IK-59Npq2R93L9AW-PL5z
linkProvider IEEE
linkToHtml http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlZ3fS9xAEMcHfxT0Sa0Wz1ZdodCXrmazP5J9LKIonocFC76F3c0u3IO5I3en-N93Ntm7UigUn7IJeQhDMvOdyc5nAL4GLlXBfE5R7gYqjCipzYKhuSpDya1yOnSc2WExGpVPT_phDb6vemG8993mM38el92__HriFrFUdoFiO8eQtg6bUog867u1VhWVSI_qglnyw0p00yMx78poZH7Gti4U7xJTBJ0n2tPyXCXqDxPygpWxuKLP47GMBJ51457_Gr7SxZ7rnfc99S4c_GniIw-r8LQHa775CDvLKQ4kfdT78PNHQ0xCk5BJIKgIyQtm0D3A-42MG4LCFhfTCMDs2gomLY3RryYzdOKvpvVk2oNjSRStswP4dX31eHlD06AFapjK51QEU2SslsJ4JWt0j5oJFHYoVYLR0kqRex5ECFlk59cuBOWCtsEKp7wtNOOfYKOZNP4QiOe5E5zX1roSlZixWvqMG8aZ5wV6kwGcoTWrmEHMqr4pWlbJ4lWy-AC-_feeyrZjHwawH-1dTXsyR5VMffTvy6ewdfN4P6yGt6O7z7C93AeQsS-wMW8X_hg-uJf5eNaedC_Wb9xVwbo
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=proceeding&rft.title=Proceedings+of+the+32nd+ACM%2FIEEE+International+Conference+on+Software+Engineering+-+Volume+1&rft.atitle=An+analysis+of+the+variability+in+forty+preprocessor-based+software+product+lines&rft.au=Liebig%2C+J%C3%B6rg&rft.au=Apel%2C+Sven&rft.au=Lengauer%2C+Christian&rft.au=K%C3%A4stner%2C+Christian&rft.series=ACM+Conferences&rft.date=2010-05-01&rft.pub=ACM&rft.isbn=9781605587196&rft.spage=105&rft.epage=114&rft_id=info:doi/10.1145%2F1806799.1806819
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=0270-5257&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=0270-5257&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=0270-5257&client=summon