1. 7

(This paper is from the First Workshop on Formal Methods in Software Engineering Education and Training in 2015)

From the abstract (yes, I’m abstracting the abstract, because it actually is too long!):

“[Formal Methods] plays just a minor role in both the everyday work of software engineers as well as Computer Science and Software Engineering curricula. To me, one of the main reasons for the status quo is that mathematics education, as it is usually done today, does not enable students to understand and to use Formal Methods.”

As I was reading this, I was nodding in agreement as I believe that had I been given a stronger foundation in the appropriate math (maybe less calc, and more logic/set theory), I’d be more likely to use formal methods. I am sure I’m not the only one.

  1.  

  2. 4

    This work on invariant-based programming found the main inhibiter was students unable to turn intuitive concepts intk formal logic. They needed to be taught that ahead of time for best results. So that’s corroborating what you’re saying.

    Likewise, I wish I learned formal proof and analog when I was younger. Be much easier to follow the stuff I post in those areas.

    1. 4

      I think it’s also because programming is mostly an unregulated industry. Aviation software is no different from other software and yet they use formal methods and specifications. When the cost of errors is high enough in some industry then that industry implements methods and practices that either end up being formal methods or close enough approximations.

      1. 2

        Agreed, and to me, that’s why software development is not yet “engineering”.

        Costs are interesting, because surely companies are spending/wasting/leaking money due to lack of use of formal methods, but in aviation the cost is usually due to lives lost/almost lost or huge law suits. In most corporations, though, “bugs” are seen as the cost of doing business and, unless there’s some huge (usually press-release-worthy) problem, there’s usually no push to look at such methods.