在 Visual Studio 旗舰版中,能够绘制“用例图”来归纳使用您的应用程序或系统的用户以及该应用程序或系统的用途。若要建立 UML 用例图,请在“体系结构”菜单上,单击“新建关系图”。分布式 用例图有助于讨论和传达如下内容:工具 您的系统或应用程序与人、组织或外部系统进行交互的几种方案。测试 它帮助参与者实现的目标。网站 系统的范围。spa 用例图不显示用例的详细信息:它只归纳用例、参与者和系统之间的某些关系。特别是,用例图不显示每一个用例为实现目标所执行步骤的顺序。能够在其余关系图和文档中描述这些详细信息,这些关系图和文档可与各用例相连接。有关更多信息,请参见本主题中的详细描述用例。线程 您为用例提供的描述将使用与系统所用于的领域相关的一些词汇,如“销售”、“菜单”、“顾客”等。明肯定义这些词汇及其关系是很是重要的,您能够借助 UML 类图来进行定义。有关更多信息,请参见 UML 类图:准则。设计 用例只处理系统的功能要求。诸如业务规则、服务质量要求和实现约束等其余要求必须另外表示。体系结构和内部细节也必须另外说明。有关如何定义用户需求的更多信息,请参见用户需求建模。code 本主题中使用的示例与顾客可在其上从本地餐馆订餐的网站有关。orm  “参与者”(1) 是与您的系统进行交互的一类人、组织、设备或外部软件组件。例如,“顾客”、“餐馆”、“温度传感器”、“信用卡受权方”都是参与者。 “用例”(2) 表示一个或多个参与者为实现特定目标而执行的操做。例如,“订餐”、“更新菜单”、“处理付款”都是用例。 在用例图中,用例与执行它们的参与者相关联 (3)。 “系统”(4) 是您开发的任何成果。系统能够是小型软件组件,其中的参与者只是其余软件组件;系统也能够是完整的应用程序;系统还能够是部署在多台计算机和设备上的大型分布式应用程序套件。例如,“订餐网站”、“送餐业务”、“网站版本 2”都是子系统。 用例图能够显示系统或其子系统支持的用例。 主题内容 绘制用例图的基本步骤 绘制参与者和用例 详细描述用例 结构化用例 使用子系统边界 绘制用例图的基本步骤 建立新的用例图 1.在“体系结构”菜单上,单击“新建关系图”。 2.在“模板”下,单击“UML 用例图”。 3.命名该关系图。 4.在“添加到建模项目”中,从您的解决方案中选择一个现有建模项目,或者选择“建立新的建模项目”,而后单击“肯定”。 绘制用例图 1.将“子系统”边界从工具箱拖到关系图中,它能够表示整个系统或其中的主要组件。 若是不但愿描述系统或其组件支持哪些用例,用例图中能够不绘制系统边界。 根据须要,拖动系统的四角将其扩大。 对其适当地重命名。 2.将“参与者”从工具箱拖到关系图中(将其放在全部系统边界以外)。 参与者表示与您的系统进行交互的各种用户、组织和外部系统。 重命名这些参与者。例如:“顾客”、“餐馆”、“信用卡机构”。 3.将“用例”从工具箱拖到适当的系统中。 用例表示参与者在系统的帮助下所执行的活动。 使用参与者自身可以理解的名称重命名这些用例。不要使用与代码有关的名称。例如:“订餐”、“付餐费”、“送餐”。 从主要的事务(如“订餐”)开始,直到后面较小的事务(如“点菜”)为止。 将每一个用例放入支持它的系统或主要子系统(忽略任何只与用户有关的外观模式或组件模式)。 能够在系统边界外绘制用例,以代表系统(可能在特定版本中)不支持该用例。 4.单击工具箱上的“关联”,而后单击用例,再单击该用例的参与者。以此方式将每一个参与者与其用例相连接。 5.用“包括”、“扩展”和“泛化”关系结构化用例。若要建立其中的每一个连接,请依次单击工具、源用例和目标。请参见下面的结构化用例一节。 6.详细描述用例。请参见下面的详细描述用例一节。 7.绘制其余关系图,使其分别针对不一样子系统或不一样相关用例组。一个建模项目中的全部关系图是同一模型的多种视图。 绘制参与者和用例 用例图的主要用途是显示与系统交互的用户以及这些用户借助系统实现的主要目标。 建立“参与者”来表示与您的系统或子系统进行交互的各种人员、组织、其余系统、软件或设备。 若要了解如何绘制参与者和其余元素,请参见如何:编辑 UML 模型和关系图。 对于每一组不一样的目标,按其类型或角色标识参与者,即便具体的我的或实体多是相同的。例如,“餐馆”和“顾客”是不一样的参与者,即便餐馆的雇员可能有时候也是顾客。 为每一个参与者但愿借助系统实现的每一个目标建立“用例”。 以参与者可以理解的词语命名并描述用例,而不该使用实现中所用的术语。 使用“关联”连接参与者与用例。  参与者之间的继承 能够在参与者之间绘制“泛化”连接。专用参与者(如示例中的“俱乐部顾客”)继承泛化参与者(如“顾客”)的用例。箭头应指向更通用的参与者,如“顾客”。建立连接时,首先指向更专用的参与者。 专用参与者能够有本身的额外用例,这些用例对于其余参与者是不可用的。 警告:不该形成会致使参与者泛化自身的泛化关系循环。循环可能会产生错误。 可选参与者图标 可使用自定义图标而不是标准线条图来表示参与者。例如,能够将其更改成相似于设备、餐馆、银行等的图标。 更改参与者的外观 1.右击参与者,而后单击“属性”。 将出现“属性”窗口。 2.将“Image Path”属性设置为图像文件的位置。 可使用多种图像格式中的任何一种,包括 .gif、.jpg 和 .bmp。 使用包含在解决方案或项目源代码管理中的文件,以便在移动或复制解决方案时仍可用。 3.若要将此外观复制到其余用例图中,请复制该参与者并将其粘贴到其余关系图中。 图像的更改仅应用于特定关系图中的视图。这不会应用于基础模型元素。若是将参与者从 UML 模型资源管理器拖到另外一个关系图中,该参与者将以标准线条图显示。 参与者与用例之间的重数 参与者与用例之间的关联可在每一端显示一个“重数”。  注意:若是用例图中某个关联两端的重数都为“1”,则隐藏该重数。 默认状况下,每一个重数都为“1”。在模型的严格释义中,以顾客订餐为例,重数为 1 表示一餐只有一名顾客预订而且每名顾客一次只订一餐。 您能够更改这些重数。 例如:  若要代表发生一次用例可有多名同类参与者参与,可将关联中参与者端的重数设置为“1..*”。 在图示中,一个或多个餐馆可参与实现同一订餐。 若要代表每名参与者可同时参与屡次用例,可将关联中用例端的重数设置为“*”。 在图示中,每一个餐馆可同时参与实现多个订餐。 设置关联的重数 1.右击关联,而后单击“属性”。 2.展开“第一个角色”或“第二个角色”。 “角色”表示关联一端的元素。 3.设置 Multiplicity 属性,可从下表中选择: 1,代表有且仅有此角色的一个实例参与每一个连接。 1..*,代表此角色的一个或多个实例参与每一个连接。 0..1,代表参与是可选的。 *,代表此角色的零个或多个实例参与该连接。 注意:不少团队不在用例图中提供重数信息,保留重数的默认值 1,而是在用例的其余描述中提供该信息。在这种状况下,用例图中的全部重数都将隐藏。 在多个关系图中使用一个参与者或用例 能够在多个关系图中显示相同的参与者或用例。例如: 能够在不一样关系图中描述同一参与者涉及的不一样用例。 可使用一个关系图来显示一个用例所关联的多个参与者和子系统,使用另外一个关系图来显示如何将该用例结构化到被包括用例和扩展用例中。 在不一样关系图中显示相同参与者或用例 1.在一个关系图中建立参与者或用例。 2.建立另外一个用例图。 3.将参与者或用例从“模型资源管理器”拖到新关系图中。 注意:若是放入新关系图的是已关联的参与者和用例,则它们之间的关联将自动显示在新关系图中。 详细描述用例 用例表示: 参与者使用系统要实现的目标,如“购买餐饮”;以及 一个或多个方案,即为实现目标而执行的一系列步骤,如:{“订餐”、“付款”、“送餐”}。除了成功方案之外,还可能有若干异常或失败方案,如“信用卡被拒”。 对用例的描述能够有不一样的详细程度。在设计的早期阶段,仅在用例图上标示名称就足够了。稍后就能够编写更加详细的方案描述。 在 Visual Studio 旗舰版 中,能够采用多种方法描述用例,这些方法能够分开使用,也能够一块儿使用: 将用例连接到项目中的另外一个或几个关系图。 活动图有助于解释包含循环、分支和并行线程的较复杂流程。活动图还能够显示流程各部分之间的数据流。 序列图有助于解释不一样参与者之间复杂的交互序列。序列图还可用于显示系统内发生的对每一个用例的响应。 将用例连接到用于详细描述用例的 OneNote 页面、节或段落。 将用例连接到 Word 文档,在该文档中使用文本、屏幕截图等来描述该用例的方案。有关更多信息,请参见用户需求建模。 将用例连接到同一解决方案中的关系图或文件 1.绘制关系图(如序列图或活动图)来演示用例的方案。 2.返回到用例图。 3.将关系图或文件从解决方案资源管理器拖到用例图的空白部分。 4.使用“依赖项”从项目链接到用例。 连接到诸如 Word 文档或 PowerPoint 演示文稿等解决方案文件 1.编写一个文档,在该文档中使用文本、屏幕截图等来描述用例的方案。 2.向解决方案中添加文档。 a.将该 Word 文档移入解决方案所在的 Windows 文件夹。 b.在解决方案资源管理器中,右击解决方案,指向“添加”,而后单击“现有项”。 c.导航到该 Word 文档,而后单击“添加”。 该 Word 文档将显示在解决方案资源管理器的解决方案文件夹中。 3.将该 Word 文档从解决方案资源管理器拖到用例图的空白部分。 随即显示新项目。 4.使用“依赖项”从项目链接到用例。 连接到共享文档、OneNote 元素或网页 1.获取共享元素的 URL。例如,此 URL 能够是以“\\”开头的网络文件路径、网页、以“http://”开头的 Sharepoint URL,也能够是指向 OneNote 节、页面或以“onenote:”开头的段落的连接。 2.在工具箱中,单击“项目”,而后单击用例图。 3.选定新项目后,在“Hyperlink”属性中键入或贴入 URL。 注意:双击项目可打开与其连接的关系图或文档。 将用例连接到工做项 若是您的项目使用 Visual Studio Team Foundation Server 2010 而且您有团队资源管理器,则能够将每一个用例连接到 Team Foundation 中的一个工做项。 这可用于: 在连接的工做项中描述用例。特别是,若是您的项目使用 Visual Studio Formal Process Template,则可连接到用例工做项。此工做项类型提供对用例的目标和方案进行描述的字段。 将测试用例连接到用例,以即可以获取实现用例的代码开发进度的报告。 将任务连接到用例,以即可以跟踪开发工做的进度。 结构化用例 应设法只用几个主要用例来描述系统的行为。每一个大型用例定义某个参与者实现的主要目标,如购买产品,若是是从供应商的角度出发,就是提供用于销售的产品。 明确这些目标以后,能够细化如何实现每一个目标以及基本目标的变体。 应避免将用例分解得过细。用例应基于用户对系统的体验,而不是系统内部的处理。此外,您一般会发现,建立代码的早期工做版本比花费时间对用例进行精细的结构化更高效。 您能够在用例图中归纳主要用例和细化用例之间的关系。如下各节对此进行介绍: 用包括显示用例的细节 用泛化共享目标 用扩展分离变体用例 用包括显示用例的细节 使用“包括”关系能够代表一个用例用于描述另外一个用例的一些细节。在图示中,“订餐”包括“付款”、“选择菜单”和“点菜”。每一个被包括的细化用例是一个或多个参与者为了实现包括用例的总体目标可能必须执行的一个步骤。箭头应指向细化的被包括用例。 警告:不该形成会致使用例包括自身的包括关系循环。循环可能会产生错误。 能够共享被包括用例。在示例中,“订餐”和“订阅评论”用例都包括“付款”。  被包括用例的目标和方案应具备独立意义,以即可以包括在之后设计的用例中。 将用例分为包括部分和被包括部分对于实现如下目标颇有用: 将用例描述结构化为不一样的详细层次。 避免在不一样用例中重复共享方案。 定义详细步骤的顺序 用例图不提供执行细化步骤必须遵循的顺序,也不告知其中的每一步骤是否始终是必需的。 若要明确步骤的顺序,可使用“项目”将其余文档附加到包括用例。在下面的示例中,“订餐”用例附加了一个活动图。或者,可使用包含步骤列表或一系列屏幕截图的文本文档。有关更多信息,请参见详细描述用例。 使用活动图时请注意下面的命名约定: 整个活动的名称与包括用例的名称相同。 活动图中的操做与被包括用例有相同的名称。  用泛化共享目标 “泛化”关系用于代表专用用例是实现由另外一个通用用例表示的目标的一种特定方式。箭头应指向更通用的用例。  例如,“付款”泛化“信用卡付款”和“现金付款”。 警告:不该形成会致使参与者泛化自身的泛化关系循环。循环可能会产生错误。 专用用例有助于展现系统实现相同目标的不一样方法。 专用用例视为继承了通用用例的目标和参与者。通用用例能够没有本身的方案;其专用化描述实现目标的不一样方法。 经过两个或更多用例重构共同目标 1.建立新的通用用例,并为其命名。 2.建立一个“泛化”关系,其箭头指向新的通用用例。 a.单击工具箱中的“泛化”。 b.单击专用用例(示例中为“信用卡付款”)。 c.单击通用用例(示例中为“付款”)。 3.若是已描述专用用例的目标,则可将共同部分移入通用用例的描述。 4.可将在专用用例之间共享的参与者移到通用用例。 用扩展分离变体用例
“扩展”连接用于代表一个用例能够在特定状况下向另外一个用例添加功能。箭头应指向被扩展的主用例。  警告;不该形成会致使参与者泛化自身的扩展关系循环。循环可能会产生错误。 例如,典型网站的“登陆”用例能够包括“注册新用户”,但仅限用户尚未账户的状况。 将用例分为主要部分和扩展部分 1.建立新的扩展用例,并为其命名。 2.建立一个“扩展”关系,其箭头指向被扩展用例。 a.单击工具箱中的“扩展”。 b.单击扩展用例(示例中为“注册新用户”)。 c.单击被扩展用例(示例中为“登陆”)。 注意:不要在关系图中建立扩展关系的循环。用例不能成为自身的扩展。 3.若是已建立被扩展用例的方案,可将相关步骤移入扩展方案。 4.扩展的描述(示例中为“注册新用户”)应包括在主用例方案中出现扩展的位置和条件的详细信息。将其视为修改主用例的描述。 扩展用例表示本应属于主用例方案一部分的方案步骤。主用例的上下文将始终读入扩展的方案和目标,所以它们能够不具备独立意义 描述如下状况时分离扩展颇有用: 存在仅参与扩展用例的额外参与者。例如,须要管理员来批准顾客在网站上的注册。 单独的子系统将处理扩展用例。 此扩展将只在系统的特定版本中可用。您能够在用例图中将每一个版本显示为一个单独的子系统。 使用子系统边界 子系统边界用于代表哪些用例在系统的范围内。 绘制子系统边界 1.在工具箱中单击“子系统”,而后单击关系图。 子系统将显示在关系图中。 2.拖动子系统的四角以调整其大小。 3.将现有用例拖入或拖出子系统以调整该子系统内容。 - 或 - 若要直接在子系统中建立新用例,请在工具箱中单击“用例”,而后单击子系统内部。 注意:用例的“Subjects”属性指示包含它的子系统。 系统范围外的用例 将属于业务组成部分但不禁您开发的系统来处理的用例包括在关系图中一般是颇有用的。这有助于开发人员了解其工做背景。例如,“送餐”能够显示为涉及参与者“餐馆”和“顾客”的用例,但在“订餐网站”的职责范围外。 多个子系统 能够建立多个子系统边界以代表不一样用例是如何由不一样的系统组件来处理的。例如,“添加餐馆评价”可能在单独的论坛网站上处理。请记住,用例图应处理用户可见的内容。若是要描述系统内部的工做划分,应考虑使用组件图。 系统版本 可使用不一样的子系统边界来演示不一样版本的系统。例如,“付款”用例可能包括在“网站版本 2”中,但不在“版本 1”中。这表示系统可帮助顾客订餐,可是,顾客必须直接付款给餐馆。 “依赖项”关系用于连接表示不一样版本或变体的子系统。  |