4 분 소요

1. UML의 이해

UML

UML의 역할

  • 소프트웨어의 전체를 판단할 수 있도록 12개의 다이어그램을 제시
  • 시스템이 상호작용하는 측면, 시스템 전체 구조 측면, 컴포넌트 간의 관계 등을 시각적으로 볼 수 있게 나타낸 도면

sw_7_1

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

액터

액터의 종류

사용자 액터

  • 사용자 액터는 시스템을 사용하는 사람(역할)을 의미
  • 액터와 유스케이스의 관계는 화살표(→)를 사용해 표현하며 화살표 방향은 액터에서 유스케이스로 향함

sw_7_2

시스템 액터

  • 해당 프로젝트의 개발 범위에는 속하지 않지만 데이터를 주고받는 등 서로 연동되는 또 다른 시스템
  • 유스케이스가 시스템 액터를 사용(참조)하는 것이므로 화살표 방향은 유스케이스에서 시스템 액터로 향함

sw_7_3

주요 액터

  • 시스템에게 작업의 실행을 요구하는 능동적 입장의 액터
  • 대부분의 액터가 여기에 해당

보조 액터

  • 유스케이스로부터 요청을 받거나 메시지를 전달받아 수동적으로 작업을 하는 액터

프록시 액터

  • 액터와 시스템의 중간 위치에서 무언가를 대신해주는 액터
  • 시스템에 등록할 수 있도록 접근 권한이 부여된 경우에만 프록시 액터가 됨

sw_7_4

액터 식별

액터 식별 방법(학사관리시스템의 예)

① 시스템을 사용하는 사람을 찾음

  • 학사관리시스템을 사용하는 사람은 교수, 학생, 조교, 학사담당직원 등

② 시스템에 자료를 등록/수정/삭제/조회하는 사람을 찾음

  • 학사관리시스템에서 액터는 성적을 등록/수정/삭제/조회하는 교수, 성적을 조회만 하는 학생, 조교, 학사담당직원

③ 시스템에 연동된 또 다른 시스템을 찾음(시스템 액터)

  • 앞에서 학사관리시스템에서 휴학신청 유스케이스는 도서관리 시스템

④ 시스템을 유지 및 관리하는 사람을 찾음(보조 액터)

  • 시스템의 기능을 직접 사용하지는 않지만 시스템이 잘 구동되도록 유지 및 관리해주는 유지보수담당자

⑤ 유스케이스 기능에 권한은 없지만 역할을 대신하는 사람을 찾음(프록시 액터)

액터 이름

액터 이름 설정 규칙

① 이름만 봐도 액터의 의미를 알 수 있게 정함

② 역할을 나타내는 단어로 사용자 액터의 이름을 정함

  • 부장,과장 같은 직책이 아닌 역할로 정함
  • 구체적인 역할을 나타내는 단어를 사용

③ 시스템 액터는 시스템 이름을 사용해 이름을 정함

sw_7_5

액터 목록

  • 각 액터에 관한 설명을 붙인 액터 목록을 만들면 그 액터가 시스템을 사용해 어떤 일을 하는지 이해하는 데 도움이 됨
이름 설명
교수 교수는 교과목과 개설과목을 결정하고 성적등록을 한다.
학생 학생은 수강신청, 성적조회, 휴학신청을 한다.
조교 조교는 교과목과 개설과목을 등록(대행)하고 휴학신청 승인을 한다. 조교는 성적장학생 명단을 등록한다.
학사담당직원 학사담당직원은 교과목과 개설과목의 등록 기간을 설정한다.

유스케이스

유스케이스

  • 사용자가 시스템을 통해 사용하고 싶은 기능
  • 유스케이스가 모여 하나의 서브시스템을 이루고 서브시스템이 모여 개발 시스템이 됨
  • 전체 시스템은 유스케이스를 모아 놓은 것과 같아야 함

sw_7_6

유스케이스 식별

① 사용자인 액터가 시스템에 요구하는 기능을 후보 유스케이스로 선정할 수 있음 ② 사용자의 업무에서 유스케이스를 도출할 수 있음 ③ 데이터베이스에서 데이터를 등록/수정/삭제/조회하는 기능을 하나의 유스케이스로 선정할 수 있음

  • 찾은 후보 유스케이스는 여러 번의 정련 과정을 통해 최적화된 유스케이스로 결정
  • 유스케이스를 찾는 작업은 개발자가 하지만 사용자 관점에서 유스케이스를 정의해야 함
  • 처음에는 가능하다고 생각되는 것을 모두 도출해 놓고 하나씩 면밀히 살펴보는 과정을 거쳐 불필요한 것은 삭제하고, 필요시 합치거나 분리해 최종 유스케이스를 선정

sw_7_7

유스케이스 검증

① 시스템이 아니라 수작업으로 이루어지는 것은 유스케이스에 포함하면 안 됨 ② 액터가 원하는 최종 결과만 나타내는 유스케이스인지 확인 ③ 액터가 수행하는 유스케이스인지 확인 ④ 유스케이스 내의 이벤트 흐름 전체를 액터가 사용하는지 확인

