21장. 기능 요구사항
수강신청의 기능을 접수·판정·조회·중복 방지·취소 책임으로 분해하고 사건·상태·규칙과 연결한다.
이번 장에서 해결할 질문
학습 목표
학습 목표- “시스템이 제공해야 할 동작과 예외를 기능 요구사항으로 어떻게 명확히 하는가?”에 답하는 데 필요한 개념과 근거를 설명한다.
- 수강신청 사례에 같은 판단 기준을 적용하고 확인할 빈칸과 다음 행동을 기록한다.
핵심 개념
기능 요구사항은 사용자가 누르는 버튼의 목록이 아니다. 하나의 수강신청 동작 안에도 접수, 규칙 판정, 좌석 반영, 결과 조회, 중복 방지와 취소처럼 서로 다른 시스템 책임이 얽혀 있다. 책임을 제대로 나누지 않으면 정상 흐름은 보여도 장애와 재시도에서 데이터가 어긋난다.
이 장에서는 수강신청 기능을 사건·처리·상태·업무 규칙 관점에서 분해해 기능 요구사항으로 정리한다. 각 기능의 입력과 결과, 선후 관계와 예외를 연결하고, 사용자 목표를 유지하면서도 구현과 시험에 할당할 수 있는 단위를 만드는 방법을 다룬다.

1. 기능이란 무엇인가
기능 요구사항은 특정 조건이나 사건에서 시스템이 수행해야 하는 관찰 가능한 행동과 결과를 정의한다. “수강신청 기능을 제공한다”처럼 기능 이름만 적는 것이 아니라 무엇을 입력받아 어떤 규칙으로 판정하고 어떤 상태·정보를 만들어야 하는지 밝힌다. 화면, API, 배치 작업은 기능을 실현하는 수단이나 접점일 수 있지만 기능 자체와 같지 않다.

