Automated Transforms Of Software Models: A Design Pattern Approach