유지보수는 소프트웨어 생명 주기에서 대부분의 비용이 소요되는 중요한 활동이다. 기존에 소프트웨어 유지보수 활동에 소요되는 비용의 예측을 위하여 다양한 소프트웨어 메트릭이 제안되었다. 본 논문에서는 객체지향 소프트웨어의 유지보수성과 기존에 제안된 메트릭과의 관계를 파악하기 위해서 수행된 실험의 결과를 소개한다. 실험에서는 메트릭으로서 LCOM, RFC, DAC, LOC를 사용하였으며 클라이언트/서버 및 웹 기반 시스템을 대상으로 유지보수 활동 시 실제로 소요되는 시간을 측정하였다. 본 실험을 통해서 메트릭과 유지보수 비용과의 관계에 대한 기존의 일반적인 주장을 실제 시스템의 유지보수 활동을 통해서 확인한 결과 기존의 주장과 달리 일부 시스템의 경우에는 기존의 주장을 뒷받침하지 못할 수 있음을 확인하였다. 구체적으로 말하면 소프트웨어 아키텍처, 설계 패턴 등이 적용되는 개발된 최근의 소프트웨어에서는 메트릭과 유지보수 활동과의 관계에 대한 추가적인 많은 연구가 필요함을 확인하였다.
유지보수는 소프트웨어 생명 주기에서 대부분의 비용이 소요되는 중요한 활동이다. 기존에 소프트웨어 유지보수 활동에 소요되는 비용의 예측을 위하여 다양한 소프트웨어 메트릭이 제안되었다. 본 논문에서는 객체지향 소프트웨어의 유지보수성과 기존에 제안된 메트릭과의 관계를 파악하기 위해서 수행된 실험의 결과를 소개한다. 실험에서는 메트릭으로서 LCOM, RFC, DAC, LOC를 사용하였으며 클라이언트/서버 및 웹 기반 시스템을 대상으로 유지보수 활동 시 실제로 소요되는 시간을 측정하였다. 본 실험을 통해서 메트릭과 유지보수 비용과의 관계에 대한 기존의 일반적인 주장을 실제 시스템의 유지보수 활동을 통해서 확인한 결과 기존의 주장과 달리 일부 시스템의 경우에는 기존의 주장을 뒷받침하지 못할 수 있음을 확인하였다. 구체적으로 말하면 소프트웨어 아키텍처, 설계 패턴 등이 적용되는 개발된 최근의 소프트웨어에서는 메트릭과 유지보수 활동과의 관계에 대한 추가적인 많은 연구가 필요함을 확인하였다.
Software maintenance is an important and very expensive activity in software life cycle. To estimate the maintainability cost of software, many software metrics have been proposed. This paper presents the result of an experimental study to explore the relationship between maintainability and some so...
Software maintenance is an important and very expensive activity in software life cycle. To estimate the maintainability cost of software, many software metrics have been proposed. This paper presents the result of an experimental study to explore the relationship between maintainability and some software metrics. LCOM, RFC, DAC, and LOC are employed as metrics and time really spent for maintenance activity has been collected. In the experimental study, we have found that for some systems, the existing metrics may not be an indicator to maintenance effort, which is not consistent with our general knowledge on the relationship between them. Specifically speaking, we recognized that there should be more empirical study on the relationship between metrics and maintainability of softwares which have been developed using recent technologies such as software architecture and design pattern.
Software maintenance is an important and very expensive activity in software life cycle. To estimate the maintainability cost of software, many software metrics have been proposed. This paper presents the result of an experimental study to explore the relationship between maintainability and some software metrics. LCOM, RFC, DAC, and LOC are employed as metrics and time really spent for maintenance activity has been collected. In the experimental study, we have found that for some systems, the existing metrics may not be an indicator to maintenance effort, which is not consistent with our general knowledge on the relationship between them. Specifically speaking, we recognized that there should be more empirical study on the relationship between metrics and maintainability of softwares which have been developed using recent technologies such as software architecture and design pattern.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
그리고, 소프트웨어 품질과 메트릭과의 관계를 파악하기 위하여 기존에 수행된 연구결과를 소개한다.
이러한 측면에서 기존에 수행된 Li의 연구와 Blinkley의 연구는 정확하게 유지보수 비용을 수집한 것으로보기 어렵다. 기존의 연구와 달리 본 논문에서는 실제 업무용 시스템을 유지보수할 때 소요된 전체적인 유지보수 시간을 수집하고 이를 바탕으로 메트릭과의 관계를 살펴본다.
우선 본 실험에서는 기존의 실험과 달리 변경이 발생한 코드의 라인 수만을 측정한 것이 아니라 실제 유지보수 활동에서 수행되는 모든 작업에 소요되는 시간을 측정하였다. 따라서 비록 실험의 규모가 작지만 기존에 수행된 실험과 비교할 때 유지보수 활동에 소요되는 실제 비용을 바탕으로 메트릭과의 관련성을 파악하려고 한 것이 본 실험의 가장 큰 특징이라고 할 수 있다.
또한 본 논문에서 사용된 4가지 유형의 메트릭을 포함하여 보다 다양한 메트릭을 이용하여 유지보수 비용과의 관련성을 파악해 보고자 한다.
먼저, 유지보수성과의 관련성을 파악하기 위하여 사용된 객체지향 메트릭을 소개한다. 그리고, 실험 대상이 된 기간계 시스템의 규모, 플랫폼(platform) 등의 특성을 설명한다.
본 논문에서는 기업에서 실제 사용되고 있는 응용 시스템의 유지보수 활동을 대상으로 유지보수 활동에서 실제로 소요된 시간을 바탕으로 객체지향 메트릭과 유지보수성과의 관계를 살펴본 결과를 소개한다. 즉 한 중공업 업체의 전산실에서 자재 구매 시스템을 대상으로 수행된 유지보수 활동을 대상으로 실제 유지보수에 소요된 시간을 측정하였다.
본 논문에서는 소프트웨어 페트릭 (metric)을 바탕으로 한유지보수 비용의 예측에 초점을 둔다. 즉 유지보수 활동에 사용될 수 있는 제한된 자원을 효율적으로 활용하기 위해서는 큰 비용의 유지보수가 요구될 수 있는 모듈을 미리 예측하고 이들 모듈을 재구성 (restructuring) 함으로써 유지보수성을 개선시킬 필요가 있다.
본 논문에서는 유지보수성과 메트릭과의 관계를 조사 해보기 위해 실제 운용되는 시스템을 대상으로 수행된 실험 결과를 소개하였다. 본 실험은 기존의 실험과 달리 두 가지 측면에서 기존에 수행된 실험과 다르다.
본 실험에서는 각 메트릭 값과 유지보수 비용과의 관계를 파악하기 위해서 각 메트릭 값과 유지보수 평균시간과의 상관 계수를 계산하였다[17].<표 6>에서는 클래스 별 평균 유지보수 시간과 각 메트릭과의 상관 계수 값을 보여준다.
가설 설정
Binkley의 연구에서는 유지보수 과정에서. 추가, 변경, 삭제 되는 소스 코드의 행수와 수정된 클래스의 수를 유지보수 데이터로 가정하였다.
제안 방법
.우선 본 실험에서는 기존의 실험과 달리 변경이 발생한 코드의 라인 수만을 측정한 것이 아니라 실제 유지보수 활동에서 수행되는 모든 작업에 소요되는 시간을 측정하였다. 따라서 비록 실험의 규모가 작지만 기존에 수행된 실험과 비교할 때 유지보수 활동에 소요되는 실제 비용을 바탕으로 메트릭과의 관련성을 파악하려고 한 것이 본 실험의 가장 큰 특징이라고 할 수 있다.
4명의 개발자는 3개월 동안 총 112회 유지보수 활동을 수행하였다. 그리고 유지보수에 소요된 전체 시간은 4, 540분이며 1회의 유지보수 시 평균 41분이 소요 되었다.
하나가 Chidamber & Kemerer[8]가제안한 메트릭 스위트이다. Chidamber와 Kemerer는 대부분의 메트릭 들이 이론적인 근거없이 제안되었음을 지적하고, Weyuker [15]가 제시한 6가지 기준을 통해 검증된 객체지향 메트릭을 제안하였다. Chidamber와 Kemerer가 제안한 객체지향 소프트웨어 메트릭은 각 개별 클래스 단위로 측정하게 되어 있는 6 가지의 메트릭으로 구성된다.
Delphi로 구현된 시스템 A의 18개의 클래스로부터 메트릭을 계산할 때는 각 메트릭의 정의에 따라서 수작업으로 수행하였다. 기존에 Delphi 코드에 대해서는 메트릭의 자동적인 계산을 지원하는 도구를 확보하지 못했기 때문이다.
수집되었다. 각 유지보수에 대한 요구를 수용하기 위하여 소요된 시간을 실제 수정이 가해진 클래스 별로 기술하였다. 즉 유지보수 기간 동안 유지보수 사항이 발생시 해당 클래스 명, 조치사항, 프로그램 수정에서 테스트 그리고 반영까지의 시간을 10 분 단위로 기록하였다.
반면에 시스템 B에서는 비즈니스 로직만을 구현하고있다. 게다가 실제 비즈니스 로직과 이 비즈니스 로직을 수행할 때 필요한 복잡한 데이터 구조를 별도의 클래스로 분리하여 개발되었다. 이와 같은 구조는 최근에 디자인 패턴 또는 리팩토링 등에 의해서 일반적으로 권장되는 설계 방식이다.
즉 한 중공업 업체의 전산실에서 자재 구매 시스템을 대상으로 수행된 유지보수 활동을 대상으로 실제 유지보수에 소요된 시간을 측정하였다. 그리고 대상 시스템을 구성하는 각 클래스로부터 대표적인 객체지향 메트릭을 계산하였고 이들 메트릭과 수집된 유지보수시간과의 상관관계를 분석함으로써 둘 간의 관련성을 파악하였다. 본 실험에 의하면 예상과 달리 기존의 메트릭이 유지보수 비용을 적절히 반영하지 못할 수 있음을 알았다.
가지의 상용 시스템을 연구에 이용하였다. 그리고 유닉스 환경의 LEX와 YACC를 이용하여 변경된 코드의 수를 분석하였고 메트릭과 유지보수성과의 관계를 알아보는데 이용하였다.
Java 또는 C++ 언어의 경우에는 여러 객체지향 메트릭을 계산하는 도구들이 존재하지만 Delphi로 개발된 프로그램에 대한 메트릭 계산 도구를 확보하지 못하였다. 따라서 본 실험에서는 Delphi 코드에 대해서는 수작업으로 메트릭 값을 계산해야 했기 때문에 많은 메트릭을 선정하지 못하고 응집도, 결합도 그리고 규모의 범주 별로 대표적인 것을 선정하게 되었다.
그리고, 실험 대상이 된 기간계 시스템의 규모, 플랫폼(platform) 등의 특성을 설명한다. 마지막으로 유지보수 비용의 수집 방법과 메트릭 계산 방법을 소개한다.
한다. 먼저 계산된 각 메트릭 값과 수집된 유지보수 시간을 요약한 후에 메트릭과 유지보수 시간과의 관계를 살펴본다.
먼저 측정된 메트릭 값과 수집된 유지보수 시간을 요약한 후에 메트릭과 유지보수 시간과의 관계를 살펴본다.
반면에 시스템 B는 Java 언어로 개발되었기 때문에 메트릭 측정 도구를 이용하여 4개의 메트릭 값을 자동으로 추출하였다. 본 실험에서는 자바 언어에 대한 UML 모델링 도구인 Together를 이용하여 4개의 메트릭을 모두 계산하였다.
본 논문에서는 위의 Chidamber와 Kemerer[8]의 6가지 M* e tries중 RFC, LCOM을 사용하였고 Li의 연구[11]에서 제안된 DAC 페트릭, 그리고 LOC를 사용하여 실험을 하였다. 기존의 객체지향 메트릭 중에서 이와 같은 4개의 메트릭을 대상으로 선정한 이유는 다음과 같다.
본 실험에서는 자바 언어에 대한 UML 모델링 도구인 Together를 이용하여 4개의 메트릭을 모두 계산하였다. (그림 4)는 Together를 이용하여 메트릭을 계산한 결과를보여 준다.
시스템 A에서와 마찬가지로 시스템 B를 대상으로 각 메트릭과 유지보수 비용과의 관계를 파악하기 위해서 둘 간의상관 계수를 계산하였다.<표 8>는 시스템 B의 전체 클래스에 대한 메트릭과 유지보수 시간과의 상관 관계를 나타낸다.
본 실험은 기존의 실험과 달리 두 가지 측면에서 기존에 수행된 실험과 다르다. 우선, 유지보수 비용을 단순히 입력/변경/삭제된 소스 코드의 행 수가 아니라, 실제 유지 보수 활동에서 소요된 시간으로 구하였다. 그리고, 최근에 일반적으로 구축되고 있는 웹 기반 시스템을 대상으로 수행되었다.
각 유지보수에 대한 요구를 수용하기 위하여 소요된 시간을 실제 수정이 가해진 클래스 별로 기술하였다. 즉 유지보수 기간 동안 유지보수 사항이 발생시 해당 클래스 명, 조치사항, 프로그램 수정에서 테스트 그리고 반영까지의 시간을 10 분 단위로 기록하였다. 이때 소요 시간은 단순히 소스 코드를 수정하는데 소요된 시간만을 나타내는 것이 아니라 유지보수 활동에 소요된 총체적인 시간을 포함한다.
본 실험에서는 각 분류 별로 대표적인 메트릭을 선정하였다. 즉 응집도 메트릭으로서 C&K의 LCOM 을 사용하였다. 그리고, 결합도 메트릭으로서는 C&K의 RFC와 Li가 제안한 DAC를 사용하였다.
살펴본 결과를 소개한다. 즉 한 중공업 업체의 전산실에서 자재 구매 시스템을 대상으로 수행된 유지보수 활동을 대상으로 실제 유지보수에 소요된 시간을 측정하였다. 그리고 대상 시스템을 구성하는 각 클래스로부터 대표적인 객체지향 메트릭을 계산하였고 이들 메트릭과 수집된 유지보수시간과의 상관관계를 분석함으로써 둘 간의 관련성을 파악하였다.
대상 데이터
우선, 유지보수 비용을 단순히 입력/변경/삭제된 소스 코드의 행 수가 아니라, 실제 유지 보수 활동에서 소요된 시간으로 구하였다. 그리고, 최근에 일반적으로 구축되고 있는 웹 기반 시스템을 대상으로 수행되었다.
반면에 시스템 B는 실험 대상 클래스는 사용자 인터페이스 부분이 제외된 비즈니스 로직만을 포함하고 있다. 게다가 시스템 B에서는 실제 비즈니스 로직을 수행하는 부분과 필요한 데이터를 관리하는 부분을 별도의 클래스로 분리하여 개발되었다.
자바 빈으로 구현 되었다. 본 실험에서는 JSP를 제외한 총 33개의 Java 클래스를 대상으로 하였다.
본 실험에서는 객체지향 메트릭과 유지보수성과의 관련성에 초점을 두므로 Delphi로 개발된 클라이언트 시스템만을 대상으로 한다. 클라이언트는 총 18개의 클래스로 구성되었다.
본 실험에서는 자재 구매 시스템을 대상으로 4명의 개발자가 3개월간 수행한 유지보수 활동에서 클래스 별 유지보수 시간을 수집하였다. 즉 본 실험을 위해서 인위적인 환경을 구성한 것이 아니라 실제 자재 구매 시스템을 운영하는 한 중공업 업체의 전산실에 근무하는 4명의 개발자가 3개월동안 수행한 유지보수 활동을 그대로 데이터로서 수집하였다.
유지보수 데이터의 수집은의 형태로 수집되었다.
시간을 수집하였다. 즉 본 실험을 위해서 인위적인 환경을 구성한 것이 아니라 실제 자재 구매 시스템을 운영하는 한 중공업 업체의 전산실에 근무하는 4명의 개발자가 3개월동안 수행한 유지보수 활동을 그대로 데이터로서 수집하였다. 3개월 동안 수행된 유지보수 활동은 사용자에 의해서 요청된 요구사항의 변경(예를 들면, 기능의 추가 또는 사용자 인터페이스의 변경 요구)과 발견된 결함의 수정 등을 포함하며 운영체제와 주변장치 등의 변화에 따른 유지보수와 재구성 활동은 수행되지 않았다.
이론/모형
<표 2>는 기존의 실험적 연구들이다. 표에서 알 수 있듯이, 기존에 수행된 실험적 연구에서는 C&K(Chidamber and Kemerer) 페트릭을 바탕으로 추가적인 몇몇 다른 메트릭을 척도로서 사용하였다. 그리고, 평가 대상 품질 요소로는 오류 발생 가능성, 생산성, 유지보수성 등이 있다.
성능/효과
즉 본 실험을 위해서 인위적인 환경을 구성한 것이 아니라 실제 자재 구매 시스템을 운영하는 한 중공업 업체의 전산실에 근무하는 4명의 개발자가 3개월동안 수행한 유지보수 활동을 그대로 데이터로서 수집하였다. 3개월 동안 수행된 유지보수 활동은 사용자에 의해서 요청된 요구사항의 변경(예를 들면, 기능의 추가 또는 사용자 인터페이스의 변경 요구)과 발견된 결함의 수정 등을 포함하며 운영체제와 주변장치 등의 변화에 따른 유지보수와 재구성 활동은 수행되지 않았다. 그리고 4명의 개발자는 실제로 자개 구매 시스템을 개발할 때 참여한 개발자로서 5년 내외 정도의 소프트웨어 개발 경력을 가지고 있다.
이는 메트릭이 평균 유지보수 비용에 비례함을 뜻한다. 각 메트릭의 특성 별로 자세히 해석을 해 보면 LCOM의 값이 클수록높은 유지보수 비용이 소요됨을 의미한다. LCOMe 응집도 메트릭이지만 높은 LCOM 값은 낮은 응집도를 뜻한다.
즉 시스템 B의 경우에는 대부분의 클래스가 높은 응집도를 가지는 것으로 해석되었다. 그러나 코드를 자세히 분석한 결과 이는 클래스의 메소드들이 공유하는 인스턴스 변수가 있기 때문이 아니라 메소드들이 인스턴스 변수를 사용하고 있지 않는 것에 기인하고 있는 것으로 분석되었다. 이는 응집도의 정의에 따르면 클래스의 각 메소드가 인스턴스 변수를 사용하지 않으면 낮은 응집도즉 높은 LC0M 값을 갖도록 정의가 되어야 하지만 LC0M 은 최고의 응집도 값 즉 0의 값을 갖도록 정의되고 있는 문제점을 가지고 있으며 이것이 실제 실험에서도 확인된 것이다.
물론, 이는 기존의 일반적인 주장과 반대되는 입장이므로 본 실험 하나만으로는 확인되기 어려울 것이다. 그러나, 본 실험은 메트릭과 유지보수성과의 기존의 관계가 소프트웨어 아키텍처, 설계 패턴 등과 같은 최근의 설계 기법을 적용하는 경우에는 유효하지 않을 수 있음을 시사한다. 따라서 이들 설계 기법이 적용된 시스템에서 메트릭을 통한 유지보수성을 평가/예측하기 위해서는 기존의 메트릭과의 관계로 새롭게 정립하거나 새로운 유용한 메트릭을 연구할 필요가 있다.
그리고 대상 시스템을 구성하는 각 클래스로부터 대표적인 객체지향 메트릭을 계산하였고 이들 메트릭과 수집된 유지보수시간과의 상관관계를 분석함으로써 둘 간의 관련성을 파악하였다. 본 실험에 의하면 예상과 달리 기존의 메트릭이 유지보수 비용을 적절히 반영하지 못할 수 있음을 알았다.
또한 Delphi 또는 Visual Basic과 같은 4GL을 사용하는 경우 사용자 인터페이스 로직과 비즈니스 로직을 명백하게 별도의 클래스로 분리하지 않고 사용자 인터페이스 로직을 구현하고 있는 클래스에 비즈니스 로직이 혼재된 경우가 일반적이다. 본 실험은 이와 같은 경우에는 유지보수 비용과 메트릭과의 관계가 예상과 일치하고 있음을 확인하였다.
요약하면 본 실험은 비록 한/두 시스템에 대해서 수행되었지만 최근의 웹 기반 시스템을 포함하여 다양한 설계 기법을 적용하여 개발된 시스템일 경우에는 메트릭과 유지보수 비용과의 관계에 대한 기존의 예측이 적용되지 않을 수도 있음을 도출하였다.
마찬가지로 LOC는 클래스의 규모이므로 크기가 큰 클래스일수록 많은 유지보수 시간이 소요될 것이라는 예상과 일치하고 있다. 요약하면 시스템 A의 경우에는 응집도, 결합도, 규모 페트릭과 유지보수 비용과의, 관계에 대한 일반적인 예측이 실제 시스템의 유지보수 활동에서 적용되고 있음을 확인하였다.
그리고, RFC와 DAC의 상관 계수가 양수 인 것도 일반적인 예상과 일치한다. 즉 결합도 메트릭인 RFC와 DAO} 클수록 유지보수 비용이 많이 소요됨을 실험을 통해서 확인하였다. 마찬가지로 LOC는 클래스의 규모이므로 크기가 큰 클래스일수록 많은 유지보수 시간이 소요될 것이라는 예상과 일치하고 있다.
이는 유지보수 비용과 메트릭과의 관계가 상반되고 있음을 뜻한다. 즉, 응집도가좋을수록, 결합도가 낮을수록, 클래스의 크기가 작을수록 유지보수 비용이 낮을 수 있음을 뜻한다. 이는 기존에 높은응집도, 낮은 결합도, 작은 크기가 낮은 유지보수 비용을 의미한다는 기대와 상반된 결과를 보여준다.
DAC가 높은 것은 각 클래스가 다른 많은 수의 클래스를 내부 인스턴스 변수로서 가지고 있음을 뜻한다. 코드를 분석할 결과 시스템 A의 경우에는 Delphi를 이용해서 비즈니스 로직뿐만 아니라 사용자 인터페이스를 제공하고 있으므로 사용자 인터페이스를 위한 많은 수의 클래스를 포함하고 있기 때문인 것으로 분석되었다.
후속연구
앞으로 본 논문에서 새롭게 제시된 객체지향 메트릭과 유지보수성과의 관계에 대해서 확인하기 위해서 보다 큰 규모가 있는 시스템에 유사한 실험을 지속적으로 수행할 필요가 있다. 또한 본 논문에서 사용된 4가지 유형의 메트릭을 포함하여 보다 다양한 메트릭을 이용하여 유지보수 비용과의 관련성을 파악해 보고자 한다.
참고문헌 (17)
V. Basili, L.G. Briand, and W. Melo, 'A Validation of Object Oriented Design Metrics as Quality Indicators,' IEEE Trans. Software Eng., Vol. 22, pp.751-761, 1996
A. B. Binkley and S. R. Schach, 'Toward a Unified Approach to Object-Oriented Coupling,' Proc. 35th Annual ACM Southeast Conference, pp.91-97, 1997
A. Binkley and S. Schach, 'Validation of the Coupling Dependency Metric as a Predictor of Run-Time Failures and Maintenance Measures,' Proc. 20th Int'l Conf. Software Eng., pp.452-455, 1998
L.C. Briand, J. Wuest, J.W. Daly, and D.V. Porter, 'Exploring the Relationship between Design Measures and Software Quality in Object Oriented System,' J. systems and Software, Vol.51, No.3, pp.245-273, 2000
L.C. Briand, J. Wuest, S.Ikonomovski, and H. Louis, 'Investigation of Quality Factors in Object-Oriented Designs: An Industrial Case Study,' Proc. Int'l Conf. Software Eng., pp.345~354, 1999
M. Cartwright and M. Shepperd, 'An Empirical Investigation of an Object-Oriented Software System,' IEEE Trans. Software Eng., Vol.26, No.7, pp.786-796, 2000
S.R. Chidamber, D.P. Darcy, and C.F. Kemerer, 'Managerial Use of Metrics for Object Oriented Software: An Exploratory Analysis,' IEEE Trans. Software Eng., Vol.24, pp.629-639, 1998
K. EI Eman, W. Melo, and J.C. Machado, 'The Prediction of Faulty Classes Using Object-Oriented Design Metrics,' J, Systems and Software, Vol.56, pp.63-75, 2001
L. C. Briand, et. al, 'A Unifed Framework for Cohesion Measurement in Object-Oriented Systems,' Empirical Software Engineering Journal, Vol.1, No.1, pp.65-117, 1998
R. Subramanyam and M.S. Krishnan, 'Empirical Analysis of CK Metrics for Object-Oriented Design Complexity: Implications for Software Defects,' IEEE Trans. Software Eng., Vol.29, pp.297-310, April, 2003
L. C. Briand, et. al, 'A Unified Framework for Coupling Measurement in Object Oriented Systems,' IEEE Trans. Software Eng., Vol.25, No.1, pp.91-120, Jan./Feb., 1999
※ AI-Helper는 부적절한 답변을 할 수 있습니다.