본문 바로가기
학교 CS/소프트웨어공학 (3-1학기)

CH 8 소프트웨어 요구사항 분석 (2)

by 우중충 2025. 6. 15.
반응형

✅ CH 8. 소프트웨어 요구사항 분석 (2)

🔷 8.1 유스케이스 기반 요구사항 분석


8.1.1 요구 분석 단계의 작업

  • 요구사항 분석 접근 방식은 3가지로 구분됨:
    • 구조적 분석:
      • DFD(Data Flow Diagram)를 이용한 기능(프로세스) 중심 분석
    • 객체지향 분석:
      • UML의 유스케이스 다이어그램을 이용해 사용자 상호작용 중심 분석
    • 정보공학 분석:
      • ER(Entity-Relationship) 다이어그램을 통해 정보나 자료 중심으로 분석
     

8.1.2 유스케이스 기반 분석 프로세스

  • 분석 흐름:
    1. 유스케이스 모델링
    2. 유스케이스 기술서 작성
    3. 기능/비기능 요구사항 분류
    4. 요구사항 명세서 작성
  • UML(Unified Modeling Language) 사용하여 표준화된 모델링 진행

8.1.3 UML의 역사

연도 내용

1993년 이전 Booch, OMT, OOSE 등 다양한 모델링 방법론 공존
1995년 Booch + Rumbaugh + Jacobson 모델링 기법 통일
1997년 9월 UML 1.1 발표, OMG에서 표준으로 채택
2004년 UML 2.0 발표
현재 UML 2.0 사용 중

8.1.4 시스템 구축 시 UML의 역할

  • UML은 시스템 구축을 위한 청사진 역할을 함
  • 시스템의 개념적/물리적 표현을 위해 필요한 언어
  • UML의 4가지 역할:
    1. 가시화 언어: 시스템 구조/행위 시각화
    2. 명세화 언어: 요구사항 및 설계 세부사항 명세
    3. 구축 언어: 코드 구조와 대응되는 모델 구성
    4. 문서화 언어: 개발 과정 및 결과 기록

8.1.5 모델링 방법론 - 부치 (Booch)

  • 4+1 View 모델:
    • 시스템을 5가지 관점(View)으로 나누어 설계 및 모델링
      1. 논리 뷰
      2. 구현 뷰
      3. 프로세스 뷰
      4. 배포 뷰
      5. 유스케이스 뷰 (공통 기반)

8.1.6 모델링 방법론 - OMT / OOSE

📌 OMT (Object Modeling Technique) - 럼바우

  • 3가지 모델을 통해 시스템 설명:
    • 객체 모델: 클래스/객체 중심의 정적 구조
    • 기능 모델: DFD 기반 데이터 흐름/변환
    • 동적 모델: 상태 전이 및 제어 흐름

📌 OOSE (Object-Oriented Software Engineering) - 야콥슨

  • 유스케이스 중심 방법론
    • 사용자와의 상호작용을 통해 요구사항을 도출
    • 도출된 유스케이스는 개발·테스트·검증 단계에 활용

🔷 8. 2. 유스케이스 다이어그램

8.2.1 유스케이스 개요

  • 유스케이스란:
    사용자의 요구를 표현한 기능 단위 (예: 수강관리, 성적관리 등)
  • 사용자 관점에서 시스템에 어떤 서비스가 존재하는지를 표현
  • 활용 용도:
    • 시스템 범위 정의
    • 개발 과정 계획 수립
    • 테스트 케이스 정의 기반
    • 사용자 매뉴얼 구성
  • 유스케이스는 다음 단계들을 서로 연결해주는 중심 요소:
  • 요구정의 → 분석 → 설계 → 구현 → 테스트

8.2.2 유스케이스 다이어그램이란?

  • 시스템의 서비스/기능을 사용자 관점에서 표현
  • 고객과 개발자가 요구사항을 시각적으로 조율할 수 있도록 도움

8.2.3 유스케이스 다이어그램 구성요소