20장20장. 모델로 표현하는 요구사항경계·상태·순서·데이터·결정의 질문에 맞는 모델을 어떻게 선택하는가?페이지로 이동의 모델에는 신청 제출, 규칙 평가, 승인·거절·보류, 정원 반영, 판정 기록과 결과 조회가 있었다. 이를 기능 관점으로 읽으면 다음 질문이 생긴다.
- 어떤 사건이 행동을 시작하는가?
- 필요한 입력과 그 유효성·기준 시점은 무엇인가?
- 시스템은 어느 업무 규칙으로 어떤 판정을 해야 하는가?
- 외부에서 관찰할 출력과 상태 변화는 무엇인가?
- 실패·동시 요청·중복 요청에서는 어떤 안전 결과가 필요한가?
- 누가 어떤 상태의 기능을 사용할 권한이 있는가?
기능 요구와 인접 유형을 구분한다. “신청 상태를 제공한다”는 기능 요구이고, “p95 2초 이내에 제공한다”는 성능 요구 QR-001QR-001 · 품질 요구합의된 피크 환경에서 본인 상태 조회의 성공 요청 p95 응답시간을 2초 이하로 유지한다는 미확정 품질 요구 후보다.이다. “결과에 규칙 버전을 기록한다”는 데이터 요구 DR-001DR-001 · 데이터 요구학생·강좌 ID, 요청 시각, 판정 결과와 사유, 적용 규칙 버전, 최종 상태 변경을 연결해 보존한다는 데이터 요구다.이며, “규칙 서비스가 제공하는 판정 형식과 오류 코드를 해석한다”는 인터페이스 요구다. 한 업무 결과에는 네 유형이 함께 필요하지만 한 문장에 뒤섞으면 책임과 검증이 흐려진다.
이 장에서는 기존 FR-001FR-001 · 기능 요구학생·분반·학사 규칙과 강좌 상태를 평가해 승인 또는 근거 있는 거절 결과를 기록하고 제공한다는 기능 요구다.을 상위 기능 요구로 유지하고, 분석을 위한 하위 후보를 만든다. 아직 정책 출처와 승인 상태가 확인되지 않은 항목은 확정 요구가 아니다.
| ID | 기능 요구 후보 | 상위·근거 | 상태 |
|---|---|---|---|
FR-001FR-001 · 기능 요구학생·분반·학사 규칙과 강좌 상태를 평가해 승인 또는 근거 있는 거절 결과를 기록하고 제공한다는 기능 요구다. |
적용 학사 규칙과 강좌 상태를 평가해 승인·거절 결과와 사유를 제공한다 | UR-001UR-001 · 사용자 요구신청 가능 강좌와 결과·사유 확인 / 사용자., G-01G-01 · 목표목표가 필요를 유발, 효과는 측정 전. |
기존 상위 요구 |
FR-002FR-002 · 기능 요구인증·대상·신청 기간과 요청 형식을 확인해 신청 의도를 고유 식별자로 접수하고 접수 결과를 제공한다는 기능 요구다. |
유효한 신청 제출을 고유 식별자와 함께 접수한다 | UC-REG-01UC-REG-01 · 프로젝트 항목강좌를 신청한다 기본 흐름 |
기간·동일성 확인 전 |
FR-003FR-003 · 기능 요구인증된 학생이 자신의 신청 상태, 공개 가능한 사유, 갱신 시각과 다음 행동을 조회할 수 있어야 한다는 기능 요구다. |
승인·거절·보류 결과를 상태와 사유로 제공한다 | UR-001UR-001 · 사용자 요구신청 가능 강좌와 결과·사유 확인 / 사용자., IR-001IR-001 · 인터페이스 요구자격·운영 흐름. |
사유 공개 범위 확인 전 |
FR-004FR-004 · 기능 요구같은 신청 의도를 다시 보내도 복수 승인이나 좌석 변동을 만들지 않고 기존 신청 상태에 연결한다는 기능 요구다. |
중복 제출에서 모순되는 최종 판정과 좌석 반영을 만들지 않는다 | 17장 금지 요구 | 동일 요청 기준 확인 전 |
FR-005FR-005 · 기능 요구신청·판정 이력. |
허용된 기간·상태의 신청을 취소하고 후속 상태를 반영한다 | 스토리 맵 F-CANCELF-CANCEL · 프로젝트 항목허용된 신청 취소·보류 처리. |
정원 반환 정책 확인 전 |
좋은 기능 목록은 메뉴 목록이 아니라 목표부터 예외까지 이어지는 행동 집합이다. ISO/IEC/IEEE 29148은 2026년 현재 발행된 요구사항 공학 표준으로 요구 정보 항목과 형식 지침을 제공하며 개정 작업이 진행 중이다. 적용할 판본과 확인 날짜를 기준선에 남긴다.
기능 집합의 완전성은 기능 수로 판정하지 않는다. 신청을 예로 들면 조회·제출·판정·결과·취소가 있다는 사실만으로 부족하다. 각 기능이 어떤 상태에서 시작해 어느 상태로 끝나는지, 중간 실패가 다른 기능에 어떤 영향을 주는지 이어져야 한다. 승인 기능은 정원 반영과 판정 기록 없이 독립적으로 완료될 수 없고, 결과 조회는 상태 원천과 사유 공개 규칙이 없으면 신뢰할 수 없다.
또한 시스템 책임과 사람의 업무를 구분한다. “교무 담당자가 오류를 해결한다”는 운영 절차이지 그대로 시스템 기능이 아니다. 시스템이 보류 신청을 식별해 담당 범위에 제공하고, 권한을 확인하며, 정정 사유와 이전·이후 상태를 기록해야 한다면 각각 기능 후보가 된다. 사람의 판단을 자동화할 것인지 지원할 것인지도 범위 결정으로 남긴다.
2. 이벤트
이벤트는 기능을 시작하거나 상태 전이를 일으키는 관찰 가능한 사건이다. 사용자의 제출, 정해진 시각 도달, 외부 응답 수신, 운영자 결정, 다른 상태의 확정이 이벤트가 될 수 있다. “신청 기간”은 지속 조건이고 “신청 기간이 시작됨”은 이벤트다.

