brunch

You can make anything
by writing

C.S.Lewis

by 신현묵 May 07. 2017

Continuous Monitoring #2

매트릭 기반의 모니터링과 리팩터링 팩터 도출을 위한 연구

기존의 매트릭의 기반으로 소프트웨어를 유지 보수하려는 실증적인 연구들은 매우 다양한 방법으로 연구되고, 적절한 비용과 시간이 투여되면 의미 있는 결과를 도출할 수 있었다.


65% 정도 의미 있는 설명이 가능한 리팩터링이 가능!


CM은 이러한 65% 정도 해결 가능한 전통적인 방법과 연계하여 통계적이고 실시간적인 접근법으로 최대한 의미 있는 소프트웨어 가용성을 끌어올리는 것을 제안한다.


전통적으로 소프트웨어에 대한 가용성을 높이기 위해서는 지속적인 유지보수 강화 방안을 고민해 왔다.


지속적인 강화 방법 중에 가장 많이 사용된 방법은 리팩터링 팩터에 대한 도출을 통계적으로 수집하여 우선순위를 통하여 소프트웨어를 개보수하는 방법이었다. ( 이 방법은 현재에도 대부분의 대규모 개발 조직에서 활용된다. )


일반적으로 리팩터링 팩터에 대해서 이야기를 하기 전에, 유지보수의 큰 범위에서의 규모와 난이도를 가정하여 이에 대해서 구분하여 사용하는 것이 전통적이었으며, 소프트웨어 아키텍처를 통하여 비기능(품질)을 향상하는 방법과 결합하여 사용됐다.


보통, 유지보수의 규모를 산정하기 위해서는 다음과 같은 매트릭을 도출한다.


1. 변경하는 모듈의 수

2. 변경 비율

3. 테스트 케이스의 수

4. 개발자의 수를 새로운 매트릭으로 정의


유지보수의 난이도를 측정하기 위해서는 다음의 매트릭을 도출한다.


1. 소프트웨어의 크기(Lines of Code)

2. 소프트웨어의 복잡도(Cyclomatic Complexity)

3. 소프트웨어 모듈의 결합도(Response for Class)

4. 소프트웨어 모듈의 응집도(Lack of Cohesion of Method)


이러한 메트릭을 독립변수로 하고, 종속변수인 유지보수 노력에 대한 예측을 위해서 다중회귀모델을 설계하고 수집된 데이터를 활용하고, 회귀 분석을 수행하여 결과를 도출하였다. 이런 방법으로 수행된 결과 다음의 결과를 알아내었다.


1. 변경하려는 모듈의 수와 변경 비율은 유지보수 비용에 많은 영향을 준다. 하지만, 개발자의 숫자와 소프트웨어 모듈의 응집도는 유지보수 노력과는 거의 관계가 없다는 점.

2. 소프트웨어의 크기(LoC)와 소프트웨어 복잡도(CC)의 사이에는 매우 강한 상관관계가 있다는 것과, LoC가 높은 소프트웨어일수록 이해하기 어렵고 복잡하다는 것은 경험적으로나 통계적으로나 증명되었다.

3. 메트릭을 이용한 회귀모형을 통해서는 65% 정도의 의미 있는 설명력으로 유지보수를 예측하는데 활용할 수 있다는 정도이다.


이런 메트릭을 사용한 분석 방법으로 나타난 결론은 소프트웨어 유지보수는 어떻게 구현되었는지의 상태를 알기보다, 변경할 소프트웨어의 범위를 추적하고 좁혀나가는 것에 더욱더 높은 상관관계가 있다는 점을 알게 되었다.


따라서, 소프트웨어 유지보수를 명확하게 하기 위해서는 변경 요구사항을 찾고, 변경되어야 할 소프트웨어 모듈을 정확하게 식별할 수 있는 노력을 해야 한다는 것이다.


문제는 이러한 변경 요구사항을 찾고, 변경되어야 할 소프트웨어 모듈을 정확하게 식별하기 위해서는 전통적인 소프트웨어 공학적인 접근법으로는 명확하게 구분할 수 없다는 것이다.


소프트웨어 유지보수와 DevOps로 정의되는 현재의 소프트웨어 개발환경에서는 복잡한 계산이나, 논리적인 추론 등을 통하기보다는 매우 직관적이고 직접적인 메트릭을 찾고, 시각화하는 방법이 필요하다고 정의할 수 있다.


Continuous Monitoring은 유지보수의 전체적인 방향성을 모두 해결한다기보다는, 기존의 방법과 혼용되어 성능 중심의 접근법을 활용하여, 개별 유지 보수 작업의 단위별로 생산성을 효과적으로 향상하는 것에 그 목적이 있다.


정량적인 기준을 도출하고, 실질적인 성능 부분을 개선하는 방법으로 미시적인 유지보수 노력의 효과적인 활용을 통해서, 리팩터링 팩터를 실질적으로 운용할 수 있게 한다.


그리고, 해당 시계열적인 데이터를 기반으로 향후, 전체적인 리팩터링과 관련된 우선순위를 도출하기 위한 중요한 이론적, 실체적인 기반을 제공하는 것에 그 의의가 있다 하겠다.


와탭 APM( http://whatap.io )은 이러한 CM을 기반으로 디자인되고 구현된 체계를 제안한다.

매거진의 이전글 Continuous Monitoring #1
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari