0. 요구 분석 단계 개요

  • 요구 분석 단계
    • 소프트웨어 개발의 실질적인 첫 단계
    • 사용자의 요구를 이해하고 조정하는 작업
단계설명산출물
1. 요구 추출기능 요구 / 비기능 요구 추출요구
2. 도메인 분석요구에 대한 정보와 배경 분석도메인 정보
3. 모델링다이어그램을 통한 개념화모델
4. 프로토타이핑과 시험분석된 기능의 타당성 시험요구 분석서
5. 문서화요구 분석서 작성

1. 요구

1.1. 정의

  • 요구 (Requirements)
    • 시스템에 대한 고객의 요청을 확정한 것
    • SW개발 관점: 사용자와 개발자 간에 합의한 개발 범위에서 시스템이 제공해야 하는 기능
    • 진정한 요구를 찾는 일 = 프로젝트 성공의 필수 조건
    • 여러 **이해 당사자(stakeholder)**의 이해 관계와 관련

1.2. 요구의 분류

(1) 기능 요구

  • 기능 요구 (Functional Requirements)
    • 시스템이 외형적으로 나타내는 기능과 동작
    • 동사로 표현, 쉽게 파악됨 → 유스케이스로 정리
    • ATM 예시: 현금 인출, 잔금 조회, 계좌 이체, 현금 서비스
    • 표현 방식: "시스템은 ...을 해야 한다"
분류핵심 질문
기능시스템이 무엇을 언제, 어떤 모드로 하는가?
자료입출력의 형태, 정확도, 보관 기간은?
입출력외부 시스템과 주고받는 데이터는?
사용자누가, 몇 그룹이, 어떤 경험으로 사용하는가?

(2) 비기능 요구

  • 비기능 요구 (Non-Functional Requirements)

    • 시스템이 제공하는 기능에 직접 관련되지 않은 요구
    • 환경, 품질, 제약사항에 대한 요구
    • 형용사로 표현, 파악하기 어려움 → 품질 속성 시나리오로 정리
  • 제약 사항 (Constraint)

    • 이미 이루어진 설계 결정으로 자유가 없음
    • 예: “자바 언어로 개발해야 한다”, “윈도우/리눅스 모두 실행 가능해야 한다”
품질 속성설명
신뢰성 (reliability)주어진 시간과 환경에서 고장 없이 사용 가능
성능 (performance)응답 시간, 처리량 등 사용자 조건 만족
보안성 (security)미인증자의 시스템 접근 차단
안전성 (safety)SW 오류로 인한 인명 피해 방지
사용성 (usability)혼란 없이 편하게 사용할 수 있는 편의성
  • 품질 달성 전술
    • 신뢰성: 결함 탐지·복구·방지 (모니터, 활성 다중화, 예외 처리)
    • 성능: 동시성 증가, 리소스 증설, 데이터 복사본 유지
    • 보안성: 침입 탐지, 데이터 암호화, 접근 취소, 감사 추적

2. 요구 추출 (Requirement Elicitation)

2.1. 세 가지 단계

  1. 요구에 대한 정보 출처 파악
  2. 요구에 대한 정보 취합
  3. 요구와 제한 사항의 정의

2.2. 정보 출처

출처설명
고객프로젝트를 발주한 당사자
도메인 전문가비즈니스 도메인 지식 보유자 (예: 회계사)
이해당사자 (stakeholder)시스템 운용으로 영향 받는 사람
사용자시스템을 직접 사용하는 사람
역공학레거시 시스템, 현재 문서 분석

2.3. 정보 수집 방법

  1. 고객의 발표

    • 개발팀이 시스템에 대한 초기 개념을 파악
    • 업무 책임자나 관리자가 발표 / 2시간 이내 권장
  2. 문헌 양식 조사

    • 유사 프로젝트, 업무 문서, 산업 표준, 정부 정책/규제 조사
  3. 인터뷰

    • 형식: 정형 (사전 질문 설정) / 비정형 (자유 대화) / 부분 정형 (가장 일반적)
    • 절차: 대상자 선정 → 일정 계획 → 질문 작성 → 인터뷰 → 분석 및 정리
  4. 설문

    • 다양한 이해당사자 대상 / 무기명 설문으로 숨겨진 정보 도출
  5. 브레인스토밍 (Brainstorming)

    • 훈련된 요원 주재, 아이디어를 쏟아내는 회의, 익명성 보장
    • JAD(Joint Application Development): 개발자와 사용자가 격리된 장소에 모여 집중 세션
  6. 프로토타이핑

    • 최종 시스템의 일부 기능을 빠르게 구현 → 고객 피드백 조기 획득
    • Paper Prototype: 그림으로 흐름을 표현한 가장 단순한 형태
    • Mockup UI: 프로토타이핑 전용 언어로 UI 작성 (가장 흔한 형태)

3. 요구 분석

3.1. 요구 품질 6가지

품질 속성설명
원자적 (atomic)단일 목적만 표현
완전성 (complete)정보의 모든 것을 포함
비모호성 (unambiguous) + 통일성 (consistent)명확하게 표현
추적성 (traceable)추적 가능한 고유 번호 부여
우선순위화 (prioritize)중요도 파악
테스트 가능성 (testable)검증 가능하도록 기술

3.2. 도메인 분석

  • 도메인: 요구의 비즈니스 배경

  • 목표: 요구의 비즈니스 배경을 이해해서 개발될 시스템을 설명하는 개념 정의

  • 도메인 분석 3단계

    1. 도메인 개념 찾기: 비즈니스 배경을 SW에 필요한 용어들로 정의 (객체, 프로세스)
    2. 도메인 사전 작성: 사용된 용어들을 간결하게 정의
    3. 비즈니스 규칙 정리: 절차, 가이드라인, 표준

3.3. 시나리오 기반 분석

  • 5W1H 원칙으로 표현

    • 언제(when), 어디서(where), 누가(who), 무엇(what), 왜(why)
    • 어떻게(how)
  • 사용자 스토리 (User Story)

    • 애자일 방법에서 사용
    • 형식: <사용자>는 <목적>을 위하여 <기능>를 원한다

4. 요구 사항 표현 - 모델링

4.1. 모델링 개념

요구 분석: 요구 만족을 위해 시스템에 구현할 것들을 골라 요구로 정의하는 작업
모델링: 요구 만족을 위해 시스템이 가져야 할 기능·동작·구조를 표현하는 작업

  • 모델링 (Modeling)

    • 복잡한 문제를 추상화(Abstraction)를 통해 간단하게 표현하는 기법
    • UML(Unified Modeling Language): 소프트웨어 모델링의 공통 언어
  • 모델링 구성 요소

    • 표현(Representation): 시각적으로 도식화
    • 규약(Convention): 기호(Symbols)에 대한 약속
    • 명세(Specification): 도식화된 내용을 텍스트로 서술

4.2. 유스케이스 다이어그램

  • 시스템의 기능을 나타내기 위해 사용자 요구를 추출·분석하는 데 사용
구성 요소설명표기
사용 사례 (Use Case)시스템에서 제공하는 단위 기능타원
액터 (Actor)시스템과 상호작용하는 모든 것 (사용자, 시스템)막대 인형
연관 (Association) 관계액터와 유스케이스의 상호작용실선

4.3. 유스케이스 사이의 관계

  1. 포함 (Include) 관계

    • UC1이 실행될 때 UC2가 반드시 실행되어야 동작하는 관계
    • 표기: UC1 ----<<include>>--→ UC2 (점선 화살표)
  2. 확장 (Extend) 관계

    • UC3이 특정 상황에서만 UC4를 실행할 수 있는 관계
    • 표기: UC4 ----<<extend>>--→ UC3 (점선 화살표, 방향 주의!)
  3. 일반화 (Generalization) 관계

    • 부모-자식 유스케이스 간의 상속(Inheritance) 관계
    • 자식 → 부모 방향으로 삼각형 실선 화살표

5. 유스케이스 모델링 단계

단계내용
1단계시스템 상황 분석 → 문제 기술서 작성
2단계액터 식별 (역할 이름 사용, 특정인 이름 X)
3단계유스케이스 식별 (액터 관점에서 시스템 기능 파악)
4단계유스케이스 다이어그램 작성 (관계 설정: include / extend / 일반화)
5단계유스케이스 명세서 작성 (기본 흐름 / 대안 흐름 / 예외 흐름)
  • 액터 식별 시 확인할 질문들
    • 시스템 주요 기능을 사용하는 사람은?
    • 시스템 기능을 지원하기 위해 필요한 사람은?
    • 시스템을 유지·관리하는 사람은?
    • 시스템과 상호작용하는 다른 시스템은?

6. 요구 사항 문서화

6.1. 요구 분석 명세서 (SRS)

  • 요구 분석 명세서 (SRS; Software Requirement Specification)
    • 산출물 중 가장 중요: 사용자, 설계자, 개발자, 테스터 모두의 공통 목표 제시
    • What’ 을 기술 (어떻게가 아님)
    • IEEE Std. 830 표준 준수
SRS 목차주요 항목
1. 소개SRS의 목적, 제품의 범위, 정의·동의어·약어, 참조문서, 개요
2. 일반적인 기술사항제품 개관·기능, 사용자 특성, 제약사항, 가정 및 의존성
3. 상세한 요구사항외부 인터페이스, 기능요구, 성능요구, 논리 DB, 설계 제약사항 등
4. 추가 정보목차, 색인
  • Gilbert의 요구 분석서 작성 주의사항
    1. 사용자와 개발자 모두가 쉽게 이해할 수 있도록 작성
    2. 기술된 조건은 양측이 모두 동의한 것이어야 함
    3. 목표 시스템이 수행할 모든 기능을 정확히 기술
    4. 목표 시스템에 영향을 주는 모든 제약 조건을 기술
    5. 시스템 인수를 위한 테스트 기준 제공
    6. 원하는 시스템의 품질과 중요도 및 측정 방법 기술

6.3. 요구사항 검증 항목

검증 사항설명
이해용이성 (comprehensibility)요구 명세서의 의미를 잘 이해할 수 있는가?
중복 (redundancy)필요 없이 중복된 부분이 없는가?
완전성 (completeness)빠진 요구나 정보가 없는가?
일관성 (consistency)요구사항이 서로 모순되지 않는가?
모호성 (ambiguity)모든 참여자가 명확하게 이해할 수 있는가?
검증 가능성 (verifiable)요구사항 분석 내용과 개발 시스템이 일치하는지 검증 가능한가?
추적 가능성 (traceable)설계문서 및 구현과 매핑되어 추적할 수 있는가?