How do I know if my design is correct ?
Résumé
Teaching software engineering students about design is very challenging. In general, students will learn about design through a module teaching a graphical modelling language. Our experience shows that this can result in students learning how to represent and comprehend designs but having very little understanding of design as a process. When reviewing design artefacts, students often ask whether the designs are good. This leads to the realisation that there is lack of understanding of the fundamental question of whether a design can be said to be correct. Of course, the notion of correctness will generally be covered by another module, typically called formal methods. Unfortunately, our experience also shows that formal methods courses can lead to students learning how to build formal models - much like they would build programs - without achieving a good understanding of nondeterminism and abstraction; and without seeing how formal methods can help in the process of design. In this paper, we argue that the teaching of software design needs to be better integrated with the teaching of formal methods. We give some concrete examples of how this can be done