시나리오
tip: 클래스 다이어그램은 상단이 변수, 하단이 func이다.
1. 개요: 인터넷 쇼핑몰에 쇼핑 등을 위해 회원가입하는 usecase
2. 관계: 고객 = 개시자 이며, 조건은 다음과 같다.
-
고객이 회원가입 기능을 실행하는 사전 조건과, 회원가입 됨과 동시에 고객 정보가 저장되고, 샵의 회원이 되는 사후 조건 이 있다.
3. 흐름: 아래와 같다.
--------------------------------------------------------------------------------------------------------------------------------
1. 먼저 회원가입을 신청한다 (고객)
-> 이 때, 고객은 개인 정보 를 입력하게 된다.
/*Member*/
이름 (name),
아이디 (id),
비밀번호(pwd),
주소(address),
메일(email),
휴대폰번호(phone)
2. 고객이 입력한 id의 중복여부를 확인한다.
-> idCheck 에서 Member에서 입력한 id (타입: String) 을 가지고 온 뒤, 중복 확인
-> MemberController의 경우 돌려줄 id 값이 있는지 없는지 확인하기 위해 void를 , MemberService는 해당 id값이 n개나 존재하는 지 int로 각각 중복값 여부를 확인 및 반환한다.
->이 때, 중복되는 값이 없다면 3번으로 넘어간다.
3. 회원가입 진행
- insertMember 변수를 생성하고, 그 객체를 MemberService, MemberDao 로 넘긴다.
-InsertMember-
name:String,
id:String,
pwd:Strinng,
address:String,
email:String,
phone:String
/*(반환값 void*/
4. 로그인
사용자가 로그인 정보 id, pwd 를 입력하고 로그인 버튼을 누르는 순간, MemberController에 있던 id,pwd 값이 MemberService, MemberDao 로 넘어가고, db내 일치하는 유저정보 (id, pass)를 가져와 login proc가 진행된다.
--------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------
4. alt (대안)
5. exception (예외)
-----------------------------------------------------------------------------------------------------------------------------
3-8) - kh
서블릿 클래스는 기능별로 각 각 따로 만들게 된다.

화면에서 넘어오는 값은 map형식으로 request에 담겨 있으며, 최종 결과값은 response에 담겨 있다.

uml에서는 의존 관계를 많이 사용한다. 의존 관계가 표시 되어 있어야 정상이지만, 다 아는 사실이기 때문에 표시하지 않는다.
중간프로젝트의 경우, 서블릿이 컨트롤러 역할을 하였다면, 파이널 에서는 그 역할을 메소드가 한다.
spring에서는 서비스: interface로 구현하여야 한다.

- 상호작용 다이어그램의 일부분인 '시퀸스 다이어그램' 이란, 시스템 내부에서 동작하는 객체들 사이의 주고 받는 메시지를 시간 순서를 강조, 표현하는 동적 다이어 그램이다.
- 시간의 흐름에 따라 위에서 아래로 간다.
2. 생명선과 메시지
- 생명선 끝에 'x' 자로 끊겨 있다면 소멸된다. 이는 java가비지 컬렉터에 넘기는 행동과 동일하며, 생명선 간에 전달되어 상태의 행위에 대한 호출을 '메시지' 라고 한다.
- 생명선에는 활성화 막대라는 것이 존재한다. (일종의 라이프라인)

3. 시퀸스 다이어그램의 메시지 종류
- 응답을 기다리지 않는 비동기적 메시지
- 응답을 기다리는 동기적 메시지
- 동기적 메시지에 대해 응답시 사용하는 대답 메시지
- 생명선을 생성하는 생성 메시지
- 알 수 없는 송신자로부터의 메시지인 발견된 메시지
- 알 수 없는 수신자로부터의 메시지인 유실된 메시지
-> 총 6개가 존재한다.
4.상호작용 메시지
- alt(대체): 메시지의 대체 시퀸스를 포함하는 연산자로, 반드시 1개의 시퀸스만 발생한다. (if - else if 문에 해당하는 논리를 나타냄)
-> * 모든 가드가 false이며, else가 존재하지 않는 상황이면 어떠한 조각도 실행되지 않는다.
- opt(옵션): 선택적 요소, if문에 해당하는 논리를 나타낸다.
- loop(반복): 반복적으로 실행되는 요소를 나타낸다.
-> *실행되는 횟수를 지정할 수 있다.
- break(중단): 반복 연산자와 보통 함께 쓰이며, 타 프로그램 언어의 중단 매커니즘과 유사하다.
-> *조건이 true일 경우 현재 실행을 포기하고 빠져나간다.
시퀀스 다이어그램
- 시퀀스 다이어그램은 동적 다이어그램으로 상호작용 다이어그램의 일부분이다.
- 시스템 내부에서 동작하는 객체들 상호 간의 메세지를 시간 순서를 강조하여 표현하였다.

