Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1449913.1449931acmconferencesArticle/Chapter ViewAbstractPublication PagesgpceConference Proceedingsconference-collections
research-article

Feature featherweight java: a calculus for feature-oriented programming and stepwise refinement

Published: 19 October 2008 Publication History

Abstract

Feature-oriented programming (FOP) is a paradigm that incorporates programming language technology, program generation techniques, and stepwise refinement. In their GPCE'07 paper, Thaker et al. suggest the development of a type system for FOP to guarantee safe feature composition, i.e, to guarantee the absence of type errors during feature composition. We present such a type system along with a calculus for a simple feature-oriented, Java-like language, called Feature Featherweight Java (FFJ). Furthermore, we explore four extensions of FFJ and how they affect type soundness.

References

[1]
D. Ancona, G. Lagorio, and E. Zucca. Jam - Designing a Java Extension with Mixins. ACM Trans. Programming Languages and Systems (TOPLAS), 25(5):641--712, 2003.
[2]
F. Anfurrutia, O. Díaz, and S. Trujillo. On Refining XML Artifacts. In Proc. Int'l. Conf. Web Engineering (ICWE), volume 4607 of LNCS, pages 473--478. Springer-Verlag, 2007.
[3]
S. Apel and D. Hutchins. An Overview of the gDeep Calculus. Technical Report MIP-0712, Department of Informatics and Mathematics, University of Passau, 2007.
[4]
S. Apel, C. Kästner, and D. Batory. Program Refactoring using Functional Aspects. In Proc. Int'l. Conf. Generative Programming and Component Engineering (GPCE). ACM Press, 2008.
[5]
S. Apel, C. Kästner, T. Leich, and G. Saake. Aspect Refinement - Unifying AOP and Stepwise Refinement. Journal of Object Technology - Special Issue: TOOLS EUROPE'07, pages 13--33, 2007.
[6]
S. Apel, C. Kästner, and C. Lengauer. An Overview of Feature Featherweight Java. Technical Report MIP-0802, Department of Informatics and Mathematics, University of Passau, 2008.
[7]
S. Apel, T. Leich, M. Rosenmüller, and G. Saake. FeatureC: On the Symbiosis of Feature-Oriented and Aspect-Oriented Programming. In Proc. Int'l. Conf. Generative Programming and Component Engineering (GPCE), volume 3676 of LNCS, pages 125--140. Springer-Verlag, 2005.
[8]
S. Apel, T. Leich, and G. Saake. Aspectual Feature Modules. IEEE Trans. Software Engineering (TSE), 34(2):162--180, 2008.
[9]
S. Apel and C. Lengauer. Superimposition: A Language-Independent Approach to Software Composition. In Proc. Int'l. Symp. Software Composition (SC), volume 4954 of LNCS, pages 20--35. Springer-Verlag, 2008.
[10]
D. Batory, J. Sarvela, and A. Rauschmayer. Scaling Step-Wise Refinement. IEEE Trans. Software Engineering (TSE), 30(6):355--371, 2004.
[11]
A. Bergel, S. Ducasse, and O. Nierstrasz. Classbox/J: Controlling the Scope of Change in Java. In Proc. Int'l. Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 177--189. ACM Press, 2005.
[12]
V. Bono, A. Patel, and V. Shmatikov. A Core Calculus of Classes and Mixins. In Proc. Europ. Conf. Object-Oriented Programming (ECOOP), volume 1628 of LNCS, pages 43--66. Springer-Verlag, 1999.
[13]
D. Clarke, S. Drossopoulou, J. Noble, and T. Wrigstad. Tribe: A Simple Virtual Class Calculus. In Proc. Int'l. Conf. Aspect-Oriented Software Development (AOSD), pages 121--134. ACM Press, 2007.
[14]
C. Clifton, T. Millstein, G. Leavens, and C. Chambers. MultiJava: Design Rationale, Compiler Implementation, and Applications. ACM Trans. Programming Languages and Systems (TOPLAS), 28(3):517--575, 2006.
[15]
W. Cook. Object-Oriented Programming Versus Abstract Data Types. In Proc. REX School/Workshop Foundations of Object-Oriented Languages, volume 489 of LNCS, pages 151--178. Springer-Verlag, 1991.
[16]
K. Czarnecki and K. Pietroszek. Verifying Feature-Based Model Templates Against Well-Formedness OCL Constraints. In Proc. Int'l. Conf. Generative Programming and Component Engineering (GPCE), pages 211--220. ACM Press, 2006.
[17]
E. Ernst, K. Ostermann, and W. Cook. A Virtual Class Calculus. In Proc. Int'l. Symp. Principles of Programming Languages (POPL), pages 270--282. ACM Press, 2006.
[18]
M. Flatt, S. Krishnamurthi, and M. Felleisen. Classes and Mixins. In Proc. Int'l. Symp. Principles of Programming Languages (POPL), pages 171--183. ACM Press, 1998.
[19]
V. Gasiunas, M. Mezini, and K. Ostermann. Dependent Classes. In Proc. Int'l. Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 133--152. ACM Press, 2007.
[20]
R. Hirschfeld, P. Costanza, and O. Nierstrasz. Context-Oriented Programming. J. Object Technology (JOT), 7(3):125--151, 2008.
[21]
S. Huang and Y. Smaragdakis. Expressive and Safe Static Reflection with MorphJ. In Proc. Int'l. Conf. Programming Language Design and Implementation (PLDI), pages 79--89. ACM Press, 2008.
[22]
D. Hutchins. Eliminating Distinctions of Class: Using Prototypes to Model Virtual Classes. In Proc. Int'l. Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 1--19. ACM Press, 2006.
[23]
A. Igarashi, B. Pierce, and P. Wadler. Featherweight Java: A Minimal Core Calculus for Java and GJ. ACM Trans. Programming Languages and Systems (TOPLAS), 23(3):396--450, 2001.
[24]
A. Igarashi, C. Saito, and M. Viroli. Lightweight Family Polymorphism. In Proc. Asian Symp. Programming Languages and Systems (APLAS), volume 3780 of LNCS, pages 161--177. Springer-Verlag, 2005.
[25]
T. Kamina and T. Tamai. McJava - A Design and Implementation of Java with Mixin-Types. In Proc. Asian Symp. Programming Languages and Systems (APLAS), volume 3302 of LNCS, pages 398--414. Springer-Verlag, 2004.
[26]
K. Kang, S. Cohen, J. Hess, W. Novak, and A. Peterson. Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report CMU/SEI-90-TR-21, Software Engineering Institute, Carnegie Mellon University, 1990.
[27]
C. Kästner and S. Apel. Type-checking Software Product Lines - A Formal Approach. In Proc. Int'l. Conf. Automated Software Engineering (ASE). IEEE CS Press, 2008.
[28]
C. Kästner, S. Apel, and M. Kuhlemann. Granularity in Software Product Lines. In Proc. Int'l. Conf. Software Engineering (ICSE). ACM Press, 2008.
[29]
C. Kästner, S. Apel, S. Trujillo, M. Kuhlemann, and D. Batory. Language-Independent Safe Decomposition of Legacy Applications into Features. Technical Report 02/2008, School of Computer Science, University of Magdeburg, 2008.
[30]
L. Liquori and A. Spiwack. FeatherTrait: A Modest Extension of Featherweight Java. ACM Trans. Programming Languages and Systems (TOPLAS), 30(2):1--32, 2008.
[31]
R. Lopez-Herrejon, D. Batory, and C. Lengauer. A Disciplined Approach to Aspect Composition. In Proc. Int'l. Symp. Partial Evaluation and Semantics-Based Program Manipulation (PEPM), pages 68--77. ACM Press, 2006.
[32]
O. Madsen, B. Moller-Pedersen, and K. Nygaard. Object-Oriented Programming in the BETA Programming Language. Addison-Wesley, 1993.
[33]
S. McDirmid, M. Flatt, and W. Hsieh. Jiazzi: New-Age Components for Old-Fashioned Java. In Proc. Int'l. Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 211--222. ACM Press, 2001.
[34]
S. McDirmid, W. Hsieh, and M. Flatt. A Framework for Modular Linking in OO Languages. In Proc. Joint Modular Lang. Conf. (JMLC), volume 4228 of LNCS, pages 116--135. Springer-Verlag, 2006.
[35]
N. McEachen and R. Alexander. Distributing Classes with Woven Concerns: An Exploration of Potential Fault Scenarios. In Proc. Int'l. Conf. Aspect-Oriented Software Development (AOSD), pages 192--200. ACM Press, 2005.
[36]
N. Nystrom, S. Chong, and A. Myers. Scalable Extensibility via Nested Inheritance. In Proc. Int'l. Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 99--115. ACM Press, 2004.
[37]
M. Odersky, V. Cremet, C. Röckl, and M. Zenger. A Nominal Theory of Objects with Dependent Types. In Proc. Europ. Conf. Object-Oriented Programming (ECOOP), volume 2743 of LNCS, pages 201--224. Springer-Verlag, 2003.
[38]
M. Odersky and M. Zenger. Scalable Component Abstractions. In Proc. Int'l. Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 41--57. ACM Press, 2005.
[39]
K. Ostermann. Nominal and Structural Subtyping in Component-Based Programming. J. Object Technology (JOT), 7(1):121--145, 2008.
[40]
C. Prehofer. Feature-Oriented Programming: A Fresh Look at Objects. In Proc. Europ. Conf. Object-Oriented Programming (ECOOP), volume 1241 of LNCS, pages 419--443. Springer-Verlag, 1997.
[41]
J. Reynolds. User-Defined Types and Procedural Data Structures as Complementary Approaches to Data Abstraction. In Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, pages 13--23. 1994.
[42]
A. Taivalsaari. On the Notion of Inheritance. ACM Comp. Surv., 28(3):438--479, 1996.
[43]
S. Thaker, D. Batory, D. Kitchin, and W. Cook. Safe Composition of Product Lines. In Proc. Int'l. Conf. Generative Programming and Component Engineering (GPCE), pages 95--104. ACM Press, 2007.
[44]
M. Torgersen. The Expression Problem Revisited. In Proc. Europ. Conf. Object-Oriented Programming (ECOOP), volume 3086 of LNCS, pages 123--143. Springer-Verlag, 2004.
[45]
N. Wirth. Program Development by Stepwise Refinement. Comm. ACM, 14(4):221--227, 1971.
[46]
A. Wright and M. Felleisen. A Syntactic Approach to Type Soundness. Inf. Comput., 115(1):38--94, 1994.

