A Design pattern describes a set of proven solutions for a set of recurring design problems that occur within a context. As such, reusing patterns improves both quality and time-to-market of software projects. Currently, most patterns are specified in an informal fashion, which gives rise to ambiguity, and limits tool support and correct usage. This chapter describes balanced pattern specification language (BPSL), a language intended to accurately describe patterns in order to allow rigorous reasoning about them. BPSL incorporates the formal specification of both structural and behavioral aspects of patterns. Moreover, it can formalize pattern composition and instances of patterns (possible implementations of a given pattern).