锁定老帖子 主题:用例和UP的讨论
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-10-27
还是看看我们的用例如何描述的吧。例如提款
客户进入提款流程: 1。客户输入帐号(可以语音,插入卡) 2。客户输入密码(可以视网膜,指纹,或者叠加) 3。客户输入取款金额 4。校验客户输入,根据输入校验取款条件。 取款条件:取款金额小于于该帐号该日剩余提款额, 且取款金额小于银行规定每日最大提款额, 且取款金额小于等于客户账上余额, 且取款金额小于等于可出款金额。 校验通过继续流程,否则提示用户并转向步骤6。 5。提示用户取款成功,将钱给用户。 6。流程结束。 在这个例子中,没有说明是提款机取款还是柜台取款,没有输出输入界面的描述,但是流程可以应用于多种场合。 难道你觉得这样的描述会使得需求变得晦涩,不容易理解? 你也许会问,那么程序员拿到这样的东西如何开发呢? 这个就是我们的隐喻了,一般既然作为应用软件开发商,那么输出输入都是计算机了,所以输入就是键盘或者触摸屏,输出就是屏幕。 |
|
返回顶楼 | |
发表时间:2005-10-27
我的理解是,应该区分两种用例:
1、用户用例:描述用户过去的工作情况,非电子化工作时的情况,使用旧系统时的工作情况 2、开发用例:通过理解用户需求之后,设计人员必须通盘考虑,将用户用例,转换为能够导向设计的“开发用例” 误将用户用例,直接拿来开发,一定会有弊端。 |
|
返回顶楼 | |
发表时间:2005-10-27
dlee 写道 partech 写道 1。基本用例也包含了交互,就不可避免的会限制交互设计,而且使用基本用例会使得需求变得晦涩,不容易理解。
可能我上面说得不够清楚,“基本用例”完全不包含交互,只用来描述用户的意图,比如是“我想要取钱”,而不是“我想要从 ATM 取款机通过敲键盘输入密码的方式取钱”。“基本用例”是和用例不同的概念,Jacobson 大师的用例在《面向使用的软件设计》中被称作“传统用例”。提出“基本用例”这个概念正是为了解决你上面提到的用例太倾向于实现的问题。 赫赫。考察我的记忆力来了 。下面是RUP中找到的描述。 An essential use case focuses on what the interaction is about (called the semantics). Table 6 is the essential version of the interaction. User Intention System Responsibility identify self verify identity offer choices choose dispense cash take cash Table 6: Essential use case for getting cash from an ATM This use case captures the essence of the getting cash interaction. The User Action and System Response headings have been replaced by User Intention and System Responsibility to reflect the change in emphasis. Good interface design centers on user goals and intentions; these are often hidden in conventional use cases. “客户取取款”反映交互达到效果,作为用例名很合适,用例则描述达成目的所需要的交互,可以很抽象也可以很具体。 用例的基本要素就是(交互)interaction,不管它是什么用例。如果说用例发展到不包含交互了,那么它也就不是用例了。 上面的基本用例中我可以这样设计: User Intention System Responsibility offer choices identify self choose verify identity dispense cash take cash 同样能够在不违反业务规则的情况下,达到取款的目的。 尽管这种设计不一定好,但用例确实堵死了很多其他可能的设计,这样一来用例就包含了本来应该在交互设计中做出的决策。 |
|
返回顶楼 | |
发表时间:2005-10-27
庄表伟 写道 我的理解是,应该区分两种用例:
1、用户用例:描述用户过去的工作情况,非电子化工作时的情况,使用旧系统时的工作情况 2、开发用例:通过理解用户需求之后,设计人员必须通盘考虑,将用户用例,转换为能够导向设计的“开发用例” 误将用户用例,直接拿来开发,一定会有弊端。 这就是“业务用例”和“系统用例”阿 |
|
返回顶楼 | |
发表时间:2005-10-27
partech 写道 庄表伟 写道 我的理解是,应该区分两种用例:
1、用户用例:描述用户过去的工作情况,非电子化工作时的情况,使用旧系统时的工作情况 2、开发用例:通过理解用户需求之后,设计人员必须通盘考虑,将用户用例,转换为能够导向设计的“开发用例” 误将用户用例,直接拿来开发,一定会有弊端。 这就是“业务用例”和“系统用例”阿 呵呵,我没有看过用例的书,自己瞎想的。 不分开“业务用例”和“系统用例”,有什么好处呢? |
|
返回顶楼 | |
发表时间:2005-10-27
wolfsquare 写道 还是看看我们的用例如何描述的吧。例如提款
客户进入提款流程: 1。客户输入帐号(可以语音,插入卡) 2。客户输入密码(可以视网膜,指纹,或者叠加) 3。客户输入取款金额 4。校验客户输入,根据输入校验取款条件。 取款条件:取款金额小于于该帐号该日剩余提款额, 且取款金额小于银行规定每日最大提款额, 且取款金额小于等于客户账上余额, 且取款金额小于等于可出款金额。 校验通过继续流程,否则提示用户并转向步骤6。 5。提示用户取款成功,将钱给用户。 6。流程结束。 在这个例子中,没有说明是提款机取款还是柜台取款,没有输出输入界面的描述,但是流程可以应用于多种场合。 难道你觉得这样的描述会使得需求变得晦涩,不容易理解? 你也许会问,那么程序员拿到这样的东西如何开发呢? 这个就是我们的隐喻了,一般既然作为应用软件开发商,那么输出输入都是计算机了,所以输入就是键盘或者触摸屏,输出就是屏幕。 这用例咋能通用?明显是假设为ATM类型的自助取款。 柜台需要这些吗? (可以语音,插入卡) (可以视网膜,指纹,或者叠加) 柜台会有这些限制吗? 取款条件:取款金额小于于该帐号该日剩余提款额, 且取款金额小于银行规定每日最大提款额, 且取款金额小于等于可出款金额。(这个限制来源于ATM自身的限制) |
|
返回顶楼 | |
发表时间:2005-10-27
庄表伟 写道 不分开“业务用例”和“系统用例”,有什么好处呢?
没啥好处。 它们研究的对象不同,业务用例研究企业,表明企业对外提供的服务,系统用例研究要开发出来的系统,描述该系统提供的服务。 |
|
返回顶楼 | |
发表时间:2005-10-27
此交互 非 彼交互。
深交互 非 浅交互。 界面交互非用户-系统交互 大家是不是你说你的交互,我说我的交互呢? |
|
返回顶楼 | |
发表时间:2005-10-27
提个建议,下次举例子能否不用取款机?
|
|
返回顶楼 | |
发表时间:2005-10-27
庄表伟 写道 该怎么办呢?Jacobson博士有办法。比Agile还要Agile的单词,叫做Smart。如果可以的话,他还想注册一个http://www.SmartAlliance.org的域名呢,可惜已经被人注册了。 这个被称之为软件开发的下一次革命的Smart Process,是什么东西呢?Jacobson博士说了很多,我都没有记住,只记住了一个intelligence agency的概念。IvarJacobson公司,还按照此理念,开发了一个叫做WayPoint的软件,据说能够让人们不用再去翻阅那厚厚的手册,而是在开发过程中,这WayPoint会主动的提醒你,帮助你,教育你,纠正你,带领你去运用那些明确的知识。 我以前看到过一个笑话,叫做“四大工程”,分别是:“给太阳安上开关,给黄河装上栏杆,给飞机配上倒档,给长城贴上瓷砖”。如果有泰山需要移的话,我们就需要给泰山装上轮子,如果要让人们使用UP呢,我们就需要帮UP开发一个具备AI的专家系统。所以,我们现在有六大工程: 给太阳安上开关 给黄河装上栏杆 给飞机配上倒档 给长城贴上瓷砖 给泰山装上轮子 给UP配上专家系统 最后再说一下为什么很划算,因为今天的这个会,送了好多书,我一个人,就拿到了一本《AOSD中文版》,《程序员——9月》《程序员——10月》两本杂志,还是很划算的。 如果WayPoint真的有能力去主动的提醒你,帮助你,教育你,纠正你,带领你去运用那些明确的知识,那WayPoint自己把活干完不就行了,因此我们可以大胆做出一个伟大的假设,类似WayPoint的AI最终会取代人力去完成任务,最后不难推论出UP其实是为AI而写的。 |
|
返回顶楼 | |