본문 바로가기

비기능 요구와 변경 추적

성능·사용성·보안·복구 요구를 측정 조건으로 표현하고 요구 변경의 영향과 확인 책임을 추적합니다.

신청 결과가 맞아도 30초 뒤에야 표시되면 사용자가 버튼을 여러 번 누릅니다. 잘못된 ID를 거절해도 명단 파일을 누구나 읽을 수 있다면 개인정보 요구를 만족했다고 할 수 없습니다.

비기능 요구는 동작을 제공하는 품질이나 제약을 말합니다. 단순히 “빠름”, “안전함”이라는 형용사를 붙이지 않고 대상, 측정 환경, 기준, 확인 방법을 정합니다.

품질을 확인 가능한 질문으로 바꾸기

막연한 표현측정 가능한 초안추가로 결정할 것
빠르게 신청지정 기기·고정 입력 100개에서 처리 시간 분포 기록허용 지연·동시 요청·측정 횟수
쉽게 사용처음 쓰는 참가자가 오류 안내만 보고 ID 수정참여자·과업·성공 기준
안전하게 저장권한 없는 사용자가 참가자 명단을 읽지 못함인증 주체·위협·접근 경계
복구 가능종료 뒤 저장 상태로 참가자 목록 복원손실 허용량·복구 시간·백업 주기

이 실습의 ID 형식 검사는 입력 유효성 검사입니다. 누가 min인지 확인하는 인증, 어떤 명단을 볼 수 있는지 정하는 인가와 다릅니다. 단일 프로세스의 함수 예제가 실제 서버의 보안을 제공한다고 쓰지 않습니다.

빠름은 환경의 영향을 받습니다. 타이머 결과 하나를 제품의 응답 시간으로 오해하지 않도록 측정용 함수를 만들어 봅니다. 아래 코드를 timing.mjs에 저장하고 실행합니다.

import { performance } from "node:perf_hooks";

function measure(work) {
  const start = performance.now();
  const value = work();
  return { value, elapsedMs: performance.now() - start };
}
const observed = measure(() => Array.from({ length: 100 }, (_, i) => `member-${i}`));
console.log(observed.value.length, observed.elapsedMs >= 0);

출력은 100 true입니다. 여기서 검증한 것은 자료 수와 측정값의 형태입니다. 구체적인 실행 시간을 수락 기준으로 정하거나 이 단순 배열 생성이 실제 신청 서비스의 성능이라고 주장하지 않습니다. 실제 품질 요구는 환경·부하·통계와 함께 품질 요구에서 정의합니다.

변경을 추적하는 작은 표

추적성은 요구가 설계·코드·테스트·변경 기록과 연결되어 있는 성질입니다. 요구 ID가 있으면 영향을 이름으로 찾을 수 있습니다.

요구구현 책임확인 사례변경 시 같이 볼 문서
R3 중복 먼저 거절register의 검사 순서만석 상태의 같은 ID결과 안내·수락 조건
R6 마감 뒤 취소cancel, closeSession취소 후에도 CLOSED상태 모델·운영 정책
Q1 저장 상태 일관성restoreSession중복 ID 복원 거절저장 구조·복구 절차

문서 버전, 변경 이유, 승인 책임, 검증 결과를 함께 남깁니다. 승인자를 정한다는 것은 모든 작은 오타를 회의로 처리하자는 뜻이 아닙니다. 정원·취소처럼 사용자가 관찰하는 정책은 누가 확정하는지 알아야 합니다.

변경 요청을 받으면 요청 기록 → 영향 분석 → 결정 → 구현 및 문서 갱신 → 재검증 순서로 진행합니다. 구현만 먼저 바꾸면 요구와 화면 설명이 다른 버전을 가리킬 수 있습니다. 형상과 변경 기준선에서 여러 파일을 같은 버전으로 묶습니다.

독립 문제: 보관 요구를 놓치지 않기

“모임 종료 후 참가자 ID를 지워 주세요”라는 요청을 받았습니다. 이는 기능인가요, 비기능인가요? 자동 삭제 동작과 보관 제약을 나누고 영향을 받는 산출물 세 가지를 적으세요.

힌트

분류 이름을 하나 고르는 것보다 언제·무엇을·어디서 지우는지 결정하는 것이 우선입니다. 백업도 생각합니다.

해설

종료 후 ID를 제거하는 동작은 기능으로 표현할 수 있고, 보관 기간·접근 제한은 품질·운영 제약입니다. 종료의 시점과 삭제 대상(주 파일, 로그, 백업), 복구와 충돌하는 조건을 확인합니다. 데이터 모델·삭제 테스트·백업 운영 절차가 영향을 받습니다. 범주가 겹쳐도 확인 책임을 놓치지 않으면 됩니다.

추적 표에 이름이 있다고 실제 검증이 된 것은 아닙니다. 검사 실행 결과와 미검증 범위를 함께 남겨야 추적이 작업의 증거가 됩니다.