软件工程第10章教程

上传人:我** 文档编号:114716465 上传时间:2019-11-12 格式:PPT 页数:64 大小:1.31MB
返回 下载 相关 举报
软件工程第10章教程_第1页
第1页 / 共64页
软件工程第10章教程_第2页
第2页 / 共64页
软件工程第10章教程_第3页
第3页 / 共64页
软件工程第10章教程_第4页
第4页 / 共64页
软件工程第10章教程_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《软件工程第10章教程》由会员分享,可在线阅读,更多相关《软件工程第10章教程(64页珍藏版)》请在金锄头文库上搜索。

1、第十章 面向对象分析,西安电子科技大学网络学院课程,第十章 面向对象分析,第十章 面向对象分析 不论采用哪种方法开发软件,分析的过程都是提取系统需求的过程。分析工作主要包括三项内容,这就是理解、表达和验证。 首先,系统分析员通过与用户及领域专家的充分交流,力求完全理解用户需求和该应用领域中的关键性的背景知识,并用某种无二义性的方式把这种理解表达成文档资料。 分析过程得出的最重要的文档资料是软件需求规格说明(在面向对象分析中,主要由对象模型、动态模型和功能模型组成)。,第十章 面向对象分析,面向对象分析(通常缩写为OOA)的关键,是识别出问题域内的对象,并分析它们相互间的关系,最终建立起问题域的

2、简洁、精确、可理解的正确模型。在用面向对象观点建立起的三种模型中,对象模型是最基本、最重要、最核心的。 10.1 面向对象分析的基本过程 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。 面向对象分析过程从分析陈述用户需求的文件开始,可能由用户(包括出资开发该软件的业主代表及最终用户)单方面写出需求陈述,也可能由系统分析员配合用户,共同写出需求陈述。,第十章 面向对象分析,当软件项目采用招标方式确定开发单位时,“标书”往往可以作为初步的需求陈述。 需求陈述通常是不完整、不准确的,而且往往是非正式的。通过分析,可以发现和改正原始陈述中的二义性和不一致性,补充遗漏的内容,从而使需求

3、陈述更完整、更准确。 在分析需求陈述的过程中,系统分析员需要反复多次地与用户协商、讨论、交流信息,还应该调研,了解现有的类似的系统。,第十章 面向对象分析,快速建立起一个可在计算机上运行的原型系统,非常有助于分析员和用户之间的交流和理解,从而能更正确地提炼出用户的需求。 系统分析员应该深入理解用户需求,抽象出目标系统的本质属性,并用模型准确地表示出来。用自然语言书写的需求陈述,通常是有二义性的,内容往往不完整、不一致。,第十章 面向对象分析,分析模型应该成为对问题的精确而又简洁的表示。后继的设计阶段将以分析模型为基础。通过建立分析模型,能够纠正在开发早期对问题域的误解。 在面向对象建模的过程中

4、,系统分析员必须认真向领域专家学习。尤其是建模过程中的分类工作往往有很大难度。 在面向对象建模的过程中,还应该仔细研究以前针对相同的或类似的问题域进行面向对象分析所得到的结果。由于面向对象分析结果的稳定性和可重用性,这些结果在当前项目中往往有许多是可以重用的。,第十章 面向对象分析,10.1.2 三个子模型与五个层次 面向对象建模得到的模型包含对象的三个要素,即静态结构(对象模型),交互次序(动态模型)和数据变换(功能模型)。 解决的问题不同,这三个子模型的重要程度也不同:几乎解决任何一个问题,都需要从客观世界实体及实体间相互关系抽象出极有价值的对象模型;当问题涉及交互作用和时序时(例如,用户

5、界面及过程控制等),动态模型是重要的;解决运算量很大的问题(例如,高级语言编译、科学与工程计算等),则涉及重要的功能模型。动态模型和功能模型中都包含了对象模型中的操作(即服务或方法)。,第十章 面向对象分析,复杂问题(大型系统)的对象模型由下述五个层次组成:主题层(也称为范畴层)、类-&-对象层、结构层、属性层和服务层,如教材P224页 图10.1所示。 这五个层次很像叠在一起的五张透明塑料片,它们一层比一层显现出对象模型的更多细节。在概念上,这五个层次是整个模型的五张水平切片。 首先,面向对象分析通过控制读者能见到的层次数目来控制可见性。其次,面向对象分析增加了一个主题层,它可以从一个相当高

