초록
컴포넌트 기반 소프트웨어 공학(CBSE)은 재사용 가능한 컴포넌트를 조립하여 시스템을 개발하는 방법이다. CBSE는 소프트웨어 개발비용과 기간을 단축할 수 있는 새로운 패러다임으로 평가되고 있다. 정형 명세를 사용하면 컴포넌트 구성 요소들 사이의 일관성과 정확성을 판단할 수 있기 때문에 컴포넌트 설계의 품질을 높일 수 있다. 현재까지 제안된 컴포넌트 정형 명세 언어들은 인터페이스간의 계약, 컴포넌트의 구조적인 측면과 동적인 측면, 컴포넌트 기반 시스템, 컴포넌트간의 결합, 가변성 중 일부만을 명세에 반영한다. 따라서 지금까지 발표된 정형 명세 언어를 컴포넌트 설계 과정의 모든 단계에서 사용하는 것은 적절치 않다. 본 논문에서는 컴포넌트 정형 명세 언어인 Component-Z를 제안한다. Component-Z는 Object-Z를 확장하여 컴포넌트 명세를 위한 새로운 표기법을 추가하고 의미론을 확장한다. Component-Z를 사용하여 인터페이스, 컴포넌트 내부 구조, 컴포넌트 내부 워크플로우와 인터페이스간의 워크플로우를 명세 할 수 있다. 또한 가변점(variation point), 가변치(variant), customization 인터페이스를 사용하여 가변성을 명세 할 수 있다. 인터페이스와 컴포넌트 사이의 관계는 매핑 스키마(mapping schema)를 사용하여 정의한다. 또한 병렬 연산자(parallel operator)를 사용하여 컴포넌트간의 결합을 명세 할 수 있고 컴포넌트 기반 시스템을 명세하여 컴포넌트가 배포된 상황을 표현할 수 있다. 따라서 본 논문에서 제안된 정형 명세 언어를 사용하여 컴포넌트 설계에 필요한 모든 요소를 표현 할 수 있다. 사례연구에서는 은행 계좌 관리 시스템을 명세하여 Component-Z가 컴포넌트 설계의 전 단계에서 사용될 수 있음을 보인다.
Component-based software engineering (CBSE) composes reusable components and develops applications with the components. CBSE is admitted to be a new paradigm that reduces the costs and times to develop software systems. The high quality of component designs can be assured if the consistency and correctness among the elements of a component are verified with formal specifications. Current formal languages for components include only some parts of contracts between interfaces, structural aspects and behavioral aspects of component, component-based system, component composition and variability. Therefore, it is not adequate to use current formal languages in all steps of a component design process. In this paper, we suggest a formal language to specify component designs Component-Z. Component-Z extends Object-Z, adds new notations to specify components. It can be possible to specify interfaces, the inner structure of a component, inner workflows, and workflows among interfaces with Component-Z. In addition, Component-Z provides the notations and semantics to specify variability with variation points, variants and required interfaces. The relation between interfaces and components is defined with mapping schemas. Parallel operator is used to specify component composition. It can be possible to describe deployed components with the specifications of component-based systems. Therefore, the formal specification language proposed in this paper can represent all elements to design components. In the case study, we specify an account management system in a bank so that we show that Component-Z can be used in all steps of component design.