시스템 (System)

  • 개발 대상 어플리케이션
  • 표기법: 유스케이스를 감싸는 사각형, 상단에 시스템 이름 기입
    예: 종합정보시스템

액터 (Actor)

  • 시스템 외부에서 상호작용하는 사람 또는 외부 시스템
  • 표기법: 사람 모양 + 역할명을 명시
    예: 학생

유스케이스 (Usecase)

  • 시스템이 액터에게 제공하는 기능
  • 표기법: 타원으로 표현, 안에 "~한다" 형태의 기능명을 기술
    예: 학생 정보를 입력한다

8.2.4 유스케이스 다이어그램 관계 종류

연관 관계 (Association)

  • 액터와 유스케이스 간 직접적인 상호작용
  • 표기법: 실선으로 연결

포함 관계 (Include)

<<include>> 포함관계

  • 하나의 유스케이스가 다른 유스케이스 실행을 반드시 포함하는 경우
  • 표기법: 점선 + 화살표 방향 <<include>>
    • 포함하는 → 포함되는 유스케이스 방향
      예: 글을 등록한다 → 로그인 한다

확장 관계 (Extend)

<<extend>> 확장관계

  • 조건에 따라 선택적으로 수행되는 유스케이스
  • 표기법: 점선 + 화살표 방향 <<extend>>
    • 확장 기능 → 확장 대상 방향
      예: 파일을 첨부한다 → 글을 등록한다

일반화 관계 (Generalization)

  • 공통 속성을 추출하여 추상화하는 관계
  • 표기법: 삼각형 화살표 + 실선
    • 구체적 → 추상적 유스케이스 방향
      예:
    글쓴이로 검색한다
             ↑
       글을 검색한다
             ↑
    날짜로 검색한다
    

2.5 유스케이스 다이어그램 작성 순서

1. 시스템 및 액터 식별
2. 유스케이스 식별
3. 관계 정의

▪ 시스템 및 액터 식별

  • 시스템의 이름 정의
  • 사용자 역할 정의
  • 외부 시스템 식별

▪ 유스케이스 식별

  • 액터가 요구하는 서비스
  • 액터의 시스템 상호작용 행위

▪ 관계 정의

  • 액터 간 일반화
  • 액터-유스케이스 간 연관
  • 유스케이스 간 포함/확장 관계

8.2.6

액터 식별을 위한 질문

  • 누가 정보를 생성/사용/삭제하는가?
  • 누가 시스템을 유지관리하는가?
  • 상호작용하는 외부 시스템/하드웨어는 누구인가?

유스케이스 식별을 위한 질문

  • 액터가 원하는 기능은 무엇인가?
  • 어떤 정보를 생성/조회/수정/삭제하고 싶은가?
  • 어떤 기능이 업무를 효율적으로 만드는가?
  • 모든 기능 요구사항이 포함되었는가?

관계 식별을 위한 질문

  • 연관 관계: 상호작용이 존재하는가?
  • 포함 관계: 반드시 수행되어야 할 유스케이스인가?
  • 확장 관계: 조건부로 실행되는 유스케이스가 있는가?
  • 일반화 관계: 여러 유사 액터/유스케이스가 존재하는가?

유스케이스 작성 시 유의사항

  • 기능 중심으로 작성
  • 사용자 관점에서 기술
  • 목표 지향적으로 표현
  • 시스템 흐름도와는 다름 (기능 중심)
  • 간결하고 읽기 쉽게 구성

🔷 8.3. 유스케이스 다이어그램 예

8.3.1 사용자 요구사항: 게시판 시스템

  • 사용자가 글을 등록, 수정, 삭제할 수 있는 게시판 개발
  • 관리자 모드는 개발하지 않음
  • 기능 요구사항:
    • 글 등록 시 파일 첨부 가능
    • 글을 조회하여 읽을 수 있음
    • 등록된 글은 글쓴이/날짜로 검색 가능
    • 모든 기능은 로그인 이후에만 사용 가능

8.3.2 유스케이스 다이어그램 작성 과정

