软件工程课件:第10章 面向对象方法学3_第1页
软件工程课件:第10章 面向对象方法学3_第2页
软件工程课件:第10章 面向对象方法学3_第3页
软件工程课件:第10章 面向对象方法学3_第4页
软件工程课件:第10章 面向对象方法学3_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、第十章面向对象(3)1软件工程 - 2013 - 第十章 面向对象(3)第十章内容概要面向对象方法学概述UML基础面向对象的需求提取面向对象分析面向对象设计的准则启发规则软件重用面向对象系统设计面向对象对象设计2软件工程 - 2013 - 第十章 面向对象(3)模块化抽象信息隐藏弱耦合交互耦合继承耦合强内聚服务内聚、类内聚、一般特殊内聚可重用面向对象设计的准则3软件工程 - 2013 - 第十章 面向对象(3)第十章内容概要面向对象方法学概述UML基础面向对象的需求提取面向对象分析面向对象设计的准则启发规则软件重用面向对象系统设计面向对象对象设计4软件工程 - 2013 - 第十章 面向对象(

2、3)启发规则设计结果应该清晰易懂用词一致使用已有的协议减少消息模式的数目避免模糊的定义一般特殊结构的深度应适当设计简单的协议一般说来,消息中的参数不要超过3个。5软件工程 - 2013 - 第十章 面向对象(3)设计简单的类避免包含过多的属性;有明确的定义;尽量简化对象之间的合作关系;不要提供太多服务。使用简单的服务把设计变动减至最小启发规则6软件工程 - 2013 - 第十章 面向对象(3)第十章内容概要面向对象方法学概述UML基础面向对象的需求提取面向对象分析面向对象设计的准则启发规则软件重用面向对象系统设计面向对象对象设计7软件工程 - 2013 - 第十章 面向对象(3)重用也叫再用或

3、复用,是指同一事物不作修改或稍加改动就多次重复使用;软件重用分为3个层次:知识重用(例如,软件工程知识的重用);方法和标准的重用(例如,面向对象方法或国家制定的软件开发规范的重用);软件成分的重用。软件重用8软件工程 - 2013 - 第十章 面向对象(3)软件成分的重用代码重用源代码剪贴源代码包含继承设计结果重用分析结果重用软件重用9软件工程 - 2013 - 第十章 面向对象(3)典型的可重用软件成分项目计划成本估计体系结构需求模型和规格说明设计源代码用户文档和技术文档用户界面数据测试用例软件重用10软件工程 - 2013 - 第十章 面向对象(3)可重用软构件应具备的特点模块独立性强具有

4、高度可塑性接口清晰、简明、可靠类构件的重用方式实例重用继承重用多态重用类构件11软件工程 - 2013 - 第十章 面向对象(3)第十章内容概要面向对象方法学概述UML基础面向对象的需求提取面向对象分析面向对象设计的准则启发规则软件重用面向对象系统设计面向对象对象设计12软件工程 - 2013 - 第十章 面向对象(3)系统设计把分析模型转化为系统设计模型在这个过程中,开发人员需要:定义一系列设计目标:描述应优化的系统质量将系统分解成能由单个团队实现的子系统系统设计的大部分内容是子系统分解,并且,分解中需要考虑一些涉及整个系统范围的问题:系统设计的内容13软件工程 - 2013 - 第十章 面

5、向对象(3)软硬件映射:系统的硬件配置是什么?哪个节点负责哪个功能?节点间通信如何实现?哪些服务是用已有的软件组件实现的?持续化数据管理:哪些数据需成为持续化的?它们存储在什么地方?如何访问它们?访问控制:谁可以使用哪个功能、访问哪个数据?如何定义并实现访问控制?控制流:系统如何将操作进行排序?如何驱动系统事件?能同时处理一个以上的用户交互吗?边界条件:系统如何初始化?如何关闭?如何检测和处理异常情况?系统设计的内容14软件工程 - 2013 - 第十章 面向对象(3)这几个问题中,软硬件映射和持续化数据管理经常会导致在系统中引入附加子系统;控制流和边界条件问题会对子系统的接口产生影响。系统设

