1. 단원 정리
- 요구사항(requirements): 목적 달성을 위해 시스템이 갖추어야 할 조건이나 능력
- 기능적 요구사항: 사용 시나리오, 데이터 형식 등
- 비기능적 요구사항: 성능, 보안 등
- FURPS+: HP에서 개발한 요구사항 분류 모델
- 기능적: Functionality
- 비기능적: Usability, Reliability, Performance, Supportability ➡️ 품질 조건
- Plus(+)는 비기능적 요구사항 중 제약 조건을 의미함
- 요구 공학 프로세스: 시스템 요구사항 명세서(SRS)를 만들기 위한 반복적 프로세스
- 고객이 작성한 문제 기술서를 바탕으로 SRS를 산출한다.
- 타당성 조사➡️요구사항 수집/분석(추출)➡️문서화➡️검토➡️관리 절차로 진행된다.
- 위 절차 중에서 요구사항 수집/분석(추출) 절차는 아래 절차로 나뉘어 진행된다.
- 수집➡️분류➡️충돌 해결➡️우선순위 부여
- JAD(Joint Application Design): 설계/개발 과정에 고객과 사용자를 참여시키는 방법
- 추적가능성 정보(Accountability): 요구사항의 변동을 관리하기 위한 부가 정보
- 소스 추적성: "요구사항-제안자-제안이유" 정보
- 요구사항 추적성: 요구사항 간 의존성 정보
- 설계 추적성: "요구사항-설계문서" 간 연관 정보
- 요구사항 모델링: 상세한 명세화 작업을 위해 다이어그램, 설계 기술 언어등이 사용된다.
- 객체지향 분석 기법과 구조적 분석 기법이 존재한다.
- 요구사항 명세서의 모델화 작업은 나중으로 미뤄지는 경향이 있다.
- 객체지향 분석
- 시스템 모델링을 위한 객체지향적 요구사항 분석 방법
- 입력: 요구사항 명세서(기능 모델+비기능적 요구사항)
- 기능 모델: 외부에서 접근 가능한 기능 또는 사용자 스토리를 유스케이스 다이어그램으로 표현한 것
- 출력: 분석 모델(분석 객체 모델+동적 모델)
- 분석 객체 모델: 클래스 다이어그램으로 표현됨
- 동적 모델: 상태머신 다이어그램, 시퀀스 다이어그램으로 표현됨
- 구조적 분석
- 시스템 모델링을 위해 분할정복/하향식 기능분해 방법을 사용하는 요구사항 분석 방법
- 구조적 분석의 특징
- 결과물(시스템 모델)을 그래픽으로 표현
- 시스템 모델을 통한 분석가-사용자 간 의사소통
- 기능 분해를 통해 시스템을 다루기 쉬운 조각으로 나눔
- 구조적 분석 방법에 사용되는 소프트웨어 공학 원리
- 추상화: 복잡한 개체의 핵심만 추려내는 것
- 분할정복: 큰 문제를 작고 독립적인 문제로 분할해 해결하는 것
- 계층화: 분할된 모듈을 트리 구조로 구성하는 것
- 형식화: 단계별로 결과물을 문서화하는 것
- SW 시스템을 보는 관점
- 정보 관점: 시스템이 처리하는 데이터와 그 관계(개체관계도)
- 기능 관점: 시스템이 수행하는 기능과 그 입/출력(DFD)
- 동적 관점: 이벤트에 의한 시스템의 상태변화(상태전이도)
- 데이터 흐름도(DFD): "기능 관점"의 시스템 모델
- 시스템의 데이터 흐름과 처리를 표현하는 네트워크 다이어그램
- 프로세스: 타원, 데이터 흐름: 화살표, 데이터 저장소: 윗줄과 밑줄, 외부개체: 사각형
- 최상위 DFD에서 확장된 최하위 DFD에 존재하는 프로세스를 "기능단위"라고 부른다.
- 각 기능단위의 로직을 기술한 "프로세스 명세서" 또한 작성한다.
- 데이터 사전(DD): 데이터의 형식에 관한 정보를 표현, DFD와 별개의 모델이다.
2. 연습문제 정리
- 요구사항 명세서는 계약 조건으로 기능하므로 고객과 개발자 모두 상세히 검토해야 한다.