{"id":"https://openalex.org/W3005593253","doi":"https://doi.org/10.22152/programming-journal.org/2020/4/5","title":"Sub-method, partial behavioral reflection with Reflectivity: Looking back on 10 years of use","display_name":"Sub-method, partial behavioral reflection with Reflectivity: Looking back on 10 years of use","publication_year":2020,"publication_date":"2020-02-14","ids":{"openalex":"https://openalex.org/W3005593253","doi":"https://doi.org/10.22152/programming-journal.org/2020/4/5","mag":"3005593253"},"language":"en","primary_location":{"id":"doi:10.22152/programming-journal.org/2020/4/5","is_oa":false,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2020/4/5","pdf_url":null,"source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},"type":"article","indexed_in":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"green","oa_url":"https://arxiv.org/pdf/2002.06182","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":null,"display_name":"Steven Costiou","orcid":null},"institutions":[{"id":"https://openalex.org/I1326498283","display_name":"Institut national de recherche en informatique et en automatique","ror":"https://ror.org/02kvxyf05","country_code":"FR","type":"funder","lineage":["https://openalex.org/I1326498283"]}],"countries":["FR"],"is_corresponding":true,"raw_author_name":"Steven Costiou","raw_affiliation_strings":["INRIA, France"],"affiliations":[{"raw_affiliation_string":"INRIA, France","institution_ids":["https://openalex.org/I1326498283"]}]},{"author_position":"middle","author":{"id":null,"display_name":"Vincent Aranega","orcid":null},"institutions":[{"id":"https://openalex.org/I1326498283","display_name":"Institut national de recherche en informatique et en automatique","ror":"https://ror.org/02kvxyf05","country_code":"FR","type":"funder","lineage":["https://openalex.org/I1326498283"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"Vincent Aranega","raw_affiliation_strings":["INRIA, France"],"affiliations":[{"raw_affiliation_string":"INRIA, France","institution_ids":["https://openalex.org/I1326498283"]}]},{"author_position":"last","author":{"id":null,"display_name":"Marcus Denker","orcid":null},"institutions":[{"id":"https://openalex.org/I1326498283","display_name":"Institut national de recherche en informatique et en automatique","ror":"https://ror.org/02kvxyf05","country_code":"FR","type":"funder","lineage":["https://openalex.org/I1326498283"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"Marcus Denker","raw_affiliation_strings":["INRIA, France"],"affiliations":[{"raw_affiliation_string":"INRIA, France","institution_ids":["https://openalex.org/I1326498283"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":3,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I1326498283"],"apc_list":null,"apc_paid":null,"fwci":0.6858,"has_fulltext":true,"cited_by_count":8,"citation_normalized_percentile":{"value":0.75664719,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":97},"biblio":{"volume":"4","issue":"3","first_page":null,"last_page":null},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.9165999889373779,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.9165999889373779,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.027000000700354576,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10743","display_name":"Software Testing and Debugging Techniques","score":0.007699999958276749,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/debugging","display_name":"Debugging","score":0.7319999933242798},{"id":"https://openalex.org/keywords/reflection","display_name":"Reflection (computer programming)","score":0.650600016117096},{"id":"https://openalex.org/keywords/expression","display_name":"Expression (computer science)","score":0.6306999921798706},{"id":"https://openalex.org/keywords/adaptation","display_name":"Adaptation (eye)","score":0.567300021648407},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.4830000102519989},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.4677000045776367},{"id":"https://openalex.org/keywords/syntax","display_name":"Syntax","score":0.4399000108242035},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.4323999881744385}],"concepts":[{"id":"https://openalex.org/C168065819","wikidata":"https://www.wikidata.org/wiki/Q845566","display_name":"Debugging","level":2,"score":0.7319999933242798},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.7161999940872192},{"id":"https://openalex.org/C65682993","wikidata":"https://www.wikidata.org/wiki/Q1056451","display_name":"Reflection (computer programming)","level":2,"score":0.650600016117096},{"id":"https://openalex.org/C90559484","wikidata":"https://www.wikidata.org/wiki/Q778379","display_name":"Expression (computer science)","level":2,"score":0.6306999921798706},{"id":"https://openalex.org/C139807058","wikidata":"https://www.wikidata.org/wiki/Q352374","display_name":"Adaptation (eye)","level":2,"score":0.567300021648407},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.5404000282287598},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.4830000102519989},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.4677000045776367},{"id":"https://openalex.org/C60048249","wikidata":"https://www.wikidata.org/wiki/Q37437","display_name":"Syntax","level":2,"score":0.4399000108242035},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.4323999881744385},{"id":"https://openalex.org/C2777210771","wikidata":"https://www.wikidata.org/wiki/Q4927124","display_name":"Block (permutation group theory)","level":2,"score":0.40450000762939453},{"id":"https://openalex.org/C2778775528","wikidata":"https://www.wikidata.org/wiki/Q5135432","display_name":"Closing (real estate)","level":2,"score":0.396699994802475},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.3709000051021576},{"id":"https://openalex.org/C107457646","wikidata":"https://www.wikidata.org/wiki/Q207434","display_name":"Human\u2013computer interaction","level":1,"score":0.3598000109195709},{"id":"https://openalex.org/C43126263","wikidata":"https://www.wikidata.org/wiki/Q128751","display_name":"Source code","level":2,"score":0.3353999853134155},{"id":"https://openalex.org/C58646249","wikidata":"https://www.wikidata.org/wiki/Q127380","display_name":"Abstract syntax tree","level":3,"score":0.32899999618530273},{"id":"https://openalex.org/C184337299","wikidata":"https://www.wikidata.org/wiki/Q1437428","display_name":"Semantics (computer science)","level":2,"score":0.3230000138282776},{"id":"https://openalex.org/C2989277270","wikidata":"https://www.wikidata.org/wiki/Q168338","display_name":"Behavioral analysis","level":2,"score":0.3073999881744385},{"id":"https://openalex.org/C55526617","wikidata":"https://www.wikidata.org/wiki/Q719375","display_name":"Operand","level":2,"score":0.3027999997138977},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.29989999532699585},{"id":"https://openalex.org/C113174947","wikidata":"https://www.wikidata.org/wiki/Q2859736","display_name":"Tree (set theory)","level":2,"score":0.27090001106262207},{"id":"https://openalex.org/C2777655017","wikidata":"https://www.wikidata.org/wiki/Q1501161","display_name":"Toolbox","level":2,"score":0.26600000262260437},{"id":"https://openalex.org/C35390924","wikidata":"https://www.wikidata.org/wiki/Q661075","display_name":"Metaprogramming","level":2,"score":0.25690001249313354}],"mesh":[],"locations_count":3,"locations":[{"id":"doi:10.22152/programming-journal.org/2020/4/5","is_oa":false,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2020/4/5","pdf_url":null,"source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},{"id":"pmh:oai:arXiv.org:2002.06182","is_oa":true,"landing_page_url":"http://arxiv.org/abs/2002.06182","pdf_url":"https://arxiv.org/pdf/2002.06182","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},{"id":"pmh:oai:HAL:hal-02480136v1","is_oa":true,"landing_page_url":"https://inria.hal.science/hal-02480136","pdf_url":"https://inria.hal.science/hal-02480136v1/document","source":{"id":"https://openalex.org/S4406922466","display_name":"SPIRE - Sciences Po Institutional REpository","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"The Art, Science, and Engineering of Programming, 2020, 4 (3), &#x27E8;10.22152/programming-journal.org/2020/4/5&#x27E9;","raw_type":"Journal articles"}],"best_oa_location":{"id":"pmh:oai:arXiv.org:2002.06182","is_oa":true,"landing_page_url":"http://arxiv.org/abs/2002.06182","pdf_url":"https://arxiv.org/pdf/2002.06182","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":0,"referenced_works":[],"related_works":[],"abstract_inverted_index":{"Context.":[0],"Refining":[1],"or":[2,46,333,371],"altering":[3,55],"existing":[4],"behavior":[5,144,173,489],"is":[6,33,60,65,77,132,194,258,282,352,389,399,444],"the":[7,112,118,121,143,149,158,162,165,168,171,176,179,199,254,263,289,292,295,298,359,395,402,405,453,462,470,481,488],"daily":[8],"work":[9,326,379],"of":[10,30,34,48,54,71,95,120,160,170,178,225,227,241,251,262,275,294,394,404,456,474,490],"every":[11],"developer,":[12],"but":[13,105],"that":[14,114,483],"cannot":[15,22],"be":[16,23],"always":[17],"anticipated,":[18],"and":[19,82,117,148,167,215,229,278,297,307,316,344,346,385,398,426],"software":[20,56,268,340,347],"sometimes":[21],"stopped.":[24],"In":[25,205],"such":[26],"cases,":[27],"unanticipated":[28,69,305],"adaptation":[29,70,116,306],"running":[31],"systems":[32],"interest":[35],"for":[36,68,83,369,376,423],"many":[37,85,242,314,377],"scenarios,":[38],"ranging":[39],"from":[40],"functional":[41],"upgrades":[42],"to":[43,90,175,201,287,303,308,313,329,412,467],"on-the-fly":[44],"debugging":[45,342],"monitoring":[47],"critical":[49],"applications.":[50],"Inquiry.":[51],"A":[52],"way":[53,94,250,274],"at":[57,253,401],"run":[58],"time":[59],"using":[61],"behavioral":[62,75,203,310,416,428],"reflection,":[63],"which":[64,106,137,193,257],"particularly":[66],"well-suited":[67],"real-world":[72],"systems.":[73],"Partial":[74],"reflection":[76,311,429],"not":[78,445],"a":[79,92,108,129,139,237,248,259,272,284,366,373,420,446],"new":[80,140,477],"idea,":[81],"years":[84,156,224],"efforts":[86,100],"have":[87],"been":[88,234,465],"made":[89],"propose":[91],"practical":[93,103,249,454],"expressing":[96],"it.":[97],"All":[98],"these":[99],"resulted":[101],"in":[102,126,134,152,218,355,458],"solutions,":[104],"introduced":[107],"semantic":[109],"gap":[110,163,290],"between":[111,142,164,291],"code":[113,151,166,265,337],"requires":[115],"expression":[119,145,169,293],"partial":[122,172,415,427],"behavior.":[123,280],"For":[124],"example,":[125],"Aspect-Oriented":[127],"Programming,":[128],"pointcut":[130],"description":[131],"expressed":[133],"another":[135],"language,":[136,397],"introduces":[138],"distance":[141],"(the":[146],"Advice)":[147],"source":[150,264,299],"itself.":[153],"Approach.":[154],"Ten":[155],"ago,":[157],"idea":[159],"closing":[161],"led":[174,312],"implementation":[177,214,370],"Reflectivity":[180,246,281,328,351,388,408,437,457,475],"framework.":[181],"Using":[182],"Reflectivity,":[183,210,228],"developers":[184,484],"annotate":[185],"Abstract":[186],"Syntax":[187],"Tree":[188],"(AST)":[189],"nodes":[190],"with":[191,414],"meta-behavior":[192,296],"taken":[195],"into":[196],"account":[197],"by":[198,267,322],"compiler":[200],"produce":[202],"variations.":[204],"this":[206,319],"paper,":[207],"we":[208],"present":[209],"its":[211,213,216,439],"API,":[212],"usage":[217],"Pharo.":[219],"We":[220],"reflect":[221],"on":[222,431,487],"ten":[223,361],"use":[226,327,455],"show":[230],"how":[231],"it":[232,363,443],"has":[233,464],"used":[235,354],"as":[236,365,372],"basic":[238],"building":[239],"block":[240],"innovative":[243],"ideas.":[244],"Knowledge.":[245],"brings":[247],"working":[252],"AST":[255,432,471],"level,":[256],"high-level":[260],"representation":[261],"manipulated":[266],"developers.":[269],"It":[270],"enables":[271],"powerful":[273,410],"dynamically":[276],"add":[277],"modify":[279],"also":[283],"flexible":[285],"mean":[286],"bridge":[288],"code.":[300],"This":[301],"ability":[302],"apply":[304],"provide":[309],"experiments":[315],"projects":[317],"during":[318],"last":[320],"decade":[321],"external":[323],"users.":[324],"Existing":[325],"implement":[330],"reflective":[331],"libraries":[332],"languages":[334],"extensions,":[335],"featherweight":[336],"instrumentation,":[338],"dynamic":[339,459],"update,":[341],"tools":[343],"visualization":[345],"analysis":[348],"tools.":[349],"Grounding.":[350],"actively":[353],"research":[356,378],"projects.":[357],"During":[358],"past":[360],"years,":[362],"served":[364],"support,":[367],"either":[368],"fundamental":[374],"base,":[375],"including":[380],"PhD":[381],"theses,":[382],"conference,":[383],"journal":[384],"workshop":[386],"papers.":[387],"now":[390],"an":[391],"important":[392],"library":[393],"Pharo":[396],"integrated":[400],"heart":[403],"platform.":[406],"Importance.":[407],"exposes":[409],"abstractions":[411],"deal":[413],"adaptation,":[417],"while":[418],"providing":[419],"mature":[421],"framework":[422],"unanticipated,":[424],"non-intrusive":[425],"based":[430],"annotation.":[433],"Furthermore,":[434],"even":[435],"if":[436],"found":[438],"home":[440],"inside":[441],"Pharo,":[442],"pure":[447],"Smalltalk-oriented":[448],"solution.":[449],"As":[450],"validation":[451],"over":[452],"object-oriented":[460],"languages,":[461],"API":[463],"ported":[466],"Python.":[468],"Finally,":[469],"annotation":[472],"feature":[473],"opens":[476],"experimentation":[478],"opportunities":[479],"about":[480],"control":[482],"could":[485],"gain":[486],"their":[491],"own":[492],"software.":[493]},"counts_by_year":[{"year":2024,"cited_by_count":3},{"year":2022,"cited_by_count":4},{"year":2021,"cited_by_count":1}],"updated_date":"2026-03-10T16:38:18.471706","created_date":"2020-02-24T00:00:00"}
