Introduction
Summary
본 문서는 Conceptualization Document에 이은 Analysis 단계의 문서이다. 이 단계에서는 Use Case를 분석하여 Diagram으로 시각화하고, 각 Case들의 기능, 역할, 범위에 대한 상세한 정보를 문서화 한다. 또한 각 Case들을 제공하기 위해 필요한 Domain들을 정의하고, 각 Domain의 목적에 대해 다룬다. 마지막으로 Actor에게 서비스를 제공하기 위한 Interface의 Prototype을 계획하고 설계한다.
The features of project
이 서비스를 활용해서 공유 캘린더에, 내가 가능한 일정과 불가능한 일정을 터치 한번으로 손쉽게 추가할 수 있다. 가능한 날짜는 O로, 불가능한 날짜는 X로 표시되며, 해당 날짜의 시간에 따라서 표시되는 모양도 달라질 수 있다. 각 그룹별 캘린더는 개별적으로 동작하며, 해당 모임별로 미팅을 원하는 시간을 설정할 수 있다.
Use Case Analysis
UseCase Diagram
UseCase Description
#1) createCalendar
•
요약 : 최초 필요한 공유 캘린더를 생성할 때 사용한다
•
스코프 : Calendar System / User level
•
상태 : Analysis
•
actor : User
•
precondition : 서비스에 접속하여야 한다. Calendar 이름이 입력되어야한다.
•
trigger : 화면위의 start 버튼
•
if success : Calendar View로 전환되고 db에 Calendar 정보가 저장된다.
•
if fail : Error View로 전환된다.
•
메인시나리오 :
◦
User가 Calendar이름을 입력한다
◦
start버튼을 누른다
◦
CalendarView로 전환한다
•
서브시나리오 :
◦
고객이 Calendar이름을 입력하지 않은 경우
▪
이름 입력 필드에 highlighting을 활용해서 필드가 비어있다는 사실을 알려준다.
▪
User가 Calendar이름을 입력한다.
▪
start버튼을 누른다.
◦
서버에서 달력 생성을 실패한 경우
▪
ErrorView로 전환된다.
▪
다시 EntranceView로 돌아와서 메인 시나리오를 반복한다.
#2) getCalendar
•
요약 : Calendar id를 활용해서 Calendar정보를 가져온다
•
스코프 : Calendar System / User level
•
상태
•
actor : user
•
precondition : #1을 통해 전환된 상태이거나 url/:id 를 통해 direct로 접근한 상태이다
•
trigger : x
•
if success : Calendar정보를 가져온다.
•
if fail : Calendar정보를 가져오지 못한다.
•
메인시나리오
1.
User혹은 System에 의해 url/:id로 접근한다.
2.
DB로부터 id에 해당하는 Calendar정보를 가져온다.
3.
Calendar정보에서 name과 users를 활용해 CalendarView에 시각적으로 표현해준다.
•
서브시나리오
2.
DB에 요청한 id에 해당하는 Calendar가 존재하지 않은 경우
•
404 Error를 응답받는다.
•
ErrorView로 전환한다.
2. Server가 동작하고 있지 않은 경우
•
500 Error를 응답받는다.
•
ErrorView로 전환한다.
#3) createUser
•
요약 : Calendar에 새 User를 만든다.
•
스코프 :
•
상태
•
actor
•
precondition : #1에 의해 Calenar가 생성되어 있어야 한다.
•
trigger : createUser 버튼을 클릭한다.
•
if success : Calendar의 Users배열에 새로 생성된 User를 추가한다.
•
if fail : User를 생성하지 않고 기존의 상태로 돌아간다.
•
메인시나리오
1.
createUser버튼을 누른다.
2.
AddUser_Modal을 띄운다.
3.
생성할 User의 정보를 입력한다.
4.
확인 버튼을 누른다.
5.
정상적으로 User가 생성되어 Calendar의 Users에 추가된다.
•
서브시나리오
3.
생성할 유저의 이름을 입력하지 않은 경우
•
alert message를 통해 이름이 비어있다는 메세지를 출력한다.
3. 생성할 유저의 색깔을 입력하지 않은 경우
•
alert message를 통해 색깔이 선택되지 않았다는 메세지를 출력한다.
3.
생성할 유저의 이름이 이미 Calendar의 Users에 존재하는 경우
•
alert message를 통해 중복된 name이라는 메세지를 출력한다.
#4) deleteUser
•
요약 : Calendar에 기존에 있던 User를 삭제한다.
•
스코프
•
상태
•
actor
•
precondition : #1에 의해 Calendar가 생성되어 있고, 해당 Calendar에서 #3에 의해 User가 생성되어 있어야 한다.
•
trigger : delUser버튼을 누른다.
•
if success : Calendar의 Users배열에서 선택한 User를 지운다
•
if fail : Calendar의 Users배열에서 선택한 User를 지우지 않는다.
•
메인시나리오
1.
userDelete버튼을 누른다.
2.
•
서브시나리오
#5) updateUser
•
요약
•
스코프
•
상태
•
actor
•
precondition
•
trigger
•
if success
•
if fail
•
메인시나리오
•
서브시나리오
#6) deleteCalendar
•
요약
•
스코프
•
상태
•
actor
•
precondition
•
trigger
•
if success
•
if fail
•
메인시나리오
•
서브시나리오
#7) updateCalendar
•
요약
•
스코프
•
상태
•
actor
•
precondition
•
trigger
•
if success
•
if fail
•
메인시나리오
•
서브시나리오
#8) changeThemeMode
•
요약
•
스코프
•
상태
•
actor
•
precondition
•
trigger
•
if success
•
if fail
•
메인시나리오
•
서브시나리오
#9) updateSelectedUserState
•
요약
•
스코프
•
상태
•
actor
•
precondition
•
trigger
•
if success
•
if fail
•
메인시나리오
•
서브시나리오
#10) updateSelectedDateState
•
요약
•
스코프
•
상태
•
actor
•
precondition
•
trigger
•
if success
•
if fail
•
메인시나리오
•
서브시나리오
#11) updateTimePickerState
•
요약
•
스코프
•
상태
•
actor
•
precondition
•
trigger
•
if success
•
if fail
•
메인시나리오
•
서브시나리오
Domain Analysis
DB Interface
•
User : 회원 정보를 가지는 interface
id | string |
name | string |
color | string |
schedule | Schedule[] |
•
Calendar : 목적에 맞게 생성된 캘린더의 정보를 가지는 interface
id | string |
name | string |
start | string |
end | string |
users | User[] |
•
Schedule : 일정의 상태를 가지는 interface
id | string |
start | string |
end | string |
users | User[] |
posibleTime | number[] |
imposibleTime | number[] |
Client Interface
•
Year
month | Month[] |
•
Month
week | Week[] |
month.moment | month.Moment |
•
Week
Day | Day[] |
•
Day
moment | moment.Moment |
•
State
users | User[] |
selectedDate | moment.Moment |
selectedUser | User |
valid | ScheduleValidType |
mode | ThemeType |
•
Action
View
•
Enterance : 캘린더 이름과 생성 버튼이 있는 View
•
Calendar : 캘린더 정보를 가져와 사용자에게 보여주는 View
◦
AddUser_Modal : 사용자를 추가할 때 나오는 Modal View
◦
UserList_Drawer : 특정날짜의 사용자별 일정을 보여주는 Drawer View
◦
TimePicker_Drawer : 일정을 선택할 때, 시간과 상태를 체크할 수 있는 Drawer View
•
Setting : 시스템 테마, 공유 등 설정을 할 수 있는 View
•
Error : 404, 500 등 서버 에러에 대처하기 위한 View
Type
•
ThemeType : ‘light’, ‘Dark’를 가지는 ThemeType
•
ScheduleValidType : ‘Possible’, ‘Imposible’을 가지는 ScheduleValidType
User Interface Prototype
1.
Entrance View
2.
Calendar View
a.
AddUser_Modal
b.
UserList_Drawer
c.
TimePicker_Drawer
3.
Setting View
Glossary
•
Modal
•
Drawer
•