1、2022-3-231第六章第六章 面向对象的需求分析面向对象的需求分析 o面向对象的需求分析方法的核心是利用面向对象的概念面向对象的需求分析方法的核心是利用面向对象的概念和方法为软件需求建造模型。它包含面向对象风格的图和方法为软件需求建造模型。它包含面向对象风格的图形语言机制以及用于指导需求分析的面向对象方法学。形语言机制以及用于指导需求分析的面向对象方法学。o面向对象的思想最初起源于面向对象的思想最初起源于1960年代中期的仿真程序设年代中期的仿真程序设计语言计语言Simula67。1980年代初出现的年代初出现的Smalltalk语言及其语言及其程序设计环境对面向对象技术的推广应用起到了显
2、著的程序设计环境对面向对象技术的推广应用起到了显著的促进作用。促进作用。o1990年代中后期诞生并迅速成熟的年代中后期诞生并迅速成熟的UML(统一建模语(统一建模语言,言,Unified Modeling Language)是面向对象技术发展)是面向对象技术发展的一个重要里程碑。的一个重要里程碑。UML统一了面向对象建模的基本统一了面向对象建模的基本概念、术语和表示方法,不仅为面向对象的软件开发过概念、术语和表示方法,不仅为面向对象的软件开发过程提供了能力丰富的表达手段,而且也为软件开发人员程提供了能力丰富的表达手段,而且也为软件开发人员提供了互相交流、分享经验的共用语言。提供了互相交流、分享
3、经验的共用语言。2022-3-232面向对象的需求分析面向对象的需求分析 o面向对象的概念与思想面向对象的概念与思想oUML概述概述o基于基于UML的需求分析的需求分析 以以“家庭保安系统家庭保安系统”为实例,介绍与需求分析相为实例,介绍与需求分析相关的部分关的部分UML语言机制以及基于语言机制以及基于UML的面向对的面向对象的需求分析方法和过程。象的需求分析方法和过程。2022-3-2336.1 面向对象的概念与思想面向对象的概念与思想o客观世界中的应用问题都是由实体及其相互关系构成的。客观世界中的应用问题都是由实体及其相互关系构成的。o可以将客观世界中与应用问题有关的实体及其属性抽象为可以
4、将客观世界中与应用问题有关的实体及其属性抽象为问题空间中的对象。问题空间中的对象。o为应用问题寻求软件解,是借助于计算机语言对其提供的为应用问题寻求软件解,是借助于计算机语言对其提供的实体施加某些动作,以动作的结果给出问题的解。实体施加某些动作,以动作的结果给出问题的解。o面向对象面向对象(Object-Oriented,简称简称OO)的需求分析方法通过的需求分析方法通过提供对象、对象间消息传递等语言机制让分析人员在解空提供对象、对象间消息传递等语言机制让分析人员在解空间中直接模拟问题空间中的对象及其行为间中直接模拟问题空间中的对象及其行为2022-3-234面向对象的概念与思想面向对象的概念
5、与思想 OO方法学核心概念:方法学核心概念: (1) 对象对象 对象是现实世界中个体或事物的抽象表示,对象是现实世界中个体或事物的抽象表示,是其属性和相关操作的封装。属性表示对象的性是其属性和相关操作的封装。属性表示对象的性质,属性值规定了对象所有可能的状态。对象的质,属性值规定了对象所有可能的状态。对象的操作是指该对象可以展现的外部服务。例如,大操作是指该对象可以展现的外部服务。例如,大型客机可视为对象,它具有位置、速度、颜色、型客机可视为对象,它具有位置、速度、颜色、容量等属性,对于容量等属性,对于 该对象可施行起飞、降落、加该对象可施行起飞、降落、加速、维修等操作,这些操作将或多或少地改
6、变飞速、维修等操作,这些操作将或多或少地改变飞机的属性值机的属性值(状态状态)。 2022-3-235如:人这个实体如:人这个实体属性:姓名、年龄、职业属性:姓名、年龄、职业行为:跑、跳行为:跑、跳TomTomNameNameAgeAgeProfessiorProfessiorWalkWalkDanceDanceNameNameNameNameAgeAgeAgeAgeProfessiorProfessiorProfessiorProfessiorWalkWalkWalkWalkDanceDanceDanceDance属性属性属性属性行为行为行为行为TomTomNameNameAgeAgePro
7、fessiorProfessiorWalkWalkDanceDanceNameNameNameNameAgeAgeAgeAgeProfessiorProfessiorProfessiorProfessiorWalkWalkWalkWalkDanceDanceDanceDance属性属性属性属性行为行为行为行为2022-3-236面向对象的概念与思想面向对象的概念与思想 (2)类。类。类表示某些对象在属性和操作方面的共同特征。类表示某些对象在属性和操作方面的共同特征。例如,直升飞机、大型客机、轰炸机可归为飞行器例如,直升飞机、大型客机、轰炸机可归为飞行器类。共同属性有:位置、速度和颜色等。类。共
8、同属性有:位置、速度和颜色等。共同操作有:起飞、降落、加速和维修等。共同操作有:起飞、降落、加速和维修等。飞行器类飞行器类:位位 置置速速 度度颜颜 色色起起 飞飞降降 落落加加 速速维维 修修2022-3-237面向对象的概念与思想面向对象的概念与思想 (3)继承继承 类之间的继承关系是现实世界中遗传关系的模类之间的继承关系是现实世界中遗传关系的模拟,它表示类之间的内在联系拟,它表示类之间的内在联系 以及对属性和操作以及对属性和操作的共享,即,子类可以沿用父类的共享,即,子类可以沿用父类(被继承类被继承类)的某的某些特征。子类也可以具有自己独有的属性和操作。些特征。子类也可以具有自己独有的属
9、性和操作。例如,飞行器、汽车和轮船可归于交通工具类,飞行器类可以继承交通工具类的某些属性和操作。直升飞机、大型客机、轰炸机可归为飞行器类。2022-3-238飞行器类飞行器类位位 置置,速速 度度,颜颜 色色起起 飞、降飞、降 落、加落、加 速、维速、维 修修直升飞机直升飞机大型客机大型客机轰炸机轰炸机2022-3-239面向对象的概念与思想面向对象的概念与思想 (4)聚集聚集 现实世界普遍存在部分现实世界普遍存在部分整体关系。整体关系。 例如,飞机可由发动机、机身、机械控制系统、例如,飞机可由发动机、机身、机械控制系统、电子控制系统等构成。电子控制系统等构成。 部分部分整体关系在整体关系在O
10、O方法学中表示为类之间的方法学中表示为类之间的聚集关系。在聚集关系下,部分类的对象是整体聚集关系。在聚集关系下,部分类的对象是整体类对象的一个组成部分。类对象的一个组成部分。 2022-3-2310飞飞 机机机械控制系统机械控制系统机身机身电子控制系统电子控制系统2022-3-2311面向对象的概念与思想面向对象的概念与思想 (5)消息)消息 消息传递是对象与其外部世界相互关联的唯一消息传递是对象与其外部世界相互关联的唯一途径。对象可以向其它对象发送消息以请求服务,途径。对象可以向其它对象发送消息以请求服务,也可以响应其它对象传来的消息,完成自身固有也可以响应其它对象传来的消息,完成自身固有的
11、某些操作,从而服务于其它对象。的某些操作,从而服务于其它对象。 例如,直升飞机可以响应轮船的海难急救信号,例如,直升飞机可以响应轮船的海难急救信号,起飞,加速,飞赴出事地点并实施救援作业。因起飞,加速,飞赴出事地点并实施救援作业。因为对象的操作主要用来响应外来消息并为其它对为对象的操作主要用来响应外来消息并为其它对象提供服务,所以它们也被称作象提供服务,所以它们也被称作“外部服务外部服务”。 面向对象面向对象 = 对象对象 + 类类 + 继承继承 + 聚集聚集 + 消息。消息。2022-3-23126.2 UML概述概述6.2.1 UML的语言机制的语言机制 UML主要以主要以Booch方法、
12、方法、OMT方法方法71和和OOSE方法为基础,同时也吸收了其他面向对象建模方方法为基础,同时也吸收了其他面向对象建模方法的优点,形成了一种概念清晰、表达能力丰富、法的优点,形成了一种概念清晰、表达能力丰富、适用范围广泛的面向对象的标准建模语言。适用范围广泛的面向对象的标准建模语言。2022-3-2313UML的语言机制的语言机制UMLUML通过图形化的表示机制从多个侧面刻画系统的分通过图形化的表示机制从多个侧面刻画系统的分析和设计模型。析和设计模型。 UMLUML共定义十种视图,可分四类:共定义十种视图,可分四类: (1) (1) 用例图(用例图(use case diagramuse ca
13、se diagram) 从外部用户的角度描述系统的功能,从外部用户的角度描述系统的功能,并指出功能的执行者。并指出功能的执行者。 (2)(2)静态图静态图 q类图类图(class diagram)(class diagram)、类图描述系统的静态结构,类图的结点表示系统中的类图描述系统的静态结构,类图的结点表示系统中的类及其属性和操作,类图的边表示类之间的联系,类及其属性和操作,类图的边表示类之间的联系,包括继承、关联、依赖、聚合等。包括继承、关联、依赖、聚合等。2022-3-2314 对象图对象图(object diagram)对象图是类图的一个实例。它描述在某种状态下,对象图是类图的一个实
14、例。它描述在某种状态下,或者在某一时间段系统中活跃的对象及其关系。或者在某一时间段系统中活跃的对象及其关系。在对象图中,一个类可以拥有多个活跃的对象实在对象图中,一个类可以拥有多个活跃的对象实例。例。q包图包图(package diagram) 包图描述系统的分解,表示包包图描述系统的分解,表示包(package)以及包之间以及包之间的关系。的关系。 包由子包及类组成。包由子包及类组成。 包之间的关系包括继承、构成与依赖关系。包之间的关系包括继承、构成与依赖关系。2022-3-2315(3)行为图行为图 o 交互图交互图(interactive diagram)o 状态图状态图(statech
15、art diagram )o 活动图活动图(activity diagram) 它们从不同的侧面刻画系统的动态行为。它们从不同的侧面刻画系统的动态行为。 交互图描述对象之间的消息传递。它又可分为顺序交互图描述对象之间的消息传递。它又可分为顺序图图(sequence diagram)与合作图与合作图(collaboration diagram)两种形式。顺序图强调对象之间消息发送两种形式。顺序图强调对象之间消息发送的时间序。合作图更强调对象间的动态协作关系。的时间序。合作图更强调对象间的动态协作关系。 合作图也可通过消息序号来表示消息传递的时间序,合作图也可通过消息序号来表示消息传递的时间序,只
16、不过这种表示不如顺序图那样直观。只不过这种表示不如顺序图那样直观。2022-3-2316o状态图描述类的对象的动态行为。它包含对象所状态图描述类的对象的动态行为。它包含对象所有可能的状态、在每个状态下能够响应的事件以有可能的状态、在每个状态下能够响应的事件以及事件发生时的状态迁移与响应动作。及事件发生时的状态迁移与响应动作。o活动图描述系统为完成某项功能而执行的操作序活动图描述系统为完成某项功能而执行的操作序列,这些操作序列可以并发和同步。活动图中包列,这些操作序列可以并发和同步。活动图中包含控制流和信息流。控制流表示一个操作完成后含控制流和信息流。控制流表示一个操作完成后对其后续操作的触发,
17、信息流则刻画操作之间的对其后续操作的触发,信息流则刻画操作之间的信息交换。信息交换。2022-3-2317(4) 实现图实现图( implementation diagram )描述软件系统的实现。描述软件系统的实现。o构件图构件图(component diagram) 描述软件实现系统中各组成部件以及它们之间描述软件实现系统中各组成部件以及它们之间的依赖关系。一个部件可能是一个资源描述文件、的依赖关系。一个部件可能是一个资源描述文件、一个二进制文件或一个可执行文件。构件图用于一个二进制文件或一个可执行文件。构件图用于理解和分析软件各部分之间的相互影响程度。理解和分析软件各部分之间的相互影响程
18、度。 2022-3-2318o部署图部署图(deployment diagram) 描述软件系统运行环境的硬件及网络的物理描述软件系统运行环境的硬件及网络的物理体系结构。体系结构。 结点表示实际的计算机和设备,边表示结点结点表示实际的计算机和设备,边表示结点之间的物理连接关系之间的物理连接关系,也可显示连接的类型及结也可显示连接的类型及结点之间的依赖性。点之间的依赖性。 在结点内部,可以放置可执行部件和对象以在结点内部,可以放置可执行部件和对象以显示结点与可执行软件单元之间的对应关系。显示结点与可执行软件单元之间的对应关系。 部署图对于软件安装工程师有重要的参考部署图对于软件安装工程师有重要的
19、参考价值。价值。2022-3-2319例例: 课程注册管理系统的用例图课程注册管理系统的用例图o课表维护、个人课程规划和课表维护、个人课程规划和选课学生花名册查询。教务选课学生花名册查询。教务管理人员使用管理人员使用“课表维护课表维护”用例,设置或修改课程属性用例,设置或修改课程属性(课程的时间、地点、上课(课程的时间、地点、上课老师等),增删课程;老师等),增删课程;o学生使用学生使用“个人课程规划个人课程规划”用例选课、修改自己的个人用例选课、修改自己的个人课表,收费管理系统根据每课表,收费管理系统根据每个学生的选课情况计算其应个学生的选课情况计算其应缴费用;缴费用;o老师使用老师使用“选
20、课学生花名册选课学生花名册查询查询”用例获取选定其所开用例获取选定其所开课程的学生花名册。课程的学生花名册。2022-3-2320课程注册管理系统的类图课程注册管理系统的类图2022-3-2321o图图6.2表示课程注册管理系统包括:表示课程注册管理系统包括: “教务管理人员教务管理人员”、“学生学生”、“老师老师”、“课程课程”、“课程设置课程设置”、“课程注册表课程注册表”、“课程注册管理器课程注册管理器”、“课程管理器课程管理器”八个类。八个类。o前三个类为一般化的前三个类为一般化的“用户用户”类的子类。类的子类。 一门一门“课程课程”可由一到多个可由一到多个“课程设置课程设置”构成,例
21、如,对构成,例如,对于全校性的公共基础课,由于选修的学生太多,必须安排于全校性的公共基础课,由于选修的学生太多,必须安排不同的老师、不同的教室或者不同的时间段。不同的老师、不同的教室或者不同的时间段。o“学生学生”、“老师老师”与与“课程设置课程设置”之间,之间,“课程注册表课程注册表”与与“课程注册管理器课程注册管理器”之间,以及之间,以及“课程注册管理器课程注册管理器”与与“课程课程”之间存在着关联关系。之间存在着关联关系。2022-3-2322用用UML顺序图表示顺序图表示“个人课程规划个人课程规划”用例中的学生选课过程用例中的学生选课过程2022-3-2323用用UML协作图表示协作图
22、表示“个人课程规划个人课程规划”用例中的学生选课过程用例中的学生选课过程o 2022-3-2324 UML状态图示例状态图示例o “课程设置课程设置”对象的状态图表示,每个对象的状态图表示,每个“课程设置课程设置”最多最多只能容纳只能容纳50个选课学生。个选课学生。2022-3-23256.2.2 基于基于UML的软件开发过程的软件开发过程o虽然虽然UML是独立于软件开发过程的,即,是独立于软件开发过程的,即,UML能够在几乎任何一种软件开发过程中使用,但是,能够在几乎任何一种软件开发过程中使用,但是,熟悉一种有代表性的面向对象的软件开发过程,熟悉一种有代表性的面向对象的软件开发过程,并知悉并
23、知悉UML各语言要素在过程中不同阶段的应用,各语言要素在过程中不同阶段的应用,对于理解对于理解UML将大有裨益。将大有裨益。o图图6.6表示了一种迭代的渐进式软件开发过程,它表示了一种迭代的渐进式软件开发过程,它包含四个阶段:初启,细化,构造和移交。包含四个阶段:初启,细化,构造和移交。2022-3-2326 面向对象的迭代、渐进式软件开发过程面向对象的迭代、渐进式软件开发过程2022-3-23271 初启初启 在初启阶段,软件项目的发起人确定项目的主在初启阶段,软件项目的发起人确定项目的主要目标和范围,并进行初步的可行性分析和经济要目标和范围,并进行初步的可行性分析和经济效益分析。效益分析。
24、 2022-3-23282 细化细化(1 1)初步的需求分析。)初步的需求分析。采用采用UMLUML的用例描述目标软件系统所有比较重要、的用例描述目标软件系统所有比较重要、比较有风险的用例,利用用例图表示参与者与用例、比较有风险的用例,利用用例图表示参与者与用例、以及用例与用例之间的关系。以及用例与用例之间的关系。采用采用UMLUML的类图表示目标软件系统所基于的应用领的类图表示目标软件系统所基于的应用领域中的概念及概念之间的关系。这些相互关联的概域中的概念及概念之间的关系。这些相互关联的概念构成领域模型。念构成领域模型。如果领域中含有明显的流程处理成分,可以考虑利如果领域中含有明显的流程处理
25、成分,可以考虑利用用UMLUML的活动图来刻画领域中的工作流,并标识业的活动图来刻画领域中的工作流,并标识业务流程中的并发、同步等特征。务流程中的并发、同步等特征。2022-3-2329 (2)初步的高层设计。如果目标软件系统的规初步的高层设计。如果目标软件系统的规模比较庞大,那么,经初步需求分析获得的用模比较庞大,那么,经初步需求分析获得的用例、类将会非常多。此时,可以考虑根据用例、例、类将会非常多。此时,可以考虑根据用例、类在业务领域中的关系,或者根据业务领域中类在业务领域中的关系,或者根据业务领域中某种有意义的分类方法将整个软件系统划分为某种有意义的分类方法将整个软件系统划分为若干个包,
26、利用若干个包,利用UML的包图刻画这些包及其关的包图刻画这些包及其关系。如此,用例、用例图、类、类图将依据包系。如此,用例、用例图、类、类图将依据包的划分方法分属于不同的包,从而给出整个目的划分方法分属于不同的包,从而给出整个目标软件系统的高层结构。标软件系统的高层结构。2022-3-2330(3)部分的详细设计。对于系统中某些重要的、或部分的详细设计。对于系统中某些重要的、或者风险比较高的用例,可以采用交互图进一步探者风险比较高的用例,可以采用交互图进一步探讨其内部实现过程。同样,对于系统中的关键类,讨其内部实现过程。同样,对于系统中的关键类,也可以详细研究其属性和操作,并在也可以详细研究其
27、属性和操作,并在UML类图中类图中加以表现。加以表现。(4) 部分的原型构造。针对用例生成详尽的交互图,部分的原型构造。针对用例生成详尽的交互图,对所有相关类给出明确的属性和操作定义。对所有相关类给出明确的属性和操作定义。2022-3-2331 综上,在细化阶段可能需要使用的综上,在细化阶段可能需要使用的UML语言机语言机制包括:描述用户需求的用例及用例图,表示领制包括:描述用户需求的用例及用例图,表示领域概念模型的类图,表示业务流程处理的活动图,域概念模型的类图,表示业务流程处理的活动图,表示系统高层结构的包图,表示用例内部实现过表示系统高层结构的包图,表示用例内部实现过程的交互图等。程的交
28、互图等。 2022-3-23323 构造:构造:2022-3-2333构造阶段可能使用的构造阶段可能使用的UML语言机制:语言机制:1)用例及用例图。它们是开发人员在构造阶段进行分)用例及用例图。它们是开发人员在构造阶段进行分析和设计的基础。析和设计的基础。2)类图。在领域概念模型的基础上引进为软件实现所)类图。在领域概念模型的基础上引进为软件实现所必需的类、属性和方法。必需的类、属性和方法。3)交互图:表示针对用例设计的软件实现方法。)交互图:表示针对用例设计的软件实现方法。4)状态图:表示类的对象的状态)状态图:表示类的对象的状态事件事件响应行为。响应行为。5)活动图:表示复杂的算法过程,
29、尤其是过程中的并)活动图:表示复杂的算法过程,尤其是过程中的并发和同步。发和同步。6)包图:表示目标软件系统的顶层结构。)包图:表示目标软件系统的顶层结构。7)构件图。)构件图。8)部署图。)部署图。2022-3-23344 移交移交 在移交阶段,开发人员对构造阶段获得的软件在移交阶段,开发人员对构造阶段获得的软件系统在用户实际工作环境(或接近实际的模拟环系统在用户实际工作环境(或接近实际的模拟环境)中试运行,根据用户的修改意见进行少量调境)中试运行,根据用户的修改意见进行少量调整。整。 2022-3-23356.3 基于基于UML的需求分析的需求分析 初步业务需求描述形成后,基于初步业务需求
30、描述形成后,基于UML的需求分析分为以下的需求分析分为以下步骤:步骤: (1)利用用例及用例图表示需求:从业务需求描述出发获利用用例及用例图表示需求:从业务需求描述出发获取执行者和场景;对场景进行汇总、分类、抽象,形成用取执行者和场景;对场景进行汇总、分类、抽象,形成用例;确定执行者与用例、用例与用例图之间的关系,生成例;确定执行者与用例、用例与用例图之间的关系,生成用例图。用例图。 (2)利用包图及类图表示目标软件系统的总体框架结构:利用包图及类图表示目标软件系统的总体框架结构:根据领域知识、业务需求和工作经验,设计目标软件系统的顶根据领域知识、业务需求和工作经验,设计目标软件系统的顶层架构
31、;层架构;从业务需求描述中提取从业务需求描述中提取“关键概念关键概念”,形成领域概念模型;,形成领域概念模型;从概念模型和用例出发,研究系统中主要的类之间的关系,生从概念模型和用例出发,研究系统中主要的类之间的关系,生成类图。成类图。2022-3-2336需求分析过程需求分析过程2022-3-23376.3.1 开发场景开发场景o场景场景 从单个执行者的角度观察目标软件系统的从单个执行者的角度观察目标软件系统的功能和外部行为。这种功能通过系统与用户之间功能和外部行为。这种功能通过系统与用户之间的交互表征。场景是用户与系统进行交互的一组的交互表征。场景是用户与系统进行交互的一组具体的动作。场景是
32、用例的实例,而用例是某类具体的动作。场景是用例的实例,而用例是某类场景的共同抽象。场景的共同抽象。o对场景的完整描述包含场景名称、执行者实例、对场景的完整描述包含场景名称、执行者实例、前置条件、事件流和后置条件。前置条件、事件流和后置条件。o如,如,“家庭保安系统家庭保安系统”的初步需求描述,具有系的初步需求描述,具有系统配置、开机、关机、门窗监测、烟雾监测、复统配置、开机、关机、门窗监测、烟雾监测、复位等场景。位等场景。2022-3-2338门窗监测场景的描述:门窗监测场景的描述:场景名称场景名称:门窗监测。:门窗监测。参与执行者实例参与执行者实例:警报器,报警电话,显示器,门窗监视器。:警
33、报器,报警电话,显示器,门窗监视器。前置条件前置条件:系统已开机。:系统已开机。事件流事件流: (1)门窗监视器发现门或窗户发生异动,向软件系统报告异门窗监视器发现门或窗户发生异动,向软件系统报告异常事件。常事件。 (2)软件系统启动警报器并拨报警电话号码。软件系统启动警报器并拨报警电话号码。 (3)报警电话接通后,软件系统播出语音,报告异常事件报警电话接通后,软件系统播出语音,报告异常事件发生的时间、地点和事件的性质(门窗异动)。发生的时间、地点和事件的性质(门窗异动)。 (4)系统在控制面板的显示器上显示报警时间及当前状态系统在控制面板的显示器上显示报警时间及当前状态(报警:门窗异动)。(
34、报警:门窗异动)。后置条件后置条件:系统处于:系统处于“报警报警”状态。状态。2022-3-2339场景的分类场景的分类(1)(1) 实际场景实际场景 对实际的业务处理流程或其优化流程的描述,是用户需求对实际的业务处理流程或其优化流程的描述,是用户需求的重要组成部分。的重要组成部分。(2)(2)设想场景设想场景 分析人员对目标软件系统投入应用后经改进或优化的业务分析人员对目标软件系统投入应用后经改进或优化的业务流程的描述。流程的描述。(3)(3)评价场景评价场景 确认需求或提出改进建议为主要目的的业务流程描述。确认需求或提出改进建议为主要目的的业务流程描述。(4)(4)培训场景:面向开发人员及
35、用户解释系统的功能和外部行培训场景:面向开发人员及用户解释系统的功能和外部行为的业务流程描述。为的业务流程描述。2022-3-2340场景的获取场景的获取 确定执行者和场景的关键在于理解业务领域和初步需求确定执行者和场景的关键在于理解业务领域和初步需求描述文档。下列问题的回答可帮助分析人员获取场景:描述文档。下列问题的回答可帮助分析人员获取场景: (1 1)目标软件系统有哪些执行者?目标软件系统有哪些执行者? (2 2)执行者希望系统执行的任务有哪些?执行者希望系统执行的任务有哪些? (3 3)执行者希望获得哪些信息?这些信息由谁生成?由执行者希望获得哪些信息?这些信息由谁生成?由谁修改?谁修
36、改? (4 4)执行者需要通知系统哪些事件?系统响应这些事件执行者需要通知系统哪些事件?系统响应这些事件时会表现出哪些外部行为?时会表现出哪些外部行为? (5 5)系统将通告执行者哪些事件?系统将通告执行者哪些事件? 场景将促成开发人员和用户对于业务处理流程和目标软场景将促成开发人员和用户对于业务处理流程和目标软件系统的功能范围的共同理解。在场景确定之后,通过对件系统的功能范围的共同理解。在场景确定之后,通过对场景的汇总、分类归并、抽象即可形成用例。场景的汇总、分类归并、抽象即可形成用例。2022-3-23416.3.2 生成用例生成用例o从外部用户的视角看,一个用例是执行者从外部用户的视角看
37、,一个用例是执行者(actor)(actor)与目标软件系统之间一次典型的交互作用。与目标软件系统之间一次典型的交互作用。o从软件系统内部的视角出发,一个用例代表着系从软件系统内部的视角出发,一个用例代表着系统执行的一系列动作,动作执行的结果能够被外统执行的一系列动作,动作执行的结果能够被外部的执行者所察觉。部的执行者所察觉。o执行者指外部用户或外部实体在系统中扮演的角执行者指外部用户或外部实体在系统中扮演的角色。色。o如果多个用户在使用目标软件系统时扮演同一角如果多个用户在使用目标软件系统时扮演同一角色,这些用户用单一执行者表示。色,这些用户用单一执行者表示。o如果一个用户扮演多种角色,则需
38、要用多个执行如果一个用户扮演多种角色,则需要用多个执行者来表示同一用户。者来表示同一用户。 2022-3-2342生成用例生成用例o对用例的完整描述包括用例名称、参与执行者、对用例的完整描述包括用例名称、参与执行者、前置条件、一个主事件流、前置条件、一个主事件流、0 0到多个辅事件流、后到多个辅事件流、后置条件。置条件。o主事件流表示正常情况下执行者与系统之间的信主事件流表示正常情况下执行者与系统之间的信息交互及动作序列,辅事件流则表示特殊情况或息交互及动作序列,辅事件流则表示特殊情况或异常情况下的信息交互及动作序列。异常情况下的信息交互及动作序列。o显式地分隔主、辅事件流是为了使分析人员首先
39、显式地分隔主、辅事件流是为了使分析人员首先聚焦于正常的业务处理流程,同时也便于用例的聚焦于正常的业务处理流程,同时也便于用例的读者理解业务需求。读者理解业务需求。2022-3-2343生成用例生成用例 用例源于分析人员对场景的分类和抽象,对相似场景进行用例源于分析人员对场景的分类和抽象,对相似场景进行归并,使得一个用例可以通过实例化、参数调节而涵盖多归并,使得一个用例可以通过实例化、参数调节而涵盖多个场景。个场景。 例如,例如,“家庭保安系统家庭保安系统”中的中的“开机开机”、“关机关机”、“复复位位”三个场景可以归并为三个场景可以归并为“命令处理命令处理”用例,三个场景之用例,三个场景之间的
40、差异通过用户命令区分。间的差异通过用户命令区分。 门窗监测、烟雾监测两个场景可归并为统一的门窗监测、烟雾监测两个场景可归并为统一的“传感器监传感器监测测”用例。用例。 熟悉业务领域的分析师,可以略过场景,直接从业务需求描熟悉业务领域的分析师,可以略过场景,直接从业务需求描述中获取用例。述中获取用例。 在家庭保安系统中,执行者有在家庭保安系统中,执行者有“用户用户”、“传感器传感器”、“警报器警报器”、“报警电话报警电话”、“显示器显示器”,用例有,用例有“系统系统配置配置”、“命令响应命令响应”和和“传感器监测传感器监测”。2022-3-2344“传感器监测传感器监测”用例的描述用例的描述用例
41、名称用例名称:传感器监测:传感器监测参与执行者参与执行者:各类传感器,警报器,报警电话,显示器:各类传感器,警报器,报警电话,显示器前置条件前置条件:系统已开机。:系统已开机。主事件流主事件流: (1)传感器向目标软件系统上报其监测数据,系统判断监传感器向目标软件系统上报其监测数据,系统判断监测数据正常。测数据正常。 (2)如果不正常,系统启动警报器,拨报警电话号码。如果不正常,系统启动警报器,拨报警电话号码。 (3)报警电话接通后,软件系统播出语音,报告异常事件报警电话接通后,软件系统播出语音,报告异常事件发生的时间、地点和事件的性质。发生的时间、地点和事件的性质。 (4)系统在控制面板的显
42、示器上显示报警时间及当前状态系统在控制面板的显示器上显示报警时间及当前状态(报警)。(报警)。2022-3-2345“传感器监测传感器监测”用例的描述用例的描述辅事件流辅事件流: (1)如果报警电话无人接听,则按照重拨延迟反复拨号,如果报警电话无人接听,则按照重拨延迟反复拨号,直至电话接通,再转入主事件流的步骤(直至电话接通,再转入主事件流的步骤(3 3)。)。 (2)如果重拨次数达到系统预设的最大次数,电话仍无如果重拨次数达到系统预设的最大次数,电话仍无人接听,则跳过主事件流的步骤(人接听,则跳过主事件流的步骤(3 3),转入步骤(),转入步骤(4 4)。)。后置条件后置条件: 如果已发现异
43、常的监测数据,系统处于如果已发现异常的监测数据,系统处于“报警报警”状态;状态;否则系统处于正常的否则系统处于正常的“监测监测”状态。状态。2022-3-23466.3.3 用活动图表示用例用活动图表示用例o用例的描述既可采用自然语言,也可采用活动图,用例的描述既可采用自然语言,也可采用活动图,活动图表示法更为精确、直观。活动图表示法更为精确、直观。o下面介绍活动图的语法机制,然后结合实例说明下面介绍活动图的语法机制,然后结合实例说明如何用活动图表示用例。如何用活动图表示用例。2022-3-23471 UML1 UML活动图活动图o用例的事件流或者操作均可表示为一系列的活动,每个活用例的事件流
44、或者操作均可表示为一系列的活动,每个活动在活动图中被表示为一个结点。动在活动图中被表示为一个结点。o结点之间的有向边表示顺序执行的活动。结点之间的有向边表示顺序执行的活动。o在结点间的连接边上可以附加条件表达式,表示在有向连在结点间的连接边上可以附加条件表达式,表示在有向连接边的源结点执行完成后,如果条件成立,则开始执行有接边的源结点执行完成后,如果条件成立,则开始执行有向连接边的目标结点所表示的活动;如果条件不成立,则向连接边的目标结点所表示的活动;如果条件不成立,则目标结点的活动不执行。目标结点的活动不执行。o菱形在活动图中表示条件判断,条件表达式一般出现在以菱形在活动图中表示条件判断,条
45、件表达式一般出现在以菱形为源结点的有向边上。菱形为源结点的有向边上。 o活动图可以表示过程的并发。活动图的同步条活动图可以表示过程的并发。活动图的同步条( (水平或者水平或者垂直粗线垂直粗线) )可以将一条有向连接边分叉为多个并发执行的可以将一条有向连接边分叉为多个并发执行的分支进程,或将多个有向连接边上的进程同步合并为一个分支进程,或将多个有向连接边上的进程同步合并为一个进程。进程。2022-3-2348UMLUML活动图活动图泳道泳道o为了描述活动的责任对象,活动图引进了为了描述活动的责任对象,活动图引进了“泳道泳道”的概念。的概念。泳道是由垂直长线分割出来的矩形区域,在泳道上方的对泳道是
46、由垂直长线分割出来的矩形区域,在泳道上方的对象负责该矩形区域内的所有活动。象负责该矩形区域内的所有活动。如,在图如,在图6.86.8中,类中,类“CustomerCustomer”的对象负责的对象负责“插入银行卡插入银行卡”、“输入密码输入密码”、“选择功能选择功能”、“输入金额输入金额”四项活动,四项活动,其余活动由类其余活动由类“ATM systemATM system”的对象负责。的对象负责。2022-3-2349典型的活动图典型的活动图2022-3-23502 2 用例的活动图表示用例的活动图表示 传传感感器器监监测测用用例例活活动动图图2022-3-23516.3.4 生成用例图生成
47、用例图o执行者与用例之间的关系执行者与用例之间的关系: 触发执行和信息交换触发执行和信息交换o如,在如,在“家庭保安系统家庭保安系统”中,执行者中,执行者“用户用户”在在触发用例触发用例“命令响应命令响应”的同时,还要向用例传送的同时,还要向用例传送命令信息。命令信息。o 在在UMLUML用例图中,从执行者指向用例的边表示触用例图中,从执行者指向用例的边表示触发执行和发执行和/ /或信息交换,从用例指向执行者的边则或信息交换,从用例指向执行者的边则表示用例将生成的信息传递给执行者。表示用例将生成的信息传递给执行者。2022-3-2352UMLUML用例与用例之间的关系用例与用例之间的关系(1)
48、使用(使用(useuse)关系,如果多个用例都有一个公共的动)关系,如果多个用例都有一个公共的动作序列,为避免重复并使模型简洁,可以将公共动作序作序列,为避免重复并使模型简洁,可以将公共动作序列抽取出来,构成新的独立用例。列抽取出来,构成新的独立用例。 原来的多个用例与新的用例之间通过使用关系连接。原来的多个用例与新的用例之间通过使用关系连接。 如,如,“家庭保安系统家庭保安系统”中,中,“系统配置系统配置”和和“命令响命令响应应”两个用例都使用公共的两个用例都使用公共的“密码验证密码验证”子用例。子用例。(2)扩展(扩展(extendextend)关系。如果一个用例的动作序列完全)关系。如果
49、一个用例的动作序列完全包含另一个用例的动作序列,且前者含有后者所不具备包含另一个用例的动作序列,且前者含有后者所不具备的一些特殊情况下的处理动作,则称前者扩展后者。例的一些特殊情况下的处理动作,则称前者扩展后者。例如,图如,图6.10 6.10 中的中的“传感器监测传感器监测”用例仅包含正常的处用例仅包含正常的处理流程,而理流程,而“报警电话未接通报警电话未接通”用例除正常流程外还增用例除正常流程外还增加了加了“重复拨号重复拨号”以及以及“重拨次数达到最大次数仍无人重拨次数达到最大次数仍无人接听接听”这两种异常处理动作。这两种异常处理动作。2022-3-2353“家庭保安系统家庭保安系统”的用
50、例图的用例图2022-3-23546.3.5 建立顶层架构建立顶层架构o顶层架构的主要目的是为后续的分析和设计活动顶层架构的主要目的是为后续的分析和设计活动建立一种结构和分划,以便开发人员在不同的开建立一种结构和分划,以便开发人员在不同的开发阶段,以及同一开发阶段的不同开发人员,能发阶段,以及同一开发阶段的不同开发人员,能够聚焦于系统的不同部分。够聚焦于系统的不同部分。o顶层架构是分析和设计阶段的成果。随着开发过顶层架构是分析和设计阶段的成果。随着开发过程的推进,框架中的内容不断丰富、翔实,最终程的推进,框架中的内容不断丰富、翔实,最终演进为完整的面向对象软件结构。演进为完整的面向对象软件结构