Teaching Formal Methods

¿Professional engineers can often be distinguished from other designers by the engineers¿ ability to use mathematical models to describe and 1 analyze their products.¿ This observation by Parnas describes the de facto professional standards in all classical engineering disciplines (civil, mechanical, electrical, etc.). Unf- tunately, it is in sharp contrast with current (industrial) practice in software design, where mathematical models are hardly used at all, even by those who, 2 in Holloway¿s words ¿aspire to be engineers.¿ The rare exceptions are certain critical applications, where mathematical techniques are used under the general name formal methods. Yet,thesamecharacteristicsthatmakeformalmethodsanecessityincritical applicationsmakethemalsoadvantageousineverydaysoftwaredesignatvarious levels from design e?ciency to software quality. Why, then, is education failing with respect to formal methods? ¿ failing to convince students, academics and practitioners alike that formal methods are truly pragmatic; ¿ failing to overcome a phobia of formality and mathematics; ¿ failing to provide students with the basic skills and understanding required toadoptamoremathematicalandlogicalapproachtosoftwaredevelopment. Until education takes these failings seriously, formal methods will be an obscure byway in software engineering, which in turn will remain severely impoverished as a result.