도구스개발

할스테드 복잡도 계산기

서로 다른 연산자·피연산자 수와 총 등장 횟수를 넣으면 할스테드 공식대로 부피·난이도·노력·구현 시간·추정 버그 수를 구합니다.

부피 (Volume)

121.8 bit

어휘 14개 · 길이 32

난이도 (Difficulty)5.63
노력 (Effort)685.3
예상 구현 시간약 38.1초
추정 버그 수0.04
추정 길이 (N̂)39.5
V = N·log₂n, D = (n1/2)·(N2/n2), E = D·V, 시간 = E/18초, 추정 버그 수 = V/3000로 구합니다. 추정 버그 수·구현 시간은 1970년대 자료로 만든 경험식이라 정확한 예측이 아닌 참고용 지표입니다. 순환복잡도(제어흐름 분기 수)와는 재는 대상이 달라 두 지표를 함께 보는 것이 좋습니다.

사용 방법

  1. 1코드에서 연산자(+, if, 함수 호출 등)와 피연산자(변수명·리터럴)를 구분합니다.
  2. 2서로 다른 연산자 개수(n1)와 피연산자 개수(n2), 그리고 각각이 등장한 총 횟수(N1, N2)를 셉니다.
  3. 3부피·난이도·노력·예상 구현 시간·추정 버그 수를 확인합니다.

자주 묻는 질문

제어흐름(분기)이 아니라 코드에 연산자·피연산자가 얼마나 많이, 얼마나 다양하게 쓰였는지를 잽니다. 모리스 할스테드가 1977년 제안한 소프트웨어 과학(Software Science) 지표로, 순환복잡도(McCabe)와는 재는 대상 자체가 다른 보완적인 지표입니다.

부피는 코드 길이와 어휘 다양성만으로 정해지는 정보량(V = N·log₂n)입니다. 노력은 여기에 난이도(D)를 곱한 값(E = D·V)으로, 같은 부피라도 서로 다른 연산자에 비해 같은 피연산자를 훨씬 자주 반복해 쓸수록(난이도가 높을수록) 노력이 커집니다.

B = V/3000이라는 경험식으로, 1977년 당시 여러 프로그램을 조사해 나온 상수입니다. 특정 코드 한 조각의 버그 수를 예측하는 용도가 아니라, 모듈 간 상대적인 위험도를 가늠하는 참고 수치로 보는 것이 안전합니다.

스트라우드 수(Stroud number, 초당 18번)라는, 사람이 초당 처리할 수 있는 기초적인 판단 횟수를 할스테드가 가정한 값입니다. 1970년대 프로그래밍 환경을 기준으로 한 경험적 상수라 지금 기준으로는 참고치 이상의 의미를 두기 어렵습니다.

알아두면 좋은 점

  • 연산자·피연산자를 세는 규칙(예: 함수 호출을 연산자 하나로 볼지, 괄호를 셀지)은 언어·분석 도구마다 조금씩 다릅니다. 이 계산기는 입력값을 공식에 그대로 대입할 뿐, 세는 규칙 자체는 검증하지 않습니다.
  • 추정 버그 수·구현 시간은 1970년대 자료로 만들어진 경험식이라 정확한 예측이 아닌 참고용 지표입니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 3일 · 결과는 참고용 추정치입니다.