BasicHistory
| <添加新主题> <所有评论> 共 4 个主题 8 条评论 |
| (1) 关于需求用例的一些误解 InfoQ 新闻(中文): (张恂 1156 字 0 回复 E2009-2-20 11:58:13 LID:8 Hit:153)Use Cases Considered Valuable (but Optional) For Lean/Agile Requirements Capture 赞成 Leffingwell 的基本观点,用例对于大规模系统需求分析的确很有价值。但这篇短文中也出现了不少对用例的误解。 赞成基本上赞同 Leffingwell 对用例在大规模系统需求分析中所起到作用的分析: * 在大规模的精益和敏捷项目中,用例作为需求建模的工具很有价值。 * 要想详细说明、深入分析以及更好地理解复杂系统的行为,用例可以提供非常多的好处。 * 在构建大规模系统时,没有哪个工具能像用例那么强大,用例可以用来发现解决方案中用户、系统以及子系统之间的互动关系。而且,就我所知,用例技术可以用来识别所有的变化场景,这样我们在涉及系统级别的质量和便捷程度的相关议题时就不会出现遗漏。 ... 不赞成* 很多建议不要使用用例的话是这么说的:“过于详细,无法被客户理解。” 这种建议当然是错误的。 其实用例有很多种表现形式,既可以很详细,也可以很简单,甚至比用户故事更简单。 用例至少和用户故事一样,容易被客户所理解。 * 将用例加入敏捷模型,主要是为了发现大规模系统的问题 ... 用例不但适合大规模系统的敏捷开发,也适合中、小系统的敏捷开发,可以起到类似或超过用户故事的作用。 * 虽然在敏捷开发中,用例无法替代用户故事 ... 用户故事本质上就是一种特性(Feature),简略的需求表达,这其实和用例简述(Use Case Brief)差不多,很多时候可以看作是用例的一种简化形式,或用例事件流当中的一步或若干步。所以,在敏捷开发中,如果我们已经采用了用例方法,那就没有必要为了追求某种形式,再转换到用户故事了。 在敏捷开发中,用例很多时候可以起到取代(或替代)用户故事的作用。如果有些需求只能用用户故事(特性)来描述,比如相对孤立的非功能特性,而无法用用例来描述,那么很简单,就保留这些特性的描述,作为用例的补充。 |
| (2) 回复-用例好于用户故事的理由 这也是我所关心的问题 (jeffery 10 字 0 回复 C2008-9-10 11:26:39 LID:7 Hit:91) |
| (3) 采用 Use Cases 的理由 Alistair Cockburn 分析了采用用例的 5 个理由: (张恂 2247 字 0 回复 E2008-8-10 11:09:06 LID:6 Hit:102)1. The list of goal names provides executives with the shortest summary of what the system will contribute to the business and the users. It also provides a project planning skeleton, to be used to build initial priorities, estimates, team allocation and timing. It is the first part of the completeness question. 2. The main success scenario of each use case provides everyone involved with an agreement as to what the system will basically do, also, sometimes more importantly, what it will not do. It provides the context for each specific line item requirement, a context that is very hard to get anywhere else. 3. The extension conditions of each use case provide the requirements analysts a framework for investigating all the little, niggling things that somehow take up 80% of the development time and budget. It provides a look ahead mechanism, so the customer / product owner / business analyst can spot issues that are likely to take a long time to get answers for. These issues can and should then be put ahead of the schedule, so that the answers can be ready when the development team gets around to working on them. The use case extension conditions are the second part of the completeness question. 4. The use case extension scenario fragments provide answers to the many detailed, often tricky business questions programmers ask: "What are we supposed to do in this case?" (which is normally answered by, "I don't know, I've never thought about that case.") In other words, it is a thinking / documentation framework that matches the if...then...else statement that helps the programmers think through issues. Except it is done at investigation time, not programming time. 5.The full use case set shows that the investigators have thought through every user's needs, every goal they have with respect to the system, and every business variant involved. It is the final part of the completeness question. (And yes, I did indeed sit down and walk through 240 use cases with a client, at the end of which, I turned to her and asked: "And is that everything?" She said, Yes, and we built that, delivered it, got paid for it, and it is still in use ten years later.) |
| <添加新主题> <所有评论> 共 4 个主题 8 条评论 |
| (1) 关于需求用例的一些误解 InfoQ 新闻(中文): (张恂 1156 字 0 回复 E2009-2-20 11:58:13 LID:8 Hit:153)Use Cases Considered Valuable (but Optional) For Lean/Agile Requirements Capture 赞成 Leffingwell 的基本观点,用例对于大规模系统需求分析的确很有价值。但这篇短文中也出现了不少对用例的误解。 赞成基本上赞同 Leffingwell 对用例在大规模系统需求分析中所起到作用的分析: * 在大规模的精益和敏捷项目中,用例作为需求建模的工具很有价值。 * 要想详细说明、深入分析以及更好地理解复杂系统的行为,用例可以提供非常多的好处。 * 在构建大规模系统时,没有哪个工具能像用例那么强大,用例可以用来发现解决方案中用户、系统以及子系统之间的互动关系。而且,就我所知,用例技术可以用来识别所有的变化场景,这样我们在涉及系统级别的质量和便捷程度的相关议题时就不会出现遗漏。 ... 不赞成* 很多建议不要使用用例的话是这么说的:“过于详细,无法被客户理解。” 这种建议当然是错误的。 其实用例有很多种表现形式,既可以很详细,也可以很简单,甚至比用户故事更简单。 用例至少和用户故事一样,容易被客户所理解。 * 将用例加入敏捷模型,主要是为了发现大规模系统的问题 ... 用例不但适合大规模系统的敏捷开发,也适合中、小系统的敏捷开发,可以起到类似或超过用户故事的作用。 * 虽然在敏捷开发中,用例无法替代用户故事 ... 用户故事本质上就是一种特性(Feature),简略的需求表达,这其实和用例简述(Use Case Brief)差不多,很多时候可以看作是用例的一种简化形式,或用例事件流当中的一步或若干步。所以,在敏捷开发中,如果我们已经采用了用例方法,那就没有必要为了追求某种形式,再转换到用户故事了。 在敏捷开发中,用例很多时候可以起到取代(或替代)用户故事的作用。如果有些需求只能用用户故事(特性)来描述,比如相对孤立的非功能特性,而无法用用例来描述,那么很简单,就保留这些特性的描述,作为用例的补充。 |
| (2) 回复-用例好于用户故事的理由 这也是我所关心的问题 (jeffery 10 字 0 回复 C2008-9-10 11:26:39 LID:7 Hit:91) |
| (3) 采用 Use Cases 的理由 Alistair Cockburn 分析了采用用例的 5 个理由: (张恂 2247 字 0 回复 E2008-8-10 11:09:06 LID:6 Hit:102)1. The list of goal names provides executives with the shortest summary of what the system will contribute to the business and the users. It also provides a project planning skeleton, to be used to build initial priorities, estimates, team allocation and timing. It is the first part of the completeness question. 2. The main success scenario of each use case provides everyone involved with an agreement as to what the system will basically do, also, sometimes more importantly, what it will not do. It provides the context for each specific line item requirement, a context that is very hard to get anywhere else. 3. The extension conditions of each use case provide the requirements analysts a framework for investigating all the little, niggling things that somehow take up 80% of the development time and budget. It provides a look ahead mechanism, so the customer / product owner / business analyst can spot issues that are likely to take a long time to get answers for. These issues can and should then be put ahead of the schedule, so that the answers can be ready when the development team gets around to working on them. The use case extension conditions are the second part of the completeness question. 4. The use case extension scenario fragments provide answers to the many detailed, often tricky business questions programmers ask: "What are we supposed to do in this case?" (which is normally answered by, "I don't know, I've never thought about that case.") In other words, it is a thinking / documentation framework that matches the if...then...else statement that helps the programmers think through issues. Except it is done at investigation time, not programming time. 5.The full use case set shows that the investigators have thought through every user's needs, every goal they have with respect to the system, and every business variant involved. It is the final part of the completeness question. (And yes, I did indeed sit down and walk through 240 use cases with a client, at the end of which, I turned to her and asked: "And is that everything?" She said, Yes, and we built that, delivered it, got paid for it, and it is still in use ten years later.) |
| (4) 用例好于用户故事的理由 Alistair Cockburn: (张恂 1853 字 2 回复 E2008-8-10 11:15:11 LID:5 Hit:139)Why I still use use cases 他分析了用户故事的三个缺点: 1. User stories and backlog items don't give the designers a context to work from – when is the user doing this, and what is the context of their operation, what is their larger goal at this moment? 用户故事没有提供需求的 context。 2. User stories and backlog items don't give the project team any sense of "completeness" – what I keep finding is that the development team bids/estimates the projects at (e.g.) 270 story points, and then as soon as they start working, that number keeps increasing, seemingly without bound. The developers are depressed and the sponsors are equally depressed by this. How big is this project, really? 用户故事缺乏完整性。 3. Related to completeness, user stories and backlog items don't provide a good-enough mechanism for looking ahead at the difficulty of upcoming work (In principle they could, just in practice they don't) – I keep hearing this complaint, "We asked our customer (product owner) a question and she/he took 2 weeks to get us an answer. We must have the wrong person in this role." No, they don't have the wrong person, they have a broken process – certain types of questions take a long time to research, as the various departments and user groups work out what is the correct, balanced answer for the whole lot of them. Staring at the set of extension conditions in a use case lets the analysts suss out which ones will be easy and which will be difficult, and to stage their research accordingly. User stories and backlog items are not set out in that granularity early enough on for that assessment - the extension conditions are usually detected mid-sprint, when it is too late. 用户故事不能提供很好的预见性。 |
| (5) 选择用例还是用户故事? InfoQ 讨论: (张恂 1529 字 3 回复 E2008-8-10 10:55:48 LID:4 Hit:139)Use Cases or User Stories? (2008-7-28) 中文版 张恂提出的统一用例方法(UUCM)认为: 用例和用户故事(一种特殊的 Feature)并不矛盾,在实际工作中可以把两者结合起来加以灵活运用。 原文中问道: 我们该如何做好?我们现时在做的到底有用么?只有一个正确方法呢,还是有两个不同的 正确方法呢?或者视乎实际情况而定?会不会是有些情况下用用例较好,而有些情况下用用户故事较好呢?还是其实没太大分别呢——像用例中(或许)包含多个用 户故事而该用例因为一个用户情节内外都貌似用户故事呢) 答案是很明确的: 1)用例和用户故事(Feature)都有各自的适用环境。 也就是说,两种方法在各自的适用环境中都是正确的方法,在有些场合采用用例更为合适,在有些场合(比方 XP 团队)采用用户故事更为合适。脱离 application context 来谈绝对正确的方法,是毫无意义的。 2)用例和用户故事(Feature)有相似的地方,也有很多区别。 通常对于一个软件产品或系统,其用户故事的数量要远比用例多得多,很多用户故事并不是用例,但有个别用户故事可能正好与用例相似,相当于用例简述。 用例可以作为容器,把许多用户故事装起来。也就是说,许多用户故事的层次要比用例低,粒度比用例更小、更细。 3)在实际的需求分析工作中,建议以用例容器为基础和基本结构,把用例和特性(用户故事)结合起来运用。 相关讨论用户故事专家 Mike Cohn 的文章 Advantages of User Stories for Requirements Cohn 对用户故事的定义是: Each user story is composed of three aspects: 1. Written description of the story, used for planning and as a reminder 2. Conversations about the story that serve to flesh out the details of the story 3. Tests that convey and document details that can be used to determine when a story is complete 用户故事包括三个方面。 Use storiese emphasize verbal communication. We act as though written words are precise, yet they oftern aren't. Alistair Cockburn 列举了用户故事的几个问题。 以及为什么选择用例的理由。 |
| (6) 答“对用例使用的总结好棒哦” 前些日收到 tiger 发来的离线 MSN 消息,觉得很有意思,现认真地答复如下: (张恂 324 字 0 回复 E2007-3-9 16:11:59 LID:3 Hit:196)tiger 发送 2007-2-8 17:56: 先生对概念性的东西比较较真 tiger 发送 2007-2-8 18:18: 对用例使用的总结好棒哦 谢了,tiger!你的夸奖让我很开心,但我知道,我还应该继续努力。 对前半句话,我的看法是: 对自己喜欢的专业就应该较真。事实上,软件开发“玩”的就是概念!不信,你打开自己的程序看看,从类名、变量名、方法名到数据结构、算法、模式 ...,一切的一切,哪一处不是概念?全部都是概念!用例和代码只不过是在不同层次上的概念。余以为,只有把概念“玩”好了,才算真正理解了程序。 |
| (7) 回复-关于用例学习的问题? 找到最外层用例有专门的算法,Cockburn 书中列出了 6-7 步。如果我们找到的最外层用例是业务用例(范围是业务系统),那么一般来说,它应该写成白盒,因为作为软件开发者,我们需要看到用例内部运行的情况,以便导出软件需求。 (张恂 788 字 0 回复 E2006-11-26 11:16:47 LID:2 Hit:198)如果我们找到的最外层用例是软件用例(范围是软件系统),那么它有可能是白盒也可能是黑盒,透明还是不透明取决于它的用途。Cockburn 书中也举出了最外层用例分别是业务用例、软件用例的例子。总之,最外层用例是白盒还是黑盒,应根据开发的需要而定。 这些年来,我给许多客户讲解过统一用例方法(整合 Jacobson、Cockbrun 等方法的方法),既有软件企业也有行业客户。做企业信息系统的,一般都是从业务用例开始分析,原因很简单,软件(系统)用例是为业务用例服务的,不可能脱离业务环境。如果你是做通讯、电力、工控设备,或者大系统中的某个子系统,业务用例、业务建模可能就不重要。从业务用例还是软件(系统)用例开始,取决于你的应用类型和开发阶段。 用例编写、应用的技巧很多,作为初学者,把 Use Case Modeling 和 Writing Effective Use Cases 以及 Effective Use Case Patterns 里面介绍的实用技巧、模式掌握好已经足够了。这些书的目录本身就是技巧提示。当然,这些方法之间存在一些矛盾和区别,这是 UUCM 需要解决的问题。我给初学者的建议是把这些书读完,把后面的练习题做一做,边练边学,遇到什么具体问题可以拿出来讨论。 这些年我总结出一首用例/UML 建模口诀,与你分享:“由外而内,层次分明;动静结合,逐步求精”。这可能是贯穿所有技巧的一条主线。你提醒了我,以后我会在“用例问答”中陆续把具体技巧贴出来,全部整理出来可能有数十条,欢迎你一起参与,今天先写到这里。 |
| (8) 关于用例学习的问题? 您好: (laozhu 229 字 1 回复 C2006-11-24 23:05:44 LID:1 Hit:467)这两天又看了一下《编写有效用例》和您的统一用例方法的文章。我有一些不清楚的地方。 我理解的是先找出执行者--目标列表,识别出用户目标层系统用例。为这些系统用例编写最外层的用例,这些最外层用例应该是概要层业务用例。它们将系统用例组织起来。 但是这些最外层用例应该是黑盒还是白盒呢? 另外,跟据您的经验,在实际项目过程中,是如何编写用例的?还是先写业业务用例还是先找出系统用例呢?有什么技巧?想请您给简单介绍一下。 |