수강신청의 이벤트와 기대 응답을 정리한다.
| 이벤트 | 선행·적용 조건 | 시스템 응답 후보 | 결과·추적 |
|---|---|---|---|
| 학생이 신청 제출 | 인증·대상·기간 확인 | 요청 검증·접수·판정 시작 | FR-002FR-002 · 기능 요구인증·대상·신청 기간과 요청 형식을 확인해 신청 의도를 고유 식별자로 접수하고 접수 결과를 제공한다는 기능 요구다., 신청 ID |
| 유효한 규칙 판정 수신 | 판정 중이며 요청과 버전 일치 | 규칙 결과·강좌 상태로 최종 판정 | FR-001FR-001 · 기능 요구학생·분반·학사 규칙과 강좌 상태를 평가해 승인 또는 근거 있는 거절 결과를 기록하고 제공한다는 기능 요구다., DR-001DR-001 · 데이터 요구학생·강좌 ID, 요청 시각, 판정 결과와 사유, 적용 규칙 버전, 최종 상태 변경을 연결해 보존한다는 데이터 요구다. |
| 규칙 판정 제한시간 만료 | 유효한 응답 없음 | 자동 승인 없이 보류·원인 기록 | IR-001IR-001 · 인터페이스 요구자격·운영 흐름., FR-003FR-003 · 기능 요구인증된 학생이 자신의 신청 상태, 공개 가능한 사유, 갱신 시각과 다음 행동을 조회할 수 있어야 한다는 기능 요구다. |
| 승인 신청 취소 확정 | 취소 가능 기간·권한·상태 | 취소 전이와 정원 후속 처리 | FR-005FR-005 · 기능 요구신청·판정 이력., ASM-003ASM-003 · 가정처리 보류가 좌석을 점유하는가? |
| 동일 제출 재수신 | 동일성 기준 충족 | 기존 결과 제공 또는 중복 결과 방지 | FR-004FR-004 · 기능 요구같은 신청 의도를 다시 보내도 복수 승인이나 좌석 변동을 만들지 않고 기존 신청 상태에 연결한다는 기능 요구다. |
| 강좌 정원 변경 | 영향받는 미확정 신청 존재 | 승인된 배정 규칙 재평가 후보 | RULE-004RULE-004 · 업무 규칙분반의 승인된 수강 등록 수가 적용되는 정원을 넘지 않아야 한다는 업무 규칙이다., RULE-005RULE-005 · 업무 규칙우선 배정 기간에는 자격이 확인된 대상의 지정 분반을 일반 신청보다 먼저 평가한다는 미확정 업무 규칙 후보다., ISS-001ISS-001 · 미결 쟁점우선 배정 조건과 정원 초과 금지가 충돌할 때 마지막 좌석의 승자를 어떻게 정할지 남아 있는 정책 쟁점이다. |
이벤트를 명세할 때 발생 주체, 식별자, 업무 시각, 중복·순서·유실 가능성과 적용 상태를 함께 본다. “메시지를 받으면 처리한다”라고만 쓰면 오래된 응답이 이미 취소된 신청을 승인할 수 있다. 응답이 어느 신청·판정 시도·규칙 버전에 해당하는지, 현재 상태에서 아직 유효한지 확인해야 한다.
외부 통지 성공은 신청 판정 사건과 분리한다. 승인 결과가 확정된 뒤 알림 전송이 실패하더라도 판정 자체를 거절로 바꾸지 않는다. 통지가 법·정책상 필수 전달이라면 전달 보장과 대체 조회 경로를 별도 기능·품질·인터페이스 요구로 정의한다.
3. 입력
입력은 기능이 판정과 결과를 만들기 위해 받는 정보다. 사용자가 입력한 필드뿐 아니라 인증 문맥, 학적·이수 기록, 강좌 상태, 적용 규칙 버전과 현재 시각도 입력이다. 입력 목록만 쓰지 말고 의미, 원천, 필수 여부, 유효성, 기준 시점과 오류 결과를 정한다.

