软件工程11课件_第1页
软件工程11课件_第2页
软件工程11课件_第3页
软件工程11课件_第4页
软件工程11课件_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

11、面向对象设计,授课教师:崔晓晖联系方式:cuixiaohui授课学时:40,面向对象设计(OOD),把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。OOD的任务是按照设计原则,对模型进行细化,朝着系统实现的方向进行多次迭代。,软件工程,目录,2.启发规则,3.软件重用,4.系统分解,5.设计问题域子系统,1.面向对象设计的准则,6.设计人机交互子系统,7.设计任务管理子系统,8.设计数据管理子系统,9.设计类中的服务,10.设计关联,11.设计优化,1.面向对象设计的准则,1.1模块化1.2抽象1.3信息隐蔽1.4弱耦合1.5强内聚1.6可重用,软件工程,1.1模块化,面向对象方法很自然地支持模块化设计准则,对象就是模块。,软件工程,1.2抽象,面向对象方法不仅支持过程抽象,而且支持数据抽象。类是抽象的数据类型参数化数据类型,参数化类,软件工程,1.3信息隐蔽,在面向对象方法中,信息隐藏通过对象的封装性来实现。,软件工程,1.4弱耦合,面向对象方法中,对象是最基本的模块,耦合主要指不同对象间相互关联的紧密程度。低耦合是重要的设计标准,有助于使系统中某部分的变化对其它部分的影响降至最低。交互耦合:通过消息连接实现继承耦合:构成粒度更大的模块,结合的程度应该紧密,软件工程,1.5强内聚,服务内聚一个服务只完成一个功能类内聚一个类只有一个用途一般与特殊内聚紧密的继承耦合与高度的一般特殊内聚是一致的,软件工程,1.6可重用,尽量使用已有的类设计新类时考虑将来重用,软件工程,目录,2.启发规则,3.软件重用,4.系统分解,5.设计问题域子系统,1.面向对象设计的准则,6.设计人机交互子系统,7.设计任务管理子系统,8.设计数据管理子系统,9.设计类中的服务,10.设计关联,11.设计优化,2.启发规则,2.1设计结果应该清晰易懂用词一致,名字与代表的事物一致使用已有的类协议减少消息模式的数目避免模糊的定义,类的名称与用途一致2.2一般特殊结构的深度应该适中,软件工程,2.启发规则,2.3设计简单的类设计小而简单的类,便于开发和管理。为了保持简单,应注意以下几点:避免包含过多的属性有明确的类定义简化对象之间的合作关系不要提供太多服务2.4使用简单的协议(较少的参数)一般来说,消息中参数不要超过3个,软件工程,2.启发规则,2.5使用简单的服务面向对象设计出来的类中的服务通常都很小,一般只有3至5行源程序语句,可以用仅含一个动词和一个宾语的简单句子描述它的功能。2.6把设计变动减少到最小通常,设计的质量越高,设计结果保持不变的时间也越长。即使出现必须修改设计的情况,也应该使修改的范围尽可能小。,软件工程,目录,2.启发规则,3.软件重用,4.系统分解,5.设计问题域子系统,1.面向对象设计的准则,6.设计人机交互子系统,7.设计任务管理子系统,8.设计数据管理子系统,9.设计类中的服务,10.设计关联,11.设计优化,3.软件重用,3.1软件重用概述3.2可重用类构件3.3软件重用的效益,软件工程,3.1软件重用概述,3.1.1重用的类型知识重用方法和标准重用软件成分重用3.1.2重用的级别代码重用:代码剪贴、源代码包含、继承设计结果重用分析结果重用,软件工程,3.1软件重用概述,3.1.3典型的可重用软件成分项目计划成本估计体系结构需求和规格说明设计,源代码文档用户界面数据测试用例等,软件工程,3.2可重用类构件,可重用类构件的特点模块独立性好具有高度的可塑性接口清晰,简单可靠类构件重用方式实例重用继承重用多态重用,软件工程,3.3软件重用的效益,质量重用的代码错误率0.9/千行新开发的代码错误率4.1/千行成本(为实现软件重用需付出的代价)为软构件投资为更高级的软件质量投资建立和维护软类库的费用生产率重用率的提高可以直接提高生产率,30%50%的重用可以导致25%40%的生产率的提高。,软件工程,目录,2.启发规则,3.软件重用,4.系统分解,5.设计问题域子系统,1.面向对象设计的准则,6.设计人机交互子系统,7.设计任务管理子系统,8.设计数据管理子系统,9.设计类中的服务,10.设计关联,11.设计优化,4.系统分解,系统中主要的组成部分称为子系统子系统不是单个对象和功能,而是类、关联、操作、事件和约束的集合。面向对象模型一般由以下四部分组成:问题域子系统人机交互子系统任务管理子系统数据库子系统,软件工程,4.系统分解,典型的面向对象设计模型,软件工程,4.系统分解,子系统之间的两种交互关系客户供应商关系Client-Supplier平等伙伴关系Peer-to-Peer系统组织的两种方案层次组织块状组织设计系统的拓扑结构管道形树形星形,软件工程,4.系统分解,典型应用系统的组织结构,软件工程,目录,2.启发规则,3.软件重用,4.系统分解,5.设计问题域子系统,1.面向对象设计的准则,6.设计人机交互子系统,7.设计任务管理子系统,8.设计数据管理子系统,9.设计类中的服务,10.设计关联,11.设计优化,5.设计问题域子系统,5.1调整需求5.2重用已有的类5.3把问题域组合在一起5.4增添一般化类以建立协议5.5调整继承层次5.6实例ATM系统的问题域子系统,软件工程,5.1调整需求,用户需求或外部环境发生了变化。分析员对问题理解不透彻,得到的分析模型不能完整、准确地反映用户需求。,软件工程,5.2重用已有的类,(1)选择有可能重用的类,标出对本问题无关的属性和服务,尽量重用那些无用的属性和服务少的类;(2)在被重用的类和问题域类之间添加泛化关系,即从被重用的已有类派生出问题域类;(3)标出问题域类中从已有类中继承来的属性和方法,这些已经不用在问题域中定义了;(4)修改与问题域类相关的关联,必要时修改为与被重用的已有类相关的关联。,软件工程,5.3把问题域组织到一起5.4添加一般化类建立协议5.5调整继承层次(1)使用多继承机制(2)使用单继承机制(3)不具备继承机制,软件工程,5.6实例ATM系统的问题域子系统,软件工程,目录,2.启发规则,3.软件重用,4.系统分解,5.设计问题域子系统,1.面向对象设计的准则,6.设计人机交互子系统,7.设计任务管理子系统,8.设计数据管理子系统,9.设计类中的服务,10.设计关联,11.设计优化,6.设计人机交互子系统,人机交互子系统也称人机交互部分(HIC,HumanInteractionComponent)。人机交互部分的设计结果,将对用户使用系统带来很大影响。人机界面设计得好,则会使系统产生魅力,吸引用户经常使用系统,并觉得与系统的交互是友好的、兴奋的,能提高工作效率;反之不然。,软件工程,6.设计人机交互子系统,为了得到良好的人机界面,在分析阶段要对用户进行分析,在设计阶段要延续该分析,包括对用户、交互时间、交互技术等进行分析。在人机交互子系统设计中,在初步分析用户界面需求的基础上,对人机交互的细节进行详细设计,包括窗口、对话框和报表的形式,设计命令层次组织等内容的设计。设计人机交互子系统的关键原型技术。,软件工程,6.设计人机交互子系统,设计人机交互界面的准则(1)一致性(2)减少步骤(3)及时提供反馈信息(4)提供撤消命令(5)无须记忆(6)易学(7)富有吸引力,软件工程,6.设计人机交互子系统,设计人机交互子系统的策略(1)分类用户(2)描述用户(3)设计命令层次(4)设计人机交互类,软件工程,6.设计人机交互子系统,设计命令层是界面设计的重要部分,一般包含下列工作:研究现有的人机交互的准则设计初始命令层优化命令层,软件工程,目录,2.启发规则,3.软件重用,4.系统分解,5.设计问题域子系统,1.面向对象设计的准则,6.设计人机交互子系统,7.设计任务管理子系统,8.设计数据管理子系统,9.设计类中的服务,10.设计关联,11.设计优化,7.设计任务管理子系统,设计工作的一项重要内容就是,确定哪些是必须同时动作的对象,哪些是相互排斥的对象。然后进一步设计任务管理子系统。7.1分析并发性7.2设计任务管理子系统,软件工程,7.1分析并发性,在程序的执行时间上与其他程序有交叠的现象称为“并发性”。不仅系统软件中有并发,应用软件中也有。任务管理子系统在设计时,应找出并分析系统中任务的并发性。,软件工程,7.1分析并发性,分析并发性的主要依据系统动态模型若对象间不存在交互,或者说它们能同时接收事件,那么这两个对象是并发的。并发行为既可以在不同的处理器上实现,也可以在单个处理器上利用多任务操作系统仿真实现。一般来说,划分任务,是为了简化系统中必须的并发行为的设计和编码。,软件工程,7.2设计任务管理子系统,7.2.1确定事件驱动任务7.2.2确定时钟驱动任务7.2.3确定优先任务7.2.4确定关键任务7.2.5确定协调任务7.2.6审查每个任务,软件工程,7.2.1确定事件驱动任务,事件驱动任务:由某个事件触发而引起的任务。任务是对事件的处理。一个任务可以设计成由一个事件来触发(驱动),该事件常常是对一些数据的到达发信号,而这些数据可能来自输入数据行,或者另一个任务写入的数据缓冲区。这类任务可能主要完成通信工作,例如,与设备、屏幕窗口、其他任务、子系统、另一个处理器或其他系统通信。,软件工程,7.2.1确定事件驱动任务,事件驱动任务的工作过程为:任务处于睡眠状态,等待来自数据源的中断;接收到中断唤醒该任务;阅读数据并把数据放入缓冲区等目的地;向需要知道此事件的对象发出通知,然后该任务又回到睡眠状态。,软件工程,7.2.2确定时钟驱动任务,时钟驱动任务:按特定的时间间隔被触发后执行某些处理的任务。时钟驱动型任务的工作过程为:任务设置了唤醒时间后进入睡眠状态;等待来自系统的中断;接收到中断,任务被唤醒;进行处理,通知有关的对象;该任务又回到睡眠状态。,软件工程,7.2.3确定优先任务,优先任务:根据事件的优先级高低来做处理的任务。高优先级:把这类服务划分成独立的任务,使该类服务在一个严格限定的时间内完成。低优先级:设计时可能用附加的任务把这种服务分离出来。根据时间决定优先级,根据优先级的高低划分出轻重缓急的任务。,软件工程,7.2.4确定关键任务,设计时应分离出对系统成败特别关键的任务,该类任务通常有严格的可靠性、安全性要求。对关键任务进行深入细致的设计、编码和测试,以满足高可靠性、安全性处理的要求。也就是说,根据需求决定任务的主次,保证关键任务。,软件工程,7.2.5确定协调任务,系统中有三个以上任务时,就应考虑增加一个任务,用来协调任务间的关系,该任务称为协调任务。任务间的切换转换时间叫现场转换时间。协调任务用来控制现场转换时间时,将会给系统设计带来困难,但是引入协调任务可为封装不同任务之间的协调控制带来好处。协调任务应该只做协调工作,不必分配它其他的工作。,软件工程,7.2.6审查每个任务,对任务的性质进行审查,去掉人为的、不必要的任务,要使任务数保持到最少。设计多任务系统的主要问题是,设计者常常为了自己设计和编程的方便而增加任务。这样既增加了总体设计的技术复杂度,又降低了系统的可理解性,从而也加大了系统维护的难度。,软件工程,目录,2.启发规则,3.软件重用,4.系统分解,5.设计问题域子系统,1.面向对象设计的准则,6.设计人机交互子系统,7.设计任务管理子系统,8.设计数据管理子系统,9.设计类中的服务,10.设计关联,11.设计优化,8.设计数据管理子系统,选择数据存储管理模式文件管理系统关系数据库管理系统面向对象数据库管理系统设计数据管理子系统设计数据格式设计相应的服务,软件工程,8.设计数据管理子系统,例子:帐户类对象每个对象自己保存自己由数据管理子系统负责存储对象,ATM系统的问题域子系统的结构,软件工程,目录,2.启发规则,3.软件重用,4.系统分解,5.设计问题域子系统,1.面向对象设计的准则,6.设计人机交互子系统,7.设计任务管理子系统,8.设计数据管理子系统,9.设计类中的服务,10.设计关联,11.设计优化,9.设计类中的服务,确定类中应有的服务设计实现服务的方法9.1设计实现服务的算法9.2选择数据结构9.3定义内部类和内部操作,软件工程,9.1设计实现服务的算法,算法设计按如下过程进行:选择极小化开销的算法选择适用于该算法的数据结构定义必需的新的内部类和操作将操作响应赋给合适的类选择算法应考虑下列因素计算复杂度易实现,易理解,易修改稳定性好,软件工程,9.2选择数据结构,选择算法时涉及到选择算法使用的数据结构,许多实现的数据结构都是包容类的实例,大多数面向对象语言提供了基本数据结构供用户自选组合定义。,软件工程,9.3定义内部类和操作,在展开算法时,可能引入一些对象类,用来存放中间结果,在分解高层操作时也可引入新的低层操作。必须定义这些低层操作,因为大多数这类操作是外部不可见的。,软件工程,目录,2.启发规则,3.软件重用,4.系统分解,5.设计问题域子系统,1.面向对象设计的准则,6.设计人机交互子系统,7.设计任务管理子系统,8.设计数据管理子系统,9.设计类中的服务,10.设计关联,11.设计优化,10.设计关联,关联是在对象模型中联结不同对象的纽带,它指定了对象相互间的访问路径。在面向对象分析过程中,仅是初步确定对象之间的关联和阶数。在面向对象设计过程中,必须确定实现关联的具体策略。根据应用系统中的使用方式来确定实现关联的策略。可以选定一个统一实现所有关联的全局性的策略,或者对不同的关联选择不同的实现策略。,软件工程,10.设计关联,根据关联的阶数不同,实现的方法也不同。如果是一对一关联,链属性可作为其中一个对象的属性并存储在该对象中;如果是一对多关联,链属

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论