系统顺序图与操作契约
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统顺序图与操作契约
处理销售场景的系统顺序图:
系统事件与Use Case描述的对应关系:
处理销售的系统事件有:makeNewSale、enterItem、endSale和makePayment。
makeNewSale系统事件对应用例中的收银员开始新的销售;
enterItem系统事件对应收银员输入商品标识符;
endSale系统事件对应收银员确认结束销售,顾客准备付款;
makePayment系统事件对应客户付款。
简单的纯现金流程销售场景:
1 客户到达POS结账处,要购买商品和/或服务。
2 收银员开始新的销售。
3 收银员输入商品项目标识符。
4 系统记录销售行项目并显示项目描述、价格和运行总计。
收银员重复步骤3-4,直到指示完成。
5 系统显示已计算的总税额。
6 收银员告诉顾客总数,并要求付款。
7 客户付款,系统处理付款。
操作契约:
合同CO1:makeNewSale
操作:makeNewSale()
交叉引用:用例:销售处理
前提条件:无
后置条件:-创建了Sale实例s (实例创建)。
-s与Register相关联(形成关联)。
-s的属性被初始化(修改属性)。
合同CO2:enterltem
操作:enterltem(itemlD:ItemID,quantity:integer)交叉引用:用例:销售处理
前提条件:正在进行销售。
后置条件:
-已创建SalesLineltem实例sli(实例创建)。
-sli与当前的Sale关联(形成关联)。
-sli.quantity赋值为quantity(属性修改)。
-基于itemID匹配,sli与ProductSpecification相关联(形成关联)。
合同CO3:endSale
操作:endSale()
交叉引用:用例:销售处理
前提条件:正在进行销售。
后置条件:-Sale.isComplete变为真(属性修改)。
合同CO4:makePayment
操作:makePayment(amount : money)
交叉引用:用例:销售处理
前提条件:正在进行销售。
后置条件:
-创建了支付实例p(实例创建)。
-p.amountTendered变为amount(属性修改)。
-p与当前的Sale关联(形成关联)。
-当前的Sale与Store关联(形成关联);(将其添加到已完成销售的历史日志中)。
附录1:Use Case描述文档版本历史(若未修改,则直接copy原use case实验内
附录2:Use Case文档内容:
Use Case 描述文档
一:用况图(共计20分)
二:用况详细说明(共计80分)
用况名:
处理销售
描述:
该用况是POS机销售处理过程。
参与者:
主要参与者:
收银员
利益相关者和利益:
收银员:
想要准确、快速的录入,并且没有支付错误,因为现金抽屉的短款会从他/她的工资中扣除。
售货员:
想更新销售佣金。
公司:
希望准确记录交易,满足客户利益。
希望确保记录付款授权服务应收款。
即使服务器组件(例如,远程信用验证)不可用,也需要一些容错性来允许销售继续进行。
需要自动和快速更新的账务和库存信息。
政府税务机关:
想从每笔销售中收税。
可以是多个机构,如国家级、州级和县级。
支付授权服务:
希望以正确的格式和协议接收数字授权请求。
希望准确地计算他们应付给商店的款项。
包含:无。
扩展:无。
泛化:无。
前置条件:
出纳已被识别和认证。
细节:
基本流:
1 客户带着要购买的商品和/或服务到达POS结账处。
2 收银员开始新的销售。
3 出纳输入项目标识符。
4 系统记录销售行项目并显示商品描述、价格和总计。
价格根据一组价格规则计算。
出纳重复步骤3-4,直到输入结束。
5 系统显示已计算的含税总额。
6 出纳告诉顾客总数,并要求付款。
7 客户付款,系统处理付款。
8 系统记录完成的销售,并将销售和付款信息发送到外部会计系统(用于会计和佣金)和库存系统(用于更新库存)。
9 系统显示收据。
10 客户带收据和货物(如有)离开。
替代流程:
*a、系统在任意时刻失败:
支持恢复和正确记帐,确保可以从场景的任何步骤恢复所有事务敏感状态和事件。
1 出纳重新启动系统,登录,并请求恢复以前的状态。
2 系统重建先前状态。
2a. 系统检测到阻止恢复的异常:
1 系统向出纳发出错误信号,记录错误,并进入清除状态。
2 收银员开始新的销售。
3a 无效标识符:
1 系统发出错误信号并拒绝输入。
3b 有多个相同的项目类别(例如,5包素食汉堡),不必记录每一个项目标识:
1 出纳可以输入项目类别标识符和数量。
3-6a:客户要求收银员从所购商品中删除一项:
1 出纳输入要从销售中删除的项目标识符。
2 系统显示更新后的总数。
3-6b.客户告诉出纳取消销售:
1 出纳在系统上取消销售。
3-6c.出纳暂停销售:
1 系统记录销售情况,以便在任何POS终端上检索。
4a. 系统生成的项目价格客户不想要(例如,客户抱怨某些东西,商店提供较低的价格):
1 出纳输入替代价格。
2 系统呈现新价格。
5a.系统检测到无法与外部税务计算系统服务通信:
1 系统重新启动POS节点上的服务,然后继续。
1a.系统检测到服务未重新启动。
1 系统信号错误。
2 出纳可以手工计算并输入税款,也可以取消销售。
5b.客户表示他们有资格享受折扣(例如,员工、首选客户)
1 出纳发出打折请求信号。
2 出纳输入客户身份。
3 系统根据折扣规则显示折扣总额。
5c.客户表示他们的账户中有信用,以申请销售:
1 出纳发出信用请求信号。
2 出纳输入客户身份。
3 系统应用最高价格为0的信用,并减少剩余信用。
6a.客户表示打算用现金支付,但现金不够:
1a.客户使用另一种付款方式。
1b.顾客告诉收银员取消销售。
出纳在系统上取消销售。
7a.现金支付:
1 出纳输入支付的现金金额。
2 系统显示找零金额,并弹出现金抽屉。
3 出纳存入收取的现金,并将余额以现金形式退还给客户。
4 系统记录现金支付。
7b.信用支付:
1 客户输入其信用账户信息。
2 系统向外部支付授权服务系统发送支付授权请求,请求支付审批。
2a.系统检测到无法与外部系统协作:
1 系统向出纳发出错误信号。
2 出纳请求顾客更换支付方式。
3 系统接收付款批准并向出纳发出批准信号。
3a.系统收到付款拒绝:
1 系统向出纳发出拒绝信号。
2 出纳请求顾客更换支付方式。
4 系统记录信用付款,包括付款审批。
5 系统提出了信用支付签名输入机制。
6 收银员要求客户提供信用付款签名。
客户输入签名。
7c.用支票支付…
7d.借记支付…
7e.客户赠送优惠券:
1 在处理付款之前,出纳会记录每张优惠券,系统会酌情降价。
系统出于会计原因记录使用过的优惠券。
1a.输入的优惠券不适用于任何采购项目:
1 系统向出纳发出错误信号。
9a.有产品折扣:
1 系统显示每个有返利项目的返利表和返利收据。
9b.客户要求提供赠品票据(无可见价格):
1 收银员要求收到赠品票据, 系统给出赠品票据。
特殊要求:
大平板显示器上的触摸屏Ul。
文本必须在1米外可见。
信用授权响应在30秒内90%的时间内完成。
不知何故,当对远程服务(如库存系统)的访问出现故障时,我们需要健壮的恢复。
显示文本上的语言国际化。
在第3步和第7步中插入可插入的业务规则。
后置条件:
保存销售。
税款计算正确。
更新账务和库存。
佣金入账。
生成收据。
记录付款授权批准。
例外:
1.远程服务恢复。
2.针对不同的业务需要的定制。
3.出纳员从系统注销后带走现金抽屉的问题。
4.客户可以直接使用读卡器,还是必须由收银员来使用。
5.税法发生变化。
限制:
3a.通过条形码激光扫描仪(如果有条形码)或键盘输入的项目标识符。
3b.项目标识符可以是任何UPC、EAN、JAN或SKU编码方案。
7a.通过读卡器或键盘输入的信用账户信息。
7b.纸质收据上的信用付款签名。
但我们预计,在两年内,许多客户将需要数字签名捕获。
发生频率:可能会不断发生。
注释:无。
附录3:领域模型描述文档版本历史(若未修改,则直接copy原领域模型实验内
附录4:领域模型文档内容:
领域模型概念类描述文档
领域模型:
概念类的简要说明:
Payment:(付款)
amount 为了确定是否提供足够的支付金额,并且计算零头,所以必须记录总额(或“支付总额”)。
Custumer:(顾客)
Product Description:(产品描述)
description 显示在显示器或票据上的描述。
itemID 用于查询ProductDescription。
price 显示商品单价并计算销售总额。
Product Catalog:(产品目录)
Ledger:(总账)
Sale:(销售)
dateTime 票据上一般要显示销售的日期和时间,同时可用于销售分析。
Item:(商品)
Sales Line ltem:(销售商品项)
quantity 当同一种商品售出多个时(例如,5包豆腐),需要记录收银员输入的该商品的数量。
Store:(商店)
address, name 票据上需要有商店的名称和地址。
Register:(终端)
id 终端的编号。
Cashier:(收银员)
id 收银员的编号。
关系及关系描述:
与其他交易相关的交易:Sale Paid-by Payment。
顾客发起的交易:Sale Is-for Customer。
交易在终端上被捕获:Sale Captured-on Register。
总账记录着交易:Sale Logs-completed Ledger。
交易中的项目:Sale Contains Sales Line Item。
交易(或项目)对应的商品:Sales Line ltem Records-sale-of Item。
每个商店有自己的总账记录收账:Ledger Records-accounts-for Store。
产品目录被商店使用:Product Catalog Used-by Store。
产品目录包含产品描述:Product Catalog Contains Product Description。
产品描述描述一个商品项目:Product Description Describes Item。
商品项目放置在商店:Item Stocked-in Store。
商店配备终端:Store Houses Register。
收银员工作在终端上:Cashier Works-on Register。