While modern software system development is getting more complex, people in computer science society want to reduce cost, risks and time-to-market. And they try to improve software productivity. The most promising solutions are Component-Based Software Development (CBSD) and software architecture. The purpose of component assembly is to create a new component that has not been in existence. Software architecture that consists of components and connectors is created to reduce a gap between user requirements and the real implementation by abstraction.
A lot of approaches have tried to perform component assembly in software architecture. Their purpose is to hide some details of assembled components through encapsulation for the better identification and sustenance of its properties.
However, the advent of dynamic software architecture, which can evolve and exchange by the reaction of unexpected events at run-time, makes the existing approaches difficult to apply constraints abstraction because of two reasons: (1) consideration of only stable software architecture and static component constraints at the design time, (2) not enough support for the constraints abstraction like multi-level abstraction prediction.
To improve the limitations of the existing approaches, this thesis presents two requirements for the set of goals of a new approach: automatic constraints update in dynamic software architecture and constraints propagation to higher abstraction levels.
The core elements of the approach are (1) a constraints categorization to find an appropriate constraints abstraction method, (2) a procedure for the constraints categorization to propose an execution way for the constraints abstraction, and (3) real abstraction methods to execute the constraints abstraction. The approach is validated by applying it to a few examples and by comparing its results with the results from the existing approaches.
The primary value of this thesis is that users can use the above three elements to realize the component constraints abstraction in the dynamic situations such as component addition, deletion, modification, and replacement. The automatic and stepwise mechanism will make the constraints abstraction procedure more consistent and reliable.
현대 소프트웨어 개발은 갈수록 복잡해 지고 있지만, 컴퓨터 분야에 종사하는 사람들은 비용, 위험, 시장 출시일을 줄이고, 생산성은 향상시키길 원한다. 그것을 위한 가장 주목 받는 방법은 컴포넌트 기반 개발 방법론과 소프트웨어 아키텍처이다. 컴포넌트 기반 개발 방법론은 기존의 컴포넌트를 재사용하여 새로운 컴포넌트를 만드는 것이고, 소프트웨어 아키텍처는 시스템의 구조와 그것들의 속성, 그리고 그것들의 관계를 나타내기 위한 것이다.
많은 연구들이 소프트웨어 아키텍처에서의 컴포넌트 조립을 시도하였고, 컴포넌트 속성 구별과 속성의 보존을 위해 함축 (Encapsulation) 을 통하여 불필요한 부분, 특히 제약조건과 관련된 부분을 감추기 위한 목적을 취하였다.
그러나, 예상치 못한 현상, 또는 주변 환경의 변화로 인해 실행 도중 컴포넌트 단위로 재구성할 수 있는 동적 소프트웨어 아키텍처의 출현은 기존의 제약조건 추상화 연구를 다음과 같은 이유로 적합하지 않게 하였다: (1) 변하지 않는 소프트웨어 아키텍처와, 설계 시에 고정된 제약조건만을 고려했던 것, (2) 다중 계층 추상화 같은 제약조건 추상화에 충분하지 않은 조건
본 논문의 핵심 접근법은 다음의 세가지로 요약될 수 있다 (1) 적절한 추상화 방법을 찾기 위한 제약조건 분류방법 (2) 제약조건 추상화 실행을 위한 분류 절차 설정 (3) 제약조건 추상화를 실행하기 위한 실제 추상화 기법
본 논문의 접근법은 몇 가지 예제의 적용과 기존의 연구와의 비교를 이용하여 평가될 수 있다.