생명선, 메세지
- 시퀀스 다이어그램을 표현할 때 생명선과 메세지를 사용하여 표현한다.
- 생명선은 액터, 클래스 객체, 컴포넌트 인스턴스 등, 객체 간의 상호작용에 참여하는 구체적인 대상을 표현한다.
- 생명선의 끝에 X자로 끊기면 소멸 (자바에서 가비지 컬렉터로 넘기는 행동)
- 메세지는 생명선 간에 전달되어 상태의 행위에 대한 호출
- 메세지들 사이에는 활성화 막대가 존재하는데, 메세지들 간의 호출에 메세지가 지속되는 기간을 말한다.
- 시퀀스 다이어그램은 시간에 초점을 둔 만큼 다이어그램의 위에서 아래로 시간의 흐름이 존재한다.
시퀀스 다이어그램 메세지의 종류
메세지에는 아래와 같은 것들이 있으며 아래와 같은 구분 방법으로 메세지를 구분한다.

시퀀스 다이어그램 상호작용 연산자 종류
시퀀스 다이어그램의 흐름을 제어하기 위해 여러 연산자가 존재하며,
아래는 대략적인 연산자의 종류이다.

시퀀스 다이어그램의 대략적 구조

- 어떤 사이트에서 회원이 게시글을 삭제한다라는 동작을 구현할 때의 대략적인 시퀀스 다이어그램의 구조이다.
- 위에서 아래로, 시간적인 순서에 따라 절차가 진행되고있다.
- 먼저 첫번째로, 회원이 게시글을 작성했을 때 입력했던 게시글의 비밀번호를 입력한다.
- 게시글 비밀번호가 일치하는지의 여부를 절차를 거쳐 DB에서 확인한 후,
- 일치하지 않는 경우에는 재입력을 요청하는 알림창을 띄우며 비밀번호 입력을 위한 창을 다시 띄운다.
- 일치한 경우에는, 게시글 삭제 버튼을 활성화시키고, 이를 클릭할 시 다시 절차를 거쳐 게시글을 삭제한다.

- 위 그림은 로그인하는 동작을 구현할 때의 대략적인 시퀀스 다이어그램이다.
- 먼저 로그인 페이지에서 로그인 버튼을 클릭하고, 정보를 DB까지 넘기는 절차를 거쳐, 정보가 null값인지 아닌지를 판별해 null일시 로그인 실패 알림창을 띄운다.
- null이 아닐시 로그인된다. null이 아닌 경우에 관리자 계정의 정보를 입력받았을 때는, 관리자 화면을 출력하고, 이외에는 사이트 메인화면을 출력하는 절차를 가진다.

- 위 그림은 고객이 어느 사이트에서 상품목록을 조회하기 위한 동작을 할 때를 구현한 대략적인 시퀀스 다이어그램이다.
- 고객이 상품목록조회 버튼을 클릭하고, DB로 통하는 절차를 거쳐 전체상품목록 리스트를 출력한다. 그리고 고객이 추가적으로 전체상품목록 리스트에서 원하는 상품 리스트만을 검색하길 원할 때, 옵션으로 키워드를 추가 입력한다.
- 그러면 다시 DB를 통하는 절차를 거쳐, 전체상품목록 리스트 중, 설정한 옵션과 키워드에 맞는 검색된 상품목록 리스트를 다시 출력한다.
'DB > UML' 카테고리의 다른 글
UML 3-5,3-6 (0) | 2023.01.19 |
---|---|
UML 3-1/3-2/3-3/3-4 (0) | 2023.01.19 |
UML (Chapter1-1. ~ 2-1)요약 (0) | 2023.01.11 |
UML Chap02-3. ~02-4. (0) | 2023.01.09 |
UML (Chap02-2. 중고나라 요구사항 기술서 실습) (0) | 2023.01.08 |