{"id":"https://openalex.org/W2400273477","doi":"https://doi.org/10.1145/2889160.2889226","title":"Practical programming, validation and verification with finite-state machines","display_name":"Practical programming, validation and verification with finite-state machines","publication_year":2016,"publication_date":"2016-05-14","ids":{"openalex":"https://openalex.org/W2400273477","doi":"https://doi.org/10.1145/2889160.2889226","mag":"2400273477"},"language":"en","primary_location":{"id":"doi:10.1145/2889160.2889226","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2889160.2889226","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 38th International Conference on Software Engineering Companion","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5016069396","display_name":"Paulo Salem","orcid":null},"institutions":[],"countries":[],"is_corresponding":true,"raw_author_name":"Paulo Salem","raw_affiliation_strings":["S\u00e3o Paulo, Brazil"],"affiliations":[{"raw_affiliation_string":"S\u00e3o Paulo, Brazil","institution_ids":[]}]}],"institutions":[],"countries_distinct_count":0,"institutions_distinct_count":1,"corresponding_author_ids":["https://openalex.org/A5016069396"],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":1.0454,"has_fulltext":false,"cited_by_count":6,"citation_normalized_percentile":{"value":0.79149985,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":96},"biblio":{"volume":null,"issue":null,"first_page":"51","last_page":"60"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10142","display_name":"Formal Methods in Verification","score":0.9998999834060669,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"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/T10142","display_name":"Formal Methods in Verification","score":0.9998999834060669,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"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.9987000226974487,"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"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9979000091552734,"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"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8709838390350342},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.72041916847229},{"id":"https://openalex.org/keywords/finite-state-machine","display_name":"Finite-state machine","score":0.6779963970184326},{"id":"https://openalex.org/keywords/formal-verification","display_name":"Formal verification","score":0.6025710105895996},{"id":"https://openalex.org/keywords/formal-methods","display_name":"Formal methods","score":0.500760555267334},{"id":"https://openalex.org/keywords/formal-specification","display_name":"Formal specification","score":0.4368714392185211},{"id":"https://openalex.org/keywords/design-by-contract","display_name":"Design by contract","score":0.42545533180236816},{"id":"https://openalex.org/keywords/automaton","display_name":"Automaton","score":0.41608840227127075},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.3697652518749237},{"id":"https://openalex.org/keywords/software-engineering","display_name":"Software engineering","score":0.3370403051376343},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.2661445140838623},{"id":"https://openalex.org/keywords/software-development","display_name":"Software development","score":0.25754785537719727},{"id":"https://openalex.org/keywords/software-construction","display_name":"Software construction","score":0.13069051504135132}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8709838390350342},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.72041916847229},{"id":"https://openalex.org/C167822520","wikidata":"https://www.wikidata.org/wiki/Q176452","display_name":"Finite-state machine","level":2,"score":0.6779963970184326},{"id":"https://openalex.org/C111498074","wikidata":"https://www.wikidata.org/wiki/Q173326","display_name":"Formal verification","level":2,"score":0.6025710105895996},{"id":"https://openalex.org/C75606506","wikidata":"https://www.wikidata.org/wiki/Q1049183","display_name":"Formal methods","level":2,"score":0.500760555267334},{"id":"https://openalex.org/C116253237","wikidata":"https://www.wikidata.org/wiki/Q1437424","display_name":"Formal specification","level":2,"score":0.4368714392185211},{"id":"https://openalex.org/C80291951","wikidata":"https://www.wikidata.org/wiki/Q1200691","display_name":"Design by contract","level":5,"score":0.42545533180236816},{"id":"https://openalex.org/C112505250","wikidata":"https://www.wikidata.org/wiki/Q787116","display_name":"Automaton","level":2,"score":0.41608840227127075},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.3697652518749237},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.3370403051376343},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.2661445140838623},{"id":"https://openalex.org/C529173508","wikidata":"https://www.wikidata.org/wiki/Q638608","display_name":"Software development","level":3,"score":0.25754785537719727},{"id":"https://openalex.org/C186846655","wikidata":"https://www.wikidata.org/wiki/Q3398377","display_name":"Software construction","level":4,"score":0.13069051504135132}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/2889160.2889226","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2889160.2889226","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 38th International Conference on Software Engineering Companion","raw_type":"proceedings-article"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":20,"referenced_works":["https://openalex.org/W20649036","https://openalex.org/W125598877","https://openalex.org/W1489391022","https://openalex.org/W1498432697","https://openalex.org/W1559870885","https://openalex.org/W1578785003","https://openalex.org/W1588335385","https://openalex.org/W1859458367","https://openalex.org/W1962072139","https://openalex.org/W1981686104","https://openalex.org/W2042726227","https://openalex.org/W2060944709","https://openalex.org/W2070884713","https://openalex.org/W2099529102","https://openalex.org/W2101508170","https://openalex.org/W2126818664","https://openalex.org/W2139448856","https://openalex.org/W2150593762","https://openalex.org/W2153770341","https://openalex.org/W4210881473"],"related_works":["https://openalex.org/W2171674700","https://openalex.org/W2145025660","https://openalex.org/W1922520186","https://openalex.org/W1544097700","https://openalex.org/W1946493810","https://openalex.org/W1495250406","https://openalex.org/W17088386","https://openalex.org/W1527542101","https://openalex.org/W2043563043","https://openalex.org/W1608485412"],"abstract_inverted_index":{"Finite-state":[0],"machines":[1],"(FSMs)":[2],"are":[3,246],"among":[4],"the":[5,10,52,85,104,122,126,130,151,156,164,169,185,189,198,204,207,211,216,231,235,256],"oldest":[6],"models":[7],"employed":[8],"in":[9,32,48,116,163],"formalization":[11],"and":[12,17,46,128,159,221,254],"analysis":[13],"of":[14,107,132,161,188,206,218,234,239],"both":[15],"software":[16,38],"hardware.":[18],"Owing":[19],"to":[20,27,50,55,78,95,98,142,171],"their":[21,29],"simplicity,":[22],"there":[23],"exist":[24],"various":[25],"implementations":[26],"support":[28],"practical":[30,240],"application":[31,245],"mainstream":[33],"programming":[34],"languages.":[35],"Through":[36],"such":[37,66],"libraries,":[39],"programmers":[40],"can":[41],"explicitly":[42,172],"define":[43],"states,":[44],"events":[45],"transitions":[47],"order":[49],"delegate":[51],"machine's":[53],"execution":[54,74,158],"an":[56,81,117,174],"underlying":[57],"engine.":[58,75],"However,":[59],"as":[60,62,91],"far":[61],"we":[63,139,149,209,249],"know,":[64],"no":[65],"library":[67],"provides":[68],"formal":[69,93,99],"verification":[70,160,179],"capabilities":[71],"alongside":[72],"its":[73],"That":[76],"is":[77,83,114,180,222,259],"say,":[79],"once":[80],"FSM":[82,190],"defined,":[84],"resulting":[86],"program":[87,187],"cannot":[88],"be":[89,96],"used":[90],"a":[92,192,227,237],"specification":[94,196],"subject":[97],"verification,":[100,111],"thereby":[101],"not":[102],"making":[103],"analytical":[105],"tractability":[106],"FSMs":[108,162],"available.":[109],"Formal":[110,178],"if":[112],"any,":[113],"conducted":[115],"independent":[118],"model":[119,200],"separate":[120],"from":[121],"program,":[123],"thus":[124],"duplicating":[125],"information":[127],"creating":[129],"possibility":[131],"discrepancies":[133],"between":[134],"both.":[135],"In":[136],"this":[137,144,147,219,244],"paper":[138],"show":[140],"how":[141],"overcome":[143],"limitation.":[145],"To":[146,202],"end,":[148],"present":[150,210],"Verum":[152],"library,":[153],"which":[154,214],"allows":[155],"specification,":[157],"Ruby":[165],"language,":[166],"largely":[167],"bypassing":[168],"need":[170],"employ":[173],"additional":[175],"modeling":[176],"language.":[177],"achieved":[181],"by":[182],"automatically":[183],"translating":[184],"source":[186],"into":[191],"Timed":[193],"Automaton":[194],"(TA)":[195],"for":[197],"UPPAAL":[199],"checker.":[201],"illustrate":[203],"value":[205],"approach,":[208],"industrial":[212],"problem":[213],"inspired":[215],"creation":[217],"tool":[220],"currently":[223],"using":[224],"it,":[225],"namely,":[226],"payment":[228],"system.":[229],"Besides":[230],"technical":[232],"aspects":[233],"tool,":[236],"number":[238],"lessons":[241],"learned":[242],"with":[243],"explored.":[247],"Although":[248],"describe":[250],"very":[251],"concrete":[252],"artifacts":[253],"applications,":[255],"overall":[257],"approach":[258],"quite":[260],"general.":[261]},"counts_by_year":[{"year":2022,"cited_by_count":1},{"year":2021,"cited_by_count":1},{"year":2020,"cited_by_count":1},{"year":2019,"cited_by_count":1},{"year":2018,"cited_by_count":2}],"updated_date":"2025-11-06T03:46:38.306776","created_date":"2025-10-10T00:00:00"}
