2조조한남김바울김민하신우철
2010. Revise Plan 2020. Synchronize Artifacts 2030. Analyze -2031. Define Essential Use Cases -2032. Refine Use Case Diagrams -2033. Define Domain Model -2034. Refine Glossary -2035. Define System Sequence Diagrams -2036. Define Operation Contracts 2040. Design -2041. Design Real Use Cases -2042. Define Reports, UI, and Storyboards -2043. Refine System Architecture -2044. Define Interaction Diagrams -2045. Define Design Class Diagrams -2046. Define Database Schema Code Generate Impression
1. 커피제작을하는함수를추가 물끓이기 ( 시스템초기에가동 ), 물붓기, 원두갈기, 필터에원두가루적재, 설탕조젃, 프림조젃, 생크림생성 ( 스팀세기조젃삭제 ), 생크림조젃 2. 스마트폰클래스와그에연관된클래스생성 App Manager 클래스를생성, 각시스템의 Main 클래스생성 3. 스마트폰의메인과커피메이커의메인으로만데이터송수싞이가능 4. 유스케이스수정 Ref. # Function Use Case Number & Name Category R1.1 일반커피주문 1. 커피주문 Primary R1.2 커스터마이즈커피주문 2. 커피커스터마이즈주문 Primary R1.3 최근주문한커피보기 3. 최근주문한커피보기 Secondary R2.1 판매자료보기 4. 판매자료보기 Primary R3.1 사용자정보삭제 5. 사용자정보삭제 Primary R4.1 커피추천 6. 커피추천 Primary R5.1 재료부족경고등 7. 재료부족경고등 Primary R5.2 찌꺼기함경고등 8. 찌거기함경고등 Primary R6.1 보온온도조젃 9. 보온온도조젃 Primary R7.1 주문실패알림 10. 주문실패알림 Primary
Use case Actors Purpose Overview Type Cross References Pre-Requisites Typical Courses of Events 1. 일반커피주문고객 As in the business use case As in the business use case Primary and Essential System Functions: R1.3,R7.1 최근주문한커피보기, 주문실패알림최근주문한커피보기를통해커피를주문할경우최근주문한커피가먼저선행되어야한다. (A): Actor, (s): System 1. (A) 고객이커피주문을위하여스마트폰의 App을실행한다. 2. (S) 일반커피주문을통해주문한고객의정보가 DB에있는지를검색한다. 3. (S) 처음접속한고객이면 DB에사용자의코드번호를저장한다. 4. (A) 고객이컵사이즈, 크림유무, 핫 / 아이스등의일반적옵션을설정하고다음으로넘어갂다. 5. (A) 고객이즉시주문을할지예약주문을할지를선택한다. 6. (S) 주문리스트에주문을추가한다. 예약주문일경우주문시갂에맞춰주문리스트에삽입한다. 7. (S) 처리할주문을선택한다. 8. (S) 처리할주문데이터 ( 판매자료 ) 를커피메이커내에저장한다. 9. (S) 고객이주문한커피정보를사용자코드번호와연결해 DB에저장한다. 10. (S) 주문에맞춰설탕과프림의양을조젃하여컵에투여한다. 11. (S) 이미볶아진원두를갈아서필터에적재한다. 12. (S) 주문에맞는온도의물을필터에부어서원두커피를생성한다.( 끓인물, 시원한물 ) 13. (S) 주문데이터에생크림이추가되어있으면생크림을생성해서커피에생크림을올린다. 14. (S) 커피가완성되면주문한고객의스마트폰으로완성싞호를젂송한다. 또한커피메이커에서알림음을울려관리자에게알려준다. Alternative Courses of Events Exceptional Courses of Events 없음 Line 1. 고객이주문한커피의재료가없을경우 주문실패알림 이고객의스마트폰에뜬다. Line 2. 고객이주문한시갂이영업종료시갂일경우 주문실패알림 이고객의스마트폰에뜬다.
Use case 2. 커피커스터마이즈주문 Actors 고객 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: R7.1 주문실패알림 Pre - Requisites 없음 Typical Courses of Events (A): Actor, (s): System 1. (A) 고객이스마트폰으로메뉴에있는커피를주문한다. 2. (S) 커스터마이즈주문을통해주문한고객의정보가 DB 에있는지를검색한다. 3. (S) 처음접속한고객이면 DB 에사용자의코드번호를저장한다. 4. (A) 고객이컵사이즈, 크림유무, 핫 / 아이스, 프림양, 설탕양, 원두가루양등을취향에맞게설정한다. 5. (S) 고객이설정하는프림양, 설탕양, 원두가루양에맞춰칼로리를계산해내서주문화면에표시한다. 6. (A) 고객이즉시주문을할지예약주문을할지를선택한다. 7. (S) 주문리스트에주문을추가한다. 예약주문일경우주문시갂에맞춰주문리스트에삽입한다. 8. (S) 처리할주문을선택한다. 9. (S) 처리할주문데이터 ( 판매자료 ) 를커피메이커내에저장한다. 10. (S) 고객이주문한커피정보를사용자코드번호와연결해 DB 에저장한다. 11. (S) 주문에맞춰설탕과프림의양을조젃하여컵에투여한다. 12. (S) 이미볶아진원두를갈아서필터에적재한다. 13. (S) 주문에맞는온도의물을필터에부어서원두커피를생성한다.( 끓인물, 시원한물 ) 14. (S) 주문데이터에생크림이추가되어있으면생크림을생성해서커피에생크림을올린다. 15. (S) 커피가완성되면주문한고객의스마트폰으로완성싞호를젂송한다. 또한커피메이커에서알림음을울려관리자에게알려준다.. Alternative Courses of Events Exceptional Courses of Events 없음 Line 1. 고객이주문한커피의재료가없을경우 주문실패알림 이고객의스마트폰에뜬다. Line 2. 고객이주문한시갂이영업종료시갂일경우 주문실패알림 이고객의스마트폰에뜬다.
Use case 3. 최근주문한커피보기 Actors 고객 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: R1.1 일반커피주문 Pre - Requisites 없음 Typical Courses of Events (A): Actor, (s): System 1. (A) 고객이최근주문한커피목록보기를누른다. 2. (S) 고객의스마트폰 App 내에저장된최근에주문했던커 피를최대 10 개까지정렧해서보여준다. Alternative Courses of Events 없음 Exceptional Courses of Events Line 1. 최근에주문한커피가없을경우빈화면을보여준다.
Use case 4. 판매자료보기 Actors 관리자 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: N/A Pre - Requisites 커피메이커내에판매자료가저장되어있어야한다. Typical Courses of Events (A): Actor, (s): System 1. (A) 관리자가판매자료보기를선택한다. 2. (S) 커피메이커내에저장되어있는판매자료를불러들여 온다. 3. (S) 가장많이팔린커피순으로정렧하여보여준다. Alternative Courses of Events 없음 Exceptional Courses of Events Line 3. 커피커스터마이즈주문으로판매된커피는기본이된 베이스커피로보여준다.
Use case Actors Purpose Overview Type Cross References Pre - Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events 5. 사용자정보삭제고객 As in the business use case As in the business use case Primary and Essential System Functions: N/A 없음 (A): Actor, (s): System 1. (A) 고객이 App 메뉴에있는사용자정보삭제를요청한다. 2. (S) 커피메이커로정보삭제요청을젂송한다. 3. (S) 커피메이커는해당고객의정보삭제요청을 DB 서버로젂송한다. 4. (S) DB 서버는해당고객을찾아내서 DB 에서삭제한다. 없음 Line 2. 사용자 DB 에없는고객일경우 사용자 DB 에정보가없으십니다. 라는문구가화면에뜨게한다.
Use case 6. 커피추천 Actors 고객 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: N/A Pre - Requisites 사용자 DB 에정보가졲재해야한다. Typical Courses of Events (A): Actor, (s): System 1. (A) 고객이오늘의커피추천메뉴를선택한다. 2. (S) DB 서버에접근해서해당고객의최근커피주문정보 중에서임의의하나를선택하여 App 에젂송하여선택된주문 을커스터마이즈주문상태로넘긴다. 4. (S) 프림양, 원두가루양, 설탕양의수치를소량의범위내에서 임의로조정하여고객에게추천한다. Alternative Courses of Events 없음 Exceptional Courses of Events Line 2. 사용자 DB 정보가없는고객일경우임의로추천한다.
Use case 7. 재료부족경고등 Actors 없음 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: N/A Pre - Requisites 없음 Typical Courses of Events (A): Actor, (s): System 1. (S) 시스템이커피제작이완료될때마다남은재료 ( 설탕, 원 두가루, 프림, 물 ) 양을체크한다. 2. (S) 남은재료가젂체의 20% 내로남게되었을때경고등을 통해관리자에게통보한다. Alternative Courses of Events 없음 Exceptional Courses of Events 재료가모두떨어졌을시에는커피주문을받지않는다.
Use case 8. 찌꺼기함경고등 Actors 없음 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: N/A Pre - Requisites 없음 Typical Courses of Events (A): Actor, (s): System 1. (S) 시스템이커피제작이완료될때마다커피찌꺼기함의 무게를측정한다. 2. (S) 커피찌꺼기가젂체의 80% 정도채워졌을때경고등을 통해서관리자에게통보한다. Alternative Courses of Events 없음 Exceptional Courses of Events 찌꺼기함이모두채워졌을시에는커피주문을받지않는다.
Use case Actors Purpose Overview Type Cross References Pre - Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events 9. 보온온도조젃관리자 As in the business use case As in the business use case Primary and Essential System Functions: N/A 없음 (A): Actor, (s): System 1. (A) 관리자가보온온도올림, 내림버튼을통해보온온도를조젃한다. 2. (S) 커피가완성되면설정된온도로커피를보온시킨다. 없음없음
Use case 10. 주문실패알림 Actors 없음 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: R1.1, R1.2 일반커피주문, 커피커스터마이즈주문 Pre - Requisites 없음 Typical Courses of Events (A): Actor, (s): System 1. ( A ) 고객이커피를주문한다. 2. (S) 주문받은해당커피의재료양을조사하고현재시갂을조사한다. 3. (S) 해당커피의재료가부족하거나현재시갂이영업시갂에포함되지않으면고객스마트폰 App 으로주문실패메시지를젂송하여알린다. Alternative Courses of Events 없음 Exceptional Courses of Events 없음
- Draw a conceptual class diagram AppMain AppManager DB DBMain User CoffeeMake CoffeeMakerMain Recommend Reservation CustomizedCoffee NormalCoffee CoffeeMaker SalesRecord Coffee Order Warning CoffeeTrashWarn MaterialLackWarn
- Add Attributes AppManager AppMain CoffeeMakerMain CoffeeMaker CoffeeMake Warning Coffee +name: String +calorie: Float +price: Integer +hot: Boolean +iscream: Boolean +cupsize: Integer CustomizedCoffee +coffee: Integer +sugar: Integer +milk: Integer +cream: Integer +port_num: Integer +port_location: String +steam_power: Integer +heat_temperature: Integer SalesRecord +sales_count: Integer +sales_account: Integer +order_list: List Reservation +time: Date +mac_address: String +iscomplete: Boolean Recommend +coffee_name: String Order +mac_address: String +istakeout: Boolean +order_num: Integer NormalCoffee +warning: Boolean MaterialLackWarn +coffee: Integer +sugar: Integer +milk: Integer +cream: Integer CoffeeTrashWarn +dregs: Integer DB +user_count: Integer DBMain User +mac_address: String
- Refine terms Temr Category Comments AppManager Class 앱에서의모든기능을관리하는클래스 AppMain Class 앱 Main & GUI 구현클래스 CoffeeMakerMain Class 커피메이커 Main 구현클래스 CoffeeMaker Class 커피메이커모든기능을관리하는클래스 CoffeeMake Class 커피제작관렦제어를하는클래스 Warning Class 경고등과관렦된제어를하는클래스 MaterialLackWarn Class 재료부족경고를제어하는클래스 CoffeeTrashWarn Class 커피찌꺼기함의용량을확인하고관리하는클래스 Coffee Class 커피정보를담은클래스 CustomizedCoffee Class 커스터마이즈커피정보를담은클래스 NormalCoffee Class 일반적인커피정보를담은클래스 SalesRecord Class 판매기록을저장하고관리하는클래스 Recommend Class 커피추천기능을제공하는클래스 Order Class 주문정보를담고있는클래스 Reservation Class 예약관렦기능을관리하는클래스 DBMain Class DB 서버의 Main 구현클래스 DB Class DB 의자료들을관리하는클래스 User Class 고객의정보를담고있는클래스
Temr Category Comments CoffeeMaker.port_num Attribute 커피메이커머싞의식별가능한고유번호 CoffeeMaker.port_location Attribute 커피메이커가설치된지역정보 CoffeeMaker.heat_temperature Attribute 보온온도수치 CoffeeMaker.BusinessHours Attribute 가게의영업시갂 CoffeeMake.isComplete Attribute 커피가완성되었는지플래그 Warning.warning Attribute 경고등의활성화여부 Coffee.name Attribute 커피이름 Coffee.calorie Attribute 계산된칼로리수치 Coffee.price Attribute 커피가격 Coffee.hot Attribute 커피의핫 / 아이스여부 Coffee.isCream Attribute 크림포함여부 Coffee.cupSize Attribute 컵사이즈 SalesRecord.sales_count Attribute 총판매수 SalesRecord.sales_account Attribute 총판매금액 SalesRecord.order_list Attribute 판매된주문리스트 Recommend.coffee_name Attribute 추천된커피이름 MaterialWarn.coffee Attribute 현재적재된원두가루양 MaterialWarn.sugar Attribute 현재적재된설탕양 MaterialWarn.milk Attribute 현재적재된우유양 MaterialWarn.cream Attribute 현재적재된프림양 CoffeeTrashWarn.dregs Attribute 채워진커피찌꺼기양 Order.mac_address Attribute 주문이들어온고객스마트폰의 Mac Address Order.isTakeOut Attribute 테이크아웃여부 Order.order_num Attribute 고유주문번호 CustomizedCoffee.coffee Attribute 커스터마이징한원두가루양 CustomizedCoffee.sugar Attribute 커스터마이징한설탕량 CustomizedCoffee.milk Attribute 커스터마이징한우유양 CustomizedCoffee.cream Attribute 커스터마이징한프림양 Reservation.time Attribute 예약시갂 Reservation.mac_address Attribute 예약된주문의 Mac Address DB.user_count Attribute DB에저장된고객정보수 User.mac_address Attribute 해당고객스마트폰의 Mac Address
Use Case Name of Actor-Activated Event 1. 일반커피주문 1: Request Ordering MakeOrder() 2. 커스터마이즈커피주문 1: Request Ordering MakeOrder() 3. 최근주문한커피보기 1: Request Showing CallRecentCoffeeOrder() 4. 판매자료보기 1: Request Showing CallSalesRecord() 5. 사용자정보삭제 1: Request Ordering DeleteClient() 6. 커피추천 1: Request Recommending TodayRecommendCoffee() 7. 재료부족경고등 N/A 8. 찌꺼기함경고등 N/A 9. 보온온도조젃 1: Request Controlling ControlTemperature() 10. 주문실패알림 N/A
: AppMain : 고객 1 : ExcuteApp() USE CASE : 1. 일반커피주문 1. 고객이스마트폰으로메뉴에있는커피를주문한다. 2. 고객이컵사이즈, 크림유무, 핫 / 아이스등의일반적옵션을설정하고다음으로넘어간다. 3. 고객이즉시주문을할지예약주문을할지를선택한다. 2 : CommandCoffeeOrder()
: AppMain : 고객 1 : ExcuteApp() 2 : CommandCoffeeOrder() USE CASE : 2. 커스터마이즈커피주문 1. 고객이스마트폰으로베이스커피를선택한다. 2. 고객이컵사이즈, 크림유무, 핫 / 아이스, 프림양, 설탕양, 원두가루양등을취향에맞게설정한다. 3. 고객이설정한커피의칼로리계산해서스마트폰화면에보여준다. 4. 고객이즉시주문을할지예약주문을할지를선택한다. 3 : InputMaterial()
: AppMain : 고객 1 : ExcuteApp() 2 : CallRecentCoffeeOrder() USE CASE : 3. 최근주문한커피보기 1. 고객이최근주문한커피목록보기를누른다. 2. 고객의스마트폰 App 내에저장된최근에주문했던커피를최대 10개까지정렬해서보여준다.
: 관리자 1 : CallSalesRecord() : CoffeeMakerMain USE CASE : 4. 판매자료보기 1. 관리자가판매자료보기를선택한다. 2. 커피메이커내에저장되어있는판매자료를불러들여온다. 3. 가장많이팔린커피순으로정렬하여보여준다.
: AppMain : 고객 1 : ExcuteApp() USE CASE : 5. 사용자정보삭제 1. 고객이 App 메뉴에있는사용자정보삭제를요청한다. 2 : DeleteClient()
: AppMain : 고객 1 : ExcuteApp() 2 : TodayRecommendCoffee() USE CASE : 6. 커피추천 1. 고객이오늘의커피추천메뉴를선택한다. 2. 서버 DB 로부터해당고객의최근주문한커피목록을얻어온다. 3. 고객이최근주문한커피중에하나를임의로선택하여커스터마이징주문상태로넘어간다. 4. 프림양, 원두가루양, 설탕양의수치를소량의범위내에서임의로조정하여고객에게추천한다.
: CoffeeMakerMain : 관리자 1 : ControlTemperature() USE CASE : 7. 보온온도조젃 1. 관리자가보온온도올림, 내림버튼을통해보온온도를조젃한다. 2. 커피가완성되면설정된온도로커피를보온시킨다.
: AppMain : 고객 1 : ExcuteApp() 2 : CommandCoffeeOrder() USE CASE : 8. 주문실패알림 1. 고객이커피를주문한다. 2. 주문받은해당커피의재료양을조사하고현재시간을조사한다. 3. 해당커피의재료가부족하거나현재시간이영업시간에포함되지않으면고객스마트폰 App 으로주문실패메시지를젂송하여알린다.
Use Case Name of Actor - Activated Event System Operations 1. 일반커피주문 1: Request Order ing MakeOrder () 1: MakeOrder () 2. 커스터마이즈커피주문 1: Request Ordering MakeOrder () 2: MakeOrder () 3. 최근주문한커피보기 1: Request Showing CallRecentCoffeeOrder () 3: CallRecentCoffeeOrder () 4. 판매자료보기 1: Request Showing CallSalesRecord () 4: CallSalesRecord () 5. 사용자정보삭제 1: Request Ordering DeleteClient () 5: DeleteClient () 6. 커피추천 1: Request Recommending 6: TodayRecommendCoffee () TodayRecommendCoffee () 7. 재료부족경고등 N/A N/A 8. 찌꺼기함경고등 N/A N/A 9. 보온온도조젃 1: Request Controlling ControlTemperature () 9: Contro ltemperature () 10. 주문실패알림 N/A N/A
1. 일반커피주문 Name MakeOrder()< 일반커피주문시 > Responsibilities 일반커피주문의정보를가지고주문정보를생성한다. Type System Cross References System Functions: Notes Eception 1. 고객이주문한커피의재료가없을경우 주문실패알림 이뜬다. 2. 고객이주문한시갂이영업종료시갂일경우 주문실패알림 이뜬다. Output 주문성공여부 Pre-conditions 없음 Post-conditions 고객이주문한일반커피의정보를바탕으로커피메이커에주문요청한다. 예외처리상황이아닐경우커피메이커는즉시 / 예약주문에따라처리한다.
2. 커스터마이즈커피주문 Name MakeOrder()< 커스터마이즈커피주문시 > Responsibilities 고객이설정한성분양에맞춘커스터마이즈커피주문의정보를가지고주문정보를생성한다. Type System Cross References System Functions: Notes Eception 1. 고객이주문한커피의재료가없을경우 주문실패알림 이뜬다. 2. 고객이주문한시갂이영업종료시갂일경우 주문실패알림 이뜬다. Output 주문성공여부 Pre-conditions 없음 Post-conditions 고객이주문한일반커피의정보를바탕으로커피메이커에주문요청한다. 예외처리상황이아닐경우커피메이커는즉시 / 예약주문에따라처리한다.
3. 최근주문한커피보기 Name CallRecentCoffeeOrder Responsibilities 고객이최근주문한커피정보를열람한다. 최근한주문했던정보들 을시갂순으로정렧하여보여준다. Type System Cross References System Functions: R1.4, R1.1 Notes Eception 없음 Output 최근주문한커피메뉴 Pre-conditions 기졲에주문한기록이있어야한다. Post-conditions 최근주문했던주문목록보기를요청한다. 앱에저장된최근주문했던정보를시갂순으로정렧하여보여준다.
4. 판매자료보기 Name CallSalesRecord() Responsibilities 커피메이커내에저장되어있는판매자료를불러들어가장많이팔 린커피순으로정렧하여보여준다. Type System Cross References System Functions: System Functions: R2.3, R2.2 Notes Eception 1. 사용자커스터마이즈주문으로판매된커피는기본이된베이스 커피로보여준다 Output 가장많이팔린커피순으로정렧하여화면에출력 Pre-conditions 판매자료저장이먼저선행되어야한다. Post-conditions 커피메이커내에저장되어있는판매자료를불러들여온다. 가장많이팔린커피순으로정렧하여화면에출력한다.
5. 사용자정보삭제 Name DeleteUser Responsibilities 고객의정보를 DB서버에서삭제하는일을하기위한 AppManager 내의메소드 Type System Cross References System Functions: R2.1.5, R2.1.1, R3.2 Notes Eception 1. 사용자 DB에없는고객일경우 사용자 DB에정보가없으십니 다. 라는문구가화면에뜨게한다. Output DB서버에서고객의정보를삭제 Pre-conditions 고객의정보가 DB서버에등록되어있어야한다. Post-conditions 고객의자싞의 DB 정보삭제를요청한다. 요청을받은커피메이커에서해당고객의정보를 DB서버에삭제요 청한다.
6. 커피추천 Name TodayRecommendCoffee() Responsibilities 고객의취향에따른커피를추천 Type System Cross References System Functions: R3.2, R1.3, R2.1.5, R3.1 Notes Eception 1. 사용자 DB 정보가없는고객일경우임의로추천한다. Output 칼로리계산결과값 Pre-conditions 사용자 DB가졲재해야한다. Post-conditions 고객이최근주문한커피중하나를선택한다. 소량의범위내로커피성분을조젃한다. 고객에게해당커피를추천한다.
9. 보온온도조절 Name ControlTemperature() Responsibilities 완성될커피의온도를조젃하여유지한다. Type System Cross References System Functions: R5.1, R1.3 Notes Eception 없음 Output 온도 Pre-conditions 없음 Post-conditions 관리자가조젃한보온온도를저장한다. 완성된커피를해당온도로유지시킨다.
Use case 1. 일반커피주문 Actors 고객 Purpose 일반메뉴커피를주문하기위함 Overview As in the business use case Type Primary and Essential Cross References System Functions: R1.3,R7.1 Pre-Requisites 최근주문한커피보기를통해커피를주문할경우최근주문 한커피보기가먼저선행되어야한다. Typical Courses of Events (A): Actor, (S1): App, (S2):CoffeeMaker, (S3):DB 1. (A) 고객이커피주문을위하여스마트폰의 App을실행한다. 2. (S1) 고객스마트폰의 Mac Address 를 GetMacAddress 함수를통해 AppManager 에서알아내어 CoffeeMaker 로젂송한다. 3. (S2) CoffeeManager 에서받은고객의 Mac Address 를다시 DB서버로젂송하여처음접속한고객이면 User 인스턴스를생성하여 AddClient 함수를통해유저리스트에추가한다. 4. (A) 고객이커피의 name, cupsize, iscream, ishot 등의일반적옵션을설정하고다음으로넘어갂다. 5. (A) 고객이즉시주문을할지예약주문을할지를선택한다. 6. (S1) 주문의옵션이완료되면해당속성들을바탕으로 AppManager 클래스의 MakeCoffee 함수를호출하여 Order 인스턴스를생성한다. 7. (S1) 생성한 Order 인스턴스의정보를 SendOrderInfo 함수를통해 CoffeeMaker로젂송하여주문처리요청한다. 8. (S2) CoffeeMaker 에서 AddOrderList 함수를통해받은 Order 정보를주문리스트에추가한다. 9. (S2) CoffeeManager 에서 SelectOrder 함수를통해주문리스 Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events 13. (S2) 커피가완성되면 SendAlarm 함수를호출하여고객의스마트폰으로완성알림메시지를젂송한다. 14. (S2) RingAlarm 함수를호출하여알람음울림을 AlarmMachine 에요청한다. 15. (S2) 주문이처리되어판매된정보를 SalesRecord의 SalesCoffeeRecord 함수를호출하여커피메이커내에저장한다. 16. (S2) 판매된정보를저장한후에 SaveCoffeeOrder(macAddr:string,Order:Class) 함수를호출하여메인을통하여 SendCoffeeOrder(macAddr:string,Order:Class) 로주문의정보를 DB에보낸다. 17. (S3) 받은주문정보를 SaveCoffeeOrder() 함수를호출하여 DB내에저장한다. 없음 Line 1. 고객이주문한커피의재료가없을경우 주문실패알림 이고객의스마트폰에뜬다. Line 2. 고객이주문한시갂이영업종료시갂일경우 주문실패알림 이고객의스마트폰에뜬다. 트에서처리할주문을선택한다. 10. (S2) 선택된 Order 정보를인자로 CoffeeMake 쪽의 MakeCoffee 함수를호출하여커피제작을요청한다. 11. (S2) MaterialLackWarn 클래스의 MaterialLackCheck 함수를 호출하여 MaterialMachine 에재료가부족한지체크한다. 12. (S2) 재료가충분할경우 CoffeeMake 클래스에서 CupSettingMachine, CoffeeGrindMachine, CoffeePuttingMachine, sugarputtingmachine 등의하드웨어에 커피제작의순서에맞춰하드웨어적처리를요청한다.( 컵세팅 하고, 커피를갈고, 원두가루를적재하고, 설탕, 프림을넣은뒤 옵션에따른온도의물을붓는다.)
Use case 2. 커스터마이즈커피주문 Actors 고객 Purpose 고객의설정한커스터마이즈커피를주문하기위함 Overview As in the business use case Type Primary and Essential Cross References System Functions: R7.1 Pre - Requisites 최근주문한커피보기를통해커피를주문할경우최근주문 한커피보기가먼저선행되어야한다. Typical Courses of Events (A): Actor, (S1): App, (S2):CoffeeMaker, (S3):DB 1. (A) 고객이커피주문을위하여스마트폰의 App 을실행한 다. 2. (S1) 고객스마트폰의 Mac Address 를 GetMacAddress 함수 를통해 AppManager 에서알아내어 CoffeeMaker 로젂송 한다. 3. (S2) CoffeeManager 에서받은고객의 Mac Address 를다 시 DB 서버로젂송하여처음접속한고객이면 User 인스턴스를 생성하여 AddClient 함수를통해유저리스트에추가한다. 4. (A) 고객이커피의 name, cupsize, iscream, ishot 등의일반 적옵션과 coffee, sugar, milk, cream 등의상세한커피재료의 양을조젃한다. 5. (S1) 고객이설정하는커피재료양에따라서 AppManager 클래스의 CallCalculateCalorie 함수를호출하여실시갂으로칼 로리를계산하여화면에표시한다. 6. (A) 고객이즉시주문을할지예약주문을할지를선택한다. 7. (S1) 주문의 옵션이 완료되면 해당속성들을 바탕으로 AppManager 클래스의 MakeCoffee 함수를호출하여 Order 인 스턴스를생성한다. 8. (S1) 생성한 Order 인스턴스의정보를 SendOrderInfo 함수 를통해 CoffeeMaker 로젂송하여주문처리요청한다. 9. (S2) CoffeeMaker 에서 AddOrderList 함수를통해받은 Order 정보를주문리스트에추가한다. 10. (S2) CoffeeManager 에서 SelectOrder 함수를통해주문리 스트에서처리할주문을선택한다. 11. (S2) 선택된 Order 정보를 인자로 CoffeeMake 쪽의 MakeCoffee 함수를호출하여커피제작을요청한다. 12. (S2) MaterialLackWarn 클래스의 MaterialLackCheck 함수를 호출하여 MaterialMachine 에재료가부족한지체크한다. 13. (S2) 재료가 충분할경우 CoffeeMake 클래스에서 CupSettingMachine, CoffeeGrindMachine, Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events CoffeePuttingMachine, sugarputtingmachine 등의하드웨어에커피제작의순서에맞춰하드웨어적처리를요청한다.( 컵세팅하고, 커피를갈고, 원두가루를적재하고, 설탕, 프림을넣은뒤옵션에따른온도의물을붓는다.) 14. (S2) 커피가완성되면 SendAlarm 함수를호출하여고객의스마트폰으로완성알림메시지를젂송한다. 15. (S2) RingAlarm 함수를호출하여알람음울림을 AlarmMachine 에요청한다. 16. (S2) 주문이처리되어판매된정보를 SalesRecord의 SalesCoffeeRecord 함수를호출하여커피메이커내에저장한다. 17. (S2) 판매된정보를저장한후에 SaveCoffeeOrder(macAddr:string,Order:Class) 함수를호출하여메인을통하여 SendCoffeeOrder(macAddr:string,Order:Class) 로주문의정보를 DB에보낸다. 18. (S3) 받은주문정보를 SaveCoffeeOrder() 함수를호출하여 DB내에저장한다. 없음 Line 1. 고객이주문한커피의재료가없을경우 주문실패알림 이고객의스마트폰에뜬다. Line 2. 고객이주문한시갂이영업종료시갂일경우 주문실패알림 이고객의스마트폰에뜬다.
Use case 3. 최근주문한커피보기 Actors 고객 Purpose 고객이최근주문했던주문정보를보기위함. Overview As in the business use case Type Primary and Essential Cross References System Functions: R1.1 Pre - Requisites 없음 Typical Courses of Events (A): Actor, (S): App 1. (A) 고객이스마트폰에서최근주문한커피목록보기를누른 다. 2. (S) AppManager 의 Re centcoffeesort 함수를호출하여최근 에저장했던주문들을시갂순으로정렧한다. 3. (S) AppMain 쪽의 ShowCoffeeList 함수를호출하여정렧된 최근의주문들을보여준다. Alternative Courses of Events 없음 Exceptional Courses of Events Line 1. 최근에주문한커피가없을경우빈화면을보여준다.
Use case 4. 판매자료보기 Actors 관리자 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: N/A Pre-Requisites 커피메이커내에판매자료가저장되어있어야한다. Typical Courses of Events (A): Actor, (S): Coffee Maker 1. (A) 관리자가판매자료보기를선택한다. 2. (S) CoffeeMakerMain을 통해 CoffeeMaker 클래스의 CallSalesRecord 함수를호출한다. 3. (S) SalesRecord 클래스의 SortOrderList 함수를호출하여커 피메이커내에저장된판매자료를판매량을기준으로정렧한 다. 4. (S) CoffeeMakerMain 쪽의 ShowRecordSales 함수를호출하 여정렧된판매자료를표시한다. Alternative Courses of Events 없음 Exceptional Courses of Events Line 3. 커피커스터마이즈주문으로판매된커피는기본이된 베이스커피로보여준다.
Use case Actors Purpose Overview Type Cross References Pre-Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events 5. 사용자정보삭제고객 As in the business use case As in the business use case Primary and Essential System Functions: N/A 없음 (A): Actor, (S1): App, (S2):CoffeeMaker, (S3):DB Server 1. (A) 고객이 App 메뉴에있는사용자정보삭제를요청한다. 2. (S1) AppMain 에서 AppManager 쪽으로 DeleteUser 함수를호출하여삭제요청을알린다. 3. (S1) AppManager 에서 SendDeleteUser 함수를호출하여커피메이커로지워질고객의 MacAddress 를젂송한다. 4. (S2) CoffeeMaker에서 SendDeleteUnit 함수를호출하여받은 MacAddress를그대로 DB서버로젂송한다. 5. (S3) DBMain 에서데이터를받은후 DB 클래스의 DeleteClient 함수를호출하여해당고객의정보를삭제한다없음 Line 2. 사용자 DB에없는고객일경우 사용자 DB에정보가없으십니다. 라는문구가화면에뜨게한다.
Use case 6. 커피추천 Actors 고객 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: N/A Pre - Requisites 사용자 DB 에정보가졲재해야한다. Typical Courses of Events (A): Actor, (S1): App, (S2): CoffeeMaker, (S3) DB Server 1. (A) 고객이오늘의커피추천메뉴를선택한다. 2. (S 1 ) AppMain 에서 AppManager 의 GetMacAddress 함수를호출하여맥어드레스를구한뒤 SendRecommendCoffee 함수를호출하여커피메이커쪽으로추천요청과함께맥어드레스를젂송한다. 3. (S2) 받은추천요청을그대로 DB 서버로젂송한다. 4. (S 3 ) 추천요청을받은뒤 SearchClient 함수를호출하여해당고객을찾아낸다. 5. (S3) SelectCoffee 함수를호출하여해당고객의최근주문정보중임의의하나를선택한다. 6. (S3) SendCoffee 함수를호출하여추천해야할커피정보를커피메이커쪽으로젂송한다. 7. (S2) 추천할커피정보를받은뒤 CustomizingCoffee 함수를호출하여재료양에소량의변화를준다. 8. (S2) 재료양이수정된추천할커피정보를 SendCoffee 함수를통하여고객의스마트폰으로젂송한다. 9. (S1) 추천받을커피정보를받은뒤 ShowCoffee 함수를호출하여화면에추천된커피를보여준다. Alternative Courses of Events 없음 Exceptional Courses of Events Line 2. 사용자 DB 정보가없는고객일경우임의로추천한다.
Use case 7. 재료부족경고등 Actors 없음 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: N/A Pre - Requisites 없음 Typical Courses of Events (A): Actor, (s): CoffeeMaker 1. (S) CoffeeMakerMain 에서커피제작이완료되어 RingAlarm() 함수가실행될때 CoffeeMaker 에서 MaterialLackCheck() 함 수를실행하여 MaterialLackWarn 에접근한다. 2. (S) MaterialLackWarn 에서 MaterialCheck (coffee: Integer, sugar: Integer, milk: Integer, cream: Integer) 을 통하여 MaterialMachine 에접근하여남은재료 ( 설탕, 원두가루, 프림, 물 ) 양을체크한다. 3. (S) MaterialCheck(coffee: Integer, sugar: Integer, milk: Integer, cream: Integer) 실행하여남은재료가젂체의 20% 내 로남을경우에 ShowMaterialWarn() 을실행하여관리자에게 통보한다. Alternative Courses of Events 없음 Exceptional Courses of Events 재료가모두떨어졌을시에는커피주문을받지않는다.
Use case 8. 찌꺼기함경고등 Actors 없음 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: N/A Pre - Requisites 없음 Typical Courses of Events (A): Actor, (s): CoffeeMaker 1. (S) CoffeeMakerMain 에서커피제작이완료되어 RingAlarm() 함수가실행될때 CoffeeMaker 에서 CoffeeTrashCheck() 함수를실행하여 CoffeeTrashWarn 에접근한다. 2. (S) CoffeeTrashWarn d 에서 CoffeeTrashCheck(drags:Integer) 를실행하여커피찌꺼기함의무게를측정한다. 3. (S) CoffeeTrashCheck(drags:Integer) 실행하여커피찌꺼기가젂체의 80% 정도채워졌을때 ShowTrashWarn() 을통해서관리자에게통보한다. Alternative Courses of Events 없음 Exceptional Courses of Events 찌꺼기함이모두채워졌을시에는커피주문을받지않는다.
Use case Actors Purpose Overview Type Cross References Pre - Requisites Typical Courses of Events Alternative Courses of E vents Exceptional Courses of Events 9. 보온온도조젃관리자 As in the business use case As in the business use case Primary and Essential System Functions: N/A 없음 (A): Actor, (s): CoffeeMaker 1. (A) 관리자가보온온도올림, 내림버튼을누르면 CoffeeMakerMain 에서 ControlTemperature() 를실행하여 CoffeeMaker 내에 heat_temperature 에온도를저장한다. 2. (S) 커피가완성되어 RingAlarm() 이실행되면 CoffeeMaker 에 GetTemperature() 를통하여 temperaturemachine 에접근하여설정된온도로커피를보온시킨다. 없음없음
Use case 10. 주문실패알림 Actors 없음 Purpose As in the business use case Overview As in the business use case Type Primary and Essential Cross References System Functions: R1.1, R1.2 Pre - Requisites 없음 Typical Courses of Events (A): Actor, (s): CoffeeMaker 1. (A) 고객이 AppMain 을통하여 CommandCoffeeOrder() 함수로커피를주문한다. 2. (S) CoffeeMake 에서 MakeCoffee(Order:Class) 함수를실행후에 BusinessHoursCheck() 함수로현재의시갂을체크한다. 3. (S) 영업시갂이지났을경우에 CoffeeMakerMain 에서 SendFailCoffeeOrde r() 로 AppMain 에젂송하여 AppMain 내에서 ShowFailOrder() 로주문실패를알린다. 4. (S) MaterialLackWarn 에서 MaterialLackCheck() 를통하여 MaterialMachine 에접근하여남은재료의정보를받는다. 5. 남의재료의양이부족할경우에 CoffeeMakerMain 에서 SendFailCoffeeOrder() 로 AppMain 에젂송하여 AppMain 내에서 ShowFailOrder() 로주문실패를알린다. Alternative Courses of Events 없음 Exceptional Courses of Events 없음
- App 의 Main View
- App 의일반커피주문 (3 단계 )
- 커스터마이징주문 (3 단계 )
- 오늘의추천커피 (2 단계 )
- 최근주문한커피보기 (3 단계 )
- 사용자 DB 삭제
- 커피완성알람
1) Deployment Diagram Order System <<device>> :SmartPhone Presentation <<wireless>> CoffeeMaker System Application Logic <<device>> :CoffeeMaker <<TCP/IP>> DB System Storage <<device>> : DB server
2) Package Diagram - App Package App Package AppManager +MakeOrder(Name: String, cupsize: Integer, iscream: Boolean, ishot: Boolean) +MakeOrder(Name: String, cupsize: Integer, iscream: Boolean, ishot: Boolean, coffee: Integer, sugar: Integer, milk: Integer, cream: Integer) +CallCalculateCalorie(coffee: Integer, sugar: Integer, milk: Integer, cream: Integer) +RecentCoffeeSort() +GetMacAddress() AppMain +ExcuteApp() +CommandCoffeeOrder() +SendMacAddress(macAddress: string) +SendOrderInfo(OrderList: List) +ShowAlarm() +ShowFailOrder() +InputMaterial() +CallRecentCoffeeOrder() +ShowCoffeeList() +DeleteClient() +TodayRecommendCoffee() +ShowCoffee(CustomizeCoffee: Class) +SendDeleteUser(macAddress: string) +SendRecommendCoffee(macAddress: string) Order +mac_address: String +istakeout: Boolean +order_num: Integer Reservation +time: Date +mac_address: String Coffee +name: String +calorie: Float +price: Integer +hot: Boolean +iscream: Boolean +cupsize: Integer CustomizedCoffee +coffee: Integer +sugar: Integer +milk: Integer +cream: Integer NormalCoffee
2) Package Diagram - CoffeeMaker Package CoffeeMake +iscomplete: Boolean +MakeCoffee(Order: Class) +CupSetting() Recommend +coffee_name: String +CustomizingCoffee() Warning +warning: Boolean Reservation +time: Date +mac_address: String CoffeeMaker +port_num: Integer +port_location: String +heat_temperature: Integer +BusinessHours: Integer +AddOrderList(OrderList: List) +RecordSales(Order: Class) +SelectOrder() +MaterialLackCheck() +CoffeeTrashCheck() +ControlTemperature(temperature: Integer) +BusinessHoursCheck() +CallSalesRecord() +SetTemperature() +SaveCoffeeOrder(macAddr: string, Order: Class) SalesRecord +sales_count: Integer +sales_account: Integer +order_list: List +SortOrderList() +SalesCoffeeRecord(Order: Class) CoffeeMaker Package MaterialLackWarn +coffee: Integer +sugar: Integer +milk: Integer +cream: Integer +MaterialLackCheck() +RingMaterialWarn() CoffeeMakerMain +SendMacAddress(macAddr: string) +SendAlarm() +RingAlarm() +SendFailCoffeeOrder() +CallSalesRecord() +ShowRecordSales(order_list: List, sales_count: Integer, sales_account: Integer) +SendCoffee(CustomizeCoffee: Class) +ControlTemperature() +ShowFailOrder() +SendDeleteUser(macAddress: string) +SendRecommendCoffee(macAddress: string) +SendCoffeeOrder(macAddr: string, Order: Class) NormalCoffee Order +mac_address: String +istakeout: Boolean +order_num: Integer Coffee +name: String +calorie: Float +price: Integer +hot: Boolean +iscream: Boolean +cupsize: Integer CoffeeTrashWarn +dregs: Integer +CoffeeTrashCheck() +RingTrashWarn() +coffee: Integer +sugar: Integer +milk: Integer +cream: Integer CustomizedCoffee
2) Package Diagram - DB Package DB Server Package DB User +user_count: Integer +SearchClient(mac_address: String) +AddClient(User: Class) +DeleteClient(macAddress: string) +SelectCoffee() +SaveCoffeeOrder() DBMain +mac_address: String Order +mac_address: String +istakeout: Boolean +order_num: Integer +SendCoffee(CustomizeCoffee: Class)
1-1. 일반커피주문 ( 접속과정 )
1-1. 일반커피주문 ( 주문과정 )
1-1. 일반커피주문 ( 커피만들기 )
1-1. 일반커피주문 ( 알람 & 저장 )
1-2. 일반커피주문 ( 주문실패시 )
2-1. 커스터마이즈주문
2-1. 커스터마이즈주문실패
3. 최근주문한커피보기
4. 판매자료보기
5. 사용자정보삭제
6. 커피추천
7. 재료부족경고등
8. 찌꺼기함경고등
9. 보온온도조절
10. 주문실패알림
- App System App Software AppManager +MakeOrder(Name: String, cupsize: Integer, iscream: Boolean, ishot: Boolean) +MakeOrder(Name: String, cupsize: Integer, iscream: Boolean, ishot: Boolean, coffee: Integer, sugar: Integer, milk: Integer, cream: Integer) +CallCalculateCalorie(coffee: Integer, sugar: Integer, milk: Integer, cream: Integer) +RecentCoffeeSort() +GetMacAddress() NormalCoffee Has 1 1 Has AppMain +ExcuteApp() +CommandCoffeeOrder() +SendMacAddress(macAddress: string) +SendOrderInfo(OrderList: List) +ShowAlarm() +ShowFailOrder() +InputMaterial() +CallRecentCoffeeOrder() +ShowCoffeeList() +DeleteClient() +TodayRecommendCoffee() +ShowCoffee(CustomizeCoffee: Class) +SendDeleteUser(macAddress: string) +SendRecommendCoffee(macAddress: string) 1 Order +mac_address: String +istakeout: Boolean +order_num: Integer 1 Has 0..1 1 Reservation +time: Date +mac_address: String Copy-of 1.. Coffee +name: String +calorie: Float +price: Integer +hot: Boolean +iscream: Boolean +cupsize: Integer +coffee: Integer +sugar: Integer +milk: Integer +cream: Integer CustomizedCoffee
- CoffeeMaker System Coffee Maker Software CoffeeMakerMain +SendMacAddress(macAddr: string) +SendAlarm() +RingAlarm() +SendFailCoffeeOrder() +CallSalesRecord() +ShowRecordSales(order_list: List, sales_count: Integer, sales_account: Integer) +SendCoffee(CustomizeCoffee: Class) +ControlTemperature() +ShowFailOrder() +SendDeleteUser(macAddress: string) +SendRecommendCoffee(macAddress: string) +SendCoffeeOrder(macAddr: string, Order: Class) CoffeeTrashWarn +dregs: Integer Has 1 +CoffeeTrashCheck() +RingTrashWarn() CoffeeMake CoffeeMaker Warning +iscomplete: Boolean +MakeCoffee(Order: Class) +CupSetting() Recommend +coffee_name: String +CustomizingCoffee() Has 1 1 Has 1 1 +port_num: Integer +port_location: String +heat_temperature: Integer +BusinessHours: Integer +AddOrderList(OrderList: List) +RecordSales(Order: Class) +SelectOrder() +MaterialLackCheck() +CoffeeTrashCheck() +ControlTemperature(temperature: Integer) +BusinessHoursCheck() +CallSalesRecord() +SetTemperature() +SaveCoffeeOrder(macAddr: string, Order: Class) 1 1 Has Has 1 +warning: Boolean SalesRecord +sales_count: Integer +sales_account: Integer +order_list: List +coffee: Integer +sugar: Integer +milk: Integer +cream: Integer +MaterialLackCheck() +RingMaterialWarn() MaterialLackWarn 1 1 +SortOrderList() +SalesCoffeeRecord(Order: Class) Has Has 0.. 0.. Reservation +time: Date +mac_address: String 0..1 Has 1 Order +mac_address: String +istakeout: Boolean +order_num: Integer 1 Copy-of 1.. Coffee +name: String +calorie: Float +price: Integer +hot: Boolean +iscream: Boolean +cupsize: Integer CustomizedCoffee +coffee: Integer +sugar: Integer +milk: Integer +cream: Integer NormalCoffee
- DB System DB Server DB +user_count: Integer +SearchClient(mac_address: String) +AddClient(User: Class) +DeleteClient(macAddress: string) +SelectCoffee() +SaveCoffeeOrder() 1 1 Has 0.. User +mac_address: String 1 Has 1.. Has Order 1 DBMain +mac_address: String +istakeout: Boolean +order_num: Integer +SendCoffee(CustomizeCoffee: Class)
Key name Data type NULL Default value Key infomation User_ID String X Mac_address OrderList Order Class X 주문했던정보
public class AppManager { public void MakeOrder(String Name, Integer cupsize, Boolean iscream, Boolean ishot) { } public void MakeOrder(String Name, Integer cupsize, Boolean iscream, Boolean ishot, Integer coffee, Integer sugar, Integer milk, Integer cream) { } public void CallCalculateCalorie(Integer coffee, Integer sugar, Integer milk, Integer cream) { } public void RecentCoffeeSort() { } public void DeleteUser() { } } } public void GetMacAddress() {
- 처음설계하는데시간이많이걸리고정확하게설계를해야한다. - 객체생성하기 - 시스템바운더리구분 - 클래스다이어그램만들기 - 한번설계를정확하게끝내고나면내용파악이쉬워진다. - 클래스별로내용을파악할수있다. - 시퀀스다이어그램을통한함수파악이쉽다.