유스케이스 다이어그램
-Actors : 시스템을 사용하는 사용자나 외부 시스템을 의미한다.
-UseCase : 시스템이 제공하는 기능을 의미
-Association : 유스케이스와 액터간에 연관 관계가 있을 때 사용한다.
-실선으로 표시하며, 다중도를 적는 것이 가능하다.
Actor 와 UseCase 간의 관계를 의미한다.
-DirectedAssociation : 유스케이스와 액터간에 연관관계가 있을 때 사용한다. 종속, 포함 등의 관계를 표시할 수 있습니다.
유스케이스의 다이어그램에서 관계의 방향성은 시스템 흐름의 가독성을 높이기 위한 의미가 더 크다. 일반적으로 1차 액터에서 useCase 로 방향성을 부여하고, use Case 에서 2차 Actor 로 방향성을 부여하지만 만약 Actor 와 use case 가 서로가 메시지를 보내기 때문에 방향성이 민감한 문제가 되면 방향성 없는 Association 으로 관계를 표현
-Generalization 은 일종의 상속 .일반적인 요소와 더 구체적인 요소의 관계일 때 사용한다.
회원가입(외국인 회원가입, 일반회원가입, 4세이상 회원가입)
일반적인 요소와 더 구체적인 요소의 관계일 때 사용합니다.
-Dependency : 어떤 유스케이스를 위해 다른 요소의 존재가 요구되어지는 의존적인 관계를 의미합니다.
-include 어떤 유스케이스를 수행하는데 반드시 수행해야 하는 유스케이스를 나타내기 위해 사용한다.
a 라는 기능을 쓸때 반드시 b 라는 기능을 거쳐야할때
( 회원제로 이루어져있는 쇼핑몰은 쇼핑을 위해서 로그인기능이 필요함 )
-Extend
한 유스케이스가 특정 시점에 여러가지 형태로 분류될 경우에 사용합니다.
결제하기에 각각 카드결제, 현금결제, 휴대폰결제 는 선택적으로 하는것
어떤 조건에 따라서 들어갈 수도 있고 안들어갈수도 있다.
배송지입력 같은것 입력을 안하면 기본 배송지로 들어간다.
*include 랑 extend 화살표 방향이 반대
부 -> 부
주 -> 부
-System boundary
시스템과 외부 시스템의 경계를 의미합니다.
여러가지 기능들이 하나의 안에있는지 ( 일종의 사각형틀 )
클래스 다이어그램
: 보통 상속을 표현 , 일반적인것 : 동물 , 그 안에 속한것 중에 포유류 : 사자
-Realization(실체화 관계 )
: 인터페이스와 그것을 구현한 것과의 관계를 나타낸다.
위에서 컴퓨터도 인터페이스고 (틀) 태블릿, 노트북, 데스크탑도 인터페이스이다. 인터페이스를 상속할 수있고 그럴때는 점선 화살표이고 클래스가 인터페이스를 상속(휴대용이 태블릿,노트북 상속 ) 할때는 점선 화살표로 표현한다.
-Association(연관 관계 ) :
한 객체가 다른 객체를 소유하거나, 참조하여 사용할때
파라미터로 객체를 받아서 처리하는 관계를 나타낸다.
단방향과 양방향이 존재한다.
단방향 : 클래스간의 관계가 -> 로 구현이 되며 , 화살표의 대상은 자신을 가리키는 클래스의 존재여부를 알지 못한다.
양방향 : 클래스간의 관계가 "----" 로 구현되며 서로 연관이 되어 있다.
양방향 ( 좋은 것은 아니다. 무한루프가 될 수 있다, )
사람 <--> 공인인증서
: 사람클래스가 공인인증서 클래스 사용, 공인인증서가 사람클래스 사용
1) Association(연관 관계 ) - aggregation (집합)
메인클래스가 사게될 시 대상클래스는 같이 삭제가 안됨 ( 라이프 사이클이 다름 ) 분리가 되도 독립적으로 동작함 약한 결합
2) Association(연관 관계 ) - Composition(합성)
메인 클래스가 삭제될 시 대상 클래스도 같이 삭제가 됨 ( 라이프 사이클이 동일 ) 분리가 되면 의미가 없어짐
-Dependency ( 의존관계 )
한 객체가 다른 객체를 소유하지는 않지만 다른 객체의 변경에 따라서 같이 변경을 해주어야 한다.
다른 객체를 파라미터로 받아서 그 메서드를 사용한다.
객체의 메서드 안에서 다른 객체를 생성해서 리턴한다
위에서 한 연관관계와 의존관계를 자바 이클립스 환경에서 예를 들어줄게
Association(연관관계) 크게 생각
참조값이 만들어져야 하는데(new) 어디서 그 참조값이 만들어지느냐에 따라서 연관관계가 집합이나 합성으로 구분된다.
aggregation (집합) 아래 예시 : a가 삭제되도 b는 삭제되지 않는다.
사무용컴퓨터 안에 마우스의 참조값이 저장되는 변수를 가지고 있을 때
마우스 객체를 생성한 곳이 사무용컴퓨터쪽이 아니라 외부에서 생성한 것 ( 사무용컴퓨터가 사라져도 마우스의 객체는 사라지지 않는다 )
Composition ( 합성 ) : 메인 클래스가 삭제되면 c 도 같이 삭제되는 관계
휴대폰테이블과 주소록 테이블에서 주소록 테이블의 객체생성은 휴대폰테이블안에서 한다.
휴대폰이 사라지면 주소록도 사라질 수 있다. )
더 유대관계가 깊다. 영향을 많이 받는다.
******************************예시 )
class A{
B b ; 얘가 나온 순간 ->무조건 Aggregation(집합) 안에 내용을 보고 집합인지 합성인지 결정
C c ; A와 c 도 연관관계
//생성자
A(B b){
this.b = b;
}
//c는 여기서 객체가 생성이 되기 때문에 A가 삭제가 되면 참조값이 없어진다.
c = new C(); //멤버변수
}
class B {
메서드명(){
C c = new C(); 지역변수
사용범위가 메서드 안에서만 사용되기 때문에 그 지역이 끝나면 사라지게 되는 것 :
Dependency(의존관계)
}
}
class C{
}
class D{
B b = new B () ;
A a = new A (b); //a 부분이 삭제가 되면, a = null 같이) 하지만 b는 남아있다. (주가되는 객체가 삭제가 되도 this.b 에서만 사용하던거니까 b는 사라지지 않고 있는데 이것이 aggregation )
}
인터페이스 구현 ( 클래스 다이어그램에서 )
realization 화살표로 선 만든다.
만약 구현한클래스에다 더 많은 걸 쓸 거 같을때
1.클래스를 만든다.
2. 오른쪽에서 General 에서 Stereotype 에서 interface 를 입력해준다.
밑에 클래스이름위에 <<interface>> 라고 써진다.
3. realization 으로 화살표 연결해준다.
유스케이스 명세서 ==> 유스케이스 내부에 대한 기술을 나타낸다.
#유스케이스명 : 회원가입
#엑터명 : 고객(비회원)
#유스케이스개요 및 설명 : 고객이 비디오 샵 관리 시스템을 사용하기 위해
회원 가입을 하는 유스케이스
#사전 조건 : 회원가입이 되어 있지 않은 상태이어야 된다.
#이벤트 흐름
-정상흐름
1. 기존 가입회원인지 전화번호를 검색하여 확인한다. (시스템이 처리 )
2. 회원 가입 요청을 한다. (액터)
3. 회원 약관을 보여준다.
4. 회원 약관에 동의한다(액터)
5. 회원 정보입력 항목을 보여 준다. (시스템)
6. 회원 정보 (이름, 전화번호 , 주소, 등등...) 를 입력하고 등록 요청을 한다. ( 액터 )
7. 입력된 정보를 확인한다. (시스템)
8. 회원 정보를 저장하고 등록을 완료한다. (시스템)
- 선택흐름 (정상흐름중에 문제가 발생할 상황을 쓰는것이다 )
1-1. 기존에 가입된 회원이면 '이미 가입된 회원입니다. 라는 메시지를 보여준다.
4-1. 회원 약관에 동의하지 않으면 회원 가입 기능 오류 메시지를 출력하고 동의를 요청한다.
7-1. 회원 정보 항목 중 입력하지 않은 항목이 있으면 오류 메시지를 출력하고 재입력을 요청한다.
7-2. 전화번호 형식에 맞지 않으면 메시지를 출력하고 재입력을 요청한다.
댓글
댓글 쓰기