1. A method for implementing a pattern in a software system, comprising defining a pattern as a software artifact that comprises a pattern signature representing one or more parameters of said pattern and a pattern implementation model representing one or more methods for expanding said pattern in a selected software context by assigning one or more arguments to said one or more parameters.