skip to main content
10.1145/2577080.2579816acmotherconferencesArticle/Chapter ViewAbstractPublication PagesmodularityConference Proceedingsconference-collections
research-article

Context-oriented software engineering: a modularity vision

Published: 22 April 2014 Publication History

Abstract

There are a number of constructs to implement context-dependent behavior, such as conditional branches using if statements, method dispatching in object-oriented programming (such as the state design pattern), dynamic deployment of aspects in aspect-oriented programming, and layers in context-oriented programming (COP). Uses of those constructs significantly affect the modularity of the obtained implementation. While there are a number of cases where COP improves modularity, it is not clear when we should use COP in general.
This paper presents a preliminary study on our software development methodology, the context-oriented software engineering (COSE), which is a use-case-driven software development methodology that guides us to a specification of context-dependent requirements and design. We provide a way to map the requirements and design formed by COSE to the implementation in our COP language ServalCJ. We applied COSE to two applications in order to assess its feasibility. We also identify key linguistic constructs that make COSE effective by examining existing COP languages. These feasibility studies and examination raise a number of interesting open issues. We finally show our future research roadmap to address those issues.

References

[1]
Gregory D. Abowd, Christopher G. Atkeson, Jason Hong, Sue Long, Rob Kooper, and Mike Pinkerton. Cyberguide: A mobile context-aware tour guide. Wireless Networks, 3(5):421--433, 1997.
[2]
Karim Ali and Ondrej Lhoták. Whole-program analysis without the whole program. In ECOOP'13, volume 7920 of LNCS, pages 378--400, 2013.
[3]
Raian Ali, Fabiano Dalpiaz, and Paolo Giorgini. Goal-based self-contextualization. In CAiSE 2009, pages 37--43, 2009.
[4]
Sven Apel and Christian Kästner. On overview of feature-oriented software development. Journal of Object Technology, 8(5):49--84, 2009.
[5]
Sven Apel, Thomas Leich, Marko Rosenmüller, and Gunter Saake. FeatureC: On the symbiosis of feature-oriented and aspect-oriented programming. In GPCE'05, pages 125--140, 2005.
[6]
Malte Appeltauer, Robert Hirschfeld, Michael Haupt, Jens Lincke, and Michael Perscheid. A comparison of context-oriented programming languages. In COP'09, pages 1--6, 2009.
[7]
Malte Appeltauer, Robert Hirschfeld, Michael Haupt, and Hidehiko Masuhara. ContextJ: Context-oriented programming with Java. Computer Software, 28(1):272--292, 2011.
[8]
Malte Appeltauer, Robert Hirschfeld, and Hidehiko Masuhara. Improving the development of context-dependent Java application with ContextJ. In COP'09, 2009.
[9]
Malte Appeltauer, Robert Hirschfeld, Hidehiko Masuhara, Michael Haupt, and Kazunori Kawauchi. Event-specific software composition in context-oriented programming. In Proceedings of the International Conference on Software Composition 2010 (SC'10), volume 6144 of LNCS, pages 50--65, 2010.
[10]
Ivia Aracic, Vaidas Gasiunas, Mira Mezini, and Klaus Ostermann. An overview of CaesarJ. In Transactions on Aspect-Oriented Software Development I, volume 3880 of LNCS, pages 135--173, 2006.
[11]
G. Bracha and W. Cook. Mixin-based inheritance. In OOPSLA 1990, pages 303--311, 1990.
[12]
Cinzia Cappiello, Marco Comuzzi, Enrico Mussi, and Barbara Pernici. Context-management for adaptive information systems. Electronic Notes in Theoretical Computer Science, 146:69--84, 2006.
[13]
Stefano Ceri, Florian Daniel, Federico M. Facca, and Maristella Matera. Model-driven engineering of active contet-awareness. World Wide Web, 10:387--413, 2007.
[14]
Pascal Costanza and Robert Hirschfeld. Language constructs for context-oriented programming -- an overview of ContextL. In Dynamic Language Symposium (DLS) '05, pages 1--10, 2005.
[15]
Anne Dardenne, Axel van Lamsweerde, and Stephen Fickas. Goal-directed requirements acquisition. Science of Computer Programming, 20:3--50, 1993.
[16]
Conal Elliott and Paul Hudak. Functional reactive animation. In ICFP'97, pages 263--273, 1997.
[17]
Carlo Ghezzi, Matteo Praella, and Guido Salvaneschi. Programming language support to context-aware adaptation--a case-study with Erlang. In SEAMS'10, pages 59--68, 2010.
[18]
Karen Henrichsen and Jadwiga Indulska. A software engineering framework for context-aware pervasive computing. In PERCOM'04, 2004.
[19]
Robert Hirschfeld, Pascal Costanza, and Michael Haupt. An introduction to context-oriented programming with ContextS. In GTTSE 2007, volume 5235 of LNCS, pages 396--407, 2008.
[20]
Robert Hirschfeld, Pascal Costanza, and Oscar Nierstrasz. Context-oriented programming. Journal of Object Technology, 7(3):125--151, 2008.
[21]
Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Övergaard. Object-Oriented Software Engineering: A Use Case Driven Approach. Pearson Education, 1992.
[22]
Ivar Jacobson and Pan-Wei Ng. Aspect-Oriented Software Development with Use Cases. Pearson Education, 2005.
[23]
Tetsuo Kamina, Tomoyuki Aotani, and Hidehiko Masuhara. EventCJ: a context-oriented programming language with declarative event-based context transition. In AOSD '11, pages 253--264, 2011.
[24]
Tetsuo Kamina, Tomoyuki Aotani, and Hidehiko Masuhara. Introducing composite layers in EventCJ. IPSJ Transactions on Programming, 6(1):1--8, 2013.
[25]
Tetsuo Kamina, Tomoyuki Aotani, and Hidehiko Masuhara. Mapping context-dependent requirements to event-based context-oriented programs for modularity. In Workshop on Reactivity, Events and Modularity (REM 2013), 2013.
[26]
Tetsuo Kamina, Tomoyuki Aotani, and Hidehiko Masuhara. A unified context activation mechanism. In COP'13, 2013.
[27]
Kyo C. Kang, Sholom G. Cohen, James A. Hess, William E. Novak, and A. Spencer Peterson. Feature-oriented domain analysis (FODA) feasibility study. Technical Report Carnegie Mellon University/SEI-90-TR-21, Software Engineering Institute, Carnegie Mellon University, 1990.
[28]
Roger Keays and Andry Rakotonirainy. Context-oriented programming. In MobiDE'03, pages 9--16, 2003.
[29]
Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Grisword. An overview of AspectJ. In ECOOP'01, pages 327--353, 2001.
[30]
Christian Koppen and Maximilian Störzer. PCDiff: Attacking the fragile pointcut problem. In European Interactive Workshop on Aspects in Software, 2004.
[31]
Alexiei Lapouchnian and John Mylopoulous. Modeling domain variability in requirements engineering with contexts. In ER 2009, volume 5829 of LNCS, pages 115--130, 2009.
[32]
Sotirious Liaskos, Alexei Lapouchnian, Yijun Yu, Eric Yu, and John Mylopoulos. On goal-based variability acquisition and analysis. In RE'06, pages 79--88, 2006.
[33]
Lin Liu and Eric Yu. Designing information systems in social context: a goal and scenario modelling approach. Information Systems, 29(2):187--203, 2004.
[34]
Christian Prehofer. Feature-oriented programming: A fresh look at objects. In ECOOP'97, volume 1241 of LNCS, pages 419--443, 1997.
[35]
Awais Rashid, Peter Sawyer, Ana Moreira, and Joao Araujo. Early aspects: a model for aspect-oriented requirements engineering. In RE'02, pages 199--202, 2002.
[36]
Daniel Saliber, Anind K. Dey, and Gregory D. Abowd. The context toolkit: Aiding the development of context-enabled applications. In CHI'99, pages 434--441, 1999.
[37]
Mohammed Salifu, Bashar Nuseibeh, Lucia Rapanotti, and Thein Than Tun. Using problem descriptions to represent variability for context-aware applications. In VaMoS 2007, 2007.
[38]
Mohammed Salifu, Yujun Yu, and Bashar Nuseibeh. Specifying monitoring and switching problems in context. In RE'07, pages 211--220, 2007.
[39]
Guido Salvaneschi, Carlo Ghezzi, and Matteo Pradella. ContextErlang: Introducing context-oriented programming in the actor model. In AOSD'12, 2012.
[40]
Nathanael Schärli, Stéphane Ducasse, Oscar Nierstrasz, and Andrew P. Black. Traits: Composable units of behaviour. In ECOOP 2003, volume 2743 of LNCS, pages 248--274, 2003.
[41]
Alistair Sutcliffe, Stephen Fickas, and McKay Moore Sohlberg. PC-RE: a method for personal and contextual requirements engineering with some experience. Requirements Engineering, 11(3):157--173, 2006.
[42]
Fuminobu Takeyama and Shigeru Chiba. Implementing feature interactions with generic feature modules. In Software Composition 2013, volume 8088 of LNCS, pages 81--96, 2013.

Cited By

View all
  • (2024)A Process for Identifying and Modeling Relevant System Context for the Reconfiguration of Automated SystemsIEEE Transactions on Automation Science and Engineering10.1109/TASE.2023.329139421:3(3977-4002)Online publication date: Jul-2024
  • (2020)PLAMProceedings of the 12th ACM International Workshop on Context-Oriented Programming and Advanced Modularity10.1145/3422584.3422766(1-8)Online publication date: 21-Jul-2020
  • (2018)Cutting‐Edge Topics on Dynamic Software VariabilitySoftware Technology: 10 Years of Innovation in IEEE Computer10.1002/9781119174240.ch14(247-270)Online publication date: 3-Sep-2018
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
MODULARITY '14: Proceedings of the 13th international conference on Modularity
April 2014
264 pages
ISBN:9781450327725
DOI:10.1145/2577080
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

  • AOSA: Aspect-Oriented Software Association

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 22 April 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. context-oriented programming
  2. methodology
  3. use cases

Qualifiers

  • Research-article

Conference

MODULARITY '14
Sponsor:
  • AOSA

Acceptance Rates

MODULARITY '14 Paper Acceptance Rate 21 of 60 submissions, 35%;
Overall Acceptance Rate 41 of 139 submissions, 29%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)7
  • Downloads (Last 6 weeks)0
