软件工程讲义04课件

上传人:E**** 文档编号:91192493 上传时间:2019-06-26 格式:PPT 页数:128 大小:948KB
返回 下载 相关 举报
软件工程讲义04课件_第1页
第1页 / 共128页
软件工程讲义04课件_第2页
第2页 / 共128页
软件工程讲义04课件_第3页
第3页 / 共128页
软件工程讲义04课件_第4页
第4页 / 共128页
软件工程讲义04课件_第5页
第5页 / 共128页
点击查看更多>>
资源描述

《软件工程讲义04课件》由会员分享,可在线阅读,更多相关《软件工程讲义04课件(128页珍藏版)》请在金锄头文库上搜索。

1、软件工程,1,软件工程 第四章 面向对象技术,4.1 面向对象的概念 4.2 Rational统一开发过程 4.3 UML统一建模语言,软件工程,2,客观世界中的应用问题面对的主体都是物理的或概念的实体。 从这些实体出发,分析实体的作用、责任以及它们之间协作,从而找出问题的解,是很自然的。 面向对象技术就是适合用这种方式分析和解决问题的方法。它的基石就是问题领域中识别出来的各种对象。依赖这些对象提供的服务和对象之间相互的协同(关系),实现期望的功能。 面向对象技术能够在解决方案中直接模拟问题领域,并与人类的思维习惯相一致。,4.1 面向对象的概念,软件工程,3,什么是面向对象,Peter Co

2、ad 和 Edward Yourdon 提出面向对象方法的概念: 面向对象 = 对象 + 分类 + 继承 + 消息通信 采用这四个概念开发的软件系统就是面向对象的软件系统。 一个面向对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。,软件工程,4,面向对象范型的特点,面向对象系统中的对象是数据抽象与过程抽象的综合体。 所谓过程抽象是指当使用某个过程时,无需关心过程内部的实现细节,只要知道如何调用该过程以及该过程完成什么功能即可。 所谓数据抽象是指使用结构或记录等方式把某个实体的数据集中起来,使得使用者能够以单元为单位使用数据。 面向对象范型在数据抽象中组织过程抽象

3、。,软件工程,5,面向对象系统的状态分别保存在各个对象的数据存储中,而不是保存在一些全局变量中。 系统解决问题的控制流包含在各个对象中的操作内。并通过消息传递,控制流从一个对象转移到另一个对象。 算法被分布到各种实体中。通过执行消息传递和对象中的操作实现算法的功能。,软件工程,6,面向对象的特点,抽象性:对象包含数据抽象和行为抽象; 封装性:信息隐蔽(使用与实现分开); 共享性: 同一个类中所有对象共享相同的数据结构和行为; 同一应用中的对象通过继承关系,共享共同的数据结构和行为; 不同应用中的对象通过复用,共享数据结构和行为。,软件工程,7,对象(object),对象是系统中描述客观事物的实

4、体,是构成系统的一个基本单元,由一组属性值和一组对属性进行操作的服务组成。 对象 = 对象名+数据(属性)+操作(行为) 属性值一般只能通过执行对象的操作来改变。 操作(方法或服务)描述了对象执行的功能,若通过消息传递,还可以为其他对象使用。 对象可以是外部实体、信息结构、事件、角色、组织结构、地点或位置、操作规程等。,软件工程,8,计算机窗口中的三个多边形对象,软件工程,9,表示多边形的三个对象,软件工程,10,类(class),把具有相同属性(数据结构)和服务(操作)的对象归在一起就形成了类。 类的定义包括一组数据属性和在数据上的一组合法操作。 属于某一个类的各个对象都是该类的实例(ins

5、tance),它们都可使用类中的操作。 类定义了各个实例所共有的数据结构,使用类的构造函数,可以在创建该类的实例时初始化这个实例的状态。,软件工程,11,由两个四边形对象导出一个类,软件工程,12,消息(message),消息是一个对象向另一个对象传递的信息。有四类消息:发送对象请求接收对象提供服务、发送对象激活接收对象、发送对象询问接收对象、发送对象仅传送信息给接收对象。 消息的使用类似于函数调用,消息中指定了某一个实例,一个操作名和一个参数表(可能是空的),如quadrilateral1. move(15, 20) 。 接收消息的实例执行消息中指定的操作,并将形式参数与参数表中相应的值结合