6、的层次描述总体模型,并对读者的注意力加以指导。,第十章 面向对象分析,一个主题有一个名称和一个标识它的编号。在描绘对象模型的图中,把属于同一个主题的那些类-&-对象框在一个框中,并在框的四角标上这个主题的编号。 上述五个层次对应着在面向对象分析过程中建立对象模型的五项主要活动: 找出类-&-对象; (或称:确定对象) 识别结构; (或称:确定结构) 识别主题; (或称:定义主题) 定义属性; (或称:定义属性和实例联系) 定义服务。 (或称:定义操作和消息联系),第十章 面向对象分析,这五项工作完全没有必要顺序完成,也无须彻底完成一项工作以后再开始另外一项工作。虽然这五项活动的抽象层次不同,但

7、是我们在进行面向对象分析时并不需要严格遵守自顶向下的原则。 综上所述,我们在概念上可以认为,面向对象分析大体上按照下列的顺序进行:寻找类-&-对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。但是,正如前面已经多次强调指出过的,分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要反复构造多遍才能建成。 通常,先构造出模型的子集,然后再逐渐扩充,直到完全、充分地理解了整个问题,才能最终把模型建立起来。,第十章 面向对象分析,10.2 需求陈述 10.2.1 书写要点 通常,需求陈述的内容包括:问题范围,功能需求,性能需求,应用环境及假设条件等。总之,需求陈述应该阐明

8、“做什么”而不是“怎样做”。 书写需求陈述时,要尽力做到语法正确,而且应该慎重选用名词、动词、形容词和同义词。 不少用户书写的需求陈述,都把实际需求和设计决策混为一谈。系统分析员必须把需求与实现策略区分开,后者是一类伪需求,分析员至少应该认识到它们不是问题域的本质性质。,第十章 面向对象分析,需求陈述可简可繁。对人们熟悉的传统问题的陈述,可能相当详细,相反,对陌生领域项目的需求,开始时可能写不出具体细节。 绝大多数需求陈述都是有二义性的、不完整的、甚至不一致的。某些需求有明显错误,还有一些需求虽然表述得很准确,但它们对系统行为存在不良影响或者实现起来造价太高。 需求陈述仅仅是理解用户需求的出发

9、点,它并不是一成不变的文档。不能指望没有经过全面、深入分析的需求陈述是完整、准确、有效的。,第十章 面向对象分析,系统分析员必须与用户及领域专家密切配合协同工作,共同提炼和整理用户需求。在这个过程中,很可能需要快速建立起原型系统,以便与用户更有效地交流。 教材P226 图10.2所示的自动取款机(ATM)系统,是讲述面向对象分析和面向对象设计时使用的一个实例。,第十章 面向对象分析,10.3 建立对象模型 面向对象分析首要的工作,是建立问题域的对象模型。这个模型描述了现实世界中的“类-&-对象”以及它们之间的关系,表示了目标系统的静态数据结构。 用面向对象方法开发绝大多数软件时,都首先建立对象

10、模型,然后再建立另外两个子模型。,第十章 面向对象分析,对象模型通常有五个层次。典型的工作步骤是,首先确定对象类和关联,对于大型复杂问题还要进一步划分出若干个主题;然后给类和关联增添属性,以进一步描述它们;接下来利用适当的继承关系进一步合并和组织类。 而对类中操作的最后确定,则需等到建立了动态模型和功能模型之后,因为这两个子模型更准确地描述了对类中提供的服务的需求。,第十章 面向对象分析,10.3.1 确定类-&-对象 类-&-对象是在问题域中客观存在的,系统分析员的主要任务,就是通过分析找出这些类-&-对象。首先,找出所有候选的类-&-对象;然后,从候选的类-&-对象中筛选掉不正确的或不必要

11、的。 1. 找出假选的类-&-对象 对象是对问题域中有意义的事物的抽象,它们既可能是物理实体,也可能是抽象概念。具体地说,大多数客观事物可分为下述五类: (1)可感知的物理实体,例如,飞机、汽车、书、房屋等等。 (2)人或组织的角色,例如,医生、教师、雇主、雇员、计算机系、财务处等等。,第十章 面向对象分析,(3) 应该记忆的事件,例如,飞行、演出、访问、交通事故等等。 (4) 两个或多个对象的相互作用,通常具有交易或接触的性质, 例如,购买、纳税、结婚等等。 (5) 需要说明的概念,例如,政策、保险政策、版权法等等。 在分析所面临的问题时,可以参照上列五类常见事物,找出在当前问题域中的候选类

