본문 바로가기
Homo Architect

Component Refactoring [1]

by javauser 2008. 11. 12.
컴포넌트를 대상으로 하는 리팩토링은 그 작업 자체만으로도 많은 부분에 영향을 미칠 수 있다. 또한, 컴포넌트의 어떠한 부분을 초점으로 접근할 것인가에 따라 그 접근방법이 다양하고, 그에 따른 리팩토링 전략도 달라질 수 있다. 우선은 컴포넌트를 리팩토링을 하기 전에 컴포넌트가 갖게 되는 뷰에 따라 어떠한 품질 속성들을 요구하는지에 대해 살펴보면 아래 그림과 같다.


컴포넌트 기반 구조 (Component Infrastructure) - 컴포넌트의 기반 구조 차원에서 컴포넌트는 표준화(standardability), 유사성(conformability), 가용성(availability) 등의 품질 속성을 말할 수 있다. 이는 컴포넌트의 구조를 이루는 뼈대에 해당하는 부분이 얼마나 견고하고 일관성 있게 만들어졌는지에 대한 기준을 제공함으로써 컴포넌트가 만들어지는 기초틀의 품질을 측정할 수 있다.

컴포넌트 구조 (Component Structure) - 컴포넌트의 구조는 컴포넌트가 구현하고자 하는 비즈니스 로직에 따라 다양하며, 이는 해당 비즈니스가 추구하고자 하는 목적에 따라 컴포넌트의 구조를 결정할 수 있음을 의미한다. 따라서, 컴포넌트 구조는 컴포넌트 내부 구조에 대한 부분과 해당 컴포넌트가 제공하는 서비스가 어떤 형태로 결정되는지에 따라 그 품질이 결정될 수 있다. 이에 해당하는 품질 속성들은 컴포넌트가 제공하는 인터페이스의 복잡도에 따라 그 통합의 복잡도가 결정이 될 수가 있으며, 컴포넌트의 품질 차원에서 테스트 커버리지 정도와 컴포넌트의 내구성을 결정하는 fault에 대한 탐지성 및 복구성을 들 수 있다. 또한, 컴포넌트가 가지는 의존관계(커플링)는 관리가 되어야 하며, 크기 또한 관리되어야 한다. 컴포넌트가 얼마나 변경을 쉽게 할 수 있을 것인가, 혹은 컴포넌트를 변경했을 때 어느 정도 영향력이 있는지에 대한 부분도 품질 속성에 해당된다.

비즈니스 구현 (Business Implementation) - 컴포넌트의 기능은 비즈니스의 요구를 충분히 수용해야 하며, 시장의 요구에 적시에 수용 가능해야 하며, 비즈니스 로직은 관리가 가능해야 하며, 실제로 현실적으로 사용이 가능한 내용이 포함되어야 한다.

컴포넌트 명세 (Component Specification) - 컴포넌트 명세 차원에서 컴포넌트가 제공하는 서비스에 대한 적응성(adaption), 서비스의 품질, 서비스의 제공 방법(provision) 등 다양한 측면에서 품질 속성을 정의할 수 있다. 서비스 적응성에 대해서는 컴포넌트가 제공하는 서비스가 용도에 부합되게 사용이 가능한 형태로 제공되어야 하는 측면을 말하고 있으며, 재사용성이 특히 강조되는 속성이다. 또한, 해당 서비스를 쉽고 빠르게 제공하기 위해서는 빠른 생산성을 통해 서비스를 적용할 수 있어야 되며, 명세에 대해 준수하여야 한다. 컴포넌트의 서비스는 얼마나 적응이 쉬운가와 해당 트랜잭션의 추적성, 쉽게 이식할 수 있는 속성도 모두 서비스 적응성을 뒷받침해주는 속성들이다. 서비스 제공(provision) 차원에서 안정성과 보안성, 신뢰성이 중요한 품질 속성이 된다. 서비스를 제공하는 영역에서는 얼마나 효과적이고 효율적으로 제공할 수 있는가를 측정해야 되므로, 컴포넌트가 다른 환경에서도 쉽게 배포될 수 있고, 일관성 있는 성능을 제공할 수 있어야 한다.

결국, 컴포넌트 리팩토링은 위의 그림처럼 컴포넌트가 가지는 여러가지 측면의 품질 속성들에 대해서 강화를 해주며, 컴포넌트의 구조화를 뒷받침해주는 형태로 수행되어야 한다.


반응형

'Homo Architect' 카테고리의 다른 글

Component Refactoring [3]  (0) 2008.11.15
Component Refactoring [2]  (0) 2008.11.13
컴포넌트 클러스터링 [5]  (0) 2008.11.06
컴포넌트 클러스터링 [4]  (0) 2008.11.06
컴포넌트 클러스터링 [3]  (0) 2008.11.06