12.소프트웨어 공학 UML
1. UML의 이해
UML
UML의 역할
- 소프트웨어의 전체를 판단할 수 있도록 12개의 다이어그램을 제시
- 시스템이 상호작용하는 측면, 시스템 전체 구조 측면, 컴포넌트 간의 관계 등을 시각적으로 볼 수 있게 나타낸 도면
2. 유스케이스 다이어그램
액터
액터의 종류
사용자 액터
- 사용자 액터는 시스템을 사용하는 사람(역할)을 의미
- 액터와 유스케이스의 관계는 화살표(→)를 사용해 표현하며 화살표 방향은 액터에서 유스케이스로 향함
시스템 액터
- 해당 프로젝트의 개발 범위에는 속하지 않지만 데이터를 주고받는 등 서로 연동되는 또 다른 시스템
- 유스케이스가 시스템 액터를 사용(참조)하는 것이므로 화살표 방향은 유스케이스에서 시스템 액터로 향함
주요 액터
- 시스템에게 작업의 실행을 요구하는 능동적 입장의 액터
- 대부분의 액터가 여기에 해당
보조 액터
- 유스케이스로부터 요청을 받거나 메시지를 전달받아 수동적으로 작업을 하는 액터
프록시 액터
- 액터와 시스템의 중간 위치에서 무언가를 대신해주는 액터
- 시스템에 등록할 수 있도록 접근 권한이 부여된 경우에만 프록시 액터가 됨
액터 식별
액터 식별 방법(학사관리시스템의 예)
① 시스템을 사용하는 사람을 찾음
- 학사관리시스템을 사용하는 사람은 교수, 학생, 조교, 학사담당직원 등
② 시스템에 자료를 등록/수정/삭제/조회하는 사람을 찾음
- 학사관리시스템에서 액터는 성적을 등록/수정/삭제/조회하는 교수, 성적을 조회만 하는 학생, 조교, 학사담당직원
③ 시스템에 연동된 또 다른 시스템을 찾음(시스템 액터)
- 앞에서 학사관리시스템에서 휴학신청 유스케이스는 도서관리 시스템
④ 시스템을 유지 및 관리하는 사람을 찾음(보조 액터)
- 시스템의 기능을 직접 사용하지는 않지만 시스템이 잘 구동되도록 유지 및 관리해주는 유지보수담당자
⑤ 유스케이스 기능에 권한은 없지만 역할을 대신하는 사람을 찾음(프록시 액터)
액터 이름
액터 이름 설정 규칙
① 이름만 봐도 액터의 의미를 알 수 있게 정함
② 역할을 나타내는 단어로 사용자 액터의 이름을 정함
- 부장,과장 같은 직책이 아닌 역할로 정함
- 구체적인 역할을 나타내는 단어를 사용
③ 시스템 액터는 시스템 이름을 사용해 이름을 정함
액터 목록
- 각 액터에 관한 설명을 붙인 액터 목록을 만들면 그 액터가 시스템을 사용해 어떤 일을 하는지 이해하는 데 도움이 됨
이름 | 설명 |
---|---|
교수 | 교수는 교과목과 개설과목을 결정하고 성적등록을 한다. |
학생 | 학생은 수강신청, 성적조회, 휴학신청을 한다. |
조교 | 조교는 교과목과 개설과목을 등록(대행)하고 휴학신청 승인을 한다. 조교는 성적장학생 명단을 등록한다. |
학사담당직원 | 학사담당직원은 교과목과 개설과목의 등록 기간을 설정한다. |
유스케이스
유스케이스
- 사용자가 시스템을 통해 사용하고 싶은 기능
- 유스케이스가 모여 하나의 서브시스템을 이루고 서브시스템이 모여 개발 시스템이 됨
- 전체 시스템은 유스케이스를 모아 놓은 것과 같아야 함
유스케이스 식별
① 사용자인 액터가 시스템에 요구하는 기능을 후보 유스케이스로 선정할 수 있음 ② 사용자의 업무에서 유스케이스를 도출할 수 있음 ③ 데이터베이스에서 데이터를 등록/수정/삭제/조회하는 기능을 하나의 유스케이스로 선정할 수 있음
- 찾은 후보 유스케이스는 여러 번의 정련 과정을 통해 최적화된 유스케이스로 결정
- 유스케이스를 찾는 작업은 개발자가 하지만 사용자 관점에서 유스케이스를 정의해야 함
- 처음에는 가능하다고 생각되는 것을 모두 도출해 놓고 하나씩 면밀히 살펴보는 과정을 거쳐 불필요한 것은 삭제하고, 필요시 합치거나 분리해 최종 유스케이스를 선정
유스케이스 검증
① 시스템이 아니라 수작업으로 이루어지는 것은 유스케이스에 포함하면 안 됨 ② 액터가 원하는 최종 결과만 나타내는 유스케이스인지 확인 ③ 액터가 수행하는 유스케이스인지 확인 ④ 유스케이스 내의 이벤트 흐름 전체를 액터가 사용하는지 확인
유스케이스 이름
① 사용자 관점에서 이해할 수 있는 이름을 사용
② 명사보다는 어떤 기능을 하는지 알 수 있는 동사형 명사를 사용
③사용자가 시스템을 통해 얻으려는 최종 목적이 나타나는 이름을 사용
유스케이스 목록
이름 | 설명 |
---|---|
교과목등록 | 교수는 교과목을 등록/수정/삭제한다. |
개설과목등록 | 교수는 개설과목을 등록/수정/삭제한다. |
성적입력 | 교수는 수강성적을 등록/수정/삭제한다. |
강의계획서입력 | 교수는 강의계획서를 등록/수정/삭제한다. |
수강신청 | 학생은 수강과목을 등록/수정/삭제한다. |
개인정보수정 | 학생은 개인정보를 수정/조회한다. |
휴학신청 | 학생은 휴학을 신청한다. |
휴학승인 | 조교는 학생이 신청한 휴학을 승인한다. |
기간설정 | 학사담당직원은 교과목/개설과목/수강신청에 대한 기간을 설정한다. |
출석부조회 | 교수/조교/학사담당직원은 출석부를 조회한다. |
시간표/강의실조회 | 학생은 시간표/강의실을 조회한다. |
성적조회 | 사용자(교수/학생/조교/학사담당직원은)는 성적을 조회한다. |
개설과목조회 | 사용자(교수/학생/조교/학사담당직원은)는 개설과목을 조회한다. |
교과목조회 | 사용자(교수/학생/조교/학사담당직원은)는 교과목을 조회한다. |
학생정보조회 | 사용자(교수/학생/조교/학사담당직원은)는 학생정보를 조회한다. |
강의계획서조회 | 사용자(교수/학생/조교/학사담당직원은)는 강의계획서를 조회한다. |
관계
액터 → 유스케이스 관계
- 액터와 유스케이스는 연관 관계로 방향성을 갖는 실선으로 표현
- 화살표 방향은 데이터가 흘러가는 방향이 아니라 제어의 흐름을 나타냄
- 제어하는 주체에서 출발해 제어받는 대상으로 연관 방향이 결정
- 시스템 액터도 유스케이스 제어의 주체가 될 수 있음
- 학생(액터)과 증명서자동발급기(시스템 액터) 사이인 액터와 액터 사이에도 연관 관계가 존재
유스케이스 → 액터 관계
- 유스케이스의 수행 결과를 액터에게 알려줄 때는 유스케이스에서 액터로 방향성을 갖는 실선으로 표현
- 유스케이스 → 액터 관계에서 주의할 사항은 통보 기능이 시스템 내에서 이루어져야 함
- 유스케이스 다이어그램에서 화살표로 나타냈다면 그 기능을 개발에 포함해야 함
유스케이스 → 시스템 액터 관계
액터의 일반화 관계
- 일반화: 개별적인 것에서 공통적인 특징을 뽑아 이름을 붙인 것(반대 개념: 특수화)
- 일반화 개념은 액터 사이에 먼저 적용할 수 있음
- 간결하게 일반화해 복잡함을 줄이면 이해하기가 쉽고 새로운 액터도 간단하게 추가할 수 있음
포함 관계
- 유스케이스의 일부 기능이 다른 유스케이스에서도 공통으로 필요하다면 이를 별도로 만든 뒤 호출해 사용하는 것
- 피포함 유스케이스: 공통으로 사용하기 위해 별도 유스케이스로 만들어 놓은 것
- 기본 유스케이스: 피포함 유스케이스를 호출하는 유스케이스
- 포함 관계는 화살표 방향이 기본 유스케이스에서 피포함 유스케이스로 향함
- 점선을 사용하고 스테레오 타입으로
<include>
라고 표기 - 포함 관계는 화살표 방향이 기본 유스케이스에서 피포함 유스케이스로 향함
- 피포함 유스케이스는 2개 이상의 유스케이스에서 사용할 수 있는 공통 부분(이벤트 흐름)으로 만들어야 함
- 다른 유스케이스에서 사용하지 않는 기능이라면 포함 관계를 만들지 않아야 함
포함 관계
포함 관계와 선행 관계
- 포함 관계는 선행 조건(유스케이스 명세서 작성 시 필요)과 혼동될 우려가 있음
- 예)
수강신청
유스케이스와성적조회
유스케이스에서 공통으로 필요한 부분이로그인
유스케이스라고 혼동
확장 관계
- 특정 조건(메일 도착)이 발생하면 확장 유스케이스(메일 확인)를 수행하고 다시 기준 유스케이스(검색)를 수행
- 확장 관계는 점선 화살표로 표기하고 방향은 기준 유스케이스 쪽으로 향함
<extend>
라는 스테레오 타입을 사용
- 예외적인 상황이나 어쩌다 한 번 발생하는 것을 확장 관계로 표현하는 것은 적절치 않음
댓글남기기