收藏 分销(赏)

第补充章--面向对象的软件工程-管理信息系统.ppt

上传人:天**** 文档编号:14664861 上传时间:2026-10-27 格式:PPT 页数:59 大小:2.28MB 下载积分:10 金币
下载 相关
第补充章--面向对象的软件工程-管理信息系统.ppt_第1页
第1页 / 共59页
第补充章--面向对象的软件工程-管理信息系统.ppt_第2页
第2页 / 共59页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象的软件工程,一、面向对象的概念和原则:,二、标识对象模型的元素:,三、面向对象软件项目的管理:,四、面向对象分析(OOA):,五、面向对象设计(OOD):,一、面向对象的概念和原则:,软件开发的面向对象方法首先于60年代后期提出,然而花了几乎20年的时间对象技术才开始被广为使用。随时间的流逝,对象技术正在取代传统的软件开发方法。,1面向对象概念:,2类和对象:,3属性:,4操作、方法和服务:,5消息:,6封装、继承和多态,:,back,1面向对象概念:,面向对象(object-oriented)=对象(objects)+分类(classification)+继承(inheritance)+通信(communication)。,(采自Coad 和Yourdon的Object Oriented Analysis。),back,2类和对象:,类是一个OO概念,它封装了对描述某些现实世界实体的内容和行为所需的数据和过程抽象。,类是一个对一组相似对象的一般性描述(模板、模式或蓝图)。通过定义,存在于类中的所有对象继承其属性和用于操纵属性的操作。超类是类的集合,子类是类的实例。,这些定义蕴含了类层次的存在,超类的属性和操作被子类继承,而子类也可加入自己的“私有的”属性和方法。,back,4操作、方法和服务:,对象封装数据(表示为属性集合)和处理数据的算法,这些算法成为操作、方法或服务,并且可被视为传统意义上的模块。,被对象封装的每个操作提供了对象的一种行为,一旦对象接收到消息,它就开始某种行为。,back,5消息:,消息是对象间交互的手段,消息刺激接收对象产生某种行为,通过操作的执行来完成相应行为。,对象通过接收到一个告知他做什么的消息而被请求完成某一操作。接收者(对象)对消息的反应是:首先选择实现该消息名的操作,执行该操作,然后返回控制给调用者。,消息传递将面向对象系统连在一起,消息提供了对个体对象的行为和OO系统整体的洞察。,back,6封装、继承和多态:,OO的类和从类到处的对象封装数据和数据上的操作在一体中,这是的数据和过程的内部实现细节对外界隐蔽,数据结构和对他们的操作被合并在实体类中,并且简化了对象间的接口。发送消息的对象无需关心接收对象的内部数据结构,从而系统的耦合度被降低。,二、标识对象模型的元素:,对象模型的元素-类及对象、属性、操作和消息我们刚刚已经讲述了他们的概念,下面我们来讨论如何对一个实际问题标识这些元素。,1,标识类和对象:,2表示属性:,3定义操作:,4完成对象定义:,back,1标识类和对象:,通过检查问题陈述或对将被建造的系统的过程叙述进行“语法分析”来开始标识对象。对象可以是以下的各种之一:,外部实体(其它系统、设备、人员):,生产或消费被基于计算机的系统使用的信息。,事物(报告、显示、文字、信号):是问题的信息域的一部分。,发生的事情或事件(性质变迁或完成一系列的遥控的运动):出现在系统运行的环境内。,角色(管理者、工程师、销售人员):由和系统交互的人员所扮演。,组织单位(制造场所或装载码头):建立问题和系统整体功能的环境。,结构(传感器、四轮交通工具或计算机):,一个潜在的对象只有满足下面所提到的六个特征,才可能会被考虑成为包含在需求模型中的合法对象。这六个选择特征是:,保留的信息:仅当关于潜在对象的信息必须被记住才能使系统可以工作时,则它在分析中是有用的。,需要的服务:潜在对象必须拥有一组可标识的操作,可以以某种方式修改对象属性的值。,多个属性:在需求分析阶段,关注点应该是“较大的”信息(仅具有单个属性的对象在设计时可能是可用的,但在分析阶段,最好将它表达为另一个对象的属性。,2表示属性:,属性描述已经被选择包含在分析模型中的对象。在本质上,正是属性定义了对象,他们阐明了在问题空间中对象意味着什么。,为对象开发有意义的属性集,必须再次研究对问题的过程叙述并选择那些应“属于”该对象的事物,此外,对每个对象应回答下列问题:,“在当前的问题范围内,什么数据项(复合的或基本的)完整地定义了该对象”?,back,3定义操作:,操作定义对象的行为并以某种方式修改对象的属性,操作修改包含在对象中的一个或多个属性值。,总体来说操作可被分为三类:,以某种方式操纵数据的操作(增、删、重 格式化、选择),完成某种计算的操作,为控制事件的发生而监控对象的操作,4完成对象定义:,对操作的定义是完成刻划对象的最后一步,在上面中,我们刚刚讲到,操作通过对系统过程叙述的语法分析而被精选出来,其他的操作可通过了考虑对象的“生命历史”和考虑在系统的对象之间传递的消息而确定。,可以通过对对象必须被创建、修改、以某种方式操纵或读出、可能被删除的人士来定义对象的生命历史。,back,三、面向对象软件项目的管理:,1现代软件项目管理的分解:分解为以下的6项活动:,2OO的公共过程框架(common process framework,CPF):,3,面向对象项目的度量和估算:,4一种OO估算和进度安排的方法:,5面向对象项目的跟踪过程:,back,1现代软件项目管理的分解:分解为以下的6项活动:,建立项目的公共过程框架;,使用框架和历史度量信息来进行工作量和时间估算;,规定工作产品和里程碑,以使得进展可以被测度;,定义用于质量保证和控制的检查点;,管理当项目进展中不时发生的变化;,跟踪、监控和控制项目进展。,back,2OO的公共过程框架(common process framework,CPF):,其定义了组织的软件开发和维护途径,它表示了用于建造和维护软件的软件工程范型以及需要的任务、里程碑和可交付的产品,它确立了用于不同种类的项目开发的管理严格程度。,CPF总是可以进行适应性的修改,使得它可以满足每个项目组的需要,这是它最重要的特征。,对OO项目的有效的CPF不应该是线性的顺序模型(即生命周期型或瀑布模型)。就其本身性质而言,面向对象软件工程必须应用鼓励递进发表的范型,即OO软件通过一系列周期而演进,用于管理OO项目的公共过程框架必须本质上是演进的。,基于从原型、少量设计和客户反馈学到的知识来修改分析模型;,精化设计以适应你的修改;,开发特殊的对象(从库中得不到的);,用来自库中的和你心创建的对象组装新的原型;,进行测试以发现原型的错误;,获取客户对原型的反馈。,该方法一直继续,直至原型发展为可用的产品。,递归/并行模型有以下的两个特性:,对OO系统模型的分析和设计不能在相同的抽象层次上进行;,可以对系统中相互独立的构件同时进行分析和设计。,我们可以从另一个角度来看待这个模型,它将:,将问题系统地分解为高度独立的构件;,对每个独立构件进一步进行分解(即递归部份);,对所有构件的分解工作同时进行(即并行部分);,继续次过程直至完成。,必须注意的是:当所需的构件或子构件在复用库中存在时上面的分解过程即不再继续。,递归/并行过程的每次递进需要计划、工程(分析、设计、类提取、原型开发和测试)和评估活动(如下图所示)。,计划,分析,早期的分析/设计递进,设计,复审及精化,分析,设计,分析,设计,计划,分析,设计,提起可复用类,原型,测试,客户评估,复审及精化,第一个,原型,计划,分析,设计,提起可复用类,原型,测试,客户评估,复审及精化,下一个,增补,计划,分析,设计,原型,测试,客户评估,复审及精化,第n个,增补,提起可复用类,分析,3面向对象项目的度量和估算:,场景脚本的数量:,场景脚本-是描述用户和应用间交互的详细的步骤序列,每个脚本被组织为如下的三元组:,initiator(发起者),action(动作),participant(参与者),请求某种服务的对象 是请求的结果 满足请求的服务,器对象,(它启动一个消息),场景脚本的数量同应用的大小和当系统完成时必须开发的测试用例的数量直接相关。,关键类的数量:,关键类是在OOA早期定义的,它是问题域的核心,它的数量是开发该软件所需的工作量的一个指标,也是在系统开发中将应用的潜在的复用量的一个指标。,4一种OO估算和进度安排的方法:,使用工作量分解、FP(功能点)分析以及任何其他可应用于传统应用的方法来进行估算;,使用OOA开发场景脚本并确定脚本数量;,使用OOA,确定关键类的数量;,划分应用的界面类型并确定支持类的倍数:,界面类型 倍数,非GUI 2.0,基于字符的用户界面 2.25,GUI 2.5,复杂的GUI 3.0,将关键类的数量和上面的倍数相乘可得到支持类的数量的估算。,将全部类的数量(关键类+支持类)和每个类的平均工作单元相乘:,一般每个类以10-15人日计算。,通过成上每个场景脚本的平均工作单元,对基于类的估算进行交叉检查。,back,5面向对象项目的跟踪过程:,虽然递归/并行过程模型是针对OO项目的最好框架,但是,任务并行性使得项目的跟踪变得困难。下面我们给出每给阶段的技术里程碑:,OO分析完成的技术里程碑:已经定义和复审了所有类和类层次 已经定义和复审了和类关联的类属性和操作 已经建立和复审了类关系 已经建立和复审了行为模型 已经注释了可复用类,OO设计完成的技术里程碑:已经定义和复审了子系统集 分配类到子系统并通过复审 已经建立和复审了任务分配 以标识了责任和协作 已经设计和复审了属性和操作 已经设计和复审了消息模型,OO变成完成的技术里程碑:已经根据设计模型编码实现了每个新类 已经集成了提取出的类(从复用库)已经建造原型或增量,OO测试完成的技术里程碑:已经复审了OO分析和设计模型的正确性 和完整性 已经开发和复审了类责任协作网络 设计了测试用例,并且已经对每个类进行 了类一级的测试 设计了测试用例,并且完成集簇测试,完 成类的集成 完成系统级的测试,back,四、面向对象分析(OOA):,1OOA概述:,对象技术的流行已经衍生出了许多的OOA方法,每个方法都引入一个产品或系统分析的过程、一组随过程演化的模型、以及使得软件工程师能够以一致的方式创建模型的符号体系。这里我们只是简单的讨论一下现在比较流行的一些OOA方法。,Booch方法:,包含“微开发过程”和“宏开发过程”两个过程:,微级别定义了一组在宏过程中的每一步反复应用的分析任务。,宏开发过程概述如下:,表示类和对象:提出候选对象,进行行为分析,标识相关场景,为每个类定义属性和操作,标识类和对象的语义:选择场景并分析,赋予责任以完成希望的行为,划分责任以平衡行为,选择一个对象,枚举其角色和 责任,定义操作以满足责任,寻找对象间的协作,标识类和对象之间的关系:定义对象间存在的依赖,描述每个参与对象的角色,通过走查场景进行确认,进行一系列精华:对上面进行的工作制作适当的图解,定义合适的类层次,完成基于类共性的聚合,实现类和对象,Coad和Yourdon方法:,最容易学习的OOA方法之一,建模符号相当简单,且开发分析模型的指引是直接明了的。过程如下:,使用“寻找什么(what to look for)”标准来表识对象。,定义一般特殊结构,定义整体部分结构,标识主题(子系统构件的表示),定义属性,定义服务,2领域分析:,复用和领域分析:,对象技术通过复用产生杠杆作用。下面我们来举一个例子:,eg:对一个新应用的需求分析指明需要100个类,两各项目组被委派去实现该应用,各自将设计和构造一个最终产品,每个组由具有相同的技能级别和经验的人构成。,组A不访问类库,这样它必须从头开发所有100个类;,组B使用一个强健的类库并从中找到55个类。,则最终可能发生的事情是:,组B将比组A快得多地完成项目;,组B的产品成本将大大低于组A的产品成本;,组B的产品将比组A的产品有更少的错误。,从这个例子中,我们可以很明显地看到,复用为组B带来了实质性的优势。,而这个“强健的复用类库”的创建以及如何确定在库中的项是否适用于新应用中,就必须采用领域分析方法。,领域分析-软件的领域分析是在特定应用领域中标识、分析和规约公共需求,典型地是在应用领域中多个项目间的复用。面向对象领域分析是以公共对象、类、子集合和框架等形式在特定应用领域中标识、分析和规约公共的可复用的能力。,领域分析过程:,我们先来看一个图,这个图指明了领域分析过程的关键输入和输出。,领 域 知 识 源,领 域 分 析,领域分析模型,技术文件,已有应用,客户考察,专家建议,目前/未来的需求,类的分类,复用标准,功能模型,领域语言,下面我们给出领域分析的过程,可以用起始于标识被调查的领域到刻划领域的对象和类的规约的一系列活动来表示。,定义将被调查的领域:,分析员必须首先隔离感兴趣的业务范围、系统类型或产品范畴,然后从中抽取出OO和非OO项。,OO项:现存OO应用的类的规约、设计和代码;,支持类(如GUI类或数据库访问类);,和领域相关的COTS(commerical off-the shelf)构件库以及测试用例,非OO项:政策、步骤、规程、计划、标准和指南;,现存非OO应用的部件(规约、设计和测 试信息);,度量;,COTS非OO软件,将从领域中抽去出来的相分类:,这些向被分类,并且定义种类的一般定义特征。提出种类的分类模式,并为每个项定义命名惯例。在合适的时候建立分类层次。,收集领域中应用的代表性样本:,保证应用包括满足以被定义的种类的项。分析样本中的每个应用,进行如下的工作:,标识候选的可复用对象;,指明对象被标识为课复用的理由;,定义对对象的适应性修改(可能也是可复用的);,估算在领域中可利用对象复用的应用的百分率;,用名字标识对象,并运用配置管理技术来控制它们;,一旦对象以被定义,估算典型应用可使用该可复 用对象来构造的百分率。,back,五、面向对象设计(OOD):,1OOD概述:,OOD的四个层次:,责任设计,消息设计,类及对象设计,子系统设计,子系统层:,包含每个子系统的表示,这些子系统使得软件能够满足客户定义的需求,并实现支持客户需求的技术基础设施。,类和对象层:,包含类层次,使得系统能够以用通化方式创建并不断逼近特殊需求;也包含了每个对象的设计表示。,消息层:,包含使得每个对象能够和其协作者通信的细节,建立了系统的外部和内部借口。,责任层:,包含针对每个对象的所有属性和操作的数据结构核算法的设计。,判断设计方法模块化能力的5个标准:,分解性(decomposability):,一种设施,设计方法利用它帮助设计者将一个大型问题分解为易于求解的子问题。,组装性(composability):,一种级别,当设计方法保证当程序构件(模块)一旦被设计和建造到此级别后,即可被复用去创建其他系统。,易理解性(understandability):,一种简单度,程序构件在此简单度下,不参考其他信息或其他模块即可被理解。,连贯性(continuity):,在程序中进行小的修改的能力以及使这些修改在仅仅一个或很少的几个模块中发生对应修改下展示自己的能力。,保护性(protection):,一个体系结构特征,它将在给定模块中发生错误时减少副作用的传播。,几种常用的OOD方法:,在前面我们介绍了两种OOA方法,每个方法都由对应的OOD过程。,Booch方法:过程如下:,A体系结构计划:将相似的对象聚集于独立的体系 结构区间;,根据抽象层次对对象分层;,标识相关的场景;,创建设计院型;,通过将设计原型应用到适用场景 来校验设计原型。,B战术的设计:定义领域独立的方针(管理操作 和属性的使用的规则);,为存储管理、错误处理和其他基 础设施功能定义领域特定的方针,开发一个描述这些方针的语义的,场景,为每个方针创建一个原型;,装备并精化原型;,复审每个方针以保证它的体系结 构思想。,C发布计划:根据优先级组织在OOA中开发的场景;,将对应的体系结构发布分配给场景;,增量地设计和构造每个体系结构发布;,根据需要调整增量发布的目标和进度。,Coad和Yourdon方法:,该方法不仅强调应用而且强调应用的基础设施。其过程如下:,A问题域部分:组合所有的领域特定类;,为应用类设计适当的类层次;,当适当时,简化继承;,精化设计以改善性能;,开发和数据管理构件的接口;,当需要时,精化并加入低层的对象;,复审设计并审查对分析模型的任何 增补。,B人机交互部分:定义人员参与者;,开发任务场景;,设计用户命令层次;,精化用户交互序列;,设计相关的类和类层次;,适当时集成GUI类。,C任务管理部分:标识任务的类型(事件驱动、,时钟驱动等);,建立优先级;,标识作为其他任务的协调者,的任务;,为每个任务设计合适的对象。,D数据管理部分:设计数据结构和布局;,设计管理数据结构所需的服务;,标识适当可以协助实现数据管,理的工具;,设计适当的类和类层次。,back,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服