第7章面向对象软件工程的概念
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、基于构件
统一过程所构造的软件系统,是由软件构件通过明确 定义的接口相互连接所建造起来的。
5、使用UML
统一过程使用UML来制定软件系统的所有蓝图,UML 是整个统一过程的一个完整部分,他们是共同发展起来的, 它强调创建和维护模型。
六盘水师范学院 孙新杰
11
6、过程可剪裁
用统一过程开发软件时,各阶段应该有多长?各个 阶段迭代多少次是合适的?候选构架可以在哪一点完 全建立起来?这些问题的答案取决于系统的规模、项 目的性质、开发组织的领域经验,甚至包括相关人员 有效配合程度。总之,统一过程是一个框架,可以根 据具体情况加以裁剪,以此来适应各种各样的开发过 程。
测试
客户 评估
六盘水师范学院 孙新杰
6
该模型每次迭代都要计划、工程和评估。每个计划 都要调整进度以适应和本次迭代相关的变化。早期阶段 迭代进行的分析与设计工作为了分离出OO模型中的所 有重要元素;当工程工作不断进展时,产生软件的增量 版本;在评估阶段对每个增量的评估其反馈将影响下一 次计划活动及后续增量。
六盘水师范学院 孙新杰
3
输入 输出
过程1 过程2 过程3
数据实体
传统方法数据与过程是分离的
消息 消息
对象
属于该对象 的数据
处理数据的方法
对象把数据和处六盘理水师范数学院据孙新的杰 方法封状4成一个单元
传统方法与面向对象方法的比较
传统方法 系统是过程的集合 过程与数据实体交互 过程接受输入并产生输出
评审及精化
(1)对OO系统的分析 和设计建模不在相同的
计划
分析
设计
提取可 复用类
原型 实现
测试
客户 第一个
评估
原型
抽象层次上进行。 (2)分析和设计可以 并发地应用到独立的系
评审及精化
计划
分析
设计
提取可 复用类
原型 实现
测试
客户 下一个 评估 增量
统构件。
评审及精化
计划
分析
设计
提取可 复用类
原型 实现
六盘水师范学院 孙新杰
8
下图显示了用例模型与其他模型之间的相关性:
由…建立
分析模型 由…设计 为系统描述 设计模型wk.baidu.com一系列类 为系统定义
一系列子系 统和界面
用例模型
由…实现 实现模型 将类映射 到构件
由…验证
测试模型
验证系统 是否提供 了用例模 型中描述 的功能
由…分配
配置模型 定义软件
分布
六盘水师范学院 孙新杰
(1)面向过程为主。系统围绕着由计算机来实现功 能的复杂过程而建立,在分析和解决问题时与人们对 现实世界的认识有一定差距。
六盘水师范学院 孙新杰
2
(2)软件结构稳定性差。需求分析阶段重点是功能模型, 难以彻底明确全部需求。设计阶段的软件体系结构是基于 系统功能建立的。每个模块完成一个基本功能,多个模块 的组合完成一个整体功能。一个模块的变动可能会影响到 多个模块。用户的需求大多针对功能,功能的变化会引起 体系结构的变化,不利于系统的维护。
7
即用例不只是一种确定系统需求的工具,它还能驱动 系统的设计、实现和测试的进行。
基于用例模型,开发人员可以创建一系列实现这些用 例的设计模型和实现模型。开发人员可以审查每个后续建 立的模型是否与用例模型一致。测试人员测试实现以确定 实现模型的构件是否实现了用例。所以用例启动了开发过 程,还使开发过程结合为一体。开发过程是沿着一系列从 用例得到的工作流前进的。
(3)软件开发的抽象力度小。解决问题的类型一般用于 “输入-处理-输出”为核心的数据处理系统,不适应于复杂的 实时、交互、事件驱动、分布式等新型应用的系统开发。
(4)软件重用未能得到很好的解决。传统的方法一般从 “零”开始开发软件,数据与操作作为相互分离的实体来考 虑,使软件的可复用性差。重用的实施仅仅是公用模块的 调用。面向对象的封装性、继承性、多态性等特性支持软 件重用且重用的粒度大。软件的重用导致更快地、高质量 地开发软件,为软件工业化生产奠定基础。
2、RUP
98年6月推出,该过程强调了开发方法的统一、建 模语言的统一、研究成果的统一。该过程是基于构件的, 即所构造的系统是由软件构件通过明确定义的接口相互 连接所建造起来的。它使用UML来制定软件系统的所有 蓝图。RUP的主要特点:
(1)用例驱动
用例作为系统分析、设计、实现和测试的基本输入。
六盘水师范学院 孙新杰
面向对象方法 系统是交互对象的集合 对象与人或其它对象交互 对象发送与响应消息
六盘水师范学院 孙新杰
5
7.2 面向对象的过程模型
1、演化/并行模型
计划 分析 设计
是Booch等人在90年 代初建议的。该模型与
分析
评审及精化 设计
早期的分析/设计迭代 分析 设计
第1章介绍的螺旋模型、
增量模型相似。但强调:
六盘水师范学院 孙新杰
12
7.3 面向对象的概念
面向对象(Object Oriented,简称OO)的概念起源于 20世纪60年代中期的Simula 67。80年代初,Smalltalk语 言及其程序设计环境的出现成为面向对象技术发展的一 个重要里程碑。80年代中期硬件的发展使C到C++过渡平 滑,推出了相应工具及面向对象集成环境,使OOP模式 进入主流。80年代中后期,面向对象分析与设计的研究 开始发展。进入90年代,面向对象软件工程成了许多软 件产品的建造笵型。
第7章面向对象软件工程的 概念
7.1传统软件开发方法的局限性
传统的软件工具、软件技术和抽象层次越来越难以 适应大规模复杂软件系统的开发特点。软件能力问题 已经成为制约软件发展的因素。
软件工程自70年代以来,有力的推动了软件能力的 解决。自顶向下的分析与设计的方法、软件项目的工 程化管理、软件工具和开发环境、软件质量保证等都 对软件的发展起了非常重要的作用。传统的软件开发 方法在当时的软件工程中起了主导作用,随着系统复 杂性、多变性增强,传统方法的缺陷就显露了出来:
9
(2)以构架(Architecture)为中心
软件系统的构架从不同角度描述了即将构造的系统, 它刻画了系统的整体设计,去掉了细节部分,突出了系统 的重要特征,包含了系统中最重要的静态结构和动态行为。
构架是根据应用领域的需要逐渐发展起来的,并在用 例中得到反映。每种产品都具有功能和表现形式,功能与 用例对应,表现形式与构架对应。用例与构架是相互影响 的,用例在实现时必须符合于构架,构架必须预留空间以 实现现在或将来所有需要的用例。
六盘水师范学院 孙新杰
10
3、迭代与增量的过程 迭代指工作流中的步骤,增量指产品中增加的部分。
迭代过程要处理一组用例,这组用例合起来能扩展所 开发产品的可用性,后续的迭代过程建立在前一次迭代过 程末期所开发的产品上。
构架提供了一种结构来指导迭代过程中的工作,用例 则确定了目标并驱动每次迭代的工作。——三条腿的凳子!
统一过程所构造的软件系统,是由软件构件通过明确 定义的接口相互连接所建造起来的。
5、使用UML
统一过程使用UML来制定软件系统的所有蓝图,UML 是整个统一过程的一个完整部分,他们是共同发展起来的, 它强调创建和维护模型。
六盘水师范学院 孙新杰
11
6、过程可剪裁
用统一过程开发软件时,各阶段应该有多长?各个 阶段迭代多少次是合适的?候选构架可以在哪一点完 全建立起来?这些问题的答案取决于系统的规模、项 目的性质、开发组织的领域经验,甚至包括相关人员 有效配合程度。总之,统一过程是一个框架,可以根 据具体情况加以裁剪,以此来适应各种各样的开发过 程。
测试
客户 评估
六盘水师范学院 孙新杰
6
该模型每次迭代都要计划、工程和评估。每个计划 都要调整进度以适应和本次迭代相关的变化。早期阶段 迭代进行的分析与设计工作为了分离出OO模型中的所 有重要元素;当工程工作不断进展时,产生软件的增量 版本;在评估阶段对每个增量的评估其反馈将影响下一 次计划活动及后续增量。
六盘水师范学院 孙新杰
3
输入 输出
过程1 过程2 过程3
数据实体
传统方法数据与过程是分离的
消息 消息
对象
属于该对象 的数据
处理数据的方法
对象把数据和处六盘理水师范数学院据孙新的杰 方法封状4成一个单元
传统方法与面向对象方法的比较
传统方法 系统是过程的集合 过程与数据实体交互 过程接受输入并产生输出
评审及精化
(1)对OO系统的分析 和设计建模不在相同的
计划
分析
设计
提取可 复用类
原型 实现
测试
客户 第一个
评估
原型
抽象层次上进行。 (2)分析和设计可以 并发地应用到独立的系
评审及精化
计划
分析
设计
提取可 复用类
原型 实现
测试
客户 下一个 评估 增量
统构件。
评审及精化
计划
分析
设计
提取可 复用类
原型 实现
六盘水师范学院 孙新杰
8
下图显示了用例模型与其他模型之间的相关性:
由…建立
分析模型 由…设计 为系统描述 设计模型wk.baidu.com一系列类 为系统定义
一系列子系 统和界面
用例模型
由…实现 实现模型 将类映射 到构件
由…验证
测试模型
验证系统 是否提供 了用例模 型中描述 的功能
由…分配
配置模型 定义软件
分布
六盘水师范学院 孙新杰
(1)面向过程为主。系统围绕着由计算机来实现功 能的复杂过程而建立,在分析和解决问题时与人们对 现实世界的认识有一定差距。
六盘水师范学院 孙新杰
2
(2)软件结构稳定性差。需求分析阶段重点是功能模型, 难以彻底明确全部需求。设计阶段的软件体系结构是基于 系统功能建立的。每个模块完成一个基本功能,多个模块 的组合完成一个整体功能。一个模块的变动可能会影响到 多个模块。用户的需求大多针对功能,功能的变化会引起 体系结构的变化,不利于系统的维护。
7
即用例不只是一种确定系统需求的工具,它还能驱动 系统的设计、实现和测试的进行。
基于用例模型,开发人员可以创建一系列实现这些用 例的设计模型和实现模型。开发人员可以审查每个后续建 立的模型是否与用例模型一致。测试人员测试实现以确定 实现模型的构件是否实现了用例。所以用例启动了开发过 程,还使开发过程结合为一体。开发过程是沿着一系列从 用例得到的工作流前进的。
(3)软件开发的抽象力度小。解决问题的类型一般用于 “输入-处理-输出”为核心的数据处理系统,不适应于复杂的 实时、交互、事件驱动、分布式等新型应用的系统开发。
(4)软件重用未能得到很好的解决。传统的方法一般从 “零”开始开发软件,数据与操作作为相互分离的实体来考 虑,使软件的可复用性差。重用的实施仅仅是公用模块的 调用。面向对象的封装性、继承性、多态性等特性支持软 件重用且重用的粒度大。软件的重用导致更快地、高质量 地开发软件,为软件工业化生产奠定基础。
2、RUP
98年6月推出,该过程强调了开发方法的统一、建 模语言的统一、研究成果的统一。该过程是基于构件的, 即所构造的系统是由软件构件通过明确定义的接口相互 连接所建造起来的。它使用UML来制定软件系统的所有 蓝图。RUP的主要特点:
(1)用例驱动
用例作为系统分析、设计、实现和测试的基本输入。
六盘水师范学院 孙新杰
面向对象方法 系统是交互对象的集合 对象与人或其它对象交互 对象发送与响应消息
六盘水师范学院 孙新杰
5
7.2 面向对象的过程模型
1、演化/并行模型
计划 分析 设计
是Booch等人在90年 代初建议的。该模型与
分析
评审及精化 设计
早期的分析/设计迭代 分析 设计
第1章介绍的螺旋模型、
增量模型相似。但强调:
六盘水师范学院 孙新杰
12
7.3 面向对象的概念
面向对象(Object Oriented,简称OO)的概念起源于 20世纪60年代中期的Simula 67。80年代初,Smalltalk语 言及其程序设计环境的出现成为面向对象技术发展的一 个重要里程碑。80年代中期硬件的发展使C到C++过渡平 滑,推出了相应工具及面向对象集成环境,使OOP模式 进入主流。80年代中后期,面向对象分析与设计的研究 开始发展。进入90年代,面向对象软件工程成了许多软 件产品的建造笵型。
第7章面向对象软件工程的 概念
7.1传统软件开发方法的局限性
传统的软件工具、软件技术和抽象层次越来越难以 适应大规模复杂软件系统的开发特点。软件能力问题 已经成为制约软件发展的因素。
软件工程自70年代以来,有力的推动了软件能力的 解决。自顶向下的分析与设计的方法、软件项目的工 程化管理、软件工具和开发环境、软件质量保证等都 对软件的发展起了非常重要的作用。传统的软件开发 方法在当时的软件工程中起了主导作用,随着系统复 杂性、多变性增强,传统方法的缺陷就显露了出来:
9
(2)以构架(Architecture)为中心
软件系统的构架从不同角度描述了即将构造的系统, 它刻画了系统的整体设计,去掉了细节部分,突出了系统 的重要特征,包含了系统中最重要的静态结构和动态行为。
构架是根据应用领域的需要逐渐发展起来的,并在用 例中得到反映。每种产品都具有功能和表现形式,功能与 用例对应,表现形式与构架对应。用例与构架是相互影响 的,用例在实现时必须符合于构架,构架必须预留空间以 实现现在或将来所有需要的用例。
六盘水师范学院 孙新杰
10
3、迭代与增量的过程 迭代指工作流中的步骤,增量指产品中增加的部分。
迭代过程要处理一组用例,这组用例合起来能扩展所 开发产品的可用性,后续的迭代过程建立在前一次迭代过 程末期所开发的产品上。
构架提供了一种结构来指导迭代过程中的工作,用例 则确定了目标并驱动每次迭代的工作。——三条腿的凳子!