문제

저는 최근에 NDepend를 사용했는데 .net 어셈블리와 관련 pdb에 대한 좋은 보고서를 생성했습니다.

보고서에서 제가 발견한 가장 흥미로운 점은 추상성 대 추상성이었습니다.불안정 그래프.나는 이것을 자세히 이해하고 싶었고 그들의 문서와 온라인 지표를 읽었지만 어느 정도 도움이 될 뿐입니다.

주로 그래프를 올바르게 평가하는 방법과 추상성을 안정적으로 제어하는 ​​기술을 이해하고 싶습니다.

아주 좋은 글이 있어요 여기 이것에 대해 이야기하고 있지만 이것 외에 더 필요한 것은 '이것을 어떻게 제어합니까?[추상성을 안정감 있게 제어]'

alt text

도움이 되었습니까?

해결책

추상성은 소프트웨어 시스템의 견고성을 측정하는 것입니다.추상화가 높을수록 강성은 낮고(또는 유연성은 높음) 그 반대도 마찬가지입니다.시스템의 구성 요소가 추상 클래스나 인터페이스에 의존하는 경우 시스템은 구체적인 클래스에 직접 의존하는 경우보다 확장 및 변경이 더 쉽습니다.

안정성은 소프트웨어 시스템이 이를 위반하지 않고 변경을 얼마나 잘 허용하는지와 마찬가지로 변경에 대한 허용 오차를 측정하는 것입니다.이는 시스템 구성 요소의 상호 의존성을 분석하여 결정됩니다.

로버트 C.마틴의 기사 OO 측정항목에서는 이러한 개념을 보다 정량적인 용어로 설명합니다.

기사에서 발췌:

범주의 책임, 독립성 및 안정성은 해당 범주와 상호 작용하는 종속성을 계산하여 측정 할 수 있습니다.세 가지 지표가 확인되었습니다.

칼슘 :구심성 커플링:이 범주 내의 클래스에 의존하는 이 범주 외부의 클래스 수입니다.

Ce :원심성 커플링:이 범주 외부의 클래스에 의존하는 이 범주 내의 클래스 수입니다.

나 :불안정성 :(Ce ¼ (Ca+Ce)) :이 측정항목의 범위는 [0,1]입니다.I=0은 최대로 안정적인 범주를 나타냅니다.I=1은 최대로 불안정한 범주를 나타냅니다.

ㅏ :추상성 :(카테고리 내 추상 클래스 수 ¼ 카테고리 내 총 클래스 수).이 측정항목 범위는 [0,1]입니다.0은 구체적이라는 뜻이고, 1은 완전히 추상적이라는 뜻이다.

특히 대규모 소프트웨어 시스템에서는 균형이 중요합니다.이 경우 시스템이 "좋은" 시스템이 되기 위해서는 추상성과 안정성의 균형을 맞춰야 합니다.A-I 그래프의 위치가 이를 보여줍니다.설명은 글을 읽어보시기 바랍니다.

다른 팁

추상성과 불안정성 둘 다 단독으로 사용하여 코드를 평가할 수 있습니다.일부 모듈이 얼마나 추상적이거나 안정적이어야 하는지 미리 알고 있습니다.예를 들어, 하위 모듈이 이에 의존하기 때문에 프레젠테이션 계층이 적당히 추상적이고 안정성이 높기를 원합니다.반면에 인프라 계층은 상위 계층이 요구하는 것을 구현해야 하기 때문에 매우 구체적이고(낮은 추상성) 매우 불안정하기를 원합니다.

이것이 명확해지면 추상성과 불안정성을 하나의 그래프로 결합할 수 있으며 이것이 바로 불안정성-추상성 그래프입니다.향후 요구 사항 변경을 지원하기 위한 요구 사항의 균형을 맞추기 위해 코드가 안정적인 만큼 추상성을 나타내기를 원합니다.

그러나 어쨌든, 함께 작동하는 것을 이해하려고 하기 전에 불안정성과 추상성 측정항목에 대한 강력한 이해가 있어야 합니다.이 기사에서 불안정성이 무엇을 의미하는지에 대한 몇 가지 예를 찾을 수 있습니다. 모듈 결합 및 불안정성 측정항목을 사용하여 리팩토링을 안내하는 방법

애플리케이션에 있는 모든 모듈의 불안정성을 측정하는 CQLinq 쿼리를 파생하는 관련 기사가 있습니다. NDepend를 사용하여 모듈 결합 및 불안정성을 측정하는 방법

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top