Cited By

View all
  • (2022)BatakJava: An Object-Oriented Programming Language with VersionsProceedings of the 15th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3567512.3567531(222-234)Online publication date: 29-Nov-2022
  • (2020)Software language engineers’ worst nightmareProceedings of the 13th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3426425.3426933(72-85)Online publication date: 16-Nov-2020
  • (2019)A Survey of Metaprogramming LanguagesACM Computing Surveys10.1145/335458452:6(1-39)Online publication date: 16-Oct-2019
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
GPCE '08: Proceedings of the 7th international conference on Generative programming and component engineering
October 2008
194 pages
ISBN:9781605582672
DOI:10.1145/1449913
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 [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 19 October 2008

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. featherweight java
  2. feature-oriented programming
  3. safe feature composition
  4. stepwise refinement
  5. type systems

Qualifiers

  • Research-article

Conference

GPCE '08
Sponsor:

Acceptance Rates

Overall Acceptance Rate 56 of 180 submissions, 31%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)4
  • Downloads (Last 6 weeks)1
Reflects downloads up to 13 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2022)BatakJava: An Object-Oriented Programming Language with VersionsProceedings of the 15th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3567512.3567531(222-234)Online publication date: 29-Nov-2022
  • (2020)Software language engineers’ worst nightmareProceedings of the 13th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3426425.3426933(72-85)Online publication date: 16-Nov-2020
  • (2019)A Survey of Metaprogramming LanguagesACM Computing Surveys10.1145/335458452:6(1-39)Online publication date: 16-Oct-2019
  • (2019)Compositional Feature-Oriented SystemsSoftware Engineering and Formal Methods10.1007/978-3-030-30446-1_9(162-180)Online publication date: 9-Sep-2019
  • (2017)A novel model-based testing approach for software product linesSoftware and Systems Modeling (SoSyM)10.1007/s10270-016-0516-216:4(1223-1251)Online publication date: 1-Oct-2017
  • (2015)Dynamically Evolving Annotation-Based Variability for Runtime Adaptation2015 IEEE International Conference on Computer and Information Technology; Ubiquitous Computing and Communications; Dependable, Autonomic and Secure Computing; Pervasive Intelligence and Computing10.1109/CIT/IUCC/DASC/PICOM.2015.60(423-430)Online publication date: Oct-2015
  • (2014)A Classification and Survey of Analysis Strategies for Software Product LinesACM Computing Surveys10.1145/258095047:1(1-45)Online publication date: 1-Jun-2014
  • (2014)ÆminiumACM Transactions on Programming Languages and Systems10.1145/254392036:1(1-42)Online publication date: 1-Mar-2014
  • (2014)Extending Type Inference to Variational ProgramsACM Transactions on Programming Languages and Systems10.1145/251819036:1(1-54)Online publication date: 1-Mar-2014
  • (2014)Runtime support for type-safe and context-based behavior adaptationFrontiers of Computer Science: Selected Publications from Chinese Universities10.1007/s11704-013-2337-68:1(17-32)Online publication date: 1-Feb-2014
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media