LabHub
배우기 러닝패스 코스

SIプロジェクトのプロセス

要件トレーサビリティ表を作りカバレッジを検証する

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

인터뷰 정리본에서 요구사항을 뽑아 번호를 붙이고, 요구사항 추적표(RTM)를 만든 뒤, 커버리지와 누락 항목을 스크립트로 검증할 수 있게 됩니다.

왜 중요한가

SI 프로젝트에서 요구사항 ID 는 요구사항정의서 → 화면정의서 → 프로그램목록 → 테스트 시나리오 → 검수확인서를 꿰는 유일한 실입니다. 이 실이 끊긴 자리에서 "개발됐는데 테스트 안 된 기능"과 "요구사항에 없는데 만들어진 기능"이 나옵니다. 그리고 그 발견은 항상 검수 2주 전에 일어납니다. 500 건짜리 추적표를 눈으로 대조하는 건 불가능하므로, 현장에서는 결국 누군가 이 검증을 스크립트로 만듭니다. 그 누군가가 되는 것이 이 실습입니다.

단계

  1. /root/req 디렉터리를 만들고 /opt/lab/fixtures/si-process/req-src.md/root/req/req-src.md 로 복사합니다.
  2. /root/req/requirements.csv 를 만듭니다. 첫 줄은 정확히 req_id,category,title,priority,source 이고, 데이터는 8 행입니다. req_idREQ-001 ~ REQ-008, priority// 중 하나, categorysource 는 비어 있으면 안 됩니다.
  3. /root/req/rtm.csv 를 만듭니다. 첫 줄은 req_id,screen_id,program_id,test_id. 화면 ID 는 SCR-001 형식, 프로그램 ID 는 PGM-001 형식, 테스트 ID 는 TC-001 형식입니다. REQ-001 ~ REQ-008모두 최소 한 번 등장해야 합니다.
  4. /root/req/coverage.sh 를 만듭니다. 인자 두 개(요구사항목록 추적표)를 받아 coverage=NN% 한 줄만 출력합니다(소수점 없이 내림). 실행 권한을 주세요.
  5. /opt/lab/fixtures/si-process/rtm-vendor.csv 는 협력사가 보내온 추적표입니다. 여기에 등장하지 않는 요구사항 ID 를 한 줄에 하나씩, 오름차순으로 /root/req/orphan.txt 에 적습니다.
  6. /root/req/change-log.csv 를 만듭니다. 첫 줄은 chg_id,req_id,before,after,requested_by,approved,date. 2 행 이상이고, approvedY 인 행과 N 인 행이 각각 최소 하나씩 있어야 합니다. req_id 는 요구사항 목록에 있는 것만 씁니다. date2026-08-11 형식입니다.
  7. /root/req/report.md 를 작성합니다. ## 요구사항 현황, ## 커버리지, ## 미추적 항목, ## 변경 이력 네 개의 h2 제목이 있어야 하고, 4 단계에서 계산한 커버리지 값과 5 단계에서 찾은 요구사항 ID 가 본문에 그대로 들어가야 합니다.
  8. /root/req/verify.sh 를 만듭니다. 인자 두 개(요구사항목록 추적표)를 받아 정합성 검사를 하고, 이상이 없으면 첫 줄에 OK 를 출력하며 종료코드 0, 이상이 있으면 NG 로 시작하는 줄을 출력하며 종료코드 1 이어야 합니다. 검사 항목: (1) 추적표의 모든 req_id 가 요구사항 목록에 존재, (2) test_id 중복 없음.

참고

작업 디렉터리와 원본 확보

/root/req 디렉터리를 만들고 /opt/lab/fixtures/si-process/req-src.md/root/req/req-src.md 로 복사합니다.

산출물 작업의 첫 규칙은 '원본은 건드리지 않는다'입니다. /opt/lab/fixtures 아래는 읽기 전용이라고 생각하고 작업 사본을 만드세요.

요구사항 목록 CSV 작성