Reflects downloads up to 07 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)A Process for Identifying and Modeling Relevant System Context for the Reconfiguration of Automated SystemsIEEE Transactions on Automation Science and Engineering10.1109/TASE.2023.329139421:3(3977-4002)Online publication date: Jul-2024
  • (2020)PLAMProceedings of the 12th ACM International Workshop on Context-Oriented Programming and Advanced Modularity10.1145/3422584.3422766(1-8)Online publication date: 21-Jul-2020
  • (2018)Cutting‐Edge Topics on Dynamic Software VariabilitySoftware Technology: 10 Years of Innovation in IEEE Computer10.1002/9781119174240.ch14(247-270)Online publication date: 3-Sep-2018
  • (2016)Product-centered view vs process-centered viewProceedings of the 20th International Systems and Software Product Line Conference10.1145/2934466.2971318(18-21)Online publication date: 16-Sep-2016
  • (2016)Improving system integration using a modular configuration specification languageCompanion Proceedings of the 15th International Conference on Modularity10.1145/2892664.2892691(152-157)Online publication date: 14-Mar-2016
  • (2016)A layer-structure diagram and a layer-interaction diagram towards a context-oriented development methodology for embedded systemsCompanion Proceedings of the 15th International Conference on Modularity10.1145/2892664.2892685(125-130)Online publication date: 14-Mar-2016
  • (2016)A taxonomy of context-aware software variability approachesCompanion Proceedings of the 15th International Conference on Modularity10.1145/2892664.2892684(119-124)Online publication date: 14-Mar-2016
  • (2016)A Two-Component Language for AdaptationIEEE Transactions on Software Engineering10.1109/TSE.2015.249694142:6(505-529)Online publication date: 1-Jun-2016
  • (2016)A Runtime Variability Mechanism Based on Supertypes2016 IEEE 1st International Workshops on Foundations and Applications of Self* Systems (FAS*W)10.1109/FAS-W.2016.16(6-11)Online publication date: Sep-2016
  • (2016)Context-Oriented Software Development with Generalized Layer Activation MechanismTransactions on Modularity and Composition I10.1007/978-3-319-46969-0_1(3-40)Online publication date: 30-Sep-2016
  • 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

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media