① 시스템 식별

  • 시스템명: 게시판

② 액터 식별

  • 외부에서 상호작용하며 게시판을 사용하는 사용자

③ 유스케이스 식별

  • 사용자는 다음 작업 가능:
    • 글을 등록한다
    • 글을 수정한다
    • 글을 조회한다
    • 글을 삭제한다
    • 글을 검색한다
    • 로그인 한다
    • 파일을 첨부한다
    • 글쓴이로 검색한다
    • 날짜로 검색한다

④ 관계 정의

  • 연관관계: 사용자 ↔ 글을 등록한다
  • 일반화관계:
    • 글을 검색한다 → 글쓴이로 검색한다
    • 글을 검색한다 → 날짜로 검색한다
  • 포함관계 (<<include>>):
    • 글을 등록한다 ← 로그인 한다
    • 글을 수정/삭제/조회한다 ← 로그인 한다
  • 확장관계 (<<extend>>):
    • 글을 등록한다 ← 파일을 첨부한다

8.3.3 완성된 게시판 유스케이스 다이어그램 구성요소

[시스템: 게시판]
    |
    |-- 사용자 (액터)
        |
        |-- <<include>> 로그인 한다
        |-- 글을 등록한다
              |-- <<extend>> 파일을 첨부한다
        |-- 글을 수정한다 (<<include>> 로그인)
        |-- 글을 삭제한다 (<<include>> 로그인)
        |-- 글을 조회한다 (<<include>> 로그인)
        |-- 글을 검색한다
              |-- 글쓴이로 검색한다 (일반화)
              |-- 날짜로 검색한다 (일반화)

8.3.4 유스케이스 기술서

정의

  • 유스케이스 다이어그램의 기능별 흐름을 구체적인 문장으로 표현
  • 각 유스케이스가 어떻게 수행되는지를 명세

구성 항목

  • 유스케이스명
  • 액터명
  • 유스케이스 개요 및 설명
  • 사전 조건 / 사후 조건
  • 작업 흐름
    • 정상 흐름: 기본 절차
    • 대안 흐름: 선택지 발생 시 흐름
    • 예외 흐름: 오류 상황 발생 시 흐름

예시 – 글을 등록한다

  • 유스케이스명: 글을 등록한다
  • 액터명: 사용자
  • 개요: 사용자가 원하는 글을 게시판에 등록한다
  • 사전 조건: 로그인 완료
  • 작업 흐름:
    1. 사용자가 글쓰기 버튼을 클릭한다
    2. 시스템이 글쓰기 박스를 디스플레이한다
    3. 사용자가 내용을 입력한다
    4. 등록 버튼을 클릭한다
    5. 시스템은 글을 DB에 저장한다
    🔁 대안 흐름
    1. 사용자가 파일 첨부 버튼을 클릭한다
    2. 시스템이 첨부창을 연다
    3. 사용자가 파일을 첨부한다
  • ✅ 정상 흐름

8.3.5 포함 / 확장 유스케이스 예시

포함 (Include) – 주문 취소

  • 주문 취소 유스케이스는 반드시 주문 찾기를 포함
  • 주문 상태에 따라:
    • 상품 준비 중: 주문 상태를 ‘취소’로, 환불 처리
    • 배송 중: 반품 정책 안내

확장 (Extend) – 멤버십 할인

  • 책 주문 유스케이스에 조건부로 멤버십 할인이 확장됨
    1. 고객이 멤버십 회원일 경우 할인 기능 시작
    2. 할인 내용 표시 및 총액 할인 적용
    3. 계산 결과를 표시하고 종료

8.3.6 유스케이스 다이어그램 & 기술서의 관계

구분 설명

유스케이스 다이어그램 시스템의 기능 목록을 구조적으로 표현
유스케이스 기술서 각 기능이 어떻게 작동하는지 구체적으로 명세

둘은 함께 사용되어 요구사항 명세서의 품질을 높이고,
설계 및 테스트의 기준이 됨.