Supporting the Formal Analysis of Software Designs

Software engineering is the science of designing complex software systems using engineering and design techniques to produce good quality systems. Though formal methods are among the techniques that facilitate the creation of high quality systems, they are frequently not taught to students; mainly due to the complexity of the topic and the lack of textbooks and supporting materials/tools that are appropriate for a student to learn and use them throughout the development of their software. This paper outlines a classroom experience using a tool, advanced design employing pattern templates (ADEPT), that aids in establishing that a system design satisfies its specification. Usage of ADEPT supports the formal analysis of designs in conjunction with the use of design patterns.