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...
Uloženo v:
| Vydáno v: | 2010 ACM/IEEE 32nd International Conference on Software Engineering Ročník 1; s. 105 - 114 |
|---|---|
| Hlavní autoři: | , , , , |
| Médium: | Konferenční příspěvek |
| Jazyk: | angličtina |
| Vydáno: |
New York, NY, USA
ACM
01.05.2010
IEEE |
| Edice: | ACM Conferences |
| Témata: | |
| ISBN: | 9781605587196, 1605587192 |
| ISSN: | 0270-5257 |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
| 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/eLvHCXMwlV3PS8MwFH5sw4OnqZs4fxFB8GK3Nk3S5iji8DQmKOxWkjaBHexG90P8731ps4kgiKempYfy2rzve0m_7wHcShoya1OJ85vygFFNA5kYG6Qi1GlSCM3jptlEMpmks5mctuB-r4UxxtQ_n5mhG9Z7-cUi37ilshGSbYqQ1oZ2kohGq7VfT3HeUTWU-SwsWN07EquuMHCOn07UhdSdY4Egqfd62p0L7_kTMT6KUre0IofumDr_nbbK33-0XqmRZ9z93zMfQf9bwkeme3A6hpYpT6C76-FA_JTuwctDSZQ3JiELS5APki3Wz4199yeZlwRpLQ6Wzv6yFhUsqsBhX0FWmMI_VGXIsrGNJY6yrvrwNn56fXwOfJuFQEWCrgNmVRJGBWfKCF5gcpQRQ1qHRMUqyTVn1MQWX2jonPOL3FqRW6mtZrkwOpFRfAqdclGaMyCFyjUCXGpj5qzrqYqRjonQipgVqdD5AG4wmpmrH1ZZI4nmmY945iM-gLs_78l0NTd2AD0X72zZ-HJkPtTnv1--gMPdzn8YXUJnXW3MFRzk2_V8VV3XH9MXLE69xg |
| linkProvider | IEEE |
| linkToHtml | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV1dS8MwFL34BfrkxybOzwiCL3a2aZI2jyKOiToUFPZWkjaBPdiNbir-e2_abCII4lPT0ody29xzbppzLsCZpCGzNpU4vykPGNU0kImxQSpCnSaF0Dxumk0kg0E6HMrHJbhYaGGMMfXmM9N1w_pffjHO39xS2SWSbYqQtgyrnDEaNmqtxYqKc4-qwcznYcHq7pFYd4WB8_x0si4k7xxLBEm929P8XHjXn4jxyyh1iyuy646pc-BZVvnrj-YrNfb0Nv_31FvQ_hbxkccFPG3Dkil3YHPexYH4Sd2Cp6uSKG9NQsaWICMk71hBNwben2RUEiS2OJg4A8xaVjCuAod-BZliEv9QlSGTxjiWONI6bcNL7-b5uh_4RguBigSdBcyqJIwKzpQRvMD0KCOGxA6pilWSa86oiS2-0tB55xe5tSK3UlvNcmF0IqN4F1bKcWn2gBQq1whxqY2ZM6-nKkZCJkIrYlakQucdOMVoZq6CmGaNKJpnPuKZj3gHzv-8J9PVyNgOtFy8s0njzJH5UO__fvkE1vvPD_fZ_e3g7gA25vsAwugQVmbVmzmCtfx9NppWx_WH9QVBLcEN |
| 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 |

