소프트웨어 개발 방법론은 자원의 재사용을 통하여 생산성을 향상시키고, 제품을 만들어 시장에 배포하기까지 소요되는 시간인 time-to-market을 감소시킬 목적으로 발전되어왔다. 이러한 방법 중의 하나인 프로덕트 라인을 구현하는 기존의 방법은 중심 자원에 대한 간섭이 심하여 가변적 기능과의 조합 절차에서 많은 비용을 요구하므로 기대만큼의 효과를 얻기 힘든 상황이다. 본 논문에서는 소프트웨어 프로덕트 라인의 조합 프로세스를 개선한 방법으로 관점 지향 프로그래밍(Aspect-Oriented Programming)을 도입한다. AOP의 문법 요소인 결합점(join point) 과 교차점(pointcut), 충고(advice)를 이용하여 중심 자원과 가변적 기능을 코드 변경 없이 조합하는 방법을 소개하고, 간단한 시스템을 사례로 들어 관점 지향 개념을 적용하여 요구를 분석 하고 UML로 설계한다. 설계 단계에서 도출된 가변 기능은 구현 단계에서 관점 지향 언어인 AspectJ를 이용하여 중심 기능과 결합한다. 이 실험을 통하여 효율적인 프로덕트 라인의 구현을 보이고, 유용성과 실용성을 입증한다.
소프트웨어 개발 방법론은 자원의 재사용을 통하여 생산성을 향상시키고, 제품을 만들어 시장에 배포하기까지 소요되는 시간인 time-to-market을 감소시킬 목적으로 발전되어왔다. 이러한 방법 중의 하나인 프로덕트 라인을 구현하는 기존의 방법은 중심 자원에 대한 간섭이 심하여 가변적 기능과의 조합 절차에서 많은 비용을 요구하므로 기대만큼의 효과를 얻기 힘든 상황이다. 본 논문에서는 소프트웨어 프로덕트 라인의 조합 프로세스를 개선한 방법으로 관점 지향 프로그래밍(Aspect-Oriented Programming)을 도입한다. AOP의 문법 요소인 결합점(join point) 과 교차점(pointcut), 충고(advice)를 이용하여 중심 자원과 가변적 기능을 코드 변경 없이 조합하는 방법을 소개하고, 간단한 시스템을 사례로 들어 관점 지향 개념을 적용하여 요구를 분석 하고 UML로 설계한다. 설계 단계에서 도출된 가변 기능은 구현 단계에서 관점 지향 언어인 AspectJ를 이용하여 중심 기능과 결합한다. 이 실험을 통하여 효율적인 프로덕트 라인의 구현을 보이고, 유용성과 실용성을 입증한다.
Software development methodology has been developed for satisfying goals of improvement in productivity and reduction in time-to-market through the reuse of software assets. The current methods that implement software product-line, one of software development methodologies, interfere massively with ...
Software development methodology has been developed for satisfying goals of improvement in productivity and reduction in time-to-market through the reuse of software assets. The current methods that implement software product-line, one of software development methodologies, interfere massively with the core assets, which require high cost in assembly level reducing the effectiveness. In this paper, we introduce Aspect-Oriented Programming (AOP) as a method for improving assembly process in software product-line. The method that assembles core assets and variabilities is described by grammar elements such as Join point, pointcut and advice without code-change. We analyze requirements of a mini-system as an example adapting AOP and design using UML. Our study implements the variabilities, which are from design stage, using an Aspect-Oriented Programming Language, AspectJ and prove usability and practicality by implementing the proposed idea using an Aspect-Oriented Programming Language, AspectJ.
Software development methodology has been developed for satisfying goals of improvement in productivity and reduction in time-to-market through the reuse of software assets. The current methods that implement software product-line, one of software development methodologies, interfere massively with the core assets, which require high cost in assembly level reducing the effectiveness. In this paper, we introduce Aspect-Oriented Programming (AOP) as a method for improving assembly process in software product-line. The method that assembles core assets and variabilities is described by grammar elements such as Join point, pointcut and advice without code-change. We analyze requirements of a mini-system as an example adapting AOP and design using UML. Our study implements the variabilities, which are from design stage, using an Aspect-Oriented Programming Language, AspectJ and prove usability and practicality by implementing the proposed idea using an Aspect-Oriented Programming Language, AspectJ.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 이러한 목적을 위한 직접적인 방법으로써 자산에 대한 코드의 변경 없이 가변적인 기능과의 조합을 이룰 수 있는 방안에 대하여 연구하였으며, 관점 지향 프로 그래밍이 프로덕트 라인 개발 방법론을 구체화 할 수 있는 수단임을 설명한다.
본 논문의 연구는 위에서 설명한 노력을 감소시킴으로써 재사용으로 얻어지는 이익을 높이고자 하였으며, 소프트웨 어 프로덕트 라인의 개발 방법론에 따라 공통 기능과 가변 기능 각각의 구현을 조립하는 조합 프로세스의 개선에 초점 을 맞추었다. 공통 기능을 구현한 범용 컴포넌트와 가변 기능을 구현한 컴포넌트의 아교 역할을 애스펙트라는 AOP의 구조물에게 위임함으로써 프로그래머는 중심 자원과 가변 기능의 코드 변경 없이 새로운 구조물을 작성한다.
본 논문에서는 모듈화를 도와주는 AOP 패러다임을 소프 트웨어 프로덕트 라인의 구현에 적용하였으며, 작은 제품에 대해 요구 분석, 설겨1, 구현 단계를 실험하였다. 소프트웨어 개발 방법론으로써의 장점은 인정되지만 아직 실무에서의 적 용이 활발하지 못한 소프트웨어 프로덕트 라인 방법론에 구 체적인 활용 방안을 제시하였다는데 본 논문의 의의가 있다. 소프트웨어 프로덕트 라인은 하드웨어의 생산 패턴에서 유래한 만큼 임베디드 소프트웨어에 적용하는 경우 더욱 유 리한 방법론이다.
프로덕트 라인의 아키텍처로부터 제품의 아키텍처를 쉽게 얻기 위해서는 제품의 공통적 기능과 가변적 기능이 정확하 게 표현되어야 한다[111 가변 기능을 표현 하는 수단으로 여러 가지가 연구되었으나 본 장에서는 UML을 이용하는 방법과 XML을 이용하는 방법에 대해 소개한다.
가설 설정
실험할 제품의 요구사항은<표 1>과 같다. 기본적인 조 리 기능 외에 조리 상태와 설정 상태를 사용자에게 보이는 디스플레이 기능, 조리 온도를 설정하기 위한 온도 조절 기 능, 조리가 진행 되는 동안 조리대가 회전하는 기능, 조리의 완료를 사용자에게 알리는 알람기능이 있으며, 시간 설정 등의 기능은 공통 기능인 조리 기능에 포함되어 있다고 가 정한다.
온도 조절 기능은 온도 선택 기능이 없는 one-level 시스템과 단계별로 온도 조절이 가능한 multi-level 시스템이 있다. 또한, 디스플레이 기능은 국가별로 언어가 다르고, 한 줄로 표시되는 oneTine display unit과 여러 줄로 표시되는 multi-line display unit이 있다고 가정 한다. 따라서 앞 선 두 가지 요소는 대안적 기능으로 포함 된다.
가변 컴포넌트를 선택적 (optional) 기능과 대안적 (alternative) 기능으로 구분하여 AOP의 이전(before) 충고와 이후(after) 충고, 대체(around) 충고를 이용할 경우 프로덕트 패밀리들은 중심자원의 표현 과 이들의 어떠한 코드 변경도 없이 결합한다. 자원의 코드 변경 없이 다음 버전의 제품을 완성할 수 있다면, 자원의 관리와 이용에 있어 매우 효율적일 것이다.
제안 방법
결과는와 같으며 설계와 구현을 위해 가변적 기능을 선택적 기능과 대안적 기능으로 구분한다.
또한 AOP를 도입하여 프로덕트 라인의 요구를 분석하고, UML 을 이용하여 설계를 표현한다. 다음으로 본 논문에서 제안한 방법을 적용하여 설계를 구현으로 옮김으로써 모든 개발 단계에 걸쳐 AOP를 프로덕트 라인에 적용하여 생산하고 관 리하는 실험을 보인다.
다음으로, 조리의 완료시점을 교차점으로 선언, 이를 알리는 경고음 발생을 구현하였으며, 음식의 조리 중에 테이블이 회전하는 기능을 추가하였다.
(그림 14)는 공통 기능과 가변 기능의 조합을 위한 직조 규칙이 구현되어 있는 Weaver 애스펙트 코드 중 대안적 (alternative) 가변 기능의 구현 부분이다. 디스플레이 유닛 을 설정하는 부분을 교차점으로 선언하여, 기존의 One-Line 디스플레이 유닛을 Multi-Line 디스플레이 유닛으로 교체하였다. 또한 언어를 설정하는 부분을 교차점으로 선언하여, 디스플레이 언어를 영어에서 한국어로 변경하였다.
이번 장에서는 먼저 간략화 한 전자레인지를 모델로 프로 덕트 라인 개념을 적용하여 요구사항을 정의한다. 또한 AOP를 도입하여 프로덕트 라인의 요구를 분석하고, UML 을 이용하여 설계를 표현한다. 다음으로 본 논문에서 제안한 방법을 적용하여 설계를 구현으로 옮김으로써 모든 개발 단계에 걸쳐 AOP를 프로덕트 라인에 적용하여 생산하고 관 리하는 실험을 보인다.
본 논문에서는 모듈화를 도와주는 AOP 패러다임을 소프 트웨어 프로덕트 라인의 구현에 적용하였으며, 작은 제품에 대해 요구 분석, 설겨1, 구현 단계를 실험하였다. 소프트웨어 개발 방법론으로써의 장점은 인정되지만 아직 실무에서의 적 용이 활발하지 못한 소프트웨어 프로덕트 라인 방법론에 구 체적인 활용 방안을 제시하였다는데 본 논문의 의의가 있다.
본 논문은 기존에 개발 된 범용적 자원과 가변적 기능을 구현한 컴포넌트 간의 조합 과정에 있어 이들 부품 컴포넌 트에 대한 개입을 최소화 하고자, 관점 지향 프로그래밍을 도입하였으며, 아교(이ue) 역할로써 AOP의 애스펙트(aspect) 를 이용하였다. 변경 가능 기능(variants)의 구현은 애스펙트 의 문법 요소인 충고(advice)를 통해 공통 기능을 구현한 중 심 자원(core asset)과 결합된다.
그림에서 보이는 것처럼 직조 규칙을 가진 애스펙트를 구현함으로 써 기존의 operate。연산에는 어떠한 첨가나 변경도 하지 않게 된다. 이전 충고와 이후 충고를 사용하여 선택적 변경 사항인 조명 기능을 추가하였고, 대체 충고를 사용하여 대 안적 기능인 언어 선택을 한국어로 변경하였다. 이러한 애 스펙트를 작성하기 위해 프로그래머가 알아야 할 것은 처음 개발된 제품의 코드에 대한 명세뿐이다.
(그림 13)은 공통 기능과 가변 기능의 조합을 위한 직조 규칙이 구현되어 있는 Weaver 애스펙트 코드 중 선택적 (optional) 가변 기능의 구현 부분이다. 전자레인지의 문을 열고 닫을 때, 그리고 음식의 조리를 교차점으로 선언하고, 교차점 전 후에 조명이 켜지고 꺼지는 기능을 구현하였다.
또한 언어를 설정하는 부분을 교차점으로 선언하여, 디스플레이 언어를 영어에서 한국어로 변경하였다. 조리의 온도를 담당 Heating Element를 온도 조절이 안 되는 요소 에서 온도 조절을 할 수 있는 MultiLevelHeatingElement로 교체하였다.
이론/모형
3.1 클래스 구조
구현 단계 에서는 JAVA 언어를 확장한 AspectJ를 사용하였으며, AspgctJ는 자바 개발 툴, 이클립스(www.eciipse.org) 에서 플러그인(plug-in)으로써 제공하고 있으므로 이클립스를 구현 도구로 이용하였다
.
이전 단계에서 작성된 요구 사항 분석 결과를 UML로 설 계한다. 본 논문에서 사용하는 프로덕트 라인의 설계는 Gomma가 제시한 방법을 따른다. (그림 9)에 보이는 바와 같이 전자레인지 프로덕트 라인의 공통 기능인 Microwave Oven Kernel0] «common feature>>로 표현되었고, Light 와 Turntable, Beeper/F 선택적 기능인 «optional fea~ ture>>로 표현되었다.
성능/효과
운전 중에는 선반이 회전하며, 조리가 완료되었을 때는 경보음이 발생한다. 또한 기존의 선택적 기능의 객체들이 상이한 객체로 대체되어 초기화 된 것을 확인할 수 있다.
후속연구
각각의 기능들을 x-frame 이라는 단위로 표현하고 컴포넌트 별로 분류하여 x-framework을 구성한다. 이 설계를 바탕으로 코드에 XML의 확장성을 이용한 XVCL(XML~based Configuration Language) 코드를 삽입함으로써 자원 관리에 이점을 기대할 수 있다.
임베디드 제품은 짧은 시간에 유사한 버 전의 많은 제품이 출시되므로 time to market에 매우 민감 하며, 이를 충족시키기 위해서는 제품에 대한 자원 활용이 필수적이다. 차후 연구로써 임베디드 소프트웨어의 개발 패 턴을 분석하고 소프트웨어 프로덕트 라인 개발 방법론을 적 용하는 실험적 연구가 필요하겠다.
참고문헌 (14)
Walker, R.J., Baniassad, E.L.A., Murphy, G.C., 'An initial assessment of aspect-oriented programming', Proceedings of the 1999 International Conference on Software Engineering, pp.120-130, 1999
Michalis A., Cristina G., 'Implementing Product Line Variabilities,' ACM SIGSOFT Software Engineering Notes, Proceedings of the 2001 Symposium on Software Reusability, 2000
Kuloor, C., Eberlein, A., 'Aspect-Oriented Requirements Engineering for Software Product Line,' Proceedings of 10th IEEE International Conference and Workshop Engineering of Computer-Based Systems, pp.98-107, 2003
Zhang, H., Jarzabek, S., 'An XVCL approach to handling variants: a KWIC product line example,' IEEE Tenth Asia-Pacific Software Engineering Conference, pp.116-125, 2003
Len Bass, Paul Clements, Rick Kazman, Software Architecture in Practice(second edition), Addison-Wesley, 2003
민진우, 이인선, 이크립스 기반 프로젝트 필수 유틸리티: CVS, Ant, JUnit, 한빛 미디어, 2004
Yoshida, M., Iwane, N., Matsubara, Y., 'The integrated software product line model,' IEEE Conference Cybernetics and Intelligent Systems, pp.538-543, 2004
Hassan Gomaa, Designing Software Product Line with UML, Addison-Wesley, 2004
정주미, 최승훈, 'ACAB:소프트웨어 프로덕트 라인 지원을 위한 컴포넌트 개발 도구,' 제32회 한국정보과학회 추계학술발표회 논문집 Vol.32, No.2(II),pp.427-429, 2005
Youhee Choi, Gyusang Shin, Youngjong Yang, Changsoon Park, 'An Approach to Extension of UML 2.0 for Representing Variabilities', Fourth Annual ACIS International Conference, pp.258-261, 2005
Hideaki S., Tetsuo T., 'Impact Analysis of Weaving in Aspect-Oriented Programming,' Software Maintenance ICSM'05. Proceedings of the 21st IEEE International Conference, pp.657-660, 2005
Yokoyama, T., 'An aspect-oriented development method for embedded control systems with time-triggered and event-triggered processing,' Real Time and Embedded Technology and Applications Symposium RTAS 2005, 11th IEEE, pp.302-311, 2005
Schmidt, P., Milstein, J., Alvarado, S., 'Architectural assessment of embedded systems using aspect-oriented programming principles,' Object-Oriented Real-Time Distributed Computing ISORC 2005, Eighth IEEE International Symposium, pp.90-93, 2005
※ AI-Helper는 부적절한 답변을 할 수 있습니다.