Formalising design patterns composition

A design pattern describes a set of proven solutions to a recurring problem within a context. Most design patterns are specified in an informal fashion, which can give rise to ambiguity that may lead to incorrect usage. Thus, reasoning about them requires formalisation. Balanced Pattern Specification Language (BPSL) was developed in order to formally specify the structural as well as behavioural aspects of patterns. When designing software, in most cases two or more patterns are to be composed to solve a bigger problem. In this sense patterns represent micro-architectures that when glued together could create an entire software architecture. Thus, if formalised, pattern composition can lead to ready-made architectures from which only instantiation would be required to build robust implementations. This paper focuses mainly on BPSL's rigorous pattern composition process using the Observer-Mediator pattern composition as a case study.