可到此处下载本文档最新版本:
http://www.umlchina.com/book/softmeth2.pdf
您在阅读《软件方法》时如果发现错误,欢迎通过微信umlchina2告知。如果作者认为有道理,决定在下一次发布时根据您的意见修改,每个错误将付给您5.12元报酬,并在书中说明您的贡献。报酬通过微信支付。
(1)任何您认为的错误都可以,包括错别字。
(2)同一错误仅支付最先指正者报酬。
(3)请根据最新版本作指正。
下册内容目前指正人有(按指正时间排序):吴佰钊、王周文、刘学斌、成文华、黄树成、李蜀斌、杨雪鸿、王书伟、高洪江、张志坚、龙燔、陈文飞。
9.1.6.5 步骤5及其补充约束
用例规约:
5. 系统验证得分达到抽奖要求。
5. 抽奖要求:得分值大于0。
提炼:
这一步没有新的类和属性需要提炼。
9.1.6.6 步骤6及其补充约束
用例规约:
6. 系统随机抽取奖品,将抽中的奖品从奖池移除,保存抽奖结果。
6. 抽奖结果=学员+奖品+抽奖时间。
6. 抽奖规则:抽奖时,如果奖池有多于一件奖品,而且价值不完全相同,那么把价值最大的奖品抽中的概率调低为其他奖品的一半。
提炼:
*奖品
提炼类“奖品”。
*奖池
提炼类“奖池”。“奖池”和“奖品”关联,“奖池”多重性为1,“奖品”多重性为*。
*抽奖结果
提炼类“抽奖”。“抽奖”和“奖品”关联,“抽奖”多重性为1,“奖品”多重性为0…1。“抽奖”和“回答”关联,“抽奖”多重性为0…1,“回答”多重性为1。
*抽奖时间
提炼为“抽奖”的属性“时间”。
*价值
提炼为“奖品”的属性。
*概率
这是若干类和属性计算得到的结果,不需要提炼为类和属性。
图9-20 抽奖
9.1.6.7 步骤7及其补充约束
用例规约:
7. 系统反馈抽奖结果、剩余奖品和学员成绩排行。
7. 抽奖结果=奖品名称。
7. 剩余奖品=奖品名称+剩余数量。按奖品的价值降序排序。
*价值:每种奖品会设置一个价值,现金的价值为现金的金额,实物的价值为该实物的估值,未抽到奖励视为抽到价值为0的奖品。
7. 成绩排行=学员姓名+成绩+中奖次数,先按成绩降序排序,再按中奖次数降序排序,最后按学员姓名升序排序。
*中奖:抽到的奖品价值大于0,为中奖。
7. 学员成绩为当前活动中,学员所提交回答的得分总和。
*某一次公开课或内训称为一次活动,一次活动可能会持续几天。在活动过程中,老师会出很多组试题(或者说,出很多张试卷),然后针对每道题点名学员回答问题。
*学员可以参加很多次活动。例如,两个月前参加了一次“软件需求设计方法学全程实例剖析”培训,这个月又参加“业务建模和需求高阶”培训。此处的学员成绩指在单个活动内的成绩,不跨活动累加。
提炼:
*剩余奖品、剩余数量
这两个概念如何处理,要看“奖品”如何定义。可以把“剩余数量”作为某个类的属性,也可以通过计算“奖池”关联的“奖品”对象数量得到。此处暂时放下,等到处理完其他概念后,我们再回来看这两个概念。
*奖品名称
给“奖品”加一个属性“名称”。
*现金的价值为现金的金额,实物的价值为该实物的估值
说明奖品分为两种,一种是现金,一种是实物。此处可以用泛化,也可以用关联,如图9-21。
图9-21 两种奖品
浏览用例规约,判断“奖品”为“现金”还是“实物”不存在系统需要关注的复杂行为差异,因此选择图9-21右侧的做法,添加“奖品类型”类,“奖品类型”和“奖品”关联,“奖品类型”的多重性为1,“奖品”的多重性为*。
*学员成绩
某次“活动”的“学员成绩”可以通过累计“学员”参加该次“活动”的所有“回答”的“得分”计算,不需要提炼新的类或属性。
*活动
提炼为类“活动”。“活动”和“学员”关联,多重性均为*,“活动”和“试卷”关联,多重性均为*。
*中奖次数
可以通过“学员”的“抽奖”统计,不需要提炼新的类或属性。
图9-22 活动
9.1.6.8 步骤8-11及其补充约束
用例规约:
8. 系统验证抽中的奖品为现金类型且存在学员的微信号。
9. 系统请求微信向学员的微信号发红包。
10. 系统保存发奖结果。
11. 系统反馈发奖结果。
9. 红包金额为现金奖品的价值。
10. 回答+是否发放成功+发放时间。
11. 是否发放成功。
提炼:
*微信号
提炼为“学员”的属性。
*微信
“微信”是一个外系统,提炼出边界类“微信接口”。
*发奖结果
提炼“发奖”类。“发奖”和“抽奖”关联,“发奖”的多重性为0…1,“抽奖”的多重性为1。
*是否发放成功+发放时间
提炼为“发奖”的属性。
图9-23 发奖
到此,该用例规约的所有可提炼的内容已提炼完毕。
9.1.6.9 进一步思考
(1)奖品