文档章节

细化迭代二——2.需求分析[开单]

z
 zhongpp
发布于 2015/04/15 22:58
字数 2797
阅读 28
收藏 0
点赞 0
评论 3

2.1业务建模

A.业务流程建模

1、使用UML活动图分析目标系统所支持的业务流程

2、文字对流程中每个活动的涉众、业务规则、使用到的单据进行必要的说明。

涉众:客户、店员

业务规则:

使用到的单据:

收款票据,内容包括:店名,店铺地址,开单时间,店员号,商品名,商品单价,商品折扣,商品规格,商品数量,应收金额,实收金额,找零金额等

B. 领域建模

使用UML类图构建领域模型。

2.2需求规格说明

1、系统用例图。绘制整个系统UML用例图

B. 用例详述文本

所有业务活动用例采用详述风格(包括前置条件、后置条件、主事件流,扩展、业务规则等)进行描述。

范围:POS应用

级别:用户目标

主要参与者:收银员

涉众及其关注点:

-收银员:希望能够精准、快速的输入货品信息。希望能够快速的选择折扣权限。

-顾客:希望得到快速的服务。希望便捷、清晰地看到所输入的商品项目和价格。

前置条件:收银员必须经过确认和认证

成功保证:建立新的销售单,准确输入商品信息,准确计算税金,准确计算商品总价。

主成功场景:

1、顾客携带所购商品到收银台通过POS机付款。

2、收银员开始一次新的销售交易。

3、收银员输入商品条码。

4、系统逐条记录出售的商品,并显示该商品的描述、价格和累计额。

收银员重复3~4步,直到输入结束。

5、收银员选择客户可享受的折扣。

6、系统显示总价。

扩展:

*a.店长在任意时刻要求进行超控操作:

  1. 1.   系统进入店长授权模式

  2. 2.   店长执行某一店长模式的操作。如,回复其他登录者中断的销售交易,取消销售交易等。

  3. 3.   系统回复到收银员授权模式。

 

*b.系统在任意时刻失败:

  1. 1.   收银员重启系统,登录,请求恢复上次状态。

  2. 2.   系统重建上次状态

2a.系统在恢复过程中检测到异常:

  1. 1.   系统向收银员提示错误,记录此错误,并进入一个初始状态。

  2. 2.   收银员开始一次新的销售交易。

1a.客户或店长需要恢复一个中断的销售交易。

  1. 1.   收银员执行恢复操作,并且输入ID以提取对应的销售记录。

  2. 2.   系统显示被恢复的销售交易状态及其小计。

2a.未发现对应的销售记录。

1、系统向收银员提示错误

2、收银员可能会开始一个新销售交易,并重新输入所有商品。

  1. 3.   收银员继续该次销售交易。

3a.无效商品ID:

1、系统提示错误并拒绝输入该ID。

2、收银员响应该错误。

2a.商品ID可读(例如通用产品代码):

  1. 1.  收银员手工输入商品ID。

  2. 2.  系统显示商品项目的描述和价格。

2a.无效商品ID:系统提示错误。收银员尝试其他方法。

2b.系统内不存在该商品ID,但是该商品附有价签:

1、收银员请求店长执行超控操作。

2、店长执行相应的超控操作。

3、收银员选择手工输入价格,输入价签上的价格,并且请求对该价目进行标准计税。

2c.收银员通过执行寻找产品帮助以获取正确的商品ID及其价格。

2d.收银员可向其他员工询问商品ID或价格,然后手工输入ID或价格。

3b.当有多个商品项目属于同一类别的时候(如2件相同的上衣),不必记录每个商品项目的唯一标识:

1、收银员可以输入类别的标识和商品的数量。

3-6a.顾客要求收银员从所购商品中去掉一项:

1、收银员输入商品ID并将其删除。

2、系统删除该项目并显示更新后的累计额。

3-6b.顾客要求收银员取消销售交易

1、收银员在系统中取消销售交易。

3-6c.收银员延迟销售交易

1、系统记录销售交易信息,使其能够在任何POS登录中恢复操作。

2、系统显示用来恢复销售交易的“延迟票据”,其中包含商品项目和销售交易ID。

5a.系统检测到与外部税务计算系统服务的通信障碍:

1、系统在POS机节点上重启此服务,并继续操作。

1a.系统检测到该服务无法重启。。

1、系统提示错误。

2、收银员手工计算和输入税金,或者取消该销售交易。

5b.顾客符合打折条件:

1、顾客是会员:

1、输入顾客会员卡号。

2、系统按照打折规则显示折扣总计。

2、顾客符合当季打折要求。

  1. 1.   收银员选择折扣种类。

  2. 2.   系统按照打折规则显示折扣总计。

特殊需求:

  • 使用大尺寸平面显示器触摸屏UI。文本信息课件距离为1米。

  • 在访问远程服务失败的情况下具有比较强的恢复功能。

  • 支持文本显示的语言国际化。

技术与数据变元表:

*a.店长超控需要刷卡(由读卡器读取超控卡)或在键盘上输入授权码。

3a.商品ID可以用条码扫描器或键盘输入。