| 입력 | 의미·원천 후보 | 검증할 조건 | 오류·불확실성 발생 시 결과 |
|---|---|---|---|
| 학생 식별자 | 인증된 주체와 연결 | 본인·권한·세션 유효 | 재인증 또는 권한 거절 |
| 학기·강좌개설 ID | 학사정보의 개설 단위 | 존재·신청 가능 상태 | 입력 사유가 있는 비승인 |
| 요청 ID·제출 시각 | 신청 사건 식별 | 형식·중복·기간 기준 | 기존 결과 또는 오류 |
| 학적·이수·현재 학점 | 학사정보 시스템 | 최신성·완전성·학생 일치 | 판정 불가 또는 정책상 중단 |
| 일정·정원·강좌 상태 | 권한 있는 강좌 원천 | 기준 시점·동시 변경 | 재확인·충돌 처리 필요 |
| 규칙·버전 | 규칙 서비스·정책 기준선 | 발효일·적용 범위·무결성 | IR-001IR-001 · 인터페이스 요구자격·운영 흐름. 보류 |
입력 검증 실패와 업무 규칙 미충족을 구분한다. 강좌 ID 형식이 잘못된 것은 입력 오류이고, 유효한 강좌에 선수과목이 부족한 것은 정상 규칙 판정이다. 둘을 같은 “신청 실패”로 묶으면 학생의 다음 행동과 운영 통계가 왜곡된다.
입력 기준 시점도 기능 의미의 일부다. 학점은 요청 접수 시점, 판정 시작 시점, 승인 확정 시점 중 언제의 값인가? 규칙을 평가하는 동안 강좌 정원이 변하면 재평가하는가? 구현에서 스냅샷·잠금·충돌 탐지 중 무엇을 선택하든, 업무적으로 어떤 조합을 유효한 판정으로 인정할지 먼저 요구로 정해야 한다.
4. 처리
처리는 입력을 업무 결과로 바꾸는 시스템 행동이다. “검증한다”, “처리한다”, “고려한다”는 동사만으로는 완료를 판정할 수 없다. 어떤 규칙을 어떤 조건에 적용하고 성공·미충족·판정 불가를 어떻게 구분하는지 적는다.
FR-001FR-001 · 기능 요구학생·분반·학사 규칙과 강좌 상태를 평가해 승인 또는 근거 있는 거절 결과를 기록하고 제공한다는 기능 요구다.의 처리 구조는 다음과 같다.

