Models of Software Patterns and the Patterns of Patterns Evolution