6、起来。,软件工程,13,继承(inheritance),如果某几个类之间具有共性的东西 (属性和行为),抽取出来放在一个泛化类中,将各个类的特有的东西放在特化类中分别描述,则可建立起特化类对泛化类的继承。 继承是使用已有的类定义做为基础建立新类的定义技术。 已有的类可当做泛化类(父类)来引用,则新类相应地可当做特化类(子类)来引用。,软件工程,14,建立继承结构的好处: 易编程、易理解 代码短, 结构清晰 易修改 共同部分只要在一处修改即可 易增加新类 只须描述不同部分 怎样建立一个好的继承层次 类可以从父类继承,父类又可以从它的父类继承,形成多层次的继承结构。 当增加一个新类时,不一定在最低

7、层,可能需要插在中间层,这样可能需要调整原来的层次结构。,软件工程,15,建立一个新类起重车。它的底盘、发动机、轮胎、驱动装置等都在已有类汽车中。关系如右图所示。新类是已有类的特殊情形。这时直接让起重车类作为汽车类的子类即可。,软件工程,16,增加一个新类拖拉机。它的底盘、发动机等与汽车不同,但驱动装置、轮胎等与汽车相同。 调整继承结构。建立一个新的一般的车辆类,把拖拉机与汽车类的共性放到车辆类中,拖拉机与汽车类都成为车辆类的子类。 车辆是抽象类,相关操作到子类汽车找。,软件工程,17,另一种情形是在已有类的基础上加入新类,使得新类成为已有类的泛化类。 例如,已经存在三角形类,四边形类,想加入

8、一个多边形类,并使之成为三角形和四边形类的泛化类。,软件工程,18,前三个情况主要是通过查找(应用领域)类库,找到可以原封不动地继承的类或可以通过调整继承层次结构继承的类。但如果在已有的继承层次中找不到可以继承的已有类,就从新开始完全独立地建立一个类。 如果一个类需要用到多个现有类的特征,可以从多个类中继承,称为多继承。 例如退休教师是继承退休者和教师这两个类的某些特征或行为而得到的一个新类。,多继承,软件工程,19,多态性和动态绑定,对象互相通信,即一个对象发消息给另一个对象,执行某些行为或又发消息给另外的对象,从而执行系统的功能。,软件工程,20,多态性指同名的函数或操作可在不同类型的对象

9、中有各自相应的实现。例如 整数“+”:整数加法 浮点数“+”:浮点数加法 字符串“+”:字符串连接 点“+”:两个点的坐标位置分别叠加 具有多态的函数或操作在运行时才根据实际的对象类型,执行相应实现程序的连接,此即动态绑定。,软件工程,21,例如,想要在屏幕上画一系列多边形,多态性允许发送消息draw,根据消息接收对象的类型不同,画出不同的多边形。 draw针对的是一系列的类型(类族)而不仅仅是一个类型。 多态性的实现有 2 种: 利用继承关系,把所有数据类型当作一个抽象数据类型的子类型。,软件工程,22,利用模板机制,把所有可能的数据类型用一个参数化的数据类型来代替。 动态绑定保证在程序执行

10、时实施与对象 P 连接的操作。如果 P 是矩形类的实例,则执行与矩形连接的操作,如果 P 是三角形类的实例,则执行与三角形连接的操作。 动态绑定把函数调用与目标代码块的连接延迟到运行时进行。这样,只有发送消息时才与接收消息实例的一个操作绑定。,软件工程,23,4.2 Rational统一开发过程,最佳软件开发实践 为了以一种更好的、迭代的、可预测的方式开发软件产品,总结了软件开发的最佳实践: 迭代式软件开发; 需求管理; 基于构件的软件体系结构; 建立软件可视化模型; 不断验证软件质量; 控制变更。,软件工程,24,Rational统一开发过程 软件开发过程的作用是: 成为开发组活动顺序的向导

11、。 详细说明需要开发哪些制品,何时开发。 指导每一个成员及整个开发组的工作。 提供监控和度量项目产品和活动所依据的准则。 如果没有一个良好定义的过程,开发组将各行其是,开发成功与否完全依赖个别优秀的人才,这不是能够长久的。,软件工程,25,Rational统一开发过程(RUP, Rational Unify Process)描述了如何在软件开发组织中严格分配任务和职责的方法。 RUP 是一个过程产品,“软件过程也是软件。“ RUP 采用二维的过程结构: 横轴表明过程的生存周期,它反映了过程被激活时的动态情况,用周期、阶段、迭代和里程碑表示。 纵轴表明过程的静态状况,通过过程构件、活动、工作流、

