티스토리 뷰

728x90

코드를 설명하지 말고, “통제되고 있다”는 느낌을 만들어라

R 자동화 결과를 QA가 신뢰하게 만드는 문서 구조
R 자동화 결과를 QA가 신뢰하게 만드는 문서 구조

1️⃣ QA가 R 자동화를 불신하는 이유부터 직시해야 한다

QA가 R 자동화 결과를 처음 볼 때, 머릿속에는 거의 항상 이 질문들이 떠 있다.

  • 이 계산이 항상 같은 방식으로 수행된다는 걸 어떻게 보장하지?
  • 누가 언제 로직을 바꿀 수 있고, 바꾸면 어떻게 알지?
  • 이 결과가 틀렸을 때 추적 가능한 흔적이 남아 있나?
  • 이 자동화가 판단을 대신하지는 않나?

중요한 사실은 이거다.

👉 QA는 R을 싫어하지 않는다.
👉 QA는 통제되지 않는 판단을 싫어한다.

그래서 문서의 목적은
“이 스크립트가 얼마나 똑똑한가”가 아니라
👉 “이 자동화는 사람보다 더 예측 가능하다”는 걸 보여주는 데 있다.

2️⃣ 실패하는 문서의 공통점: 코드 설명부터 시작한다

QA 신뢰를 못 얻는 문서들은 대부분 이렇게 시작한다.

  • “본 스크립트는 tidyverse를 사용하여…”
  • “함수 A는 B를 계산하며…”
  • “z-score는 다음과 같이 정의된다…”

이건 개발자 문서다.
QA 문서가 아니다.

QA는 묻지 않는다.

“어떻게 계산했나요?”

QA가 묻는 건 이거다.

“이 계산이 통제되고 있나요?”

👉 그래서 문서 구조는 결과 → 통제 → 그 다음에 계산 순서여야 한다.

3️⃣ QA가 신뢰하는 문서의 전체 구조 (큰 그림)

실제 QA 승인까지 간 문서들의 공통 골격은 이렇다.

  1. 이 자동화의 역할과 한계
  2. 자동화가 관여하는 범위
  3. 자동화가 관여하지 않는 영역
  4. 결과가 생성되는 경로
  5. 변경 시 통제 방식
  6. 사람 판단과의 분리 구조
  7. Audit 질문에 대한 사전 답변

👉 코드는 가장 뒤에 있다.
때로는 아예 본문이 아니라 appendix다.

4️⃣ 1번 섹션: “이 자동화는 무엇을 하지 않는가”

QA가 가장 먼저 안심하는 문장은 의외로 이거다.

“본 R 자동화는 batch accept/reject 판단을 수행하지 않는다.”

또는

“본 자동화 결과는 analyst 및 reviewer 판단을 지원하기 위한 참고 정보이며,
최종 결정 권한은 SOP에 정의된 역할에 따른다.”

이 문장이 있느냐 없느냐가
문서의 운명을 가른다.

👉 QA는 자동화가 ‘선을 넘지 않는다’는 걸 먼저 확인한다.

5️⃣ 2번 섹션: 데이터 흐름을 ‘그림처럼’ 서술한다

QA는 코드보다 흐름을 본다.

그래서 신뢰받는 문서는
데이터 흐름을 이렇게 설명한다.

  • 입력 데이터의 출처 (vendor export, LIMS 등)
  • 자동화가 시작되는 지점
  • 계산이 수행되는 단계
  • 결과가 고정되는 시점
  • 사람이 개입하는 지점

중요한 포인트:

  • 어느 단계에서도 raw data가 수정되지 않음
  • 자동화는 복사본에서만 작동

👉 이걸 문장으로, 필요하면 간단한 다이어그램으로 설명한다.

6️⃣ 3번 섹션: 결과 테이블의 “의미 정의”

QA는 숫자 자체보다
그 숫자가 무엇을 의미하는지를 본다.

그래서 결과 테이블에는 항상 이게 있어야 한다.

  • 이 컬럼은 계산값인가?
  • flag인가?
  • 판단을 요구하는 신호인가?
  • SOP 기준과 어떻게 연결되는가?

예를 들어:

  • QC_status = FAIL
    → “QC 기준 미충족을 표시하는 계산 결과이며, batch reject를 의미하지 않는다”

👉 PASS/FAIL이라는 단어조차 해석을 고정해 줘야 한다.

7️⃣ 4번 섹션: 변경 통제 설명이 핵심이다

QA가 R 자동화를 신뢰하는 결정적 이유는
변경 통제 구조가 명확할 때다.

문서에는 반드시 다음이 들어간다.

  • 스크립트 version 관리 방식
  • 변경 가능한 항목 vs 불가 항목
  • 변경 시 재검증 필요 여부
  • 변경 이력 기록 위치

여기서 중요한 건:

  • “Git을 씁니다”가 아니다
  • “변경되면 QA가 알 수 있다”는 구조다

8️⃣ 5번 섹션: 사람이 개입하는 지점을 명시한다

QA는 자동화보다
사람의 책임 위치를 더 중요하게 본다.

그래서 문서에는 이런 문장이 필요하다.

“자동화 결과에 대한 해석, batch accept 결정, deviation 판단은
지정된 analyst/reviewer가 수행하며,
그 근거는 ELN/worksheet에 기록된다.”

👉 자동화가 사람을 지운 게 아니라
👉 사람의 역할을 더 명확히 만들었다는 인상을 준다.

9️⃣ 6번 섹션: Audit 질문을 미리 써 넣는다

신뢰받는 문서들은
아예 audit 질문을 예상해서 써 둔다.

  • “이 결과는 재현 가능한가?”
  • “과거 결과와 비교 가능한가?”
  • “계산 로직이 바뀌었는지 어떻게 아는가?”
  • “오류 발생 시 어떻게 감지하는가?”

그리고 그 아래에
짧고 단정한 답을 문서 안에 이미 넣어 둔다.

QA는 이걸 보고 생각한다.

“아, 이 팀은 audit을 이해하고 있구나.”

 

1️⃣ 0️⃣ 결국 QA가 신뢰하는 건 R이 아니라 구조다

이 문서를 통과한 조직에서
QA가 남긴 말은 거의 비슷하다.

“이건 자동화라서 괜찮은 게 아니라,
통제 구조가 명확해서 괜찮다.”

R 자동화 결과를 신뢰하게 만드는 건:

  • 화려한 코드 ❌
  • 복잡한 알고리즘 ❌
  • 최신 패키지 ❌

👉 설명 가능한 문서 구조 + 판단과 계산의 분리다.

마무리 문장

QA는 자동화를 승인하는 게 아니라,
통제 가능한 프로세스를 승인한다.

R 자동화는
그 프로세스를 더 정직하게 드러낼 뿐이다.

728x90