{"id":480,"date":"2009-05-20T10:33:37","date_gmt":"2009-05-20T14:33:37","guid":{"rendered":"http:\/\/www.easterbrook.ca\/steve\/?p=480"},"modified":"2009-06-15T15:13:18","modified_gmt":"2009-06-15T19:13:18","slug":"does-your-model-ever-surprise-you","status":"publish","type":"post","link":"https:\/\/www.easterbrook.ca\/steve\/2009\/05\/does-your-model-ever-surprise-you\/","title":{"rendered":"Does your model ever surprise you?"},"content":{"rendered":"<p>So, here&#8217;s an interesting thought that came up the the <a title=\"Agenda for the MJ workshop\" href=\"http:\/\/www.cs.uoregon.edu\/events\/icse2009\/CoLocatedEvents\/#michael\" target=\"_blank\">Michael Jackson festschrift<\/a> yesterday. Michael commented in his talk that understanding is not a state, it&#8217;s a process. <a title=\"David Notkin's webpage\" href=\"http:\/\/www.cs.washington.edu\/homes\/notkin\/\" target=\"_blank\">David Notkin<\/a> then asked how we can know how well we&#8217;re doing in that process. I suggested that one of the ways you know is by discovering where your understanding is incorrect, which can happen if your model <em><a title=\"Bredehoeft, Hydrogeology vol 13 No 1, March 2005\" href=\"http:\/\/dx.doi.org\/10.1007\/s10040-004-0430-5\" target=\"_blank\">surprises<\/a><\/em> you. I noticed this is a basic mode of operation for <a title=\"Warren Washington's paper on the history of Earth System Modeling\" href=\"http:\/\/dx.doi.org\/10.1098\/rsta.2008.0219\" target=\"_blank\">earth system modelers<\/a>. They put their current best understanding of the various earth systems (atmosphere, ocean, carbon cycle, atmospheric chemistry, soil hydrology, etc) into a coupled simulation model and run it. Whenever the model surprises them, they know they&#8217;re probing the limits of their understanding. For example, the current generation of models at the Hadley centre don&#8217;t get the Indian Monsoon in the right place at the right time. So they know there&#8217;s something in that part of the model they don&#8217;t yet understand sufficiently.<\/p>\n<p>Contrast this with the way we use (and teach) modeling in software engineering. For example, students construct UML models as part of a course in requirements analysis. They hand in their models, and we grade them. But at no point in the process do the models ever surprise their authors. UML models don&#8217;t appear to have the capacity for surprise. Which is unfortunate, given what the students did in previous courses. In their programming courses, they were constantly surprised. Their programs didn&#8217;t compile. Then they didn&#8217;t run. Then they kept crashing. Then they gave the wrong outputs. At every point, the surprise is a learning opportunity, because it means there was something wrong with their understanding, which they have to fix. This contrast explains a lot about the relative value students get from programming courses versus software modeling courses.<\/p>\n<p>Now of course, we do have some software engineering modeling frameworks that have the capacity for surprise. They allow you to create a model and play with it, and sometimes get unexpected results. For example, <a title=\"The Alloy Analyzer Project\" href=\"http:\/\/alloy.mit.edu\/community\/\" target=\"_blank\">Alloy<\/a>. And I guess <a title=\"Wikipedia on Model Checking\" href=\"http:\/\/en.wikipedia.org\/wiki\/Model_checking\" target=\"_blank\">model checkers<\/a> have that capacity too. A necessary condition is that you can express some property that your model ought to have, and then automatically check that it does have it. But that&#8217;s not sufficient, because if the properties you express aren&#8217;t particularly interesting, or are trivially satisifed, you still won&#8217;t be surprised. For example, UML syntax checkers fall into this category &#8211; when your model fails a syntax check, that&#8217;s not surprising, it&#8217;s just annoying. Also, you don&#8217;t necessarily have to formally state the properties &#8211; but you do have to at least have clear expectations. When the model doesn&#8217;t meet those expectations, you get the surprise. So surprise isn&#8217;t just about executability, it&#8217;s really about\u00a0<a title=\"Wikipedia on falsifiability\" href=\"http:\/\/en.wikipedia.org\/wiki\/Falsifiability\" target=\"_blank\">falsifiability<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So, here&#8217;s an interesting thought that came up the the Michael Jackson festschrift yesterday. Michael commented in his talk that understanding is not a state, it&#8217;s a process. David Notkin then asked how we can know how well we&#8217;re doing in that process. I suggested that one of the ways you know is by discovering [&hellip;]<\/p>\n","protected":false},"author":392,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[74,52],"tags":[3,35,53,64,38],"aioseo_notices":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.easterbrook.ca\/steve\/wp-json\/wp\/v2\/posts\/480"}],"collection":[{"href":"https:\/\/www.easterbrook.ca\/steve\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.easterbrook.ca\/steve\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.easterbrook.ca\/steve\/wp-json\/wp\/v2\/users\/392"}],"replies":[{"embeddable":true,"href":"https:\/\/www.easterbrook.ca\/steve\/wp-json\/wp\/v2\/comments?post=480"}],"version-history":[{"count":5,"href":"https:\/\/www.easterbrook.ca\/steve\/wp-json\/wp\/v2\/posts\/480\/revisions"}],"predecessor-version":[{"id":487,"href":"https:\/\/www.easterbrook.ca\/steve\/wp-json\/wp\/v2\/posts\/480\/revisions\/487"}],"wp:attachment":[{"href":"https:\/\/www.easterbrook.ca\/steve\/wp-json\/wp\/v2\/media?parent=480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.easterbrook.ca\/steve\/wp-json\/wp\/v2\/categories?post=480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.easterbrook.ca\/steve\/wp-json\/wp\/v2\/tags?post=480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}