{"title":"与语言无关的规范和验证:特邀演讲","authors":"Manuel Fähndrich","doi":"10.1145/1481848.1481849","DOIUrl":null,"url":null,"abstract":"Over the last few years we have been working on bringing simple and pragmatic program specification and verification to programming languages targeting the Microsoft .NET platform. In this talk I will discuss the motivation and trade-offs influencing our design.\n The specifications and static verification are targeted at the general developer, not the verification enthusiast. It is thus important to us to use a single form of specifications that meets three simultaneous goals:\n 1. Specifications serve as documentation. They must be as readable as possible.\n 2. Specifications should be executable. This motivates writing specifications for testing and immediate perceived benefit, without consideration of static verification.\n 3. Finally, specifications should be usable in static verification.\n Our specification approach is language-agnostic in that we use idiomatic code written in the developer's source language to express pre-conditions and post-conditions. Preconditions and postconditions are expressed as calls to the static methods. Special dummy methods are used to refer to the method result value as well as referring to the old value of an expression, meaning the value of the expression on method entry.","PeriodicalId":153056,"journal":{"name":"Programming Languages meets Program Verification","volume":"1 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2009-01-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Language-agnostic specification and verification: invited talk\",\"authors\":\"Manuel Fähndrich\",\"doi\":\"10.1145/1481848.1481849\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Over the last few years we have been working on bringing simple and pragmatic program specification and verification to programming languages targeting the Microsoft .NET platform. In this talk I will discuss the motivation and trade-offs influencing our design.\\n The specifications and static verification are targeted at the general developer, not the verification enthusiast. It is thus important to us to use a single form of specifications that meets three simultaneous goals:\\n 1. Specifications serve as documentation. They must be as readable as possible.\\n 2. Specifications should be executable. This motivates writing specifications for testing and immediate perceived benefit, without consideration of static verification.\\n 3. Finally, specifications should be usable in static verification.\\n Our specification approach is language-agnostic in that we use idiomatic code written in the developer's source language to express pre-conditions and post-conditions. Preconditions and postconditions are expressed as calls to the static methods. Special dummy methods are used to refer to the method result value as well as referring to the old value of an expression, meaning the value of the expression on method entry.\",\"PeriodicalId\":153056,\"journal\":{\"name\":\"Programming Languages meets Program Verification\",\"volume\":\"1 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2009-01-20\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Programming Languages meets Program Verification\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/1481848.1481849\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Programming Languages meets Program Verification","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/1481848.1481849","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Language-agnostic specification and verification: invited talk
Over the last few years we have been working on bringing simple and pragmatic program specification and verification to programming languages targeting the Microsoft .NET platform. In this talk I will discuss the motivation and trade-offs influencing our design.
The specifications and static verification are targeted at the general developer, not the verification enthusiast. It is thus important to us to use a single form of specifications that meets three simultaneous goals:
1. Specifications serve as documentation. They must be as readable as possible.
2. Specifications should be executable. This motivates writing specifications for testing and immediate perceived benefit, without consideration of static verification.
3. Finally, specifications should be usable in static verification.
Our specification approach is language-agnostic in that we use idiomatic code written in the developer's source language to express pre-conditions and post-conditions. Preconditions and postconditions are expressed as calls to the static methods. Special dummy methods are used to refer to the method result value as well as referring to the old value of an expression, meaning the value of the expression on method entry.