6、计的内容15软件工程 - 2013 - 第十章 面向对象(3)为减少问题空间的复杂性,整个待解问题被分解、封装成一系列的类(对象)。同样,为减少求解空间的复杂性,系统被分解为子系统,而子系统由许多求解空间中的类组成。对于复杂的子系统,不断使用这个原理,将子系统分解成更简单的子系统:子系统与子系统接口16软件工程 - 2013 - 第十章 面向对象(3)子系统与子系统接口17软件工程 - 2013 - 第十章 面向对象(3)比如前面的紧急事件管理系统可以做如下的子系统分解:子系统与子系统接口18软件工程 - 2013 - 第十章 面向对象(3)每个子系统都需要向其它子系统提供服务。一个服务是一组

7、有着共同目标的相关操作。一个子系统提供给其它子系统的一组操作形成子系统接口,它包括操作的名称、参数、类型和返回值。系统设计集中定义每个子系统提供的服务,即列举操作、参数以及操作的高层行为。对象设计集中定义子系统的接口,即参数的类型和每个操作的返回值。子系统与子系统接口19软件工程 - 2013 - 第十章 面向对象(3)设计目标给出了系统应重点考虑的质量要求;设计目标的来源主要是系统的非功能性需求;例如,在事故管理系统中,应把可靠性、系统响应的及时性作为设计目标;考虑到该系统的使用方式以及使用所能造成的后果,应把安全性也标识为设计目标。确定设计目标20软件工程 - 2013 - 第十章 面向对

8、象(3)子系统分解也是一项循序渐进的活动:在获得初始分解之后,后续的若干问题会导致分解的修改(合并、新增加、再分解);初始的子系统分解来自功能性需求:通过把若干功能上相关的类分组而得到;出发点:把Use Case及其已确定的参与对象分配到各子系统中。确定子系统21软件工程 - 2013 - 第十章 面向对象(3)将在一个Use Case中确定的对象分配到同一个子系统中;为那些在子系统间传递数据的对象创建一个专用的子系统;将穿过子系统边界的关联数量降到最小;在同一个子系统中的所有对象必须是功能相关的(增强子系统内聚)。将对象分组到子系统中的试探法22软件工程 - 2013 - 第十章 面向对象(

9、3)选择硬件配置和虚拟机平台某些系统需要运行在多台计算机上,并且依靠网络访问,这就要求确定各子系统所处节点位置并设计子系统间通信的基础设施;硬件映射会对系统性能、复杂度产生巨大影响,因此应在系统设计早期进行;虚拟机包括操作系统、数据库管理系统等。它进一步缩小系统与运行平台之间的距离。将子系统映射到处理器和组件23软件工程 - 2013 - 第十章 面向对象(3)将对象和子系统分配给节点节点确定后,各子系统应该能被分配到相应节点;硬件节点映射和子系统分解可能相互影响。比如事故管理系统的例子中,报告紧急情况用例的功能是分布在两个节点(现场工作站、调度工作站)上,因此合理的子系统划分应是一个调度员接

10、口子系统、一个现场工作人员接口子系统。为了在节点间传送数据,经常要定义新的子系统或对象。事故管理系统中,可以增加一个通知子系统实现现场工作站和调度工作站之间的通信。将子系统映射到处理器和组件24软件工程 - 2013 - 第十章 面向对象(3)持续化数据比系统的简单执行存在的时间要长;数据存放的地点以及如何存放会对系统的分解产生影响。可以设置一个子系统专门用来存储数据;数据存放可以考虑数据库,也可以考虑磁盘文件;事故管理系统中,考虑到调度员创建的“事件”等对象需要持续化存储,可以设置一个事件管理子系统,实现事件的创建、修改和存储。定义持续化数据存储25软件工程 - 2013 - 第十章 面向对

11、象(3)在多用户系统中,不同的操作者需要访问不同的功能和数据;分析时,通过将不同的Use Case与不同的Actor相联系来为这些区别建模;系统设计时,通过检查对象模型,定义Actor共享哪些对象以及定义Actor如何控制访问来为访问建模。定义访问控制26软件工程 - 2013 - 第十章 面向对象(3)对访问建模可使用访问矩阵:行表示系统有哪些可能的操作者;列表示要进行访问控制的类;矩阵每一项称为访问权限,要列出由该操作者对该类执行的所有操作。全局访问表:行、列都有的访问矩阵;访问控制列表:只有针对每个类的列;能力列表:只有针对每个操作者的行。定义访问控制27软件工程 - 2013 - 第十