sw_7_8

유스케이스 이름

① 사용자 관점에서 이해할 수 있는 이름을 사용

sw_7_9

② 명사보다는 어떤 기능을 하는지 알 수 있는 동사형 명사를 사용

sw_7_10

③사용자가 시스템을 통해 얻으려는 최종 목적이 나타나는 이름을 사용

sw_7_11

유스케이스 목록

이름 설명
교과목등록 교수는 교과목을 등록/수정/삭제한다.
개설과목등록 교수는 개설과목을 등록/수정/삭제한다.
성적입력 교수는 수강성적을 등록/수정/삭제한다.
강의계획서입력 교수는 강의계획서를 등록/수정/삭제한다.
수강신청 학생은 수강과목을 등록/수정/삭제한다.
개인정보수정 학생은 개인정보를 수정/조회한다.
휴학신청 학생은 휴학을 신청한다.
휴학승인 조교는 학생이 신청한 휴학을 승인한다.
기간설정 학사담당직원은 교과목/개설과목/수강신청에 대한 기간을 설정한다.
출석부조회 교수/조교/학사담당직원은 출석부를 조회한다.
시간표/강의실조회 학생은 시간표/강의실을 조회한다.
성적조회 사용자(교수/학생/조교/학사담당직원은)는 성적을 조회한다.
개설과목조회 사용자(교수/학생/조교/학사담당직원은)는 개설과목을 조회한다.
교과목조회 사용자(교수/학생/조교/학사담당직원은)는 교과목을 조회한다.
학생정보조회 사용자(교수/학생/조교/학사담당직원은)는 학생정보를 조회한다.
강의계획서조회 사용자(교수/학생/조교/학사담당직원은)는 강의계획서를 조회한다.

관계

액터 → 유스케이스 관계

  • 액터와 유스케이스는 연관 관계로 방향성을 갖는 실선으로 표현
  • 화살표 방향은 데이터가 흘러가는 방향이 아니라 제어의 흐름을 나타냄
  • 제어하는 주체에서 출발해 제어받는 대상으로 연관 방향이 결정

sw_7_12

  • 시스템 액터도 유스케이스 제어의 주체가 될 수 있음
  • 학생(액터)과 증명서자동발급기(시스템 액터) 사이인 액터와 액터 사이에도 연관 관계가 존재

유스케이스 → 액터 관계

  • 유스케이스의 수행 결과를 액터에게 알려줄 때는 유스케이스에서 액터로 방향성을 갖는 실선으로 표현
  • 유스케이스 → 액터 관계에서 주의할 사항은 통보 기능이 시스템 내에서 이루어져야 함
  • 유스케이스 다이어그램에서 화살표로 나타냈다면 그 기능을 개발에 포함해야 함

sw_7_13

유스케이스 → 시스템 액터 관계

액터의 일반화 관계

  • 일반화: 개별적인 것에서 공통적인 특징을 뽑아 이름을 붙인 것(반대 개념: 특수화)

sw_7_14

  • 일반화 개념은 액터 사이에 먼저 적용할 수 있음

sw_7_15

  • 간결하게 일반화해 복잡함을 줄이면 이해하기가 쉽고 새로운 액터도 간단하게 추가할 수 있음

sw_7_16

포함 관계

  • 유스케이스의 일부 기능이 다른 유스케이스에서도 공통으로 필요하다면 이를 별도로 만든 뒤 호출해 사용하는 것
  • 피포함 유스케이스: 공통으로 사용하기 위해 별도 유스케이스로 만들어 놓은 것
  • 기본 유스케이스: 피포함 유스케이스를 호출하는 유스케이스
  • 포함 관계는 화살표 방향이 기본 유스케이스에서 피포함 유스케이스로 향함
  • 점선을 사용하고 스테레오 타입으로 <include> 라고 표기
  • 포함 관계는 화살표 방향이 기본 유스케이스에서 피포함 유스케이스로 향함

sw_7_17

  • 피포함 유스케이스는 2개 이상의 유스케이스에서 사용할 수 있는 공통 부분(이벤트 흐름)으로 만들어야 함
  • 다른 유스케이스에서 사용하지 않는 기능이라면 포함 관계를 만들지 않아야 함

포함 관계

포함 관계와 선행 관계 

  • 포함 관계는 선행 조건(유스케이스 명세서 작성 시 필요)과 혼동될 우려가 있음

sw_7_18

  • 예) 수강신청 유스케이스와 성적조회 유스케이스에서 공통으로 필요한 부분이 로그인 유스케이스라고 혼동

확장 관계

  • 특정 조건(메일 도착)이 발생하면 확장 유스케이스(메일 확인)를 수행하고 다시 기준 유스케이스(검색)를 수행
  • 확장 관계는 점선 화살표로 표기하고 방향은 기준 유스케이스 쪽으로 향함
  • <extend> 라는 스테레오 타입을 사용

sw_7_19

  • 예외적인 상황이나 어쩌다 한 번 발생하는 것을 확장 관계로 표현하는 것은 적절치 않음

댓글남기기