软件工程面向对象设计lyh.ppt
《软件工程面向对象设计lyh.ppt》由会员分享,可在线阅读,更多相关《软件工程面向对象设计lyh.ppt(110页珍藏版)》请在三一文库上搜索。
1、第六章 面向对象设计,传统方法学概述,传统方法学存在的问题 生产率提高的幅度远远不能满足需要 软件重用程度很低 软件仍然很难维护 软件往往不能真正满足用户需要,出现问题的原因 僵化的瀑布模型 *某些类型的系统需求是模糊的 *项目参与者之间存在通信鸿沟 *预先定义的需求可能是过时的 结构化技术的缺点 *用这种技术开发出的软件,其稳定性、可修改性和可重用性都比较差。 *结构化分析、设计技术的本质是功能分析。从代表目标系统整体功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理,层层分解下去,直至仅剩下若干个容易实现的子处理为止。,功能与数据分离的软件设计结构与人类的现实世界环境很不一样,和人的
2、自然思维也就很不一致,因此对现实世界的认识与编程之间存在着一道很深的理解上的鸿沟。 系统是围绕着如何实现一定的行为来进行的,当系统行为易变,需要常常修改时,修改极为困难。 在系统中模块之间的控制作用有重要影响时,也就是说,实际的控制发生的根源来自分散的各个模块之中时,由于在“好的模块结构”中的模块间的控制作用只能通过上下之间的调用关系来进行,造成信息传递路径过长,效率低,易受干扰,甚至出错。 自顶向下功能分解的分析方法极大地限制了软件的可重用性。,面向对象思想最初起源于20世纪60年代末的simula语言。面向对象方法的基本要点首次在simula语言中得到了表达和实现。80年代,位于美国加州的
3、Xerox研究中心推出smalltalk语言及其程序设计环境,使得面向对象程序设计方法得到比较完善的实现,掀起了面向对象研究的高潮。到80年代中后期,面向对象的软件设计和程序设计方法已发展成为一种成熟有效的软件开发方法。相比而言,面向对象的分析技术发展得比较滞后。,面向对象方法学概述,“面向对象”(Object-Oriented)是针对“面向过程”一词提出的,是从本质上区别于传统的结构化方法的一种新方法,新思路。 OO技术的基本原理是:按照问题域的基本事物实现自然分割,按人们通常的思维方式建立问题域的模型,设计尽可能直接自然表现问题求解的软件系统。 为此,OO技术引入了对象(object)概念
4、来表现事物,用消息(message)传递建立事物间的联系。用类(class)和继承(inheritance)作为适应人们一般思维方式的描述模型。用方法(method)表示作用在对象上的各种操作。,面向对象方法学概述,建立在对象、消息、类、继承和方法等概念基础上的面向对象软件的基本特征是对象的封装性和继承性。 通过封装可以将对象的定义与对象的实现分开。这样,无论是对象功能的完善扩充,还是对象实现的修改,影响仅限于该对象内部,保证了面向对象软件的可构造性和易维护性。 通过继承可以表达类与类之间的联系,大大减少了重复定义,同时也使系统的结构更加清晰、易于理解和维护。,6.1 面向对象设计概述 6.2
5、 系统设计 6.3 对象设计 6.4 领域对象设计,教学内容:,在第五章讲述了软件设计的几条基本原理,这些原理在进行面向对象设计时仍然成立,但是增加了一些与面向对象方法密切相关的新特点,从而具体化为下列的面向对象设计准则:,模块化对象就是模块; 抽象类实际上是一种抽象数据类型; 信息隐蔽通过对象的封装性实现; 弱耦合主要指不同对象之间相互关联的紧密程度; 强内聚设计中使用的一个构件内的各个元素,对完成一个定义明确的目的所做出的贡献程度; 可重用尽量使用已有的类,确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性;,面向对象设计,分析是提取和整理用户需求,并建立问题与精确模型
6、的过程。设计则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。 面向对象设计就是用面向对象观点建立求解域模型的过程。,OOA与OOD的本质: OOA是一个分类活动,即分析问题力图确定在开发 解决方案时可应用的对象类,同时确定对象关系和行为。 OOD使得软件工程师能够确定从类中导出的对象, 以及这些对象的相互关联,此外,OOD描述了:对象间的 关系如何达到; 行为如何实现;对象间通信如何实现。,从OOA到OOD,逐渐扩充模型的过程 OOD分为两个阶段: 高层设计(系统设计) 低层设计(对象设计),6.1 面向对象设计概述,OOD则主要考虑“如何实现”的问题,因而这一阶
7、段注意的焦点从问题空间转移到解空间。着重完成各种不同层次的模块设计。,1.面向对象设计的任务 系统设计 对象设计 消息设计 复审设计模型,系统设计主要完成系统整体结构的设计,包括将子系统分配到处理器和任务,选择实现数据管理、界面支持和任务管理的设计策略,为系统设计合适的控制机制等。 对象设计,对OOA模型中的类对象模型具体化、详细化。 消息设计使用对象间的协作和对象关系模型,设计出消息模型。 复审设计模型,对设计模型进行复审,并伴随着附加的OOA活动。 和传统的结构化设计一样,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型。,分析模型,使用实例,处于OOA模型核心的是“使用实例”
8、(Use Case ),简称“用例”。获得软件的需求后,软件分析员既可据此创建一组“场景”(Scenario),每个场景包含一个使用实例。从这些用例出发,进一步抽取和定义OOA模型的3种模型,即 类-对象模型,描述系统所涉及的全部类-对象,每个类-对象都通过属性、操作和写作者来进行进一步描述; 对象-关系模型,描述对象之间的静态关系,同时定义了系统中所有重要的消息路径,它也可以具体化到对象的属性、操作和协作者; 对象-行为模型,描述了系统的动态行为,即对湘杂特定的状态下如何反映外界的事件。,设计模型定义成了一个金字塔层次结构。自低而上分别为: 子系统层:包含每个子系统的表示 类和对象层:包含类
9、层次和每个对象的设计表示 消息层:包含使得每个对象能够和其协作者通信的细节,建立 系统的外部和内部接口 责任层:包含针对每个对象的所有属性和操作的数据结构和算法的设计,设计模型模型,将分析模型转换为设计模型,使用 实例,对象关系模型,索引卡片,对象-行为模型,协作者,子 系 统 设 计,类及对象设计,消息设计,责任设计,OO分析模型,OO设计模型,属,性,操,作,6.2 系统设计,1. 系统设计过程 根据Rumbaugh对OMT方法的定义,系统设计主要由以下步骤组成: 划分子系统; 确定需要并发运行的子系统并为他们分配处理器; 描述子系统之间的通信; 确定系统资源的管理和控制; 确定人机交互构
10、件; 选择实现数据管理和任务管理的基本策略。,目前流行的OOD方法概述 Rumbaugh方法(简称OMT) Rumbaugh的OOD过程概述: 进行系统设计 进行对象设计 实现在系统设计中定义的控制机制 调整类结构以加强继承性 设计消息序列以实现对象关系(关联) 包装类和对象为模块,子系统设计过程中 必须定义四种重要的设计结构 问题域直接负责实现客户需求的子系统 人机交互实现用户界面的子系统(包括可复用的GUI 子系统) 任务管理负责控制和协调并发任务的子系统,任务可 能被包装在一个子系统中或不同的子系统间; 数据管理负责对象的存储和检索的子系统,系统分解:,子系统既不是一个对象也不是一个功能
11、,而是类、关联、操作、事件和约束的内聚集合。 定义子系统遵循的标准: 子系统应有良好的接口 除少数“通信类”,子系统中的类应只和该子系统中的其它类协作 子系统数目不应太多 可在子系统内划分以降低复杂性,划分分析模型,子系统,客户端 子系统,服务器端 子系统,请求,子系统间通信,子系统间协作的模型,目前流行的OOD方法概述 Coad-Yourdon方法 Coad-Yourdon的OOD过程概述: 问题域部分 人机交互部分 任务管理部分 数据管理部分,2. 子系统设计 划分子系统(P128例6.1) 处理并发操作(P129例6.2) 描述子系统间通信(P130图6.4) 资源管理构件,3. 人机交
12、互设计,虽然好的人机交互部分不可能挽救一个功能很差的软件, 但性能很差的人机交互部分将使一个功能很强的产品变的不可接受!,人机交互设计,人-机交互部分的设计结果,将对用户情绪和工作效率产生重要影响。 人-机界面设计得好,则会使系统对用户产生吸引力,用户在使用系统的过程中会感到兴奋,能够激发用户的创造力,提高工作效率; 相反,人-机界面设计得不好,用户在使用过程中就会感到不方便,不习惯,甚至会产生厌烦和恼怒的情绪。,设计人-机交互界面的准则:,一致性 减少步骤 及时提供反馈信息 提供撤销命令 无须记忆 易学 富有吸引力,设计人-机交互系统的策略:,分类用户 按技能水平分类(新手/初级/中级/高级
13、) 按职务分类(总经理/经理/职员) 按所属集团分类(职员/顾客) 描述用户 用户类型 使用系统欲达到的目的 特征(年龄、性别、受教育程度、限制因素等) 关键的成功因素(需求、爱好、习惯等) 技能水平,设计人-机交互系统的策略:,设计命令层次 研究现有的人-机交互含义和准则 确定初始的命令层次 精华命令层次 设计人-机交互类 人-机交互类与使用的操作系统及编程语言密切相关。 例如:windows环境下运行的Visual C+语言提供了MFC类库,设计人-机交互类时,往往仅需从MFC类库中选用一些适用的雷,然后从这些类派生符合自己需要的类就可以了。,传感器图形项目,传感器控制系统人机交互部分设计
14、举例,调用项目,传感器状况窗口,显示菜单 调用菜单活动,传感器项目,调用项目,传感器报警窗口,显示菜单 调用菜单活动,位置,传感器报警项目,调用项目,传感器窗口,坐标,4. 任务管理设计,1.为什么要有任务管理部分,虽然从概念上说,不同对象可以并发地工作,但是,在实际系统中,许多对象之间往往存在相互依赖关系。此外,在实际使用的硬件中,可能仅由一个处理器支持多个对象。因此,设计工作的一项重要内容就是,确定哪些是必须同时动作的对象,哪些是相互排斥的对象。 一是由于在多用户、多任务或多线程操作在系统上开发应用程序的需要; 二是在通过任务描述目标软件系统中各子系统间的通信和协同时,引入任务概念能简化某
15、些应用的设计和编码。,分析并发性,通过面向对象分析建立起来的动态模型,是分析并发性的主要依据。如果两个对象彼此间不存在交互,或者它们同时接受事件,则这两个对象在本质上是并发的。通过检查各个对象的状态图及它们之间交换的事件,能够把若干个非并发的对象归并到一条控制线中。 所谓控制线,是一条遍及状态图集合的路径,在这条路经商每次只有一个对象是活动的。在计算机系统中用任务(task)实现控制线,一般认为是进程(process)的别名。通常把多个任务的并发执行称为多个任务。,怎样设计任务管理部分,确定事件驱动型任务 确定时钟驱动型任务 确定优先任务 确定关键任务 确定协调任务 尽量减少任务数 确定资源需
16、求,传感器控制系统任务管理部分设计举例,任务协调器,协调,任务,名字 描述 优先级 服务 协调 通信,初始化 开始 准备好 结束,1,0,m,传感器任务描述举例,任务1 名字: 传感器读出。 描述: 该任务在需要脉冲调幅时负责读 出传感器。 包含: 传感器.样本。 优先级:中等。 协调: 时钟驱动,100ms的时间间隔。 通信: 从输入线(传感器)得到值, 给雷达邮箱发送值。,5. 数据管理设计,数据管理部分提供了数据在数据管系统中存储和检索对象的基本结构,它分离了数据管理方案的影响 (不管该方案是普通文件、关系型数据库、面向对象数据库或其它方式。),如何设计数据管理部分 (1)设计数据格式
17、(2)相应服务的设计,设计数据格式:,文件系统 关系数据库管理系统 面向对象数据库管理系统,文件管理系统,文件管理系统是操作系统的一个组成部分,使用它长期保存数据具有成本低和简单等特点。 但是,文件操作的级别低,为提供适当的抽象级别还必须编写额外的代码。 此外,不同操作系统的文件管理系统往往有明显差异。,关系数据库管理系统,主要优点: 提供了各种最基本的数据管理功能(例如,中断恢复,多用户共享,多应用共享,完整性,事务支持等)。 为多种应用提供了一致的接口。 标准化的语言(大多数商品化关系数据库管理系统都使用SQL语言)。,关系数据库管理系统,通常都相当复杂,具体缺点: 运行开销大: 即使只完
18、成简单的事务,也需要较长的时间。 不能满足高级应用的需求: 关系数据库管理系统很难用在数据类型丰富或操作不标准的应用中。 与程序设计语言的连接不自然: SQL语言支持面向集合的操作,是一种非过程性语言;然而大多数程序设计语言本质上却是过程性的,每次只能处理一个记录。,面向对象数据库管理系统,面向对象数据库管理系统是一种新技术,主要有两种设计途径: 扩展的关系数据库管理系统: 在关系数据库的基础上,增加了抽象数据类型和继承机制,此外还增加了创建及管理类和对象的通用服务。 扩展的面向对象程序设计语言: 扩充了面向对象程序设计语言的语法和功能,增加了在数据库中存储和管理对象的机制。,设计数据管理子系
19、统,设计数据格式 文件系统 关系数据库管理系统 面向对象数据库管理系统 设计相应的服务 文件系统 关系数据库管理系统 面向对象数据库管理系统,设计数据格式,文件系统 定义第一范式表: 列出每个类的属性表; 把属性表规范成第一范式,从而得到第一范式表的定义。 为每个第一范式表定义一个文件。 测量性能和需要的存储容量。 修改原设计的第一范式,以满足性能和存储需求。,设计数据格式,关系数据库管理系统 定义第三范式表: 列出每个类的属性表; 把属性表规范成第三范式,从而得出第三范式表的定义。 为每个第三范式表定义一个数据库表。 测量性能和需要的存储容量。 修改先前设计的第三范式,以满足性能和存储需求。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 面向 对象 设计 lyh
链接地址:https://www.31doc.com/p-2604114.html