소프트웨어 개발 2: 소프트웨어 요구사항 개발
22 Jul 2024 #cs
요구사항 개발 (Requirements Development)
요구공학의 한 요소로, 개발 대상에 대한 요구사항을 체계적으로 도출하고 검증하는 일련의 구조화된 활동입니다.
- 요구공학 (Requirements Engineering): 소프트웨어 시스템의 요구사항을 식별, 문서화, 검증 및 관리하는 프로세스
- 요구사항 개발 과정 이전에 타당성 조사(Feasibility Study)가 진행되어야 합니다.
요구사항 개발 과정
도출 (Elicitation) → 분석 (Analysis) → 명세 (Specification) → 확인 (Validation)
- 요구사항 도출 (Requirements Elicitation): 사용자와 이해관계자로부터 요구사항을 수집하는 단계
- 요구사항 분석 (Requirements Analysis): 수집된 요구사항을 분석하여 중복되거나 충돌하는 요구사항을 해결하고, 우선순위를 정하는 단계
- 요구사항 명세 (Requirements Specification): 분석된 요구사항을 체계적이고 명확하게 문서화하는 단계 요구사항 확인 (Requirements Validation): 명세된 요구사항이 정확하고 완전한지 검토하고, 모든 이해관계자가 동의하는지 확인하는 단계
요구사항의 분류
- 기능 요구사항 (Fuctional Requirements): 시스템의 기능과 수행에 관한 요구사항. 시스템이 반드시 수행해야 하는 기능.
- e.g. 어떤 것을 입/출력 하는지, 어떤 데이터를 사용하는지 등
- 비기능 요구사항 (Non-functional Requirements): 시스템 품질, 제약사항과 관련된 요구사항.
- e.g. 장비 구성, 성능, 인터페이스, 테스트, 보안 등
- 품질 요구사항: 가용성, 정합성, 상호호환성, 대응성, 이식성, 확장성, 보안성 등
요구사항 분석 (Requirement Analysis)
SW 개발의 첫 단계료, 개발 대상에 대한 요구사항을 이해하고 문서화하는 활동.
- 사용자 요구가 타당한지 조사, 비용과 일정에 대해 제약 설정.
- 사용자 요구를 정확히 파악해 목표 설정.
자료 흐름도 (DFD; Data Flow Diagram)
요구사항 분석에서 자료의 흐름, 변환 과정, 기능을 도형 중심으로 기술하는 방법.
- 버블 차트, 자료 흐름 그래프라고도 함.
- 구조적 분석 기법에 사용됨: 자료 흐름과 처리 중심.
- 구성 요소
- Process (Bubble): 자료를 변환시키는 시스템의 부분(처리 과정). 처리, 기능, 변환, 버블이라고도 함.
- Data Flow: 자료의 이동(흐름)이나 자료 간 연관관계.
- Data Store: 자료 저장소(파일, 데이터베이스).
- Terminator: 시스템과 교신하는 외부개체, 입력 데이터를 주고 출력 데이터를 받는 대상.
- 자료 사전 (DD; Data Dictionary): 자료 흐름도의 자료를 더 자세히 기록한 것.
- 메타 데이터 (Meta Data)라고도 함: 데이터를 설명하는 데이터.
- 자료 사전의 기호:
- $=$: 자료의 정의, is composed of(~로 구성되어 있음)
- $+$: 자료의 연결, and
- $()$: 자료의 생략, Optional
- $[]$: 자료의 선택, or
- ${}$: 자료의 반복, Iteration of
- $**$: 자료의 설명, Comment(주석)
요구사항 명세 기법
정형 명세 기법
수학적 원리를 사용해 요구사항을 표현하는 명세 기법.
- 작성 방법: 수학적 기호, 정형화된 표기법.
- 특징:
- 정확하고 간결한 요구사항 표현.
- 일관성이 있음 → 완전성 검증이 가능함.
- 표기법이 어려움 → 사용자가 이해하기 어려움.
- 종류: VDM, Z, Petri-net, CSP 등
비정형 명세 기법
상태, 기능, 객체를 중심으로 자연어로써 요구사항을 표현하는 명세 기법.
- 작성 방법: 자연어나 다이어그램.
- 특징:
- 자연어로 표현하므로 일관성이 떨어지고 해석이 달라질 수 있음.
- 내용 이해하기 쉬움 → 의사소통 용이.
- 종류: FSM, Decision Table, E-R Model, SADT (State Chart), HIPO Chart 등
SADT (State Chart)
시스템 정의, 요구사항 분석, SW 설계를 위한 도구. SoftTech에서 개발.
- 블록 다이어그램을 사용해 구조적 요구 분석을 하는 자동화 도구.
HIPO (Hierachy Input Process Output)
시스템 분석, 설계, 문서화 시 시스템의 실행 과정인 입력, 처리, 출력의 기능을 표현한 것.
- 하향식 SW 개발을 위한 명세 도구.
- HIPO Chart: 시스템의 기능을 여러 모듈로 분할하여, 이들 간 인터페이스를 계층구조로 표현한 것.
요구사항 확인 방법
요구사항 검토 (Requirements Review)
요구사항 명세서의 결함(오류나 표준 준수 여부 등) 여부를 검토 담당자들이 일일이 분석하는 방법입니다.
- 동료 검토(Peer Review): 요구사항 명세서 작성자가 직접 내용을 설명하고, 동료들이 이를 들으면서 결함을 발견하는 방법
- 워크 스루 (Walk Through): 요구사항 명세서를 검토 회의 전 배포하여 사전 검토한 후, 짧은 검토 회의를 통해 결함을 발견하는 방법
- 인스펙션 (Inspection): 요구사항 명세서 작성자를 제외한 검토 전문가들이 명세서를 확인하며 결함을 발견하는 방법
프로토타이핑 (Prototyping)
요구사항을 정확히 파악하기 위해 견본품(Prototype)을 만들어 개발될 SW의 결과물을 예측하는 방법입니다.
테스트 설계
요구사항이 테스트 가능한지 여부를 확인하기 위해 테스트 케이스를 생성해 사용하는 방법입니다.
CASE 도구 활용
일관성 분석(Consistency Analysis)를 통해 요구사항 변경 사항 추적, 분석, 관리, 표준 준수 여부를 확인.
- CASE (Computer Aided Software Engineering)