《软件工程——理论、方法与实践》课件第5章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《软件工程——理论、方法与实践》课件第5章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程理论、方法与实践 软件工程 理论 方法 实践 课件
- 资源描述:
-
1、1 1第5章 面向对象的分析第5章 面向对象的分析5.1 面向对象分析的概念5.2 基于UML的需求分析5.3 案例本章小结习题2 2第5章 面向对象的分析5.1 面向对象分析的概念在面向对象的软件工程方法中,将软件系统问题看作是现实世界应用域问题的映射。客观世界中的系统依赖于实体和它们之间的协作,面向对象的软件系统则依赖于类和对象之间的协作。因此面向对象的分析方法的目标是将客观世界的实体转换为软件系统中的类和对象以及对象之间的协作模型。面向对象的分析过程是找出分析类、分析包,构建它们之间的静态关系和动态协作模型的过程。3 3第5章 面向对象的分析5.1.1 分析类在对象分析模型中,分析类是概
2、念层次上的内容,用于描述系统中较高层次的对象。在分析阶段,分析类直接与应用逻辑相关,而不关注纯粹的技术实现问题。分析类代表了系统设计中的一个或几个类或若干个子系统的抽象。4 4第5章 面向对象的分析这种抽象具有如下特点:(1)分析类侧重于处理功能性需求,而把非功能性需求推迟到后续的设计与实现活动中再实现。这使得分析类在问题域语境中更加突出、更加“概念化”,而且与其对应的设计与实现类相比具有更大的粒度。(2)分析类很少根据操作及其特征标记来定义或提供接口,而是通过较高的、非形式化层次的职责来定义其行为。职责是对由类定义行为的内聚子集的文本描述。5 5第5章 面向对象的分析(3)分析类定义属性,但
3、这些属性还处于较高的层次。通常这些属性的类型是概念性的,而且应从问题领域来考虑;而设计和实现类的属性类型通常就是程序设计语言的类型。而且分析期间定义的各种属性通常在设计和实现阶段对应各种类。(4)分析类涉及到关系,这些关系和设计与实现阶段的对应部分相比更加概念化。例如,关联的导航性在分析中并不十分重要,但在设计时却是必需的。又如,可以在分析中使用泛化,但在设计阶段如果得不到程序设计语言的支持就无法使用泛化。6 6第5章 面向对象的分析(5)从软件的功能需求来看,分析类可以划分成实体类、边界类和控制类三种类型。实体类:表示系统存储和管理的永久信息。边界类:表示参与者与系统之间的交互。控制类:表示
4、系统在运行过程中的业务控制逻辑。分析类在UML中可以用一般的类符号来表示,也可以用简化的形式。在UML语言中,使用构造型、和分别表示实体类、边界类和控制类。图5.1给出了UML构造型表示的三种分析类。这三种构造型在UML中已经标准化,并已用来帮助开发人员区别对待不同的类。每种构造型都有自己的符号。7 7第5章 面向对象的分析图5.1 三种分析类8 8第5章 面向对象的分析在图5.2中,ATMCard是一个实体类,表示用户的ATM卡信息;DisplayScreen,表示ATM的界面显示类;CardScanner是一个控制类,表示控制银行卡操作的业务逻辑类。9 9第5章 面向对象的分析图5.2 实
5、体类、边界类和控制类实例1010第5章 面向对象的分析1边界类图5.3为“取款用户界面”的边界类,用于支持“银行客户”参与者和“现金取款”用例的交互。“取款用户界面”允许银行客户输入取款的金额,验证金额数目是否大于银行客户账户的当前金额数目,然后由系统向用户支付现金。1111第5章 面向对象的分析图5.3 “取款用户界面”边界类1212第5章 面向对象的分析2控制类图5.4引入一个ATM系统中“打印调度程序”的控制类,它负责控制和协调“取款账单打印用户界面”边界类和“取款账单”实体类之间的打印。“打印调度程序”接受打印请求和要打印的当前账单,然后完成打印任务。1313第5章 面向对象的分析图5
6、.4 “打印调度程序”控制类及它与边界类、实体类的关系1414第5章 面向对象的分析3实体类实体类用于对长效且持久的信息建模。实体类主要是对客观世界中的个体、实际对象、实际事件的某些现象或概念的信息及相关行为进行建模。大多数情况下,实体类可以直接从问题域中客观世界存在的业务实体得到,例如可以将账单、银行账户、学生等实体抽象为实体类Bill、Account和Student。实体类的属性通常是表征该实体的一些特征信息,如对于一个银行Account类来说,银行账号、持有人、密码、联系地址、账户类型等现实世界的账户信息可以被抽取为Account类的属性,而对该账户的相关操作,如刷卡、更改密码等,则可抽
7、象为Account操作/方法。1515第5章 面向对象的分析5.1.2 用例实现用例实现可以用静态的结构和动态的协作模型来描述。可以是以文本的形式描述事件流的脚本、描述用例实现所涉及的分析类的类图、描述实现用例的对象间的交互协作的顺序图或协作图。如我们在3.5节中给出的关于在线下载的用例实现采用了顺序图。图5.5试图用UML模型给出用例、用例实现之间的关系。1616第5章 面向对象的分析图5.5 用例与用例实现1717第5章 面向对象的分析5.1.3 分析包在UML 模型中,包是一种分类事务,分析包是需求分析阶段的另一个产出元素。分析包提供了一种方法,用管理分块的方式对分析模型进行组织。分析包
8、可以包括分析类、用例实现及其他分析包。分析包应该具有强内聚性和弱耦合性,即它们所包含的元素应该紧密相关且彼此间的依赖性应尽可能小。1818第5章 面向对象的分析利用分析包可以对较大的系统进行划分,一般分析包应基于功能性需求与问题领域来构建,并且应能被具有该领域知识的人所理解,如系统用户。如对一个ATM系统,可根据其应具有的几大功能来创建和划分分析包。用例模型也可以作为分析包产生的基础。分析包可以为此后的体系结构设计提供基础,很可能成为体系结构设计模型中的子系统,或分布在一些子系统中。1919第5章 面向对象的分析5.1.4 分析模型分析模型是需求分析阶段需要构建的模型,包括分析类、分析包及它们
9、之间的关系模型,还包括用例实现。分析模型可以用图5.6所示的UML模型来描述。分析模型是分析制品(product)的聚合,而分析制品则是分析类、用例实现及分析包的组合;分析包也由分析类、用例分析或分析包组合而成。2020第5章 面向对象的分析图5.6 分析模型组成结构2121第5章 面向对象的分析5.2 基于UML的需求分析本节将结合第4章的自动取款机ATM系统对用例进行分析,讨论系统分析模型的建立。分析的主要目标是:(1)确定分析类及其对象要执行用例的事件流。(2)将用例的行为分配给相交互的分析对象,定义交互行为。2222第5章 面向对象的分析5.2.1 确定分析类以下是确定分析类的一般性准
10、则:(1)为每个由人充当的参与者确定一个主要边界类,并使这个类代表与参与者相交互的用户界面中的主窗口。(2)通过详细研究问题域和用例说明来确定实体类,主要对象是用例实现中需要涉及和处理的实体。(3)为每个初期建立的实体类确定一个基本边界类。(4)为每个由外部系统充当的参与者定义一个主要边界类,使其代表通信接口。2323第5章 面向对象的分析(5)确定一个控制类,负责处理用例实现中的控制和协调关系,然后按照用例实现的需求对该控制类进行精化。(6)对分析模型中业已存在的分析类加以考虑,确定是否有可重用的分析类,确定参与多个用例实现的分析类。(7)为参与用例实现的分析类建模类图,并使用这个类图表明用
11、例实现中所用到的关系。2424第5章 面向对象的分析1识别边界类用例模型给出了参与者和用例之间的交互关系,因此可以将一个参与者与一个用例之间的交互或通信关联映射为一个边界类。如图5.7示意,用户和用例之间可以识别出一个边界类,即用户界面类已可以实现用户与系统的交互,而外部系统和用例之间可以产生一个边界类作为本系统与外部系统的接口类。2525第5章 面向对象的分析图5.7 边界类的识别2626第5章 面向对象的分析2识别控制类控制类负责协调边界类和实体类,通常在现实世界中没有对应的事物,由于一个用例表明一个系统应完成的功能和行为,需要一个控制逻辑实现用例,因此可以初步将一个用例对应一个控制类,如
12、图5.8示意。2727第5章 面向对象的分析图5.8 控制类的识别2828第5章 面向对象的分析3识别实体类实体类通常是用例中的参与对象,对应着现实世界中的实体或事物。如物理存在的事物(汽车、报表、银行卡),人或角色(学生、职员、教授),机构(部门、学校、公司),物理设备(打印机、扫描仪、刷卡机),事件或行为(支付、订单、登录等)。实体类的识别可以借助于需求描述中的自然语言文本,文本中的名词可以作为类和属性的候选,而动词则可以作为方法和操作的筛选对象。综合上述原则和方法,我们可以识别出ATM系统的分析类,如表5.1、5.2所示。2929第5章 面向对象的分析3030第5章 面向对象的分析313
13、1第5章 面向对象的分析另外,识别边界类应当注意的问题有以下几点:(1)边界类应关注参与者与用例之间交互的信息或者响应的事件,不要描述窗口组件等界面的组成元素。(2)在分析阶段,力求使用用户的术语描述界面。(3)边界类实例的生命周期并不仅限于用例的事件流,如果两个用例同时与一个参与者交互,那么他们有可能会共用一个边界类,以增加边界类的复用性。3232第5章 面向对象的分析识别控制类应当注意的问题有以下几点:(1)当用例比较复杂时,特别是产生分支事件流的情况下,一个用例可以有多个控制类。(2)在有些情况下,用例事件流的逻辑结构十分简单,这时没有必要使用控制类,边界类可以实现用例的行为。例如ATM
14、系统中的用例“登录”。(3)如果不同用例包含的任务之间存在着比较密切的联系,则这些用例可以使用一个控制类,其目的是复用相似部分以降低复杂性。通常情况下,应该按照一个用例对应一个控制类的方法识别出多个控制类,再分析这些控制类,找出它们之间的共同之处。3333第5章 面向对象的分析识别实体类应当注意的问题有以下几点:(1)实体类的识别质量在很大程度上取决于分析人员书写文档的风格和质量。(2)自然语言是不精确的,因此在分析自然语言描述时应该规范描述文档中的一些措辞,尽量弥补这种不足。(3)在自然语言描述中,名词可以对应类、属性或同义词等多种类型,开发人员需要花费大量的时间进行筛选。3434第5章 面
展开阅读全文