Abstract
Editing the source code of variational software is complicated by the presence of variation annotations, such as #ifdef statements, and by code that is only included in some configurations. When editing some configurations and not others, it would be easier to edit a simplified version of the source code that includes only the configurations we currently care about. In this paper, we present a projectional editing model for variational software. Using our approach, a programmer can partially configure a variational program, edit this simplified view of the code, and then automatically update the original, fully variational source code. The model is based on an isolation principle where edits affect only the variants that are visible in the view. We show that this principle has several nice properties that are suggested by related work on bidirectional transformations.
- S. Apel and C. Kästner. An Overview of Feature-Oriented Software Development. Journal of Object Technology, 8(5):49–84, 2009.Google Scholar
Cross Ref
- S. Apel, A. von Rhein, P. Wendler, A. Größlinger, and D. Beyer. Strategies for Product-Line Verification: Case Studies and Experiments. In IEEE Int. Conf. on Software Engineering, pages 482–491, 2013. Google Scholar
Digital Library
- D. L. Atkins. Version Sensitive Editing: Change History as a Programming Tool. In European Conf. on Object-Oriented Programming, volume 1439 of LNCS, pages 146–157. Springer, 1998. Google Scholar
Digital Library
- D. L. Atkins, T. Ball, T. L. Graves, and A. Mockus. Using Version Control Data to Evaluate the Impact of Software Tools: A Case Study of the Version Editor. IEEE Trans. on Software Engineering, 28(7): 625–637, 2002. Google Scholar
Digital Library
- F. Bancilhon and N. Spyratos. Update Semantics of Relational Views. ACM Trans. on Database Systems, 6(4):557–575, 1981. Google Scholar
Digital Library
- D. M. Barbosa, J. Cretin, N. Foster, M. Greenberg, and B. C. Pierce. Matching Lenses: Alignment and View Update. In ACM SIGPLAN Int. Conf. on Functional Programming, pages 193–204, 2010. Google Scholar
Digital Library
- D. Batory, J. N. Sarvela, and A. Rauschmayer. Scaling Step-Wise Refinement. IEEE Trans. on Software Engineering, 30(6):355–371, 2004. Google Scholar
Digital Library
- P. Bille. A Survey on Tree Edit Distance and Related Problems. Theoretical Computer Science, 337(1–3):217–239, 2005. Google Scholar
Digital Library
- A. Bohannon, J. N. Foster, B. C. Pierce, A. Pilkiewicz, and A. Schmitt. Boomerang: Resourceful Lenses for String Data. In ACM SIGPLANSIGACT Symposium on Principles of Programming Languages, pages 407–419, 2008. Google Scholar
Digital Library
- I. Boneva, A.-C. Caron, B. Groz, Y. Roos, S. Tison, and S. Staworko. View Update Translation for XML. In Int. Conf. on Database Theory, pages 42–53, 2011. Google Scholar
Digital Library
- S. Chen, M. Erwig, and E. Walkingshaw. Extending Type Inference to Variational Programs. ACM Trans. on Programming Languages and Systems, 36(1):1:1–1:54, 2014. Google Scholar
Digital Library
- S. S. Cosmadakis and C. H. Papadimitriou. Updates of Relational Views. Journal of the ACM, 31(4):742–760, 1984. Google Scholar
Digital Library
- K. Czarnecki, J. Foster, Z. Hu, R. Lämmel, A. Schürr, and J. Terwilliger. Bidirectional Transformations: A Cross-Discipline Perspective. In R. F. Paige, editor, Theory and Practice of Model Transformations, volume 5563 of LNCS, pages 260–283. Springer, 2009. Google Scholar
Digital Library
- U. Dayal and P. A. Bernstein. On the Correct Translation of Update Operations on Relational Views. ACM Trans. on Database Systems, 7 (3):381–416, 1982. Google Scholar
Digital Library
- M. Erwig and E. Walkingshaw. The Choice Calculus: A Representation for Software Variation. ACM Trans. on Software Engineering and Methodology, 21(1):6:1–6:27, 2011. Google Scholar
Digital Library
- R. Fagin. Inverting Schema Mappings. ACM Trans. on Database Systems, 32(4):25:1–25:53, 2007. Google Scholar
Digital Library
- J. Feigenspan, M. Schulze, M. Papendieck, C. Kästner, R. Dachselt, V. Köppen, and M. Frisch. Using Background Colors to Support Program Comprehension in Software Product Lines. In Int. Conf. on Evaluation and Assessment in Software Engineering, pages 66–75, 2011.Google Scholar
Cross Ref
- J. N. Foster, M. B. Greenwald, J. T. Moore, B. C. Pierce, and A. Schmitt. Combinators for Bidirectional Tree Transformations: A Linguistic Approach to the View-update Problem. ACM Trans. on Programming Languages and Systems, 29(3), 2007. Google Scholar
Digital Library
- G. Gottlob, P. Paolini, and R. Zicari. Properties and Update Semantics of Consistent Views. ACM Trans. on Database Systems, 13(4):486–524, 1988. Google Scholar
Digital Library
- W. Hofer, C. Elsner, F. Blendinger, W. Schröder-Preikschat, and D. Lohmann. Toolchain-Independent Variant Management with the Leviathan Filesystem. In Int. Workshop on Feature-Oriented Software Development, pages 18–24, 2010. Google Scholar
Digital Library
- D. Janzen and K. De Volder. Programming with Crosscutting Effective Views. In M. Odersky, editor, European Conf. on Object-Oriented Programming, volume 3086 of LNCS, pages 197–220. Springer, 2004.Google Scholar
- M. Johnson and R. Rosebrugh. Constant Complements, Reversibility and Universal View Updates. In J. Meseguer and G. Ro¸su, editors, Algebraic Methodology and Software Technology, volume 5140 of LNCS, pages 238–252. Springer, 2008. Google Scholar
Digital Library
- C. Kästner and S. Apel. Virtual Separation of Concerns—A Second Chance for Preprocessors. Journal of Object Technology, 8(6):59–78, 2009.Google Scholar
Cross Ref
- C. Kästner, S. Apel, and M. Kuhlemann. Granularity in Software Product Lines. In IEEE Int. Conf. on Software Engineering, pages 311–320, 2008. Google Scholar
Digital Library
- C. Kästner, S. Apel, S. Trujillo, M. Kuhlemann, and D. Batory. Guaranteeing Syntactic Correctness for All Product Line Variants: A Language-Independent Approach. In Int. Conf. on Objects, Components, Models and Patterns, volume 33 of LNBIP, pages 175–194. Springer, 2009.Google Scholar
- C. Kästner, P. G. Giarrusso, T. Rendel, S. Erdweg, K. Ostermann, and T. Berger. Variability-Aware Parsing in the Presence of Lexical Macros and Conditional Compilation. In ACM SIGPLAN Int. Conf. on Object-Oriented Programming, Systems, Languages, and Applications, pages 805–824, 2011. Google Scholar
Digital Library
- A. Kenner, C. Kästner, S. Haase, and T. Leich. TypeChef: Toward Type Checking #ifdef Variability in C. In Int. Workshop on Feature-Oriented Software Development, pages 25–32, 2010. Google Scholar
Digital Library
- M. Kersten and G. C. Murphy. Mylar: A Degree-of-Interest Model for IDEs. In Int. Conf. on Aspect-Oriented Software Development, pages 159–168, 2005. Google Scholar
Digital Library
- M. Kersten and G. C. Murphy. Using Task Context to Improve Programmer Productivity. In ACM SIGSOFT Int. Symp. on the Foundations of Software Engineering, pages 1–11, 2006. Google Scholar
Digital Library
- C. H. P. Kim, C. Kästner, and D. Batory. On the Modularity of Feature Interactions. In ACM SIGPLAN Int. Conf. on Generative Programming and Component Engineering, pages 19–23, 2008. Google Scholar
Digital Library
- D. Le, E. Walkingshaw, and M. Erwig. #ifdef Confirmed Harmful: Promoting Understandable Software Variation. In IEEE Int. Symp. on Visual Languages and Human-Centric Computing, pages 143–150, 2011.Google Scholar
- C. B. Medeiros and F. W. Tompa. Understanding the Implications of View Update Policies. Algorithmica, 1(1-4):337–360, 1986.Google Scholar
Cross Ref
- M. Mezini and K. Ostermann. Variability Management with Feature-Oriented Programming and Aspects. ACM SIGSOFT Software Engineering Notes, 29(6):127–136, 2004. Google Scholar
Digital Library
- H. V. Nguyen, C. Kästner, and T. N. Nguyen. Exploring Variabilityaware Execution for Testing Plugin-based Web Applications. In IEEE Int. Conf. on Software Engineering, pages 907–918, 2014. Google Scholar
Digital Library
- M. H. Scholl, C. Laasch, and M. Tresch. Updatable Views in Object-Oriented Databases. In Deductive and Object-Oriented Databases, volume 566 of LNCS, pages 189–207. Springer, 1991.Google Scholar
- M. Stengel, M. Frisch, S. Apel, J. Feigenspan, C. Kästner, and R. Dachselt. View Infinity: A Zoomable Interface for Feature-Oriented Software Development. In IEEE Int. Conf. on Software Engineering, pages 1031–1033, 2011. Google Scholar
Digital Library
- P. Tarr, H. Ossher, W. Harrison, and S. M. Sutton Jr. N Degrees of Separation: Multi-Dimensional Separation of Concerns. In IEEE Int. Conf. on Software Engineering, pages 107–119, 1999. Google Scholar
Digital Library
- J. Voigtländer. Bidirectionalization for Free! (Pearl). In ACM SIGPLANSIGACT Symposium on Principles of Programming Languages, pages 165–176, 2009. Google Scholar
Digital Library
- E. Walkingshaw. The Choice Calculus: A Formal Language of Variation. PhD thesis, Oregon State University, 2013. http://hdl. handle.net/1957/40652.Google Scholar
- E. Walkingshaw and M. Erwig. A Calculus for Modeling and Implementing Variation. In ACM SIGPLAN Int. Conf. on Generative Programming and Component Engineering, pages 132–140, 2012. Google Scholar
Digital Library
Index Terms
Projectional editing of variational software
Recommendations
Efficient editing in a tree-oriented projectional editor
Programming '20: Companion Proceedings of the 4th International Conference on Art, Science, and Engineering of ProgrammingIn contrast to text editors, using projectional editors typically requires users to learn a new editing metaphor. In text-oriented projectional editors, rules may be used to give users the impression of working in a regular text editor. As such, the ...
Robust projectional editing
SLE 2017: Proceedings of the 10th ACM SIGPLAN International Conference on Software Language EngineeringWhile contemporary projectional editors make sure that the edited programs conform to the programming language's metamodel, they do not enforce that they are also well-formed, that is, that they obey the well-formedness rules defined for the language. ...
Efficiency of projectional editing: a controlled experiment
FSE 2016: Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software EngineeringProjectional editors are editors where a user's editing actions directly change the abstract syntax tree without using a parser. They promise essentially unrestricted language com position as well as flexible notations, which supports aligning ...






Comments