{"id":"https://openalex.org/W4414984311","doi":"https://doi.org/10.5753/sblp.2025.10519","title":"A Compiler-Driven Approach for Static Dependency Injection in Embedded Software","display_name":"A Compiler-Driven Approach for Static Dependency Injection in Embedded Software","publication_year":2025,"publication_date":"2025-09-22","ids":{"openalex":"https://openalex.org/W4414984311","doi":"https://doi.org/10.5753/sblp.2025.10519"},"language":"en","primary_location":{"id":"doi:10.5753/sblp.2025.10519","is_oa":true,"landing_page_url":"https://doi.org/10.5753/sblp.2025.10519","pdf_url":"https://sol.sbc.org.br/index.php/sblp/article/download/36944/36729","source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Anais do XXIX Simp\u00f3sio Brasileiro de Linguagens de Programa\u00e7\u00e3o (SBLP 2025)","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://sol.sbc.org.br/index.php/sblp/article/download/36944/36729","any_repository_has_fulltext":null},"authorships":[{"author_position":"first","author":{"id":null,"display_name":"Thiago Borges de Oliveira","orcid":null},"institutions":[],"countries":[],"is_corresponding":true,"raw_author_name":"Thiago Borges de Oliveira","raw_affiliation_strings":["UFJ"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"UFJ","institution_ids":[]}]},{"author_position":"last","author":{"id":null,"display_name":"Ariadne de Andrade Costa","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Ariadne de Andrade Costa","raw_affiliation_strings":["UFJ"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"UFJ","institution_ids":[]}]}],"institutions":[],"countries_distinct_count":0,"institutions_distinct_count":2,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":0.0,"has_fulltext":true,"cited_by_count":0,"citation_normalized_percentile":{"value":0.13457473,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":"19","last_page":"27"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T11424","display_name":"Security and Verification in Computing","score":0.9993000030517578,"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/T11424","display_name":"Security and Verification in Computing","score":0.9993000030517578,"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/T11005","display_name":"Radiation Effects in Electronics","score":0.9941999912261963,"subfield":{"id":"https://openalex.org/subfields/2208","display_name":"Electrical and Electronic Engineering"},"field":{"id":"https://openalex.org/fields/22","display_name":"Engineering"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10933","display_name":"Real-Time Systems Scheduling","score":0.9929999709129333,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"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/compiler","display_name":"Compiler","score":0.5134999752044678},{"id":"https://openalex.org/keywords/firmware","display_name":"Firmware","score":0.447299987077713},{"id":"https://openalex.org/keywords/embedded-software","display_name":"Embedded software","score":0.43639999628067017},{"id":"https://openalex.org/keywords/interface","display_name":"Interface (matter)","score":0.4293999969959259},{"id":"https://openalex.org/keywords/implementation","display_name":"Implementation","score":0.4260999858379364},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.4041999876499176},{"id":"https://openalex.org/keywords/runtime-system","display_name":"Runtime system","score":0.397599995136261},{"id":"https://openalex.org/keywords/overhead","display_name":"Overhead (engineering)","score":0.3734000027179718},{"id":"https://openalex.org/keywords/dependency","display_name":"Dependency (UML)","score":0.3312999904155731}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8403000235557556},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6122999787330627},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.5134999752044678},{"id":"https://openalex.org/C149635348","wikidata":"https://www.wikidata.org/wiki/Q193040","display_name":"Embedded system","level":1,"score":0.46149998903274536},{"id":"https://openalex.org/C67212190","wikidata":"https://www.wikidata.org/wiki/Q104851","display_name":"Firmware","level":2,"score":0.447299987077713},{"id":"https://openalex.org/C154488198","wikidata":"https://www.wikidata.org/wiki/Q1335007","display_name":"Embedded software","level":3,"score":0.43639999628067017},{"id":"https://openalex.org/C113843644","wikidata":"https://www.wikidata.org/wiki/Q901882","display_name":"Interface (matter)","level":4,"score":0.4293999969959259},{"id":"https://openalex.org/C26713055","wikidata":"https://www.wikidata.org/wiki/Q245962","display_name":"Implementation","level":2,"score":0.4260999858379364},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.4041999876499176},{"id":"https://openalex.org/C2780870223","wikidata":"https://www.wikidata.org/wiki/Q1004415","display_name":"Runtime system","level":2,"score":0.397599995136261},{"id":"https://openalex.org/C2779960059","wikidata":"https://www.wikidata.org/wiki/Q7113681","display_name":"Overhead (engineering)","level":2,"score":0.3734000027179718},{"id":"https://openalex.org/C19768560","wikidata":"https://www.wikidata.org/wiki/Q320727","display_name":"Dependency (UML)","level":2,"score":0.3312999904155731},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.33000001311302185},{"id":"https://openalex.org/C43126263","wikidata":"https://www.wikidata.org/wiki/Q128751","display_name":"Source code","level":2,"score":0.3255999982357025},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.3181999921798706},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.3133000135421753},{"id":"https://openalex.org/C106251023","wikidata":"https://www.wikidata.org/wiki/Q851989","display_name":"Porting","level":3,"score":0.3127000033855438},{"id":"https://openalex.org/C160713754","wikidata":"https://www.wikidata.org/wiki/Q1389965","display_name":"Maintainability","level":2,"score":0.3059999942779541},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.30090001225471497},{"id":"https://openalex.org/C2779818221","wikidata":"https://www.wikidata.org/wiki/Q837330","display_name":"Bytecode","level":3,"score":0.29580000042915344},{"id":"https://openalex.org/C105446022","wikidata":"https://www.wikidata.org/wiki/Q445962","display_name":"Legacy system","level":3,"score":0.28619998693466187},{"id":"https://openalex.org/C91071405","wikidata":"https://www.wikidata.org/wiki/Q1413145","display_name":"Program slicing","level":3,"score":0.27950000762939453},{"id":"https://openalex.org/C128916667","wikidata":"https://www.wikidata.org/wiki/Q1343660","display_name":"Register allocation","level":3,"score":0.27730000019073486},{"id":"https://openalex.org/C199519371","wikidata":"https://www.wikidata.org/wiki/Q942695","display_name":"Source lines of code","level":3,"score":0.27469998598098755},{"id":"https://openalex.org/C168167062","wikidata":"https://www.wikidata.org/wiki/Q1117970","display_name":"Component (thermodynamics)","level":2,"score":0.2732999920845032},{"id":"https://openalex.org/C160191386","wikidata":"https://www.wikidata.org/wiki/Q868299","display_name":"Control flow","level":2,"score":0.27160000801086426},{"id":"https://openalex.org/C50951305","wikidata":"https://www.wikidata.org/wiki/Q2482534","display_name":"Unreachable code","level":5,"score":0.2689000070095062},{"id":"https://openalex.org/C20574231","wikidata":"https://www.wikidata.org/wiki/Q844605","display_name":"Backward compatibility","level":2,"score":0.267300009727478},{"id":"https://openalex.org/C76782552","wikidata":"https://www.wikidata.org/wiki/Q110546","display_name":"Just-in-time compilation","level":3,"score":0.26429998874664307},{"id":"https://openalex.org/C190902152","wikidata":"https://www.wikidata.org/wiki/Q1325106","display_name":"Optimizing compiler","level":3,"score":0.25529998540878296}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.5753/sblp.2025.10519","is_oa":true,"landing_page_url":"https://doi.org/10.5753/sblp.2025.10519","pdf_url":"https://sol.sbc.org.br/index.php/sblp/article/download/36944/36729","source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Anais do XXIX Simp\u00f3sio Brasileiro de Linguagens de Programa\u00e7\u00e3o (SBLP 2025)","raw_type":"proceedings-article"}],"best_oa_location":{"id":"doi:10.5753/sblp.2025.10519","is_oa":true,"landing_page_url":"https://doi.org/10.5753/sblp.2025.10519","pdf_url":"https://sol.sbc.org.br/index.php/sblp/article/download/36944/36729","source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Anais do XXIX Simp\u00f3sio Brasileiro de Linguagens de Programa\u00e7\u00e3o (SBLP 2025)","raw_type":"proceedings-article"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W4414984311.pdf","grobid_xml":"https://content.openalex.org/works/W4414984311.grobid-xml"},"referenced_works_count":10,"referenced_works":["https://openalex.org/W1538332098","https://openalex.org/W2092473117","https://openalex.org/W2133675710","https://openalex.org/W2902728783","https://openalex.org/W3134021621","https://openalex.org/W3203966350","https://openalex.org/W4246166885","https://openalex.org/W4281627144","https://openalex.org/W4385989211","https://openalex.org/W4391125525"],"related_works":[],"abstract_inverted_index":{"Developing":[0],"embedded":[1,92],"software":[2],"is":[3],"challenging":[4],"due":[5],"to":[6,9,37,70,84,156],"the":[7,23,68,81,86,116],"need":[8],"strike":[10],"a":[11,60,99],"balance":[12],"between":[13],"writing":[14],"loosely":[15],"coupled":[16],"and":[17,29,40,73,109,123,129,147,154],"maintainable":[18],"code":[19,141,149],"while":[20],"coping":[21],"with":[22,77,103,163],"microcontroller\u2019s":[24],"limitations":[25],"in":[26,80,91],"memory,":[27],"storage,":[28],"processing":[30],"power.":[31],"While":[32],"object-oriented":[33,104],"programming":[34],"can":[35],"lead":[36],"improved":[38],"abstractions":[39],"cohesive,":[41],"easier-to-maintain":[42],"software,":[43],"traditional":[44],"low-level":[45],"implementation":[46],"of":[47,88,98],"polymorphism":[48],"often":[49],"introduces":[50],"runtime":[51],"overhead":[52],"that":[53,66,115],"hinders":[54],"its":[55],"adoption.":[56],"This":[57],"paper":[58],"proposes":[59],"compiler-driven":[61,133],"dependency":[62],"injection":[63],"(DI)":[64],"technique":[65],"enables":[67,135],"compiler":[69],"resolve":[71],"dependencies":[72],"replace":[74],"bound":[75],"interfaces":[76],"concrete":[78],"implementations":[79,97],"AST":[82],"tree":[83],"reduce":[85],"burden":[87],"virtual":[89],"dispatch":[90],"software.":[93],"We":[94],"compared":[95],"five":[96],"breakout":[100],"game":[101],"written":[102],"language":[105,117],"features,":[106],"C++20":[107],"concepts,":[108],"our":[110,132],"proposed":[111],"method.":[112],"Results":[113],"show":[114],"features":[118],"allow":[119],"clear":[120],"interface":[121,138],"definitions":[122],"centralized":[124],"binding":[125],"configurations,":[126],"enhancing":[127],"maintainability":[128],"portability.":[130],"Furthermore,":[131],"approach":[134],"optimizations":[136],"beyond":[137],"boundaries,":[139],"improving":[140],"inlining,":[142],"constant":[143],"propagation,":[144],"interprocedural":[145],"optimization,":[146],"dead":[148],"elimination,":[150],"producing":[151],"41.9%":[152],"smaller":[153],"up":[155],"73.3%":[157],"faster":[158],"firmware":[159],"than":[160],"equivalent":[161],"versions":[162],"compile-time":[164],"injection.":[165]},"counts_by_year":[],"updated_date":"2026-05-21T06:26:12.895304","created_date":"2025-10-10T00:00:00"}