3b.商品ID可以使用UPC、EAN、JAN或SKU等任何一种编码方式。

5a.顾客的会员号可用刷卡读取或在键盘上输入。

发生频率:可能会不断地发生。


2.3 补充性规格说明

   补充性规格说明补货并确定其他类型的需求,如可靠性(如10000人并发访问)、可用性(如1米外轻松看到文本)、接口(如支持钱箱、支持网银支付接口)等。也可以包括其他跨越多个用例的功能性需求如报表、安全性、日志和错误处理、数据备份、数据导入导出等。

        简要描述本项目最终系统数据查询与报表,系统权限管理的功能需求。也可以描述项目组计划实现的其他需求。

功能性

1、日志和错误处理

在持久性存储中记录所有错误。

2、可插拔规则

在几个用例的不同场景点执行任意一组规则,以支持对系统功能的定制。

3、安全性

任何使用都需要经过用户认证。

可用性

1、店员能够看到POS屏幕显示器的显示:

1米外能够轻松的看到显示器上的文本。

避免使用一般色盲人群难以辨认的颜色。

2、快捷、准确的销售交易处理及其重要,因为购买者希望快速结束支付过程,否则会给他们的购买体验带来负面影响。

3、店员的视线通常停留在顾客或商品,而不是计算机显示器上,因此,提示和告警应该通过声音传递而不仅仅是通过图像传递。

可靠性

1、可恢复性

如果在使用外部服务(支付授权、账务系统等)时出现错误,为了完成销售交易,需要尝试才用本地方案(如存储和转发)加以解决。

2、性能

购买者希望非常快速的完成销售处理过程,因此,外部的支付授权是瓶颈之一,我们的目标是:90%的情况下,能够在1分钟之内完成授权。

3、数据备份

系统支持定时或实时的对数据进行备份,避免数据的破坏或者丢失,如处理销售交易过程中,系统出现闪退或者奔溃情况下导致的数据丢失或者需要重新录入。

可支持性

1、可适应性

不同客户在处理销售时有其特有的业务规则和处理需求。因此,在场景中的几个预定之处(如开始新的销售交易时,增加新的商品时),需要能够启用可插拔的业务规则。

2、可配置性

系统具备一定的可配置能力以适应该店对其POS系统的不同的网络配置需求。

实现约束

使用的程序设计语言为java,其具备易于开发,能够提高远期的移植和可支持性能力。

购买构件

税金计算器,必须支持用于不同国家的可插拔计算器。

免费开源构件

尽可能的使用免费的java 技术开源构件,如:

Maven

easyui

ssh

jquery

jeecg

接口

1、重要硬件和接口

显示屏(显示POS系统)。

条形码激光扫描仪(通常附加在一种特殊键盘上,扫描输入在软件中视为键盘输入)。

票据打印机

信用卡、借记卡读卡器

2、软件接口

由于存在众多外部协作系统,如税金计算器,账务,库存等,我们需要采用不同的接口,接入不同的系统。

所关注领域内的信息

1、信用卡和借记卡支付处理

当支付授权服务批准了信用卡或借记卡支付后,将由支付授权服务而不是买方来负责对卖方的支付。因此,对于每笔支付,卖方都需要将授权服务的未付金额记录于其应收账户下。通常,授权服务在每晚执行电子转账操作,将卖方当天的应收总额转入其账户下,同时对每笔交易扣除(少量的)服务费。

2、销售税

对税金计算采用税金计算器计算。

3、商品标识:UPCEANSKU、条形码和条形码读取装置

UPCEANSKU是常用的三种商品销售标识系统

2.4 系统顺序图与操作契约

系统顺序图(SSD)针对用例的一个特定场景,阐述从参与者到系统的跨越系统边界的事件制品,便于设计阶段为类分配职责。操作契约(Contract of Operation)定义了重要系统事件对领域模型内对象状态的变化。

A. 系统顺序图。使用UML顺序图,选择1个业务活动用例绘制系统顺序图。

B. 操作契约。选择系统顺序图中复杂的系统事件编写操作契约。

如有需要,使用UML状态图对某些关键对象(如订单)状态转换进行建模分析。









© 著作权归作者所有

共有 人打赏支持
z
粉丝 0
博文 3
码字总数 10875
作品 0
广州
加载中

评论(3)

z
zhongpp

引用来自“ooad”的评论

用户不是系统参与者。缺输入设计132132132
用户没参与操作POS,操作的不是cashier么?迭代2是开单,输出不就是商品的description和total么?
ooad
ooad
用户不是系统参与者。缺输入设计132132132
z
zhongpp
统一软件开发过程——RUP

RUP(rational unified process)是一个面向对象且基于网络的程序开发方法论。它是以面向对象方法为基础的方法,RUP坚持以用例驱动,以架构为中心,迭代和增量的开发方法。 下面以思维导图为...

邵鸿鑫
2014/01/27
0
0
oKit V2.7于2013年2月6日正式发布

需求是研发类项目的重中之重,管好需求就意味着项目成功了一半,oKit V2.7提供了灵活强大的需求管理功能可以为您的项目管理提供鼎力支持。 您可以用oKit V2.7版规划产品线,而且需求、缺陷、...