12、制品和工作人员描述过程。,软件工程,26,初始,细化,构造,移交,阶 段,初始化,细化#1,细化#2,构造#1,构造#2,构造#3,移交#1,移交#2,迭代,工作流,业务建模,需求,分析与设计,实现 测试 实施,配置和变更管理 项目管理 环境,沿时间轴的组织结构,沿内容轴的组织,软件工程,27,过程的静态描述:过程模型 过程模型中的主要模型元素有 4 种: 工作人员:谁做(Who) 活动:怎么做(How) 制品:做什么(what) 工作流:何时做(when) 过程的中心概念是工作人员,工作人员不是指某一个人,而是指完成工作的角色。工作人员定义人们应履行的行为和职责。,软件工程,28,活动定义了

13、工作人员所执行的工作。有 3 类步骤: 思考步骤 执行步骤 评审步骤 制品是过程生产、修改或使用的一些信息。RUP 的制品分为 5 个信息集。 管理集:计划制品、操作制品 需求集:构想文档、项目相关人员需求、用例模型和业务模型,软件工程,29,设计集:设计模型、软件体系结构描述、测试模型 实现集:源代码和可执行程序、相关数据结构和数据文档 实施集:安装资料、用户文档、培训材料 工作流用来描述生成结果的活动序列,用以描述工作人员之间的交互。在 RUP 中共有 9 个核心过程工作流,包括 6 个核心工程工作流和 3 个核心支持工作流。,软件工程,30,业务建模工作流:描述业务过程的本质和执行情形。

14、 需求工作流:定义系统构想,使用用例模型和补充规格说明定义系统软件需求,管理系统范围和需求变更。 分析和设计工作流:研究实现环境和系统构件的效用,定义软件的组织结构,把需求获取结果转化为实现规格。 实现工作流: 建立代码的分层结构,实现类和对象,进行单元测试和系统集成。,软件工程,31,测试工作流:根据事先定义的度量和准则检查产品,确认产品是否满足或者超出事先定义并被一致接受的需求。 实施工作流:在实际使用环境中测试软件、包装要交付的软件、发布软件产品、培训最终用户及销售人员。 核心支持工作流有 项目管理工作流 配置和变更管理工作流 环境工作流,软件工程,32,过程的动态描述:迭代开发 将一个

15、大项目分解为可连续应用瀑布模型的几个小部分。在对一部分进行分析、设计、实现并确认后,再对下一部分进行分析、设计、实现和确认。以此进行下去,直到整个项目完成。在 RUP 中,迭代过程分为几个阶段。,软件工程,33,初始阶段:确定最终产品的构想及其用例,定义项目范围。 细化阶段:计划需完成活动和资源,详细说明产品特性并设计软件体系结构。 构造阶段:构造整个产品,逐步完善软件体系结构和计划,直到产品(完整的构想)已完全准备好交付给用户。 移交阶段:移交产品给用户,包括制造,交付,培训,支持及维护产品。,软件工程,34,这 4 个阶段构成开发周期,周期结束时产生一代新的软件产品。 软件产品产生于初始开

16、发周期,随着重复执行同样的过程,软件发展到下一代产品,这一时期即为软件的进化周期。,软件工程,35,Rational统一过程的特点: 用例驱动的、以体系结构(架构)为中心的、迭代和增量的过程。 用例建模技术可以用为大多数项目相关人员理解的形式来表述问题。 参与者(Actor) 用例(Use Case) 场景(scenario) 事件流(event flow),软件工程,36,用例和参与者的事例 银行储户通过自动取款机(自动柜员机)提款,转账或检查账户余额。用一组用例表达如下:,软件工程,37,用例模型 将整个系统或子系统的所有用例,以及与之交互的参与者集合起来构成系统的用例模型。 用例模型给出系统预期功能模型和系统上下文环境模型,它成为开发人员和用户之间的契约。 用例模型的目的是确保系统能处理所有的功能性需求。,软件工程,38,用例驱动的过程 “用例驱动” 指开发过程是基于用例,从一个工作流向下一个工作流,逐步前进的。 开发初期,人们使用用例获取用户需求,建立用例模型,描述系统的全部功能。 基于用例模型,人们创建一系列实现这些用例的分析模型、设计模型和实现模型。 测试人员

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

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

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