1. A computer method for providing pattern specification, comprising the steps of: in a target domain, defining patterns as a meta-class, each pattern having one or more pattern roles; defining pattern roles as meta-properties; and specifying constraints between pattern roles in context of the pattern meta-class.