Matches in SemOpenAlex for { <https://semopenalex.org/work/W3100279824> ?p ?o ?g. }
- W3100279824 abstract "Context. Refining or altering existing behavior is the daily work of every developer, but that cannot be always anticipated, and software sometimes cannot be stopped. In such cases, unanticipated adaptation of running systems is of interest for many scenarios, ranging from functional upgrades to on-the-fly debugging or monitoring of critical applications. Inquiry. A way of altering software at run time is using behavioral reflection, which is particularly well-suited for unanticipated adaptation of real-world systems. Partial behavioral reflection is not a new idea, and for years many efforts have been made to propose a practical way of expressing it. All these efforts resulted in practical solutions, but which introduced a semantic gap between the code that requires adaptation and the expression of the partial behavior. For example, in Aspect-Oriented Programming, a pointcut description is expressed in another language, which introduces a new distance between the behavior expression (the Advice) and the source code in itself. Approach. Ten years ago, the idea of closing the gap between the code and the expression of the partial behavior led to the implementation of the Reflectivity framework. Using Reflectivity, developers annotate Abstract Syntax Tree (AST) nodes with meta-behavior which is taken into account by the compiler to produce behavioral variations. In this paper, we present Reflectivity, its API, its implementation and its usage in Pharo. We reflect on ten years of use of Reflectivity, and show how it has been used as a basic building block of many innovative ideas. Knowledge. Reflectivity brings a practical way of working at the AST level, which is a high-level representation of the source code manipulated by software developers. It enables a powerful way of dynamically add and modify behavior. Reflectivity is also a flexible mean to bridge the gap between the expression of the meta-behavior and the source code. This ability to apply unanticipated adaptation and to provide behavioral reflection led to many experiments and projects during this last decade by external users. Existing work use Reflectivity to implement reflective libraries or languages extensions, featherweight code instrumentation, dynamic software update, debugging tools and visualization and software analysis tools. Grounding. Reflectivity is actively used in research projects. During the past ten years, it served as a support, either for implementation or as a fundamental base, for many research work including PhD theses, conference, journal and workshop papers. Reflectivity is now an important library of the Pharo language, and is integrated at the heart of the platform. Importance. Reflectivity exposes powerful abstractions to deal with partial behavioral adaptation, while providing a mature framework for unanticipated, non-intrusive and partial behavioral reflection based on AST annotation. Furthermore, even if Reflectivity found its home inside Pharo, it is not a pure Smalltalk-oriented solution. As validation over the practical use of Reflectivity in dynamic object-oriented languages, the API has been ported to Python. Finally, the AST annotation feature of Reflectivity opens new experimentation opportunities about the control that developers could gain on the behavior of their own software." @default.
- W3100279824 created "2020-11-23" @default.
- W3100279824 creator A5052311410 @default.
- W3100279824 creator A5056482314 @default.
- W3100279824 creator A5076641145 @default.
- W3100279824 date "2020-02-14" @default.
- W3100279824 modified "2023-09-27" @default.
- W3100279824 title "Sub-method, partial behavioral reflection with Reflectivity: Looking back on 10 years of use" @default.
- W3100279824 cites W1155086552 @default.
- W3100279824 cites W1527793496 @default.
- W3100279824 cites W1554230175 @default.
- W3100279824 cites W1570534233 @default.
- W3100279824 cites W1575008295 @default.
- W3100279824 cites W1588555795 @default.
- W3100279824 cites W1602079523 @default.
- W3100279824 cites W1609546211 @default.
- W3100279824 cites W1954273317 @default.
- W3100279824 cites W1969941477 @default.
- W3100279824 cites W1975359962 @default.
- W3100279824 cites W1998033538 @default.
- W3100279824 cites W2012031603 @default.
- W3100279824 cites W2019380005 @default.
- W3100279824 cites W2021380116 @default.
- W3100279824 cites W2029414465 @default.
- W3100279824 cites W2035206182 @default.
- W3100279824 cites W2039028802 @default.
- W3100279824 cites W2045888450 @default.
- W3100279824 cites W2069902027 @default.
- W3100279824 cites W2078434561 @default.
- W3100279824 cites W2079524903 @default.
- W3100279824 cites W2079777989 @default.
- W3100279824 cites W2094057249 @default.
- W3100279824 cites W2108945841 @default.
- W3100279824 cites W2111872274 @default.
- W3100279824 cites W2118005163 @default.
- W3100279824 cites W2128003610 @default.
- W3100279824 cites W2129368011 @default.
- W3100279824 cites W2139430599 @default.
- W3100279824 cites W2143408829 @default.
- W3100279824 cites W2145317012 @default.
- W3100279824 cites W2153919898 @default.
- W3100279824 cites W2166974198 @default.
- W3100279824 cites W2168287017 @default.
- W3100279824 cites W2170311191 @default.
- W3100279824 cites W2172147300 @default.
- W3100279824 cites W2303768906 @default.
- W3100279824 cites W2536448974 @default.
- W3100279824 cites W2568617708 @default.
- W3100279824 cites W2734770215 @default.
- W3100279824 cites W2742039675 @default.
- W3100279824 cites W2769654194 @default.
- W3100279824 cites W2769662088 @default.
- W3100279824 cites W2794883415 @default.
- W3100279824 cites W2797562155 @default.
- W3100279824 cites W2899875271 @default.
- W3100279824 cites W2900498056 @default.
- W3100279824 cites W2907851429 @default.
- W3100279824 cites W2914222239 @default.
- W3100279824 cites W652934850 @default.
- W3100279824 cites W2001196750 @default.
- W3100279824 cites W2461779795 @default.
- W3100279824 doi "https://doi.org/10.22152/programming-journal.org/2020/4/5" @default.
- W3100279824 hasPublicationYear "2020" @default.
- W3100279824 type Work @default.
- W3100279824 sameAs 3100279824 @default.
- W3100279824 citedByCount "5" @default.
- W3100279824 countsByYear W31002798242021 @default.
- W3100279824 countsByYear W31002798242022 @default.
- W3100279824 crossrefType "journal-article" @default.
- W3100279824 hasAuthorship W3100279824A5052311410 @default.
- W3100279824 hasAuthorship W3100279824A5056482314 @default.
- W3100279824 hasAuthorship W3100279824A5076641145 @default.
- W3100279824 hasBestOaLocation W31002798243 @default.
- W3100279824 hasConcept C107457646 @default.
- W3100279824 hasConcept C115903868 @default.
- W3100279824 hasConcept C120665830 @default.
- W3100279824 hasConcept C121332964 @default.
- W3100279824 hasConcept C139807058 @default.
- W3100279824 hasConcept C151730666 @default.
- W3100279824 hasConcept C154945302 @default.
- W3100279824 hasConcept C168065819 @default.
- W3100279824 hasConcept C169590947 @default.
- W3100279824 hasConcept C177264268 @default.
- W3100279824 hasConcept C199360897 @default.
- W3100279824 hasConcept C2776760102 @default.
- W3100279824 hasConcept C2779343474 @default.
- W3100279824 hasConcept C2780624054 @default.
- W3100279824 hasConcept C35390924 @default.
- W3100279824 hasConcept C41008148 @default.
- W3100279824 hasConcept C42383842 @default.
- W3100279824 hasConcept C60048249 @default.
- W3100279824 hasConcept C65682993 @default.
- W3100279824 hasConcept C86803240 @default.
- W3100279824 hasConcept C90559484 @default.
- W3100279824 hasConceptScore W3100279824C107457646 @default.
- W3100279824 hasConceptScore W3100279824C115903868 @default.
- W3100279824 hasConceptScore W3100279824C120665830 @default.
- W3100279824 hasConceptScore W3100279824C121332964 @default.
- W3100279824 hasConceptScore W3100279824C139807058 @default.
- W3100279824 hasConceptScore W3100279824C151730666 @default.