redmaple
2013/02/06
0
0
年度盘点 | 2016年中国云计算十大新闻

刚刚离去的2016,有太多值得我们思考与感悟,回顾过去的2016,是为了开启更好的2017。为此,中国软件网针对移动办公、CRM、HR、云计算、大数据、信息安全等细分领域以及软件园区2016年的发展...

玄学酱
04/23
0
0
PMI-ACP 敏捷项目管理——模拟试题2

1、在项目的Sprint回顾会后,团队成员指出那是抱怨会,不是非常有效。Scrum主管应该怎么做? A 建议团队尊重敏捷宣言原则,解释其属于回顾会的组成部分 B 建议团队成员将他们的观察列入产品待...

隔壁老李头
2017/12/06
0
0
[铁道部信息化管理]核心业务需求及逻辑架构分析

12306的已知信息、数据及问题 需求分析(一)—— 售票系统领域知识(区间票、订票、预留票) 需求分析(二)—— 涉众、用户体验 核心业务需求及逻辑架构分析 需求分析(三)—— 票仓 票仓...

长征6号
2017/01/29
0
0
敏捷开发一千零一问系列之九:总体架构什么时机进行?(上)

这是敏捷开发一千零一问系列的第九篇。(之一,之二,之三,问题总目录) 问题 总体架构设计在什么时机进行?是每个迭代做还是先做完再迭代? 这是少数几个被提到的技术问题。在两天的培训课...

疯狂的艺术家
2012/03/02
0
0
软件开发方法

软件 能够完成预定功能和性能的可执行的计算程序、支持程序正常的运行、以及描述程序的操作和使用文档。 软件工程 将系统的、严格约束的、可量化的方法应用与软件的开发、运行和维护。 软件开...

learn_more
2015/12/01
70
0
OpenCV学习(14) 细化算法(2)

前面一篇教程中,我们实现了Zhang的快速并行细化算法,从算法原理上,我们可以知道,算法是基于像素8邻域的形状来决定是否删除当前像素。还有很多与此算法相似的细化算法,只是判断的条件不一...

迈克老狼1
2013/09/15
0
0
从零开始编写自己的C#框架(4)——文档编写说明

 在写本系列的过程中,了解得越多越不知道从哪里做为切入点来写,几乎每个知识点展开来说都可以写成一本书。而自己在写作与文档编写方面来说,还是一个初鸟级别,所以只能从大方面说说,在本...

技术小胖子
2017/12/08
0
0
敏捷项目管理

为什么要用敏捷?如今,项目管理的步伐越来越快。项目管理需要更灵活、更积极地,响应客户的需求。使用敏捷项目管理方法,项目经理可以在不影响价值、质量和商业规则的前提下实现所有目。 1....

郭恩洲_OSC博客
2016/11/21
29
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python PIPEs

https://www.python-course.eu/pipes.php https://www.tutorialspoint.com/python/os_pipe.htm

zungyiu
2分钟前
0
0
gRPC学习笔记

gRPC编程流程 1. proto文件定义 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 2. 通过构建工具生成服务基类代码-Maven或Gradle 3. 服务端开发 服务端实现类须实现通过构...

OSC_fly
22分钟前
0
0
Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
49分钟前
0
0
Android Studio+NDK+Cmake 移植FFmpeg-4.0.2命令行工具

一、编译 参考大神的帖子,亲测一次编译成功:https://blog.csdn.net/bobcat_kay/article/details/80889398 鉴于以前查文档的经验,这里附上编写例子的时间:2018年7月22日 我用的是ubantu,...

她叫我小渝
49分钟前
0
0
mysql创建数据库

登录MYSQL mysql -u root -p 脚本创建数据库WeChat,并制定默认的字符集是utf8mb4。 CREATE DATABASE Wechat DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; 授权 grant all......

niithub
今天
0
0
svn: Unable to connect to a repository URL 的解决方案

错误图示: 解决办法:清除本地保存的授权信息; 1:右键点击本地文件夹,选择设置; TortoiseSVN -> Settings 2:在弹出的对话框中选择 Saved Data, 右侧选择:授权地方清理所有。 然后点确...

宁哥实战课堂
今天
1
0
sleep与wait的区别

Thread.sleep(XXX)方法消耗CPU吗? 这个知识点是我之前认识一直有错误的一个知识点,在我以前的认识里面,我一直认为Thread.sleep(1000)的这一秒钟的时间内,线程的休眠是一直占用着CPU的时间...

码代码的小司机
今天
1
0
20位活跃在Github上的国内技术大牛 leij 何小鹏 亚信

本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页: https://github.com/lifesinger 微博:@ 玉伯也叫射雕 玉伯(王保平),...

海博1600
今天
1
0
Mybatis收集配置

一、Mybatis取Clob数据 1、Mapper.xml配置 <resultMap type="com.test.User" id="user"> <result column="id" property="id"/> <result column="json_data" property="jsonData" ......

星痕2018
今天
1
0
centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部