12、章 面向对象(3)控制流是系统中动作的先后次序;分析中,对控制流的假定是:所有对象同时运行并在任何需要的时候执行它们的操作;系统设计时,必须考虑到不是每个对象都能奢侈到在自己的处理器上运行。设计全局控制流28软件工程 - 2013 - 第十章 面向对象(3)三种可能的控制流机制过程驱动控制事件驱动控制线程选定控制流机制后,就可以用一组控制对象来实现它。控制对象负责记录外部事件、存储它们的临时状态并给出与外部事件相关的边界对象和实体对象的正确操作次序。设计全局控制流29软件工程 - 2013 - 第十章 面向对象(3)子系统分解基本确定后,还需要检查系统边界条件,即,决定系统什么时候启动、初始化

13、以及关闭,还要定义如何处理主要故障,比如由软件错误或断电引起的数据崩溃;例如,现在基本了解了事故管理系统在稳定情况下是怎样运行的,但我们还不知道它怎样初始化,这会导致发现一系列系统管理用例,它们指定了系统启动和关闭阶段的行为;确定边界条件30软件工程 - 2013 - 第十章 面向对象(3)确定边界条件时,也应该调查一下系统的异常情况;例如,事故管理系统中需要考虑系统必须能兼容通信连接中断的情况。确定边界条件31软件工程 - 2013 - 第十章 面向对象(3)第十章内容概要面向对象方法学概述UML基础面向对象的需求提取面向对象分析面向对象设计的准则启发规则软件重用面向对象系统设计面向对象对象

14、设计32软件工程 - 2013 - 第十章 面向对象(3)细化分析和系统设计模型,确定新对象。消除问题空间对象与现有组件间的差距:确定自定义对象调整商品组件准确说明每个子系统接口和类形成类的集合,可由单个人员实现各类。对象设计的内容33软件工程 - 2013 - 第十章 面向对象(3)分析通过确定表示用户可视概念的对象缩小问题和机器间的差距;系统设计通过定义提供比硬件层次高的虚拟机平台来缩小问题和机器间的差距;对象设计填补分析模型与系统设计模型间的差距。34软件工程 - 2013 - 第十章 面向对象(3)对象设计包括一系列活动:规格说明:根据类的接口指定子系统服务,包括操作、变量、类型、声明

15、和异常;还要找出系统间传递数据必需但缺少的操作和对象;组件选择:通过使用和修改系统设计时确定的商品化组件实现每个子系统,可能需要进行一定的调整,将自定义对象与它们结合,或通过继承来改进它们。对象设计的内容35软件工程 - 2013 - 第十章 面向对象(3)重组:处理系统模型以增加代码的复用性等设计目标。典型活动如将n元关系转变成二元关系、将没有特殊行为的类退化成属性等;优化:解决系统模型的性能需求。如改变算法以满足对速度或存储器的需求、增加多余的连接以提高效率、存储高开销计算的结果以提高操作执行的效率等。对象设计的内容36软件工程 - 2013 - 第十章 面向对象(3)关联的遍历单向关联双

16、向关联实现单向关联实现双向关联只用属性实现一个方向的关联,当需要反向遍历时就执行一次正向查找;两个方向的关联都用属性实现;用独立的关联对象实现双向关联。设计关联37软件工程 - 2013 - 第十章 面向对象(3)38软件工程 - 2013 - 第十章 面向对象(3)关联对象的实现对于一对一关联来说,关联对象可以与参与关联的任一个对象合并。对于一对多关联来说,关联对象可以与“多”端对象合并。如果是多对多关联,则关联链的性质不可能只与一个参与关联的对象有关,通常用一个独立的关联类来保存描述关联性质的信息,这个类的每个实例表示一条具体的关联链及该链的属性。设计关联39软件工程 - 2013 - 第十章 面向对象(3)确定优先级(系统的各项质量指标并不是同等重要的);提高效率的几项技术:增加冗余关联以提高访问效率;设计优化40软件工程 - 2013 - 第十章 面向对象(3)设计优化调整查询次序保留派生属性调整继承关系

温馨提示

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

评论

0/150

提交评论