在前面的课程中,我们主要讨论了人脉V1.0系统的角色及角色间的关系,也讨论了角色的属性和行为。在这节课中,我们将使用UML建模语言的用例图对人脉V1.0系统的角色及角色行为建立系统功能模型。
在建模之前,先简单介绍一下什么是UML建模语言。
UML是面向对象开发的建模语言,由OMG(OMG是一个世界性的计算机标准协会),该协会致力于发展和传播面向对象系统,OMG在1997年公布了UML建模语言标准。UML定义了9种模型图,为软件开发过程的需求分析、系统设计、系统部署阶段提供建模支持,这9种模型图分别是用例图、类图、对象图、状态图、活动图、序列图、协作图、构件图和部署图。这些模型图从不同的侧面对系统进行建模。
在需求分析阶段,UML使用用例图、类图、协作图、顺序图和状态图从面向对象的角度出发来定义应用需求。在大多数情况下,为了得到一个完整的业务需求定义,这5种模型都要使用。但在系统功能相对简单的情况下,可以只使用用例图、类图、顺序图来定义需求。
用例描述了角色在系统中承担的职责,用例从系统角色的角度对系统功能进行建模。也可以说用例是事件表的延伸,事件表最先捕捉到系统需要响应的事件,然后通过事件表分析出系统角色,确定角色的属性和行为,最后再通过用例图对系统功能建模。
下图显示了一个用户注册的用例。一个简单的小人图形表示系统角色。这个小人图形有一个可以表示其角色的名字。用例用一个在里面标有名称的椭圆所代表,角色与用例之间的线条表示了角色参与哪些用例。
图 1 有一个角色的简单用例
用例表明了角色与系统如何交互来完成业务活动,用例包含完成这个业务活动的所有步骤,这些活动步骤需要在用例中完整描述出来。一个用例可能会对应不同的活动场景,例如用户注册可能会对应在手机端注册和电脑端注册两种活动场景。所以,场景是对用例内部活动的识别和描述。
绘制用例图时,我们需要明确角色和用例,用例和用例之间的关系。角色和用例是关联关系,也就是角色参与到这个用例中,关联关系是一条直线(有些UML绘图工具也使用带单向箭头的直线),用于连接角色和用例。
图 2 角色和用例的关联关系
用例和用例之间主要是包含关系、扩展关系和依赖关系。
包含关系
包含关系是指一个用例在执行过程中,会调用另外一个用例来完成相关任务,也就是在一个用例的内部包含了另外一个用例。例如,用户注册和用户登录用例都需要调用数据库角色的存储用户信息用例,在这种情况下,就可以把数据库角色的存储用户信息用例包含到用户注册和用户登录用例中。
图 3 用例和用例间的包含关系
扩展关系
扩展关系是一个用例对另一个用例功能的扩展。例如,用户注册有手机端注册和电脑端注册两个注册场景,则可以把用户注册作为基本用例,手机端注册和电脑端注册作为扩展用例。
图 4 用例和用例间的扩展关系
依赖关系
依赖关系是一个用例在活动执行过程中,要依赖另一个用例的执行。例如,A用例依赖B用例,A用例或使用B用例执行后的返回结果,或使用B用例执行部分功能。依赖关系类似于包含关系,都是在用例执行过程中,调用其它用例来完成部分任务。
了解了用例的关系和绘制方法后,我们就可以根据前面给出的角色表来绘制人脉V1.0系统的用例图。
绘制用例图使用的工具有很多,在这里我使用Visio工具绘制用例图。我们分别绘制用户角色、名片角色和数据库角色的用例图。
用户角色用例图
下图是用户角色用例图,用户角色用例有注册、登录、添加名片、编辑名片、删除名片、查看名片和翻阅名片用例。虚线椭圆的用例是数据库角色和名片角色的用例,这些用例被用户角色的用例所使用。例如,下图的添加名片用例使用了名片角色的存储名片用例,而名片角色的存储名片用例又使用了数据库角色的存储名片信息用例。
其中注册用例没有按注册场景分,这是因为在V1.0版我们主要考虑在电脑端注册。
图 5 用户角色用例图
名片角色用例图
下图是名片角色用例图。名片角色用例有存储名片、获取名片、查询名片、删除名片和展示名片用例。
图 6 名片角色用例图
数据库角色用例图
下图是数据库角色用例图。数据库角色用例图有存储用户信息、存储名片信息、获取用户信息、获取名片信息、名片查询和删除名片用例。
图 7 数据库角色用例图
至此,我们已经完成了人脉项目V1.0系统用户角色、名片角色、数据库角色用例图的绘制,建立了人脉项目V1.0系统功能需求模型。下节课我们将对每个用例配置用例规约。