diff --git a/_config.yml b/_config.yml index b89a18d..ce70feb 100644 --- a/_config.yml +++ b/_config.yml @@ -37,6 +37,12 @@ authors: site: http://web.cs.ucla.edu/~todd/ avatar: /assets/images/todd-millstein.jpg bio: "Todd Millstein is a Professor of Computer Science at UCLA, as well as a Co-founder and Chief Scientist at Intentionet. He has also been an Academic Visitor at Oxford University, a Visiting Researcher at Microsoft Research, and a Visiting Fellow at Princeton University. Todd received a Ph.D. from the University of Washington and an A.B. from Brown University, both in Computer Science." + + lvanbever: + name: Laurent Vanbever + site: https://nsg.ee.ethz.ch/people/laurent-vanbever/ + avatar: /assets/images/laurent-vanbever.png + bio: "Laurent Vanbever is an Associate Professor at ETH Zurich. Prior to that, Laurent was a Postdoctoral Research Associate at Princeton University where he worked with Jennifer Rexford. He obtained his PhD degree in Computer Science from the University of Louvain in 2012. Prior to his PhD, Laurent earned a Master degree in Computer Science from the University of Louvain and a Master degree in Business Management from the Solvay Brussels School of Economics and Management, in 2008 and 2010, respectively." # Defaults defaults: diff --git a/_posts/2020-05-04-you-cant-verify-what-you-cant-specify.md b/_posts/2020-05-04-you-cant-verify-what-you-cant-specify.md new file mode 100644 index 0000000..ebfbd79 --- /dev/null +++ b/_posts/2020-05-04-you-cant-verify-what-you-cant-specify.md @@ -0,0 +1,119 @@ +--- +layout: post +title: "You can't verify what you can't specify" +authors: [lvanbever] +categories: [overview, research, network, verification] +image: assets/images/smt.png +tags: [] +--- + + +Back when I was studying for my master degree, [Prof. Axel van Lamsweerde](https://www.info.ucl.ac.be/~avl/) was +teaching us formal logic. Axel is world-famous for his works on requirements +engineering, that is, the process of defining and maintaining the prerequisites +that must be met by software systems. + +During that time, I remember reading one of Axel's seminal paper entitled +["Formal Specification: a Roadmap"](https://dl.acm.org/doi/10.1145/336512.336546) which describes the +strengths and weaknesses of formal specification technologies. I re-discovered Axel's paper as we started to work on making network verification technologies more usable (more on this later) and found its lessons to be invaluable. + +In this post, I'd like to quickly summarize Axel's views on why writing good +specifications is challenging; why I believe these challenges apply almost +verbatim to network verification; and what we can do to address them. I'll also mention some of our [recent work](https://nsg.ee.ethz.ch/fileadmin/user_upload/publications/config2spec-final.pdf) on automatically mining network specifications. + + +## The problem with formal specifications + +As Axel puts it, a formal specification is "the expression, in some formal +language and at some level of abstraction, of a collection of properties some +system should satisfy". Of course, not all formal specifications are useful. +Axel goes therefore a bit further in defining "good" specifications as those +satisfying a set of key properties: (i) they adequately capture the problem at +hand; (ii) they are consistent and unambiguous; (iii) they are complete; and +yet, at the same time, (iv) they are minimal. + +Writing good specifications is difficult, perhaps as difficult as writing a correct program in the first place. Axel lists many reasons behind this complexity. Let me describe the ones that resonated with me the most. + +To start with, one needs to figure out what the properties to specify actually +are. Specifications are indeed never formal in the first place: one must figure +them out. Doing so requires people with different background, mental models, and +languages to come together (e.g., customers, domain experts, architects, programmers). Finding a common ground is hard and often leads to inconsistencies. + +Once the properties of interest are known, they need to be expressed in some +kind of formal language. Doing so is again hard as most users lack the relevant +expertise in formal languages (e.g., mathematical logic). Specification +languages also provide little guidance to the user on how to elaborate a good +specification (e.g., constructive methods). Besides, they tend to focus on capturing functional properties (what the system is expected +to do), leaving out important non-functional properties. + +Despite being two decades old, I believe the problems Axel pointed at are still largely relevant. This recent [tweet](https://twitter.com/heidykhlaaf/status/1206289442484473856) from Heidy Khlaaf ([@HeidyKhlaaf](https://twitter.com/heidykhlaaf/)) illustrates this particularly well: + +
+In the past three years of working on large safety critical systems, I've learned that verification isn't the real problem, but it's writing specifications. Don't @ me. https://t.co/k4zi1j5QkX
— Dr Heidy Khlaaf (هايدي خلاف) (@HeidyKhlaaf) December 15, 2019