이 순서는 설명을 위한 논리 구조이지 구현 실행 순서를 강제하지 않는다. 평가 순서가 달라도 같은 입력 기준선에서 같은 최종 판정이 나와야 한다. 복수 거절 사유 중 하나만 제공한다면 사유 우선순위는 업무 결정이다. 모든 사유를 제공한다면 개인정보·정책 공개 범위와 재판정 시 일관성을 검토한다.
처리 요구는 알고리즘 세부보다 불변식과 관찰 결과를 중심으로 쓴다.
- 유효한 규칙 결과가 없으면 승인하지 않는다.
- 승인 수와 정책상 좌석 반영이 모순되지 않는다.
- 같은 신청에 모순되는 최종 상태를 만들지 않는다.
- 사용한 입력 기준 시점과 규칙 버전으로 판정을 재현할 수 있다.
- 일부 반영이 실패하면 학생에게 확정 결과를 제공하기 전에 안전 상태로 복구한다.
정원과 우선순위는 ISS-001ISS-001 · 미결 쟁점우선 배정 조건과 정원 초과 금지가 충돌할 때 마지막 좌석의 승자를 어떻게 정할지 남아 있는 정책 쟁점이다.이 해결되기 전까지 처리 로직을 확정할 수 없다. DEC-001DEC-001 · 의사결정정원·우선 처리의 결정 후보.은 승인된 정책 결정이 아니라 검토 중인 결정 기록 예시다. 기능 명세는 빈 정책을 임의 알고리즘으로 채우지 않고 결정 필요성을 노출해야 한다.
5. 출력
출력은 기능 수행 뒤 사용자나 다른 시스템이 관찰할 수 있는 정보·상태·사건이다. 화면 문구나 JSON 필드만이 아니라 승인된 신청, 거절 사유, 보류 원인, 정원 변화, 판정 기록과 후속 통지 사건이 포함된다.
| 결과 유형 | 학생에게 제공할 의미 후보 | 내부·외부 후속 결과 | 확인할 정책 |
|---|---|---|---|
| 접수 | 신청 ID와 접수 상태 | 판정 작업 연결 | 접수와 승인 명칭 |
| 승인 | 승인 상태·신청 ID·적용 시각 | 정원 반영·결정 기록 | 확정 기준 시점 |
| 거절 | 거절 상태·적용 사유·가능한 다음 행동 | 좌석 미점유·결정 기록 | 복수 사유 공개 |
| 보류 | 현재 상태·원인·다음 확인 방법 | 재평가 대상·결정 기록 | ASM-003ASM-003 · 가정처리 보류가 좌석을 점유하는가?, 종료 기한 |
| 취소 | 취소 상태·시각·대상 | 정원 후속 처리·이력 | RULE-004RULE-004 · 업무 규칙분반의 승인된 수강 등록 수가 적용되는 정원을 넘지 않아야 한다는 업무 규칙이다. 정원, 후속 배정 RULE-005RULE-005 · 업무 규칙우선 배정 기간에는 자격이 확인된 대상의 지정 분반을 일반 신청보다 먼저 평가한다는 미확정 업무 규칙 후보다. |
출력은 상태와 사유를 사람이 이해할 수 있게 제공하면서 기계가 안정적으로 구분할 코드도 가져야 한다. 그러나 내부 오류·민감한 정책 데이터·다른 학생 정보를 그대로 노출해서는 안 된다. 사용자 메시지, 업무 사유 코드, 운영 진단 정보의 공개 범위를 분리한다.
통지 채널은 출력의 전달 수단이다. 알림이 실패해도 학생이 신청 내역에서 공식 현재 상태를 조회할 수 있어야 한다. 외부 알림 내용을 시스템의 유일한 상태 원천으로 삼지 않는다. 어떤 출력을 기준으로 삼을지 23장23장. 데이터 요구사항데이터의 의미·품질·생명주기·보호 책임을 요구사항으로 어떻게 다루는가?페이지로 이동의 데이터 요구와 24장24장. 인터페이스 요구사항시스템 경계를 넘는 계약과 실패 대응을 인터페이스 요구사항으로 어떻게 정의하는가?페이지로 이동의 계약에 연결한다.
6. 상태 변화
상태 변화는 기능이 업무 객체의 생명주기를 바꾸는 결과다. 20장20장. 모델로 표현하는 요구사항경계·상태·순서·데이터·결정의 질문에 맞는 모델을 어떻게 선택하는가?페이지로 이동의 후보 상태 접수, 판정 중, 보류, 승인, 거절, 취소를 그대로 사용한다. 기능 문장에 모델에 없는 완료, 실패, 등록됨을 새로 쓰면 같은 상태인지 확인할 수 없다.
| 이전 상태 | 사건·조건 | 이후 상태 | 필수 효과 | 금지·미결정 |
|---|---|---|---|---|
| 없음 | 유효 요청 접수 | 접수 | 신청 ID·수신 시각 생성 | 중복 객체 생성 |
| 접수 | 판정 시작 | 판정 중 | 적용 기준선 연결 | 확정 결과 제공 |
| 판정 중 | 필수 규칙 모두 통과 | 승인 | 좌석 반영·판정 기록 | 정원 초과 |
| 판정 중 | 거절 규칙 성립 | 거절 | 사유·판정 기록 | 승인 좌석 점유 |
| 판정 중 | 유효 판정 불가 | 보류 | 원인·재평가 가능성 기록 | 자동 승인 |
| 보류 | 승인된 재평가 성공 | 승인 또는 거절 | 새 판정과 버전 이력 | 기준 시점 미결정 |
| 승인 | 허용된 취소 확정 | 취소 | 취소 이력·정원 후속 처리 | 무권한 취소 |
상태 변경과 정원 반영이 일부만 성공했을 때의 복구 상태가 빠져 있다. 내부 기술 상태를 모두 업무 모델에 노출할 필요는 없지만, 학생에게 확정 결과를 주지 못하고 운영 개입이 필요한 상황은 식별 가능해야 한다. 보류가 규칙 판정 불가와 부분 반영 실패를 모두 뜻한다면 원인·복구 책임을 구분할 수 있는지 검토한다.
상태 전이마다 수행 주체, 시각, 원인 사건, 이전·이후 상태를 DR-001DR-001 · 데이터 요구학생·강좌 ID, 요청 시각, 판정 결과와 사유, 적용 규칙 버전, 최종 상태 변경을 연결해 보존한다는 데이터 요구다. 또는 하위 데이터 요구로 기록하면 추적과 복구가 가능해진다.
7. 예외 처리
예외 처리는 정상 결과를 만들 수 없을 때 안전한 상태, 설명, 복구와 책임을 정의하는 기능이다. “예외는 비기능”이라는 오해 때문에 개발자가 임의 오류 처리로 남기기 쉽지만, 보류·재평가·중복 방지·부분 실패 복구는 사용자가 관찰하는 기능 행동이다.
| 예외 | 탐지 조건 | 안전 결과 | 복구 후보 | 책임·미해결 |
|---|---|---|---|---|
| 규칙 서비스 무응답·무효 | 제한시간·버전·형식 검증 실패 | 자동 승인 없이 보류 | 재평가 또는 운영 조사 | IR-001IR-001 · 인터페이스 요구자격·운영 흐름., 기한 미정 |
| 학적 데이터 불일치 | 학생·학기·원천 일치 실패 | 판정 중단·원인 기록 | 원천 정정 후 재시도 | 데이터 소유자 필요 |
| 중복 제출 | 동일성 기준 충족 | 복수 최종 결과 금지 | 기존 신청 상태 제공 | FR-004FR-004 · 기능 요구같은 신청 의도를 다시 보내도 복수 승인이나 좌석 변동을 만들지 않고 기존 신청 상태에 연결한다는 기능 요구다. 기준 미정 |
| 승인·정원 부분 실패 | 상태·좌석 불변식 위반 | 확정 승인 제공 금지 | 보상·재처리·운영 조사 | 복구 목표 필요 |
| 알림 실패 | 판정 후 전달 실패 | 판정 상태 유지 | 재시도·조회 경로 | 통지 SLA 필요 |
| 기록 실패 | 필수 결정 이력 미생성 | 안전 상태로 중단 후보 | 기록 복구 후 판정 확정 | 감사와 가용성 충돌 |
예외마다 재시도 가능 여부, 최대 지연이 아니라 업무 종료 조건을 먼저 정한다. 무한 재시도는 해결이 아니라 보류 누적이다. 학생이 언제 어떤 상태를 확인하고, 운영자가 언제 개입하며, 최종적으로 승인·거절·취소 중 어디로 끝나는지 필요하다.
예외 처리 요구는 22장22장. 비기능 요구사항성능·보안·사용성 같은 품질을 측정 가능한 조건으로 어떻게 표현하는가?페이지로 이동의 가용성·신뢰성·복구 수준과 24장24장. 인터페이스 요구사항시스템 경계를 넘는 계약과 실패 대응을 인터페이스 요구사항으로 어떻게 정의하는가?페이지로 이동의 타임아웃·재시도 계약을 소비한다. 기능은 실패 시 무엇을 할지 말하고, 품질 요구는 어느 시간·확률·손실 한도에서 할지 말한다.
8. 업무 규칙
업무 규칙은 조직이 어떤 사실과 조건에서 어떤 판단을 내려야 하는지 정의한다. 기능은 규칙을 적용해 결과를 만드는 책임이고, 규칙은 판정 내용이다. 규칙을 코드나 화면에만 숨기면 출처·발효일·예외·변경 영향을 검토할 수 없다.
| 규칙 ID | 현재 의미 | 필요한 근거 | 기능 영향 |
|---|---|---|---|
RULE-001RULE-001 · 업무 규칙신청자가 적용되는 선수과목의 동시 이수·대체·면제·성적 시점 조건을 충족해야 한다는 업무 규칙 후보다. |
선수과목 충족 판정 | 권한 정책·동등 과목·예외 | FR-001FR-001 · 기능 요구학생·분반·학사 규칙과 강좌 상태를 평가해 승인 또는 근거 있는 거절 결과를 기록하고 제공한다는 기능 요구다. 거절 사유 |
RULE-002RULE-002 · 업무 규칙승인으로 계산되는 학점 합계가 학생에게 적용되는 최대 신청 학점을 넘지 않아야 한다는 업무 규칙 후보다. |
최대 신청 학점 판정 | 학생 유형·학기·예외 한도 | 학점 초과 결과 |
RULE-003RULE-003 · 업무 규칙시간 충돌 판정. |
시간 충돌 판정 | 시간 정의·허용 예외 | 충돌 결과·대상 공개 |
RULE-004RULE-004 · 업무 규칙분반의 승인된 수강 등록 수가 적용되는 정원을 넘지 않아야 한다는 업무 규칙이다. |
강좌 정원과 수용 가능 좌석 판정 | 강좌별 정원·좌석 유형·예외 승인 권한 | 승인 가능 여부·정원 초과 방지 |
RULE-005RULE-005 · 업무 규칙우선 배정 기간에는 자격이 확인된 대상의 지정 분반을 일반 신청보다 먼저 평가한다는 미확정 업무 규칙 후보다. |
우선순위 배정 | 대상·좌석 유형·동률 처리 | 승인·거절·후속 배정 |
규칙에는 출처, 결정 권한자, 적용 범위, 입력, 조건, 결론, 예외, 발효·종료 시점과 버전을 둔다. “정원이 없으면 거절한다”와 “우선 대상은 승인한다”가 같은 좌석 집합에 적용되면 ISS-001ISS-001 · 미결 쟁점우선 배정 조건과 정원 초과 금지가 충돌할 때 마지막 좌석의 승자를 어떻게 정할지 남아 있는 정책 쟁점이다. 충돌이다. 분기 순서를 바꿔 조용히 해결하지 말고 정책 결정으로 되돌린다.
업무 규칙을 요구와 일대일로 복사하지 않는다. 한 규칙은 신청 전 안내, 실제 판정, 거절 사유, 재평가와 시험에 재사용될 수 있다. 규칙 카탈로그를 기준 정보로 두고 FR-001FR-001 · 기능 요구학생·분반·학사 규칙과 강좌 상태를 평가해 승인 또는 근거 있는 거절 결과를 기록하고 제공한다는 기능 요구다.이 적용 책임을 참조하도록 한다.
9. 권한
권한은 누가 어떤 대상과 상태에서 기능을 실행하거나 정보를 볼 수 있는지 정의한다. 로그인 여부만 확인해서는 충분하지 않다. 역할, 데이터 범위, 객체 상태, 기간, 목적, 추가 승인과 감사가 함께 필요하다.
| 역할 | 신청 제출 | 자신의 결과 조회 | 승인 신청 취소 | 보류 조사 | 판정 정정 |
|---|---|---|---|---|---|
| 학생 | 본인·기간 조건부 | 자신의 신청만 | 정책 조건부 | 불가 | 불가 |
| 학생 지원 담당자 | 대리 권한 미결정 | 업무 배정 범위·마스킹 | 미결정 | 제한적 조회 | 불가 |
| 교무 운영 담당자 | 예외 권한 미결정 | 담당 범위 | 승인 절차 조건부 | 허용 후보 | 이중 통제 후보 |
| 감사 역할 | 불가 | 읽기 전용 승인 범위 | 불가 | 읽기 전용 | 불가 |
“관리자는 모든 신청을 수정할 수 있다”는 기능 요구는 과도하다. 판정 정정은 원래 상태를 덮어쓰는 것이 아니라 원인, 승인자, 이전·이후 상태를 남기는 별도 업무 사건이어야 할 수 있다. 실제 조직의 책임과 개인정보 정책을 확인한다.
권한 거절도 기능 결과다. 사용자가 다른 학생 ID를 바꿔 조회할 때 정보 존재 여부를 과도하게 노출하지 않고, 시도와 결과를 필요한 범위에서 기록해야 한다. 인증 방식·토큰 기술은 인터페이스와 설계에서 정하되 권한 판정의 업무 의미는 여기서 유지한다.
10. 기능 분해
기능 분해기능 분해큰 기능을 입력·처리·결과와 책임이 구별되는 더 작은 기능으로 나누는 활동이다.는 큰 목표를 독립적으로 이해·승인·변경·검증할 수 있는 행동으로 나누면서 전체 흐름을 잃지 않는 일이다. 화면별·컴포넌트별로 자르는 것이 아니라 이벤트, 판정, 상태 결과와 예외 책임을 기준으로 나눈다.
분해 결과를 이벤트–응답, 예외–권한 매트릭스로 교차 점검한다.
| 기능 | 정상 이벤트·결과 | 대표 예외 | 허용 역할 | 연결 요구 |
|---|---|---|---|---|
| 신청 접수 | 제출→접수 ID | 입력 오류·중복 | 학생, 승인된 대리 역할 | FR-002FR-002 · 기능 요구인증·대상·신청 기간과 요청 형식을 확인해 신청 의도를 고유 식별자로 접수하고 접수 결과를 제공한다는 기능 요구다., FR-004FR-004 · 기능 요구같은 신청 의도를 다시 보내도 복수 승인이나 좌석 변동을 만들지 않고 기존 신청 상태에 연결한다는 기능 요구다. |
| 신청 판정 | 유효 입력→승인/거절 | 규칙 판정 불가 | 시스템, 정책 승인 역할 | FR-001FR-001 · 기능 요구학생·분반·학사 규칙과 강좌 상태를 평가해 승인 또는 근거 있는 거절 결과를 기록하고 제공한다는 기능 요구다., IR-001IR-001 · 인터페이스 요구자격·운영 흐름. |
| 결과 조회 | 조회→현재 상태·사유 | 무권한·오래된 상태 | 본인, 승인된 지원 역할 | UR-001UR-001 · 사용자 요구신청 가능 강좌와 결과·사유 확인 / 사용자., QR-001QR-001 · 품질 요구합의된 피크 환경에서 본인 상태 조회의 성공 요청 p95 응답시간을 2초 이하로 유지한다는 미확정 품질 요구 후보다. |
| 취소 | 취소 제출→취소 상태 | 기간 종료·동시 변경 | 본인, 예외 운영 역할 | FR-005FR-005 · 기능 요구신청·판정 이력., ASM-003ASM-003 · 가정처리 보류가 좌석을 점유하는가? |
| 보류 복구 | 재평가→최종 상태 | 반복 실패·기한 만료 | 시스템·교무 운영 | IR-001IR-001 · 인터페이스 요구자격·운영 흐름., 미결정 종료 |
분해가 충분한지 묻는다.
- 모든 시작 사건에 정상·대안·예외 응답이 있는가?
- 각 출력이 상태·데이터 모델의 용어와 일치하는가?
- 기능 일부만 구현하거나 시험할 수 있다면 요구가 분리됐는가?
- 분리된 기능이 함께
UR-001UR-001 · 사용자 요구신청 가능 강좌와 결과·사유 확인 / 사용자.과G-01G-01 · 목표목표가 필요를 유발, 효과는 측정 전.을 충족하는가? - 기능마다 품질·데이터·인터페이스 요구가 연결되어 있는가?
- 정책 미확정 항목을 구현 세부로 숨기지 않았는가?
SWEBOK과 IREB CPRE 자료는 소프트웨어 요구의 분석·명세와 다양한 작업 산출물의 선택을 다룬다. 분류 이름을 외우는 것보다 기능을 입력–행동–결과–상태–예외로 검토하고 다른 요구 유형에 연결하는 일이 중요하다.
이 장에서 정리한 결과는 기능 분해도, 이벤트–응답표, 예외·권한 매트릭스와 FR-002–FR-005FR-002–FR-005FR-002: 인증·대상·신청 기간과 요청 형식을 확인해 신청 의도를 고유 식별자로 접수하고 접수 결과를 제공한다는 기능 요구다. · FR-003: 인증된 학생이 자신의 신청 상태, 공개 가능한 사유, 갱신 시각과 다음 행동을 조회할 수 있어야 한다는 기능 요구다. · FR-004: 같은 신청 의도를 다시 보내도 복수 승인이나 좌석 변동을 만들지 않고 기존 신청 상태에 연결한다는 기능 요구다. · FR-005: 신청·판정 이력. 후보다. 다음 장에서는 각 기능이 얼마나 빠르고 안정적이며 안전하고 사용 가능해야 하는지를 상황·자극·응답·측정치가 있는 품질 시나리오로 정한다.
수강신청 사례에 적용
판단 기준과 흔한 오류
직접 해보는 실습
1. 대상 선택
현재 프로젝트 산출물 중 이 장의 질문과 관련된 항목 하나를 고른다.
2. 근거와 예외 표시
본문의 판단 질문으로 누락된 근거와 예외를 표시한다.
3. 다음 행동 기록
확인할 책임자, 필요한 최소 증거와 다음 행동을 기록한다.