Requirements & Spec
고객의 니즈를 엄격한 엔지니어링 명세로 변환하고, 요구사항의 추적성과 무결성을 관리하는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
요구사항 및 명세(Requirements & Specification, REQ)는 "무엇을 만들 것인가(What to build)"를 정의하는 소프트웨어 개발의 첫 단추이자 가장 핵심적인 엔지니어링 과정을 다룹니다.
성공적인 소프트웨어는 단순히 코드를 잘 짜는 것이 아니라, 비즈니스 가치를 정확히 이해하고 이를 기술적으로 구현 가능한 명세(Specification)로 상세화하는 것에서 시작됩니다. 학습자는 모호한 고객의 언어를 명확한 기능적/비기능적 요구사항으로 분류하고, **SRS(Software Requirements Specification)**를 작성하며, 요구사항 추적 매트릭스(Traceability Matrix)를 통해 설계와 구현이 요구사항을 충실히 반영하고 있는지 검증하는 체계를 익힙니다.
2. Scope & Boundaries
In-Scope
- Elicitation: 인터뷰, 관찰, 프로토타이핑을 통한 요구사항 도출
- Analysis & Modeling: 유스케이스, 사용자 스토리, 상태 다이어그램을 통한 구조적 분석
- Specification: IEEE 830 등 표준 기반의 SRS 작성 및 검증 기법
- Management & Traceability: 요구사항 변경 관리 및 추적성(Traceability) 도구 활용
Out-of-Scope
- 어플리케이션 소스 코드 구현 (09-01 SDLC/Implementation 영역)
- UI/UX 디자인 (12. HCI 영역으로 위임)
- 거시적 아키텍처 패턴 결정 (09-03 SAD 영역으로 위임)
Boundaries
- REQ vs. Business Analysis: 비즈니스 분석이 '문제를 정의'하는 수준이라면, REQ는 그 문제를 해결하기 위한 '기술 전제 조건'을 물리적으로 상술합니다.
3. Counterexample
- 단순히 "할 일 목록(To-do List)"을 적는 것은 REQ 학습이 아닙니다. 특정 요구사항이 **검증 가능(Verifiable)**한지 확인하고, "성능이 좋아야 한다" 대신 "초당 1000건의 트랜잭션을 200ms 이내에 처리해야 한다"와 같은 정량적 비기능 요구사항을 도출하여 명세서에 녹여낼 수 있어야 합니다.
4. Prerequisites
- SDLC 및 프로세스 (Basic): 요구사항 단계가 전체 공정에서 가지는 위치를 이해해야 합니다. (09-01 SDLC)
- 컴퓨팅 사고 및 로직 (Basic): 조건문과 논리적 흐름의 엄밀성이 필요합니다. (01. MCL)
5. Learning Map
- Extraction: 도메인 전문가로부터 요구사항을 오해 없이 추출하는 인터렉션 기술을 배웁니다. [P2, P5]
- Standard Spec: 추출된 요구사항을 엔지니어가 구현할 수 있는 표준 명세(SRS)로 변환합니다. [P2, Industry]
- Validation & Review: 작성된 명세의 모순과 누락을 기술적으로 찾아내고 합의하는 수순을 익힙니다. [Industry]
- Impact Analysis: 요구사항 변경 시 시스템 전체에 미치는 물리적 영향을 역추적(Tracing)하는 통제력을 갖춥니다. [P2]
6. Learning Topics
Basic
Core: 요구사항의 유형과 분류 (Functional vs. Non-functional)
- Why to Learn: 요구사항의 성격을 구분하여 적절한 검증 전략을 세우기 위함입니다.
- What to Learn:
- 기능 요구사항(What the system does): 입력, 출력, 데이터 처리 로직
- 비기능 요구사항(Quality Attributes): 성능, 가용성, 보안성, 유지보수성
- 비즈니스 요구사항 vs 사용자 요구사항 vs 시스템 요구사항의 계층물리
- How to Learn:
- 기존 앱(예: 배달 앱)의 기능을 기능/비기능으로 나누어 포스트잇으로 분류 실습
- 모호한 문장을 '기술적 명세'로 고쳐 쓰는 문장 다듬기 훈련
- Implement: 특정 서비스의 핵심 요구사항 유형별 분류 매트릭스
Recommended
Core: 명세서 작성 및 모델링 (SRS & Modeling)
- Why to Learn: 이해관계자 간의 기술적 합의를 위한 '단일 진실 공급원(SSOT)'을 구축하기 위해서입니다.
- What to Learn:
- SRS(Software Requirements Specification) 표준 구조 (IEEE 830/ISO 29148)
- 유스케이스 다이어그램 및 시나리오 기술 물리
- 도메인 모델링: 명세에서의 용어 사전(Glossary)과 개념적 엔티티 정의
- How to Learn:
- 가상의 미니 프로젝트(예: 도서 대여 시스템)를 위한 5페이지 분량의 SRS 초안 작성
- 작성된 명세서를 동료와 리뷰하며 '모순(Contradiction)'이나 '모호성' 지적받기
- Implement: 표준 가이드라인에 따른 SRS(명세서) 완성본
Practical
Core: 요구사항 검증 및 품질 게이트 (V&V in Req)
- Why to Learn: 잘못된 요구사항이 하위 공정(구현, 테스트)에서 수십 배의 비용으로 폭증하는 것을 막기 위함입니다.
- What to Learn:
- 요구사항 검토(Requirements Review) 및 인스펙션 절차
- 프로토타입을 이용한 실물 검증 물리
- 수락 테스트(Acceptance Test) 케이스와의 연동 역학
- How to Learn:
- 작성된 SRS에서 '테스트 불가능한 문장'을 찾아 '테스트 가능한 문장'으로 리팩토링 실습
- 피그마(Figma) 등 프로토타이핑 도구를 이용해 추출된 요구사항의 실현 가능성 시뮬레이션
- Implement: 명세서 품질 평가 점수표 및 수락 기준 정의서
Advanced
Core: 변경 관리 및 추적성 (Traceability Management)
- Why to Learn: 시스템이 복잡해져도 요구사항의 변경이 어디까지 영향을 주는지 실시간으로 통제하기 위해서입니다.
- What to Learn:
- 요구사항 추적성 매트릭스(RTM): 요구사항 - 설계 - 코드 - 테스트 연결 물리
- 변경 제어 위원회(CCB)와 변경 영향 분석(Impact Analysis)
- 엔지니어링 영역에서의 Baseline 관리와 변경 이력 추적
- How to Learn:
- 특정 요구사항이 변경되었을 때, RTM을 통해 수정해야 할 클래스와 테스트 케이스를 역추적하는 연습
- 변경 영향 범위(Affected Area)를 시각화하는 의존성 맵 구축
- Implement: 다단계 요구사항 추적성 매트릭스(RTM) 자동화 구성안
7. Terminology
8. References
Primary References
- [P2] SWEBOK v4.0 - Software Requirements — International engineering standard.
- [P5] SFIA v9 - Requirements Definition and Management — Industry specific skills.
Secondary References
- [Software Requirements (3rd Edition)] Karl Wiegers — The definitive guide.
- [Writing Better Requirements] Ian Alexander — Practical specification advice.
Industry References
- [IEEE Standard 830-1998] — Recommended Practice for SRS (Historical Guide).
- [The Strangler Fig Pattern in Requirements] — Adapting reqs for modernization.
9. Final Checklist
Primary Checklist
- 비즈니스 사용자의 '모호한 언어'를 '기술적으로 검증 가능한 명세'로 100% 변환 가능한가? (P2)
- 작성된 요구사항이 SRS 표준 템플릿(IEEE 830 등)을 따르며, 모순되는 항목이 없는가? (P2)
Secondary Checklist
- 모든 요구사항에 고유 ID가 부여되어 있으며, 이를 테스트 케이스와 1<1로>1로> 매핑하는 RTM을 구축했는가?
- 시스템의 성능 목표(비기능 요구사항)가 구체적인 측정 지표(Latency, Throughput)와 함께 명시되었는가?
Industry Checklist
- 요구사항 변경 시, 영향 분석(Impact Analysis)을 통해 수정 범위를 사전에 물리적으로 예측할 수 있는가? (SFIA)
- 고객 수락 기준(Acceptance Criteria)이 명세 단계에서 확정되어 구현 완료 여부를 객관적으로 판단할 수 있는가?