/root/req/requirements.csv 를 만듭니다. 첫 줄은 정확히 req_id,category,title,priority,source 이고, 데이터는 8 행입니다. req_idREQ-001 ~ REQ-008, priority// 중 하나, categorysource 는 비어 있으면 안 됩니다.

인터뷰 정리본 한 문단에 요구사항이 여러 개 섞여 있습니다. '그리고', '또한'이 나오면 대개 쪼갤 자리입니다. ID 는 REQ-001 처럼 세 자리로 0 을 채워야 정렬이 깨지지 않습니다.

추적표에 설계·프로그램·테스트 연결

/root/req/rtm.csv 를 만듭니다. 첫 줄은 req_id,screen_id,program_id,test_id. 화면 ID 는 SCR-001 형식, 프로그램 ID 는 PGM-001 형식, 테스트 ID 는 TC-001 형식입니다. REQ-001 ~ REQ-008모두 최소 한 번 등장해야 합니다.

한 요구사항이 화면 여러 개로 갈라질 수 있습니다. 그럴 땐 행을 여러 줄 쓰세요. 한 칸에 콤마로 여러 값을 넣으면 CSV 가 깨집니다.

커버리지 계산 스크립트

/root/req/coverage.sh 를 만듭니다. 인자 두 개(요구사항목록 추적표)를 받아 coverage=NN% 한 줄만 출력합니다(소수점 없이 내림). 실행 권한을 주세요.

커버리지 = 추적표에 한 번이라도 등장한 요구사항 수 / 전체 요구사항 수. cut 으로 열을 뽑고 sort -u 로 중복을 없앤 뒤 wc -l 로 세면 됩니다. 정수 나눗셈에 주의하세요.

협력사 추적표의 누락 요구사항 찾기

/opt/lab/fixtures/si-process/rtm-vendor.csv 는 협력사가 보내온 추적표입니다. 여기에 등장하지 않는 요구사항 ID 를 한 줄에 하나씩, 오름차순으로 /root/req/orphan.txt 에 적습니다.

양쪽 목록을 정렬해 두고 comm 이나 grep -v -F -f 로 차집합을 구합니다. 눈으로 대조하면 반드시 틀립니다.

요구사항 변경 대장 작성

/root/req/change-log.csv 를 만듭니다. 첫 줄은 chg_id,req_id,before,after,requested_by,approved,date. 2 행 이상이고, approvedY 인 행과 N 인 행이 각각 최소 하나씩 있어야 합니다. req_id 는 요구사항 목록에 있는 것만 씁니다. date2026-08-11 형식입니다.

변경 대장의 핵심은 '변경 전/후'와 '승인 여부'입니다. 승인되지 않은 변경도 반드시 기록으로 남겨야 나중에 근거가 됩니다.

요구사항 현황 리포트

/root/req/report.md 를 작성합니다. ## 요구사항 현황, ## 커버리지, ## 미추적 항목, ## 변경 이력 네 개의 h2 제목이 있어야 하고, 4 단계에서 계산한 커버리지 값과 5 단계에서 찾은 요구사항 ID 가 본문에 그대로 들어가야 합니다.

리포트에는 계산한 커버리지 숫자와 누락 요구사항 ID 를 그대로 인용하세요. 사람이 다시 계산하게 만드는 리포트는 아무도 안 읽습니다.

추적표 정합성 검증 스크립트

/root/req/verify.sh 를 만듭니다. 인자 두 개(요구사항목록 추적표)를 받아 정합성 검사를 하고, 이상이 없으면 첫 줄에 OK 를 출력하며 종료코드 0, 이상이 있으면 NG 로 시작하는 줄을 출력하며 종료코드 1 이어야 합니다. 검사 항목: (1) 추적표의 모든 req_id 가 요구사항 목록에 존재, (2) test_id 중복 없음.

검증할 것은 두 가지입니다. (1) 추적표의 요구사항 ID 가 전부 요구사항 목록에 있는가 — 유령 요구사항 방지. (2) 같은 테스트 ID 가 두 번 쓰이지 않았는가. 인자로 받은 경로를 검사하도록 만들어야 다른 프로젝트에도 씁니다.