Formal specification languages can be used to support the rigorous development of complex software systems when these systems must be of high quality. Unfortunately, writing formal specifications and refining them into designs can be a challenging activity. Use of design patterns, which are a widely accepted design activity, helps create quality designs, but adds further complexity to the design activity.
We have developed a tool ADEPT, Advanced Design Employing Pattern Templates, that aids designers in using both formal specifications and design patterns. The software developer will use the ADEPT tool to guide them through the process of choosing a design pattern that is related to their formal system specification for the purpose of automatically supporting refinement. The user is guided through refining the specification and creating a design that not only incorporates one of the design patterns but also meets the given system specification.