1. Introduction
Developing software that is easy to change is difficult. Due to constantly evolving requirements and hardware, most software is modified many times after its first release. Recent studies report that more than 90% of software costs are caused by maintenance and evolution [1]. Therefore, stakeholders expect a system to be designed so that it can be changed quickly and economically. This quality is referred as modifiability.