💡 핵심 인사이트
백파이어링(Backfiring) 기법은 이미 측정된 소스 코드의 줄 수(LOC)를 이용해 기능점수(FP)로 역산하거나, 반대로 FP를 LOC로 변환할 때 사용하는 **'환산 비율 기법'**입니다.
서로 다른 프로그래밍 언어로 작성된 레거시 시스템들의 규모를 통일된 척도(FP)로 재평가할 때 유용합니다.


Ⅰ. 백파이어링 기법의 개념

자동차의 속도를 마일(mph)에서 킬로미터(km/h)로 변환하듯, 소프트웨어의 규모를 측정하는 두 가지 핵심 지표인 **LOC(Line of Code)**와 FP(Function Point) 사이를 넘나들며 변환하는 수학적 추정 기법입니다.

  • 이름의 유래: 내연기관 엔진에서 불꽃이 거꾸로 튀는 현상(역화, Backfire)처럼, 완성된 코드의 결과물(LOC)을 보고 거꾸로 설계 단계의 기능 규모(FP)를 추적해 낸다는 의미에서 붙여진 이름입니다.

Ⅱ. 왜 변환이 필요한가?

  1. 레거시 시스템 유지보수 비용 재산정 수십 년 된 은행 시스템은 C언어로 100만 줄(LOC)이 짜여 있고, 최근에 만든 시스템은 Java로 10만 줄이 짜여 있습니다. 두 시스템의 유지보수 예산을 공정하게 배분하려면 줄 수가 아니라 "사용자에게 제공하는 기능(FP)이 몇 점인가?"로 통일해야 합니다. 이때 수백만 줄의 코드를 보고 일일이 FP를 다시 세는 것은 불가능하므로, 백파이어링을 통해 환산합니다.
  2. COCOMO II 모델에서의 활용 COCOMO II 초기 설계 단계에서는 FP로 산정하다가, 코딩 단계로 넘어가면 정밀한 계산을 위해 FP를 LOC로 역산해야 할 때 사용합니다.

Ⅲ. 환산 원리와 기어비 (Gear Ratio)

백파이어링의 핵심은 프로그래밍 언어마다 1개의 기능점수(1 FP)를 구현하는 데 필요한 평균적인 코드 라인 수가 다르다는 통계(QSM 등)를 이용하는 것입니다. 이를 **언어별 환산 계수(Gear Ratio)**라고 부릅니다.

대표적인 언어별 환산 계수 (예시)

프로그래밍 언어1 FP 구현에 필요한 평균 LOC언어 레벨
어셈블리어 (Assembly)320 LOC초저급 (길고 복잡함)
C 언어128 LOC저급
Java / C++53 LOC고급 (객체지향)
SQL13 LOC최고급 (비절차적)

계산 예시

문제: C언어로 12,800 라인(LOC)으로 작성된 프로그램이 있다. 이를 기능점수(FP)로 환산하면?

  • 계산: 12,800 LOC ÷ 128 (C언어 환산 계수) = 100 FP
  • 해석: 이 C언어 프로그램은 사용자 관점에서 100점짜리 규모의 기능을 제공하는 소프트웨어입니다. 이를 향후 Java로 재개발한다면 대략 100 FP × 53 = 5,300 LOC 정도의 코드가 나올 것이라 예측할 수 있습니다.

📢 섹션 요약 비유: 백파이어링은 환율 계산기와 같습니다. 100만 원(LOC)과 1,000달러(LOC)가 있을 때, 각각의 통화 환율(언어별 환산 계수)을 적용해 '금 10돈(FP)'이라는 절대적인 가치 기준으로 통일시켜 누구의 자산이 더 큰지 비교하는 작업입니다.