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