12、-&-对象。 另一种更简单的分析方法,是所谓的非正式分析。 这种分析方法以用自然语言书写的需求陈述为依据,把陈述中的名词作为类-&-对象的候选者,用形容词作为确定属性的线索,把动词作为服务(操作)的候选者。,第十章 面向对象分析,下面以ATM系统为例,说明非正式分析过程: 银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问。 通常,在需求陈述中不会一个不漏地写出问题域中所有有关的类-&-对象,因此,

13、分析员应该根据领域知识或常识进一步把隐含的类-&-对象提取出来。 例如,在ATM系统的需求陈述中虽然没写“通信链路”和“事务日志”,但是,根据领域知识和常识可以知道,在ATM系统中应该包含这两个实体。,第十章 面向对象分析,2. 筛选出正确的类-&-对象 通过一个简单、机械的过程不可能正确地完成分析工作。非正式分析仅仅帮助我们找到一些候选的类-&-对象,应该严格考察每个候选对象,从中去掉不正确的或不必要的,仅保留确实应该记录其信息或需要其提供服务的那些对象。 (1)冗余 如果两个类表达了同样的信息,则应该保留在此问题域中最富于描述力的名称。以ATM系统为例,应该去掉“用户”、“磁卡”、“副本”

14、等冗余的类,仅保留“储户”和“现金兑换卡”这两个类。,第十章 面向对象分析,(2)无关 现实世界中存在许多对象,不能把它们都纳入到系统中去仅需要把与本问题密切相关的类-&-对象放进目标系统中,有些类在其他问题中可能很重要,但与当前要解决的问题无关,同样也应该把它们删掉。 以ATM系统为例,应该去掉候选类“成本”、“市”、“街道”、“营业厅”和“储蓄所”。,第十章 面向对象分析,(3)笼统 在需求陈述中常常使用一些笼统的、泛指的名词,虽然在初步分析时把它们作为候选的类-&-对象列出来了,但是,要么系统无须记忆有关它们的信息,要么在需求陈述中有更明确更具体的名词对应它们所暗示的事务,因此,通常把这

15、些笼统的或模糊的类去掉。 以ATM系统为例,“银行”实际指总行或分行,“访问”在这里实际指事务,“信息”的具体内容在需求陈述中随后就指明了。此外还有一些笼统含糊的名词。 总之,在本例中应该去掉“银行”、“网络”、“系统”、“软件”、“信息”、“访问”等候选类。,第十章 面向对象分析,(4)属性 在需求陈述中有些名词实际上描述的是其他对象的属性,应该把这些名词从候选类-&-对象中去掉。当然,如果某个性质具有很强的独立性,则应把它作为类而不是作为属性。 以ATM系统为例,“现金”、“支票”、“取款额”、“账单”、“余额”、“分行代码”、“卡号”、“密码”、“类型”等,实际上都应该作为属性对待。,第

16、十章 面向对象分析,(5)操作 在需求陈述中有时可能使用一些既可作为名词,又可作为动词的词,应该慎重考虑它们在本问题中的含义,以便正确地决定把它们作为类还是作为类中定义的操作。 例如,谈到电话时通常把“拨号”当作动词。当构造电话模型时确实应该把它作为一个操作,而不是一个类。但是,在开发电话的自动记账系统时,“拨号”需要有自己的属性(例如日期、时间、受话地点等),因此应该把它作为一个类。,第十章 面向对象分析,(6)实现 在分析阶段不应该过早地考虑怎样实现目标系统。因此,应该去掉仅和实现有关的候选的类-&-对象。 以ATM系统为例,“事务日志”无非是对一系列事务的记录,它的确切表示方式是面向对象设计的议题;“通信链路”在逻辑上是一种联系,在系统实现时它是关联链的物理实现。应该暂时去掉“事务日志”和“通信链路”这两个类,在设计或实现时再考虑它们。 综上所述,以ATM系统为例,经过初步筛选,剩下下列类-&-对象:ATM、中央计算机、分行计算机、柜员终端、总行、分行、柜员、储户、账户、事务、现金兑换卡。,第十章 面向对象分析,10.3.2 确定关联 多数人习惯于在初步分析确定了

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号