코나스 발광

Connascence

Connaslem(/kəneɪsəns/)Meilir Page-Jones구조화된 설계에 대해 커플링과 같이 객체 지향 설계에서 의존 관계로 인한 복잡성에 대해 추론할 수 있도록 고안한 소프트웨어 품질 지표다.소프트웨어 공학에서, 한 요소의 변경이 시스템의 전반적인 정확성을 유지하기 위해 다른 구성요소를 수정해야 하는 경우, 두 개의 구성요소는 근사하다.의존 관계의 범주화를 허용하는 것 외에도, 결합은 다른 유형의 의존성을 비교하는 시스템을 제공한다.잠재적 설계 간의 그러한 비교는 종종 소프트웨어의 품질을 향상시키는 방법을 암시할 수 있다.

발광의 형태는 발광 원소의 변동을 보상해야 할 가능성이 더 높은 경우에 더 강한 것으로 간주된다.조화의 형태가 강할수록 관계에서 요소들을 바꾸는 것은 어렵고 비용이 많이 든다.

정도

발광의 수용성은 발광의 발생 정도와 관련이 있다.발광은 제한된 정도로는 허용될 수 있지만 큰 정도는 허용될 수 없다.예를 들어, 두 가지 주장을 취하는 함수나 방법은 일반적으로 받아들일 수 있는 것으로 간주된다.그러나 기능이나 방법이 열 가지 주장을 취하는 것은 보통 용납될 수 없다.발광도가 높은 원소는 낮은 원소보다 변화의 어려움과 비용이 더 많이 든다.

지역성

발광을 분석할 때는 지역성이 중요하다.관련된 요소들이 밀접하게 연관되어 있다면 더 강한 형태의 발광이 허용된다.예를 들어, 많은 언어가 함수나 메소드를 호출할 때 위치 인수를 사용한다.이러한 포지션의 조합은 발신자와 이탈자의 폐쇄성 때문에 받아들일 수 있다.당사자들의 상대적 무관성 때문에 웹 서비스에 대한 주장을 위치적으로 전달하는 것은 허용되지 않는다.같은 강도와 정도의 조화는 난이도와 변화비용이 높을수록 관련 요소들의 거리가 멀어진다.

종류들

이것은 약한 형태에서 강한 형태로 대략 주문된 몇몇 종류의 발광 목록이다.

정적 요점

코나스렌즈는 코드를 육안으로 검사해 찾을 수 있다면 '정적'이라고 한다.

이름 조합(CoN)

명칭의 발명은 복수의 구성요소가 기업의 명칭에 동의해야 할 때를 말한다.메서드 이름은 이러한 형태의 결합의 예로서, 메서드의 이름이 변경되는 경우, 그 메서드의 호출자를 변경하여 새 이름을 사용해야 한다.

유형(CoT)의 발광

동종류의 발명은 복수의 구성요소가 기업의 유형에 동의해야 하는 경우를 말한다.정적으로 타이핑된 언어에서, 메서드 인수의 유형은 이러한 형태의 결합의 예다.메서드가 인수의 유형을 정수에서 문자열로 변경하면 해당 메서드의 호출자가 이전과 다른 인수를 전달하도록 변경해야 한다.

의미의 일치(CoM) 또는 관습의 일치(CoC)

의미의 발명은 여러 요소들이 특정 가치의 의미에 동의해야 할 때를 말한다.각각 거짓과 참을 나타내기 위해 정수 0과 1을 반환하는 것은 이러한 형태의 발광의 예다.

포지션의 동일성(CoP)

위치의 조명은 복수의 구성요소가 값의 순서에 일치해야 하는 때를 말한다.메서드 호출에서 위치 파라미터는 이러한 형태의 결합의 예다.호출자와 호출자는 모두 첫 번째, 두 번째, 기타 파라미터의 의미론에 동의해야 한다.

알고리즘의 동시 발광(CoA)

알고리즘의 발명은 여러 요소들이 특정 알고리즘에 동의해야 할 때를 말한다.메시지 인증 코드는 이러한 형태의 발명의 예다.거래소의 양쪽 모두 정확히 동일한 해싱 알고리즘을 구현해야 한다. 그렇지 않으면 인증이 실패한다.

다이나믹 코나스

만약 런타임에만 발견될 수 있다면, 코나스는 "동적"이라고 한다.

실행의 동일성(CoE

실행의 동일성은 복수의 구성요소의 실행 순서가 중요할 때를 말한다.

타이밍 설정(CoT)

타이밍의 조명은 복수의 구성부품의 실행 타이밍이 중요한 때를 말한다.

값 조합(CoV)

가치의 발명은 여러 가치가 함께 변화해야 할 때를 말한다.

아이덴티티(CoI)의 발광

정체성의 동일성은 복수의 구성요소가 실체를 참조해야 할 때를 말한다.

발광 감소

발광을 줄이면 소프트웨어 시스템의 변경 비용을 줄일 수 있다.발광을 줄이는 한 가지 방법은 강한 형태의 발광을 약한 형태로 바꾸는 것이다.예를 들어, 여러 인수를 사용하는 방법은 명명된 매개 변수를 사용하도록 변경될 수 있다.이것은 CoP에서 CoN으로 발광을 바꿀 것이다.관련 요소의 정도를 줄이고 위치를 증가시키는 것은 발광을 줄이는 다른 방법을 구성한다.

참조

  • 소프트웨어 설계 대통합 이론, Jim Weirich
  • Meilir 페이지-Jones, 캡슐화 및 조명을 통한 기술 비교, ACM의 통신, 제35권, 제9호
  • 모든 프로그래머가 객체 지향 디자인에 대해 알아야 할 사항, Meilir 페이지-Jones, Dorset House Publishing, ISBN0-932633-31-5
  • UML, Meilir Page-Jones, Addison-Wesley Pub Co., ISBN 0-201-69946-X의 객체 지향 설계 기본사항
  • 마누엘 리베리오;2018년 8월 9일; 코나스발광:Java의 객체지향적 디자인에 관한 연구