Architecture-Based Measuring of Software Extensibility

  • Kim, Jung-Ho (School of Engineering Information and Communication University) ;
  • Kang, Sung-Won (School of Engineering Information and Communication University)
  • Published : 2007.11.21

Abstract

시스템을 결정하는 품질 요소에는 여러 가지가 있으나 그 중에서도 유지보수성(Maintainability)이 높은 시스템을 만드는 것은 쉬운 일이 아니다. 또한 유지보수성이 높은 시스템인지 여부를 시스템 개발이 완료 전에 측정하는 것도 어려운 문제이다. 모든 품질요소가 그렇겠지만 시스템을 구성하는 소프트웨어 아키텍처 수준에서 시스템의 품질을 명확히 측정해내지 못하고 시스템 개발 이후에 측정한다면 품질 향상을 위한 시스템 수정은 생각할 수도 없는 문제가 될 것이다. 이 논문은 유지보수성 중에서도 가장 중요한 기능확장성(Extensibility), 즉 기존 시스템에서 신규 서비스를 추가하려 할 때 기존의 서비스에 영향을 미치지 않으면서 비용 및 기간을 최소화하여 새로운 기능을 추가할 수 있는 품질 속성을 소프트웨어 아키텍처 수준에서 비교하는 방법을 정의하여 제시한다. 본 논문에서는 소프트웨어 아키텍처 중에서도 기능확장성에 가장 큰 영향을 미치는 모듈 뷰를 기준으로 기능확장성을 측정할 갓이나 모듈 내부의 변경을 통한 기능확장성은 고려하지 않고 새로운 모듈의 추가로 인한 기능확장성을 고려하였다. 본 논문은 기 수립된 소프트웨어 아키텍처의 모듈 뷰가 가지는 고유한 기능확장성을 측정하는 함수를 제시하고 여기에 새로운 모듈이 추가될 매 변화한 소프트웨어 아키텍처의 기능확장 effort 함수를 제시한다. 이 두 함수를 통해 두 개의 대안 소프트웨어 아키텍처 모듈 뷰에서 어떤 것이 더 기능확장성이 있는지 판단할 수 있게 한다. 우리는 이를 검증하기 위해서 기능확장성이 좋다고 제시되고 있는 디자인 패턴(계층패턴과 Broker 패턴)을 통해 본 논문의 이론을 정립하고 그 효용성을 입증하였다. 따라서 소프트웨어 아키텍처 수준에서 기능확장성이 얼마나 가능한지 서로 비교 가능한 수치를 제시하였고 이 수치를 통해 실제 개발이 완료되기 전 시점에 시스템의 기능확장성을 명백히 측정할 수 있게 하여 시스템 기능 확장에 들어가는 많은 비용을 줄일 수 있다는 것을 보여준다.

Keywords