Abstract
Modular implementation of a feature is a first step toward feature-oriented product line engineering, which develops and then utilizes core assets to configure products in terms of features. Aspect-oriented programming provides effective mechanisms for improving the modularity of feature implementations. However, as features in general are not independent of each other, changes in the implementation of one feature may cause changes to or side effects in the implementation of other features. Moreover, since the time at which a feature is incorporated into products, called feature binding time, may be various from compile time through load time to run time, a feature may have to be implemented differently depending on when the feature is bound into a product. To make each feature implementation module as independent as possible, this paper proposes aspectual implementation patterns that can effectively separate feature dependencies as well as feature binding time from feature implementation modules. These patterns enable flexible composition of feature implementation modules without affecting other modules according to feature selection. The approaches are demonstrated and evaluated based on a product line of scientific calculator applications.
특성 지향 제품계열공학은 특성 관점에서 제품계열의 핵심자산을 개발하고 이를 활용하여 제품을 개발하는 접근방법으로서, 이를 위한 첫번째 단계는 하나의 특성을 하나의 모듈화된 단위로 구현하는 것이다. 관점 지향 프로그래밍은 특성 구현의 모듈화를 향상시키기 위한 효과적인 메커니즘을 제공한다. 하지만, 특성이 일반적으로 서로 독립적이지 않기 때문에 어떤 특성 구현 모듈의 변화는 다른 특성 구현 모듈에 변화를 일으키거나 원하지 않는 부작용을 야기시킬 수도 있다. 뿐만 아니라, 하나의 특성이 제품에 결합되는 시점이 컴파일 시점에서부터 로드 시점, 실행 시점에 이르기까지 다양할 수 있으므로, 특성이 언제 제품에 결합하느냐에 따라 다르게 구현되어야 할지도 모른다. 따라서, 본 논문에서는 각 특성 구현 모듈이 다른 모듈과 독립적이 되도록 하기 위해서, 특성 구현 모듈로부터 특성 의존성 및 특성 결합 시점을 효과적으로 분리시킬 수 있는 애스팩트 패턴을 제안한다. 이러한 패턴들은 특성 구현 모듈이 특성의 선택에 따라서 다른 모듈에 영향을 주지 않고 유연하게 합성될 수 있도록 한다. 이와 같은 접근 방법을 예시하고 평가하기 위해 공학용 계산기 제품계열을 사용한다.