Algebraic specification takes the point of view that software programs can be understood as algebras, formed by sets of data and operations on these data. Algebraic specification allows the formal description of required properties of software, as well as their stepwise refinement into some design that has algorithmic nature and is close to an implementation.
This lecture will explain algebraic specification using an international standard, namely the Common Algebraic Specification Language (CASL). The theory is complemented by suitable tools for checking refinements and proving correctness.