Pub Date : 2023-01-09DOI: 10.48550/arXiv.2301.03224
J. Faria, Rui Abreu
Formal verification techniques aim at formally proving the correctness of a computer program with respect to a formal specification, but the expertise and effort required for applying formal specification and verification techniques and scalability issues have limited their practical application. In recent years, the tremendous progress with SAT and SMT solvers enabled the construction of a new generation of tools that promise to make formal verification more accessible for software engineers, by automating most if not all of the verification process. The Dafny system is a prominent example of that trend. However, little evidence exists yet about its accessibility. To help fill this gap, we conducted a set of 10 case studies of developing verified implementations in Dafny of some real-world algorithms and data structures, to determine its accessibility for software engineers. We found that, on average, the amount of code written for specification and verification purposes is of the same order of magnitude as the traditional code written for implementation and testing purposes (ratio of 1.14) -- an ``overhead'' that certainly pays off for high-integrity software. The performance of the Dafny verifier was impressive, with 2.4 proof obligations generated per line of code written, and 24 ms spent per proof obligation generated and verified, on average. However, we also found that the manual work needed in writing auxiliary verification code may be significant and difficult to predict and master. Hence, further automation and systematization of verification tasks are possible directions for future advances in the field.
{"title":"Case studies of development of verified programs with Dafny for accessibility assessment","authors":"J. Faria, Rui Abreu","doi":"10.48550/arXiv.2301.03224","DOIUrl":"https://doi.org/10.48550/arXiv.2301.03224","url":null,"abstract":"Formal verification techniques aim at formally proving the correctness of a computer program with respect to a formal specification, but the expertise and effort required for applying formal specification and verification techniques and scalability issues have limited their practical application. In recent years, the tremendous progress with SAT and SMT solvers enabled the construction of a new generation of tools that promise to make formal verification more accessible for software engineers, by automating most if not all of the verification process. The Dafny system is a prominent example of that trend. However, little evidence exists yet about its accessibility. To help fill this gap, we conducted a set of 10 case studies of developing verified implementations in Dafny of some real-world algorithms and data structures, to determine its accessibility for software engineers. We found that, on average, the amount of code written for specification and verification purposes is of the same order of magnitude as the traditional code written for implementation and testing purposes (ratio of 1.14) -- an ``overhead'' that certainly pays off for high-integrity software. The performance of the Dafny verifier was impressive, with 2.4 proof obligations generated per line of code written, and 24 ms spent per proof obligation generated and verified, on average. However, we also found that the manual work needed in writing auxiliary verification code may be significant and difficult to predict and master. Hence, further automation and systematization of verification tasks are possible directions for future advances in the field.","PeriodicalId":161142,"journal":{"name":"Fundamentals of Software Engineering","volume":"60 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2023-01-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127149244","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2022-11-22DOI: 10.48550/arXiv.2211.11937
Yutaka Nagashima
A deductive program synthesis tool takes a specification as input and derives a program that satisfies the specification. The drawback of this approach is that search spaces for such correct programs tend to be enormous, making it difficult to derive correct programs within a realistic timeout. To speed up such program derivation, we improve the search strategy of a deductive program synthesis tool, SuSLik, using evolutionary computation. Our cross-validation shows that the improvement brought by evolutionary computation generalises to unforeseen problems.
{"title":"Genetic Algorithm for Program Synthesis","authors":"Yutaka Nagashima","doi":"10.48550/arXiv.2211.11937","DOIUrl":"https://doi.org/10.48550/arXiv.2211.11937","url":null,"abstract":"A deductive program synthesis tool takes a specification as input and derives a program that satisfies the specification. The drawback of this approach is that search spaces for such correct programs tend to be enormous, making it difficult to derive correct programs within a realistic timeout. To speed up such program derivation, we improve the search strategy of a deductive program synthesis tool, SuSLik, using evolutionary computation. Our cross-validation shows that the improvement brought by evolutionary computation generalises to unforeseen problems.","PeriodicalId":161142,"journal":{"name":"Fundamentals of Software Engineering","volume":"94 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124723279","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2022-11-20DOI: 10.1007/978-3-031-42441-0_9
Yutaka Nagashima, Zijin Xu, Ningli Wang, Daniel Goc, James Bang
{"title":"Template-Based Conjecturing for Automated Induction in Isabelle/HOL","authors":"Yutaka Nagashima, Zijin Xu, Ningli Wang, Daniel Goc, James Bang","doi":"10.1007/978-3-031-42441-0_9","DOIUrl":"https://doi.org/10.1007/978-3-031-42441-0_9","url":null,"abstract":"","PeriodicalId":161142,"journal":{"name":"Fundamentals of Software Engineering","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122330554","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2021-01-15DOI: 10.1007/978-3-030-89247-0_9
Annamaria Stramaglia, J. Keiren, H. Zantema
{"title":"Deadlock in packet switching networks","authors":"Annamaria Stramaglia, J. Keiren, H. Zantema","doi":"10.1007/978-3-030-89247-0_9","DOIUrl":"https://doi.org/10.1007/978-3-030-89247-0_9","url":null,"abstract":"","PeriodicalId":161142,"journal":{"name":"Fundamentals of Software Engineering","volume":"44 15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-01-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126118820","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2020-09-15DOI: 10.1007/978-3-030-89247-0_12
Johri van Eerd, J. F. Groote, P. Hijma, Jan Martens, Anton Wijs
{"title":"Term Rewriting on GPUs","authors":"Johri van Eerd, J. F. Groote, P. Hijma, Jan Martens, Anton Wijs","doi":"10.1007/978-3-030-89247-0_12","DOIUrl":"https://doi.org/10.1007/978-3-030-89247-0_12","url":null,"abstract":"","PeriodicalId":161142,"journal":{"name":"Fundamentals of Software Engineering","volume":"42 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133816719","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-01DOI: 10.1007/978-3-030-31517-7_6
Sharmin Moosavi, H. Haghighi, Hasti Sahabi, Farzam Vatanzade, M. Vahidi-Asl
{"title":"Greenify: A Game with the Purpose of Test Data Generation for Unit Testing","authors":"Sharmin Moosavi, H. Haghighi, Hasti Sahabi, Farzam Vatanzade, M. Vahidi-Asl","doi":"10.1007/978-3-030-31517-7_6","DOIUrl":"https://doi.org/10.1007/978-3-030-31517-7_6","url":null,"abstract":"","PeriodicalId":161142,"journal":{"name":"Fundamentals of Software Engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128782857","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-01DOI: 10.1007/978-3-030-31517-7_1
Narges Khakpour, J. Kleijn, M. Sirjani
{"title":"A Formal Model to Integrate Behavioral and Structural Adaptations in Self-adaptive Systems","authors":"Narges Khakpour, J. Kleijn, M. Sirjani","doi":"10.1007/978-3-030-31517-7_1","DOIUrl":"https://doi.org/10.1007/978-3-030-31517-7_1","url":null,"abstract":"","PeriodicalId":161142,"journal":{"name":"Fundamentals of Software Engineering","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127548633","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-01DOI: 10.1007/978-3-030-31517-7_15
Nathan Wasser, Asmae Heydari Tabar, Reiner Hähnle
{"title":"Modeling Non-deterministic C Code with Active Objects","authors":"Nathan Wasser, Asmae Heydari Tabar, Reiner Hähnle","doi":"10.1007/978-3-030-31517-7_15","DOIUrl":"https://doi.org/10.1007/978-3-030-31517-7_15","url":null,"abstract":"","PeriodicalId":161142,"journal":{"name":"Fundamentals of Software Engineering","volume":"25 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134417462","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-01DOI: 10.1007/978-3-030-31517-7_12
Samira Akili, Kim Völlinger
{"title":"Case Study on Certifying Distributed Algorithms: Reducing Intrusiveness","authors":"Samira Akili, Kim Völlinger","doi":"10.1007/978-3-030-31517-7_12","DOIUrl":"https://doi.org/10.1007/978-3-030-31517-7_12","url":null,"abstract":"","PeriodicalId":161142,"journal":{"name":"Fundamentals of Software Engineering","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130749043","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}