系统顺序图与操作契约

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档