design pattern concerns for software evolution
Most design patterns help to make systems flexible and extensible. They have potential effects to support evolutionary software development. Ordinary implementation of design patterns, however, is not always enough for evolution. It is based on the inheritance mechanism. This makes application classes quite dependent on patterns and reduces reusability of application classes. In addition, it is difficult to exchange patterns once a system is designed. In this paper, we introduce a way to implement design patterns more flexibly, applying the concept of separation of concerns. It is realized by separating design patterns, as explicit concerns, from the application core that is responsible for the primary functionalities. The new implementation technologies that support the advanced separation of concerns such as Hyper/J help with coding this kind of design. Using an example, we show that it is possible to exchange patterns to support different behavior without any change on the application core. Our approach has an advantage that reusability of both design patterns and the application core is improved.
design pattern software evolution advanced separation of concerns hyper/j