1、第六章 面向对象的需求分析 o 面向对象的需求分析方法的核心是利用面向对象的概念和方法为软件需求建造模型。它包含面向对象风格的图形语言机制以及用于指导需求分析的面向对象方法学。o 面向对象的思想最初起源于 1960年代中期的仿真程序设计语言 Simula67。 1980年代初出现的 Smalltalk语言及其程序设计环境对面向对象技术的推广应用起到了显著的促进作用。o 1990年代中后期诞生并迅速成熟的 UML(统一建模语言, Unified Modeling Language)是面向对象技术发展的一个重要里程碑。 UML统一了面向对象建模的基本概念、术语和表示方法,不仅为面向对象的软件开发过
2、程提供了能力丰富的表达手段,而且也为软件开发人员提供了互相交流、分享经验的共用语言。Date 1面向对象的需求分析 o 面向对象的概念与思想o UML概述o 基于 UML的需求分析以 “家庭保安系统 ”为实例,介绍与需求分析相关的部分 UML语言机制以及基于 UML的面向对象的需求分析方法和过程。Date 26.1 面向对象的概念与思想 o 客观世界中的应用问题都是由实体及其相互关系构成的。o 可以将客观世界中与应用问题有关的实体及其属性抽象为问题空间中的对象。o 为应用问题寻求软件解,是借助于计算机语言对其提供的实体施加某些动作,以动作的结果给出问题的解。o 面向对象 (Object-Ori
3、ented,简称 OO)的需求分析方法通过提供对象、对象间消息传递等语言机制让分析人员在解空间中直接模拟问题空间中的对象及其行为Date 3面向对象的概念与思想 OO方法学核心概念: (1) 对象对象是现实世界中个体或事物的抽象表示,是其属性和相关操作的封装。属性表示对象的性质,属性值规定了对象所有可能的状态。对象的操作是指该对象可以展现的外部服务。例如,大型客机可视为对象,它具有位置、速度、颜色、容量等属性,对于 该对象可施行起飞、降落、加速、维修等操作,这些操作将或多或少地改变飞机的属性值 (状态 )。 Date 4Date 5面向对象的概念与思想 ( 2) 类。类表示某些对象在属性和操作
4、方面的共同特征。例如,直升飞机、大型客机、轰炸机可归为飞行器类。共同属性有:位置、速度和颜色等。共同操作有:起飞、降落、加速和维修等。飞行器类 : 位 置速 度颜 色起 飞降 落加 速维 修Date 6面向对象的概念与思想 (3)继承类之间的继承关系是现实世界中遗传关系的模拟,它表示类之间的内在联系 以及对属性和操作的共享,即,子类可以沿用父类 (被继承类 )的某些特征。子类也可以具有自己独有的属性和操作。 例如,飞行器、汽车和轮船可归于交通工具类,飞行器类可以继承交通工具类的某些属性和操作 。 直升飞机、大型客机、轰炸机可归为飞行器类。Date 7飞行器类位 置 ,速 度 ,颜 色起 飞、降
5、 落、加 速、维 修直升飞机 大型客机轰炸机Date 8面向对象的概念与思想 (4)聚集现实世界普遍存在部分 整体关系。例如,飞机可由发动机、机身、机械控制系统、电子控制系统等构成。部分 整体关系在 OO方法学中表示为类之间的聚集关系。在聚集关系下,部分类的对象是整体类对象的一个组成部分。 Date 9飞 机机械控制系统机身 电子控制系统Date 10面向对象的概念与思想 ( 5)消息消息传递是对象与其外部世界相互关联的唯一途径。对象可以向其它对象发送消息以请求服务,也可以响应其它对象传来的消息,完成自身固有的某些操作,从而服务于其它对象。例如,直升飞机可以响应轮船的海难急救信号,起飞,加速,
6、飞赴出事地点并实施救援作业。因为对象的操作主要用来响应外来消息并为其它对象提供服务,所以它们也被称作 “外部服务 ”。面向对象 = 对象 + 类 + 继承 + 聚集 + 消息。Date 116.2 UML概述6.2.1 UML的语言机制UML主要以 Booch方法、 OMT方法 71和 OOSE方法为基础,同时也吸收了其他面向对象建模方法的优点,形成了一种概念清晰、表达能力丰富、适用范围广泛的面向对象的标准建模语言。Date 12UML的语言机制UML通过图形化的表示机制从多个侧面刻画系统的分析和设计模型。UML共定义十种视图,可分四类:(1) 用例图( use case diagram)从外
7、部用户的角度描述系统的功能,并指出功能的执行者。(2)静态图 q 类图 (class diagram)、类图描述系统的静态结构,类图的结点表示系统中的类及其属性和操作,类图的边表示类之间的联系,包括继承、关联、依赖、聚合等。Date 13 对象图 (object diagram)对象图是类图的一个实例。它描述在某种状态下,或者在某一时间段系统中活跃的对象及其关系。在对象图中,一个类可以拥有多个活跃的对象实例。q 包图 (package diagram)包图描述系统的分解,表示包 (package)以及包之间的关系。包由子包及类组成。包之间的关系包括继承、构成与依赖关系。Date 14(3)行为
8、图 o 交互图 (interactive diagram)o 状态图 (statechart diagram )o 活动图 (activity diagram)它们从不同的侧面刻画系统的动态行为。交互图描述对象之间的消息传递。它又可分为顺序图 (sequence diagram)与合作图 (collaboration diagram)两种形式。顺序图强调对象之间消息发送的时间序。合作图更强调对象间的动态协作关系。合作图也可通过消息序号来表示消息传递的时间序,只不过这种表示不如顺序图那样直观。Date 15o 状态图描述类的对象的动态行为。它包含对象所有可能的状态、在每个状态下能够响应的事件以及
9、事件发生时的状态迁移与响应动作。o 活动图描述系统为完成某项功能而执行的操作序列,这些操作序列可以并发和同步。活动图中包含控制流和信息流。控制流表示一个操作完成后对其后续操作的触发,信息流则刻画操作之间的信息交换。Date 16(4) 实现图 ( implementation diagram )描述软件系统的实现。o 构件图 (component diagram)描述软件实现系统中各组成部件以及它们之间的依赖关系。一个部件可能是一个资源描述文件、一个二进制文件或一个可执行文件。构件图用于理解和分析软件各部分之间的相互影响程度。Date 17o 部署图 (deployment diagram)描
10、述软件系统运行环境的硬件及网络的物理体系结构。结点表示实际的计算机和设备,边表示结点之间的物理连接关系 ,也可显示连接的类型及结点之间的依赖性。在结点内部,可以放置可执行部件和对象以显示结点与可执行软件单元之间的对应关系。部署图对于软件安装工程师有重要的参考价值。Date 18例 : 课程注册管理系统的用例图o课表维护、个人课程规划和选课学生花名册查询。教务管理人员使用 “课表维护 ”用例,设置或修改课程属性(课程的时间、地点、上课老师等),增删课程;o学生使用 “个人课程规划 ”用例选课、修改自己的个人课表,收费管理系统根据每个学生的选课情况计算其应缴费用;o老师使用 “选课学生花名册查询
11、”用例获取选定其所开课程的学生花名册。Date 19课程注册管理系统的类图Date 20o 图 6.2表示课程注册管理系统包括:“教务管理人员 ”、 “学生 ”、 “老师 ”、 “课程 ”、 “课程设置 ”、 “课程注册表 ”、 “课程注册管理器 ”、 “课程管理器 ”八个类。o 前三个类为一般化的 “用户 ”类的子类。一门 “课程 ”可由一到多个 “课程设置 ”构成,例如,对于全校性的公共基础课,由于选修的学生太多,必须安排不同的老师、不同的教室或者不同的时间段。o “学生 ”、 “老师 ”与 “课程设置 ”之间, “课程注册表 ”与 “课程注册管理器 ”之间,以及 “课程注册管理器 ”与
12、“课程 ”之间存在着关联关系。Date 21用 UML顺序图表示 “个人课程规划 ”用例中的学生选课过程Date 22用 UML协作图表示 “个人课程规划 ”用例中的学生选课过程o Date 23UML状态图示例o “课程设置 ”对象的状态图表示,每个 “课程设置 ”最多只能容纳 50个选课学生。Date 246.2.2 基于 UML的软件开发过程o 虽然 UML是独立于软件开发过程的,即, UML能够在几乎任何一种软件开发过程中使用,但是,熟悉一种有代表性的面向对象的软件开发过程,并知悉 UML各语言要素在过程中不同阶段的应用,对于理解 UML将大有裨益。o 图 6.6表示了一种迭代的渐进式
13、软件开发过程,它包含四个阶段:初启,细化,构造和移交。Date 25面向对象的迭代、渐进式软件开发过程Date 261 初启在初启阶段,软件项目的发起人确定项目的主要目标和范围,并进行初步的可行性分析和经济效益分析。Date 272 细化( 1)初步的需求分析。 采用 UML的用例描述目标软件系统所有比较重要、比较有风险的用例,利用用例图表示参与者与用例、以及用例与用例之间的关系。 采用 UML的类图表示目标软件系统所基于的应用领域中的概念及概念之间的关系。这些相互关联的概念构成领域模型。 如果领域中含有明显的流程处理成分,可以考虑利用 UML的活动图来刻画领域中的工作流,并标识业务流程中的并
14、发、同步等特征。Date 28( 2) 初步的高层设计。如果目标软件系统的规模比较庞大,那么,经初步需求分析获得的用例、类将会非常多。此时,可以考虑根据用例、类在业务领域中的关系,或者根据业务领域中某种有意义的分类方法将整个软件系统划分为若干个包,利用 UML的包图刻画这些包及其关系。如此,用例、用例图、类、类图将依据包的划分方法分属于不同的包,从而给出整个目标软件系统的高层结构。Date 29(3) 部分的详细设计。对于系统中某些重要的、或者风险比较高的用例,可以采用交互图进一步探讨其内部实现过程。同样,对于系统中的关键类,也可以详细研究其属性和操作,并在 UML类图中加以表现。(4) 部分的原型构造。针对用例生成详尽的交互图,对所有相关类给出明确的属性和操作定义。Date 30