前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[答疑]时间作为执行者的用例有前置条件吗

[答疑]时间作为执行者的用例有前置条件吗

作者头像
用户6288414
发布2019-09-23 14:07:32
6930
发布2019-09-23 14:07:32
举报
文章被收录于专栏:软件方法

a 2019-7-1 13:34

潘老师,想问下时间作为执行者会有前置条件吗?时间是自然流逝,到点执行,我个人觉得是没有前置条件的。举个例子,微信支付的退款,1直连商户系统-受理退款。2时间-处理退款,我们目前写了前置条件,这样对吗

黑衣道人:

前置条件是执行前进行判断的条件,时间到先对前置条件进行判断,不满足就不执行或抛出异常,所以,时间作为执行者,也是有前置条件的。

a:

1,书中写法,步骤一,当到达时间周期时,这句话。如果有前置条件还会到步骤一吗。2,微信支付系统的内部规范,时间的步骤一,时间驱动系统做某事,这个时候是先有前置条件还是步骤一?

潘加宇:

前置条件如果不满足,系统不响应执行者的请求。

注意,是不响应,而不是"验证输入不合法给出异常结果"。

事实上想到这里就够了,再往下想就不是需求了。

你可能想:不响应执行者的请求怎么实现?爱怎么实现怎么实现呗。

可以像下面那样:

先看执行者是人的情况,第一步"会员选择项目",下一步"系统反馈项目详情",不响应第一步的实现可以是"会员界面"中的ListItem甚至整个ListBox的Enabled为false。

同理,执行者是时间的情况,这时边界类就是"时间接口(定时器)",和上面对应的做法是Timer的Enabled为false,而不是在Tick事件里面验证后拒绝。

为了更方便理解,再补充一下:

用例里面这些概念是借鉴了1986年Bertrand Meyer提出的Design by Contract。以下截屏自Bertrand Meyer的书:

一个栈当前到底是不是满的,和有没有、什么时候有调用者调用put操作没有关系,但是很多书和文章把前置条件误解为对输入参数做检查,例如,对put(x)操作里面的x作检查。

目前的主流编程语言并没有原生支持Design by Contract

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 UMLChina 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档