4. 用例图和用例 用例图(Use Case Diagram)是UML中最简单也是最复杂的一种图。说它简单,是因为采用了面向对象的思想,又是基于用户视角的,绘制非常容易,简单的图形表示让人一看就懂。说它复杂是因为用例图往往不容易控制,要么过于复杂,要么过于简单。一个系统的用例图太泛不行,太精不行,太多不行,太少也不行。用例的控制可以算是一门艺术。突然想起当年我刚刚接触UML的时候,对用例不屑一顾,认为是UML中最无用的一种图,现在每每想到不禁感慨自己的愚蠢。
Use case diagrams show actors and use cases together with their relationships.『OMG-UML V1.3』
用例图表示了角色和用例以及它们之间的关系。
A use case is a kind of classifier representing a coherent unit of functionality provided by a system, a subsystem, or a class as manifested by sequences of messages exchanged among the system and one or more outside interactors (called actors) together with
actions performed by the system. 『OMG-UML V1.3』
用例描述了系统,子系统和类的一致的功能集合,表现为系统和一个或多个外部交互者(角色)的消息交互动作序列。
有点复杂是吗,就是角色(用户或外部系统)和系统(要设计的系统)的一个交互,为了实现一个目的(Goal),这个目的的描述通常是一个谓词短语,例如,开立信用证,给客户回单等。用例图则图形化的表示了这种关系。
一个具体的用例图可能是这样的:
为了能够把4种人不同的观点统一起来,Kruchten大师提出了一个情节(Scenarios)观点(这个词翻译的不好,如果有谁有更好的翻译,请更正)。这个观点其实就是用例观点(Use Case View)。在用例观点的统一下,保证这四种观点能够相互协作,共同营造一种良好的开发氛围,实现软件项目的成功。
那么,应该如何营造一种和谐的气氛呢?还记得在介绍UML语言的时候我们谈过UML中的几种图吗。这几种图都不是孤立的。在画出一份用例图后,通常都会用顺序图和状态图来规定用例图的规格,这些都是Rose中的用例视图。在用例图中,我们可以分析出基本的类,并将类组织成包,并将其分配到系统的三层结构中,这是Rose中的逻辑视图。在写出基本类之后,我们还可以将类组织成组件(针对特定的架构,如J2EE或COM),这是Rose中的组件视图。把组件部署实现,就是Rose中的部署视图所关心的。(需要指出的是,Rose中的视图与Kruchten大师的4+1观点有些许出入,Rose中的组件视图相当于Kruchten大师的Development观点和Process观点。)
(注:这里的View对应的有两种说法:视图和观点。视图是比较正式的说法,但是我觉得在通常得用语中,大多采用观点的说法。所以这里的观点和视图表述的是同一个意思。)
这里谈到用例的观点主要是要让大家了解为什么会有用例的产生,以及在软件开发中不同的人看待问题有不同的角度。
8. 用例的不足 用例的出现虽然能够解决很大一部分问题,但是它并不是万能的。
The first is the matter of how difficult it is to get a UML-like design into a state that it can be handed over to programmers. The problem with a UML-like design is that it can look very good on paper, yet be seriously flawed when you actually have to program
the thing。(Fowler 2001)
首先是把像UML那样的设计图交给程序员来实现是一件极为困难的事情。问题的关键在于那种设计看上去不错,可你打算编程来实现它的时候就出现了问题。
不但是分析员和程序员之间的沟通存在问题,客户和分析员之间的隔阂更大。客户对于用例的观点仍然不能够接受,这仍然需要开发人员作出不懈的努力来调和这一矛盾。
由于软件工程最早提出是根据建筑方面的理论,所以很自然的就会把软件工程和土木工程做一个比较。在土木工程中,设计图和模型制定出来来需要严格的执行。可是:
The models that civil engineers use are based on many years of practice that are enshrined in engineering codes. Furthermore the key issues, such as the way forces play in the design, are amenable to mathematical analysis. The only checking we can do of UML-like
diagrams is peer review. (Fowler 2001)
土木工程师使用的模型建立在多年实践的基础上,它们用土木工程的专用语言来描述。而且主要的问题在于,通常这种设计需要符合数学原理。而我们对UML之类的图表唯一能做的就是同级检查。
看到问题所在了吧。单纯的凭借没有完善理论支撑的设计图就轻率的决定这个软件的设计是及其危险的。不止一次的经验告诉我,一开始写出的用例在项目结束时一看往往会吓一大跳:设计和实现已经完全脱节了。其中主要的代沟有两个:客户和开发人员之间,分析员和程序员之间。我们这里的重点在于客户和开发人员之间的需求部分。
需求的问题单单由UML语言来解决是不现实的,且不说国外的软件环境那么好的情况下,客户对于UML仍然不理解。国内的情况要糟糕的多,大多数的客户并没有计算机方面的基础知识,对于他们来说,只有一点:"花钱买东西,天经地义。"在这样的观点下,软件的开发过程就很难得到客户的支持。所以这也是国内ERP项目鲜有成功范例的一个重要原因。
这时候,讨论的问题已经不是局限在技术层面了,主要的焦点已经转移到了管理、营销、谈判技巧等方面了。UML的成功也是需要这个大前提在的。McConnell建议在一个大的项目中,编码和单元测试的开销占整个项目开销的15%。而其中有很大一部分的时间都会花在BPA(企业流程分析)和BPR(企业流程再造)上面。因为有很多企业在实施电子化之前管理都不规范,以人治为主。对于软件而言,不论其中的设计多么的成功,如果没有各个环节输入的准确来保证,那结果是可想而知的。我的一个朋友开发过一套连锁店管理的软件,可是系统运行以来,会计帐从未平过。其中主要的问题就是各个结点的输入不规范。这种问题已经不是计算机能够解决的了。说到这里,有一个笑话,有一个特定行业的企业要开发一个管理软件,于是我就给企业的负责人分析他的流程,突然他很惊讶的看着我:"你是我们这个行业的吗,怎么比我还熟。"其实,我只是以逻辑的观点来分析他们流程,把一些漏洞给堵住。关于业务建模方面的知识,在接下去的文章中还会有大规模的篇幅,这里就不罗嗦了。
所以呢,作需求分析,往往技术并不是最重要的。
相关推荐
软件需求最佳实践,清晰版,徐峰2008年出版,完整版。页面完整
新一代软件需求工程的表现为工作阶段划分、需求获取方式、关系定位和指导思想不同。需求规划是新一代需求工程中的...《软件需求十步走:新一代软件需求工程实践指南》由原理篇、知识篇、方法篇、应用篇、组织篇等构成。
软件需求最佳实践,徐锋,第一部分,总共3部分.
软件需求最佳实践,徐锋,软件需求最佳实践-完整版PDF,SERU过程框架原理与应用。 压缩包分2个卷,此为卷2.
本文将深入探讨“软件需求最佳实践”,帮助读者理解如何有效地管理、沟通和实现这些需求。 1. 需求获取与分析: - 需求获取通常涉及与利益相关者进行访谈、研讨会或问卷调查,以了解他们的期望和痛点。 - 分析...
软件需求最佳实践-完整版PDF,SERU过程框架原理与应用
软件需求最佳实践-完整版PDF,SERU过程框架原理与应用
### 软件需求优秀实践方法 在软件开发过程中,需求阶段是整个项目的基础与核心。良好的需求管理能够显著提高项目的成功率,降低后续开发过程中的风险。本文将围绕标题“软件需求优秀实践方法”以及其描述“软件需求...
软件需求最佳实践:SERU过程框架原理与应用。清晰,供大家下载。
第一部分 软件需求:是什么和为什么 第1章 基本的软件需求 1 1.1 软件需求的定义 2 1.1.1 一些关于“需求”的解释 2 1.1.2 需求的层次 3 1.2 每个项目都有需求 4 1.3 什么情况将会导致好的群体发生不合格的...
软件需求最佳实践,徐锋,软件需求最佳实践-完整版PDF,SERU过程框架原理与应用。 压缩包分2个卷,此为卷1.
软件需求最佳实践-完整版PDF,SERU过程框架原理与应用
《软件需求_第三版》是一本理论与实践相结合的书籍,不仅介绍了软件需求的理论框架,还提供了实用的工具和策略,旨在帮助读者提升需求工程的能力,从而提高软件开发的质量和效率。阅读此书,将有助于读者深入理解...
本书首先从软件需求实践中出现的主要问题和困难入手,指出了改进的主要方向;然后逐一说明了需求定义、需求捕获、需求分析与建模、编写规约、需求验证等需求开发活动的任务、要点和具体手段;并提出了一个可操作性强...
软件需求最佳实践,徐锋,第一部分,总共3部分.
在这张软件需求试卷A中,考生需要对不同类型的软件系统进行选择,并且完成两个题目,涉及到软件需求工程的基本概念和实践。下面将详细阐述相关知识点: 1. **软件系统选择**: - 携程旅行网:这是一个酒店预订系统...