软件工程第11章

合集下载

张海藩《软件工程导论》(第6版)(章节题库 第11章 面向对象设计)【圣才出品】

张海藩《软件工程导论》(第6版)(章节题库 第11章 面向对象设计)【圣才出品】

第11章面向对象设计一、选择题1.()是不需要接收消息就能主动执行的服务。

A.内部服务B.外部服务C.内嵌服务D.上层服务【答案】B【解析】主动服务是不需要接收消息就能主动执行的服务,它在程序实现中是一个主动的程序成分,而外部服务属于主动服务,所以答案选B项。

2.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是()关系。

A.组装B.整体与部分C.has aD.一般与具体【答案】D【解析】火车是一种陆上交通工具,而陆上交通工具不一定是火车,还可以是汽车、自行车等,说明火车是陆上交通工具的具体化,而陆上交通工具是火车的一般化,所以它们之间的关系是一般与具体的关系。

3.()只供对象内部的其他服务使用,不对外提供。

A.外部服务B.内部服务C.内嵌服务D.上层服务【答案】B【解析】对象的服务分为外部服务和内部服务两种,其中,内部服务只供内部的其它服务使用,不对外提供,外部服务只供对象外部的其它服务使用,不对内提供。

4.对象标识是分配给每个对象的永久性标识(又称作“柄”),它不符合下述条件()。

A.在一定的范围或领域(例如一个应用系统)中是唯一的B.与对象实例的特征、状态及分类(可能是动态的)无关C.在对象存在期间保持一致D.在对象存在之后保持一致【答案】D【解析】对象标识符合如下几个条件:①在一定的范围或领域中是唯一的;②与对象实例的特征、状态及分类无关;③在对象期间保持一致。

5.对象或者类的整体行为(例如响应消息)的某些规则所不能适应的(对象或类的)()。

A.状况B.情态C.条件D.问题【答案】D【解析】对象或者类的整体行为(例如响应消息)的某些规则所能适应的(对象或类的)状况、情况、条件、形式或生存周期阶段。

二、填空题1.对象的服务可分为_____、_____。

【答案】外部服务;内部服务2._____不同取值所构成的组合都可看作对象的一种新的状态。

【答案】对象的每个属性3.如果在一个服务中包括了多项可独立定义的功能,则它是_____,应尝试把它分解为多个服务。

软件工程第十一章面向对象设计

软件工程第十一章面向对象设计

THANKS
感谢观看
01
抽象类是一种不能被实例化的 类,它只能被其他类继承。
02
抽象类可以包含抽象方法和具 体方法。抽象方法是没有具体 实现的方法,需要在继承抽象 类的子类中实现。
03
通过继承抽象类,子类可以继 承抽象类的属性和方法,并且 可以重写或实现抽象类中的方 法。
接口与抽象类的选择
在设计软件时,选择使用接口还是抽象类取决于具体需求和设计目标。
关系
关系描述了对象之间的交互和联系。 常见的关系包括关联、聚合和继承。
继承与多态的设计
继承
继承是一种实现代码重用的方式,子类可以继承父类的属性和方法,并可以扩展或覆盖它们。通过继承,可以建 立类之间的层次结构,使得代码更加清晰和易于维护。
多态
多态是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。多态可以提高代码的灵活性和可扩展性, 使得程序更加易于维护和修改。
02
类与对象的设计
类的定义与属性
类的定义
类是对象的抽象,它描述了一组具有相同属性和行为的对象。类定义了对象的结构、行为和关系。
属性
属性是类中用于描述对象状态的变量。每个对象都有其自己的属性值,这些属性值决定了对象的状态 。
对象的行为与关系
行为
行为是类中定义的方法,用于描述对 象可以执行的操作。方法定义了对象 的行为和功能。
高层模块不应该依赖于低层模块,它们都应 该依赖于抽象。
面向对象设计的优势
提高代码可重用性
通过类和继承实现代码重用,减少重 复代码。
提高代码可维护性
面向对象设计使得代码结构更加清晰, 易于理解和维护。
提高开发效率
通过快速原型开发,快速构建软件系 统。

《软件工程》教学课件 第11章 软件项目管理

《软件工程》教学课件 第11章 软件项目管理
式为组织型、半独立型或嵌入型。
下 表 是 根 据 63 个 项 目 的 数 据 统 计 结 果 , 按 照 基 本 的 COCOMO模型估算的工作量和进度。
总体类型 组织型
半独立型 嵌入型
工作量 MM=10.4(KLOG)1.05 MM=3.0(KLOG)1.12 MM=3.6(KLOG)1.20
进度 TDEV=10.5(MM)0.38 TDEV=10.5(MM)0.35 TDEV=10.5(MM)0.32
i1
其中:ai — 估计的最小行数 bi — 估计的最大行数 mi — 最可能的行数
将估算的源代码行数,乘以根据经验推算的每行源代 码所需成本,即为该软件的成本。
IBM 估算模型
1977年由Waiston 和 Felix 总结了IBM联合系统 分部(FSD)负责的60个项目的数据,利用最小二 乘法拟合,得到如下估算公式:
PERT(Program evaluation & review technique)计 划评审技术或CPM(Critical path method)关键路径法, 都是采用网络图来描述项目的进度安排。如图描述了开发 模块A、B、C的任务网络图。各边上所标注的数字为该任 务所持续的时间,数字结点为任务的起点和终点。
70
任务
月份 1 2 3 4 5 6 7 8 9 10 11 12
60
需求分析 ▲ ▲ ▲
50
总体设计
▲ ▲▲
40
详细设计
▲▲
30
编码 软件测试
▲ ▲▲
20
10
▲▲▲
0 一月
二月
三月
四月
五月
六月
进度表
2.甘特图(Gantt Chart)

软件工程导论第11章

软件工程导论第11章
22
【还可以把适配接口再进一步细分为转换接口和扩充接口。转换接口, 是为了克服与表示方法、数据结构或硬件特点相关的操作给重用带来 的困难而设计的,这类接口是每个类构件在重用时都必须重新定义的 服务的集合。当使用C++语言编程时,应该在根类(或适当的基类)中, 把属于转换接口的服务定义为纯虚函数。如果某个服务有多种可能的 实现算法,则应该把它当作扩充接口。扩充接口与转换接口不同,并 不需要强迫用户在派生类中重新定义它们,相反,如果在派生类中没 有给出扩充接口的新算法,则将继承父类中的算法。当用C++语言实现 时,在基类中把这类服务定义为普通的虚函数。】
4. 弱耦合 耦合:指一个软件结构内不同模块之间互连的紧 密程度。 在面向对象方法中,对象是最基本的模块,因此, 耦合主要指不同对象之间相互关联的紧密程度。 弱耦合是优秀设计的一个重要标准。
5
对象之间的耦合分为两大类: (1) 交互耦合: 对象之间的耦合通过消息连接来实现。 使交互耦合尽可能松散,应遵守下述准则: 尽量降低消息连接的复杂程度。 应该尽量减少消息中包含的参数个数,降低参数的复 杂程度。 减少对象发送(或接收)的消息数。 (2) 继承耦合 与交互耦合相反,应该提高继承耦合程度。 通过继承关系结合起来的基类和派生类,构成系统中 粒度更大的模块。设计时应该使特殊类尽量多继承并 使用其一般化类的属性和服务,从而更紧密地耦合到 其一般化类。
13
2. 软件成分的重用级别 (1) 代码重用 源代码剪贴:最原始的重用形式。 复制或修改原有代码时可能出错,存在严重的配臵 管理问题,人们几乎无法跟踪原始代码块多次修改 重用的过程。 源代码包含:许多程序设计语言都提供包含库中 源代码的机制。配臵管理问题有所缓解,修改了库 中源代码之后,所有包含它的程序自然都必须重新 编译。 继承:利用继承机制重用类库中的类时,无须修 改已有的代码,就可以扩充或具体化在库中找出的 类,基本上不存在配臵管理问题。

软件工程课本讲解面向对象的OMT方法

软件工程课本讲解面向对象的OMT方法
装成模块。 最终得到:对象设计文档 = 细化旳对象模型 + 细
化旳动态模型 + 细化旳功能模型。
16
第11章 面向对象的OMT方法
对象模型化技术OMT 对象模型化技术把分析时搜集旳信息构造在三类
模型中,即对象模型、功能模型和动态模型。
这个模型化旳过程是一种迭代过程。
17
第11章 面向对象的OMT方法
图11.4 三元关联 29
第11章 面向对象的OMT方法
角色为关联旳端点,阐明类在关联中旳作用和角 色。不同类旳关联角色可有可无,同类旳关联角色不 能省。角色旳表达如图11.5所示。
教师
讲授
课程
主讲
内容
图11.5 关联旳角色旳表达
30
第11章 面向对象的OMT方法
2) 受限关联
受限关联由两个类及一种限定词构成,限定词是 一种特定旳属性,用来有效地降低关联旳重数,限定 词在关联旳终端对象集中阐明。
技术之上旳,OMT措施旳基础是开发系统旳3个模型,再 细化这3种模型,并优化以构成设计。对象模型由系统中 旳对象及其关系构成,动态模型描述系统中对象对事件旳响应及对 象间旳相互作用,功能模型则拟定对象值上旳多种变换及变换上旳
约束。
6
第11章 面向对象的OMT方法
11.1.2 系统分析
分析旳目旳是拟定一种系统“干什么”旳模型,该模型经过 使用对象、关联、动态控制流和功能变换等来描述。分析过程是 一种不断获取需求及不断与顾客磋商旳过程。
8
第11章 面向对象的OMT方法
3. 构造动态模型
构造动态模型旳环节如下: (1) 准备经典交互序列旳脚本。 (2) 拟定对象间旳事件并为各脚本安排事件跟踪。 (3) 准备系统旳事件流图。 (4) 开发具有主要动态行为旳各个类旳状态图。 (5) 检验状态图中共享事件旳一致性和完整性。 最终得到:动态模型 = 状态图 + 全局事件流图。

第11章 软件项目管理-软件工程基础(第3版)-胡思康-清华大学出版社

第11章  软件项目管理-软件工程基础(第3版)-胡思康-清华大学出版社

第 4 页4
软件项目管理概述
软件项目管理目标
软件项目管理成功的目标包括以下几方面: ⑴ 如期完成项目 ⑵ 项目成本控制在计划之内 ⑶ 妥善处理用户的需求变动 ⑷ 保证项目质量⑸ 保持对项目进度的跟踪与控制
第11章 软件项目管理
第 5 页5
软件项目规模度量
任何软件项目都需要定量描述才能制定软件开发成本。只有把软件项目 中设计的各项因素,如软件开发时间、人员数量、开发环境的软件工具和硬 件系统、资金等资源的指标尽可能量化,才能准确估算软件产品的规模、复 杂度、工作总量。没有定量的项目将难以展开软件管理和实施过程。
❖系统的内部处理复杂吗
❖代码设计可重用吗
❖ 设计中包括转换和安 装吗
❖ 系统的设计支持不同 组织的多次安装吗
❖ 系统的实际有利于用 户的修改和使用吗
第 10 页10
软件项目规模度量
面向功能的度量
一旦计算出功能点,就可仿照LOC的方式度量软件的生产率、质量和 其它属性:
生产率 = FP/E 质量 = ER/FP 成本 = S/FP 文档 = ER/FP
第11章 软件项目管理
第 2 页2
软件项目管理概述
软件项目管理的特点
⑷ 软件产品虽然分通用软件和领域软件,但其都是“定制”的定向系统 ,目前仍无法摆脱手工开发模式。“没有完全一样的软件项目”,这不仅对 项目实施过程难以控制,而且还需要根据具体应用领域、环境等制定特殊管 理过程和内容。
⑸ 源于应用领域的复杂性和软件开发技术的复杂性,软件自身是一个复 杂系统。因而软件管理要对复杂软件系统过程做到未雨绸缪,对软件开发内 容抽丝剥茧般的细致。 ⑹ 软件项目管理需要综合各方面,特别是社会因素、精神因素、认知要素、 技术问题、领域问题、用户沟通等各项复杂内容。

第11章_质量概念

第11章_质量概念

对软件工程工作产品进行技术审查的成本。 数据收集和度量估算的成本。 测试和调试的成本。
质量成本
失效成本是那些如果在将产品发给客户之前或 之后没有错误就不会存在的费用。失效成本可分 为内部失效成本和外部失效成本。 内部失效成本发生在当你在发货之前发现错误 时,内部失效成本包括:



为纠正错误进行返工所需的成本。 返工时无意中产生副作用,必须对副作用加以缓解而发生的 成本。 组织为评估失效的模型而收集质量数据,由此发生的相关成 本。
质量成本

质量成本包括追求质量过程中或在履行质 量有关的活动中引起的费用以及质量不佳 引起的下游费用等所有费用。为了解这些 费用,一个组织必须收集度量数据,为目 前的质量成本提供一个基准,找到降低这 些成本的机会,并提供一个规范化的比对 依据。质量成本可分为预防成本、评估成 本和失效成本。
质量成本

ISO 9126质量因素(6个)
功能性:软件满足已确定要求的程度,由以下子属性表 征:适合性、准确性、互操作性、依从性和安全保密性。 可靠性:软件可用的时间长度,由以下子属性表征:成 熟性、容错性和易恢复性。 易用性:软件容易使用的程度,由以下子属性表征:易 理解性、易学习性和易操作性。 效率:软件优化使用系统资源的程度,由以下子属性表 征:时间特性和资源利用特性。 维护性:软件易于修复的程度,由以下子属性表征:易 分析性、易改变性、稳定性和易测试性。 可移植性:软件可以从一个环境移植到另一个环境的容 易程度,由以下子属性表征:适应性、易安装性、符合 性和易替换性。

Garvin的质量维度
耐久性。是否能够对软件进行维护或改正,而 不会粗心大意地产生料想不到的副作用?随着时 间的推移,变更会使错误率或可靠性变得更糟吗? 适用性。软件能在可接受的短时期内完成维护 和改正吗?技术支持人员能得到所需的所有信息 以进行变更和修正缺陷吗? 审美。美的东西具有某种优雅、特有的流畅和 醒目的外在,这些都是很难量化的,但显然是不 可缺少的。美的软件具有这些特征。 感知。在某些情况下,一些偏见将影响人们对 质量的感知。

软件工程各章名词解释

软件工程各章名词解释

名词解释一个三分 五个十五分第一章 绪论1. 软件2. 文档3. 软件工程4. 软件工程过程5. 软件生存周期6. 软件生存周期模型第二章 软件可行性研究与项目开发计划1. 投资回收2. 纯收人第三章 软件需求分析1. 需求分析2. 数据流3. 数据字典4. 加工5. 数据流图第四章 软件概要设计1. 模块2. 模块化3. 抽象4. 信息隐蔽5. 模块独立性6. 耦合性7. 无直接耦合8. 数据耦合9. 标记耦合10. 控制耦合11. 公共耦合12. 内容耦合13. 内聚性14. 偶然内聚15. 逻辑内聚16. 时间内聚17. 通信内聚18. 顺序内聚19. 功能内聚第五章 软件详细设计1. PAD2. 过程设计语言(PDL)第六章 软件编码1. 程序设计风格2. 程序可移植性第七章 软件测试1. 语句覆盖2. 判定覆盖3. 条件覆盖4. 判定/条件覆盖5. 条件组合覆盖6. 路径覆盖7. 环路复杂性8. 黑盒测试9. 白盒测试10. 驱动模块11. 桩模块12. 单元测试13. 集成测试14. 确认测试15. 调试第八章 软件维护1. 维护2. 校正性维护3. 适应性维护4. 完善性维护5. 预防性维护6. 软件可维护性第九章 软件开发的增量模型1. 原型第十章 面向对象的方法1. 对象2. 类3. 消息4. 方法5. 继承性6. 单重继承7. 多重继承8. 多态性9. 抽象10. 信息隐藏11. 链12. 关联第十一章 软件质量与质量保证1. 软件可靠性2. 效率3. 可维护性4. 可移植性5. 可互操作性6. 适应性7. 可重用性8. 软件设计质量9. 软件程序质量10. 冗余第十二章 软件工程管理1. 软件配置管理2. 软件配置项3. 基线4. 文档第十三章 软件开发环境1. 软件开发环境2. 软件工具3. CASE4. CASE生存期5. CASE工作台软件工程自考名词解释答案第一章 绪论1. 计算机程序及其说明程序的各种文档.2. 文档是有关计算机程序功能,设计,编制,使用的方案或图形资料.3. 用科学知识和技术原理来定义,开发,维护软件的一门学科.4. 软件工程过程规定了获取,供应,开发,操作和维护软件时,要实施的过程,活动和任务.5. 软件生存周期是指一个软件从得出开发要求开始直到该软件报废为止的整个时期.6. 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型.第二章 软件可行性研究与项目开发计划1. 投资回收期就是使累计的经济效益等于最初的投资费用所需的时间.2. 在整个生存周期之内的累计经济效益(折合成现在值)与投资之差.第三章 软件需求分析1. 需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非不甘落后将用户非不甘落后 需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程.2. 数据流是数据在系统内传播的路径,因此由一组成分固定的数据项组成.3. 数据字典(Data Dic onary, 简称DD)就是用来定义数据流图中的各个成分的具体含义的,它以一种准确的,无二义性的说明方式为系统的分析,设计及维护提供了有关元素的一致的定义和详细的描述.4. 加工又称为数据处理,是对数据流进行某些操作或变换.5. 数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程.第四章 软件概要设计1. 模块在程序中是数据说明,可执行语句等程序对象的集合,或者是单独命名和编址的元素,在软件的体系结构中,模块是可组合,分解和更换的单元.2. 模块化是指解决一个复杂问题自顶向下逐层把软件系统划分成若干模块的过程.每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个要求的功能.3. 抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素.4. 信息隐蔽指在设计和确定模块时,使得一个模块内包含信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的.5. 模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单.6. 耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程序的一种度量.7. 无直接耦合指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息.8. 数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递.9. 标记耦合指两个模块之间传递的是数据结构,如高级语言的数组名,记录名,文件名等这些名字即为标记,其实传递的是这个数据结构的地址.10. 控制耦合指一个模块调用另一个模块时,传递的是控制变量(如开关,标志等),被调模块通过该控制变量的值有选择地执行块内某一功能.11. 公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合.公共数据环境可是是全程变量或数据结构,共享的通信,内存的公共覆盖区及任何存储介质上的文件,物理设备等(也有将共享外部设备分类为外部耦合).12. 当一个模块直接使用另一个模块的内部数据,或通过非正常口转入另一个模块内部,这种模块之间的耦合为内容耦合.13. 内聚块又称块内联系指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量.14. 偶然内聚指一个模块内的各处理元素之间没有任何联系.15. 逻辑内聚指模块内执行个逻辑上相似的功能,通过参数确定该模块完成哪一个功能.16. 把需要同时执行的动作组合在一起形成的模块为时间内聚模块.17. 通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据.18. 顺序内聚指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入.19. 功能内聚指模块内所有元素共同完成一个功能,缺一不可.因此模块不能再分割.第五章 软件详细设计1. PAD图指问题分析图(Problem Analysis Diagram),是一咱算法描述工具,它是一种由左往右展开的二维树型结构.PAD图的控制流程为自上而下,从左到右地执行.2. 过程设计语言(Process Design Language,简称PDL),也称程序描述语言(Program Descrip on Language),又称为伪码.它是一种用于描述模块自法设计和处理细节的语言.第六章 软件编码1. 程序设计风格指一个人编制程序时所表现出来的特点,习惯逻辑思路等.2. 指程序从一个计算机环境移值到另一个计算机环境的容易程序.第七章 软件测试1. 语句覆盖是指设计足够的测试用例,使被测程序中每个语句至少执行一次.2. 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次”真”和”假”值,从而使程序的每一个分支至少都通过一次.3. 条件覆盖指设计足够的测试用例,使得判定表达工中每个条件的各种可能的值出现一次.4. 判定/条件覆盖标准指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次.5. 条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次.6. 路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径.7. McCabe定义程序图的环路为程序图中区域的个数.区域个数为边和结点圈定的封闭区域数加上图形外的区域数1.8. 黑盒测试是功能测试又称为功能测试或数据驱动测试.9. 白盒测试是对程序中尽可能多和逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致.10. 驱动模块是用来模拟被测模块的上级调用模块的模块,功能要比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被模块,接收被测模块的测试结果并输出.11. 桩模块用来代替被测试模块所调用的模块它的作用是返回被测模块所需的信息.12. 单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误.13. 集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行测试,故也称组装测试或联合测试.14. 确认测试又称有效性测试.是为了检查软件的功能与性能是否与需求规格说明书中确定的指标相符合所进行的测试.15. 调试是为了确定错误的原因和位置,并改正错误所进行的工作,因此调试也称为纠错.第八章 软件维护1. 在软件运行/维护阶段对软件产品所进行的修改就是维护.2. 为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护.3. 随着计算机的飞速发展,计算机硬件,软件及数据环境在不断发生变化,为了使应用软件适应这种变化而修改软件的过程称为适应性维护.4. 在犯罪分子件运行时期中,用户往往会对软件提出新的功能要求与性能要求.这种增加软件功能,增强软件性能,提高软件运行效率而进行的维护活动称为完善性维护.5. 为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护.6. 软件可维护性是指软件能够被理解,校正,适应及增强功能的容易程度.第九章 软件开发的增量模型1. 软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性.第十章 面向对象的方法1. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则,计划或事件.2. 具有相同或相似性质的对象的抽象就是类具有相同或相似性质的对象的抽象就是类3. 对象之间进行通信的构造叫做消息.4. 类中操作的实现过程叫做方法,一个方法有方法名,参数,方法体.5. 继承性是子类自动共享父类数据结构和方法的机制这是类之间的一种关系.6. 在类层次中,子类只继承一个父类的数据结构和方法,称为单重继承.7. 在类层次中,子类继承了多个父亲的数据结构和方法,称为多重继承.8. 多态性是指相同的操作或函数,过程可作用于多用户种类型的对象上并获得不同结果.不同的对象收到同一消息可以产生不同的结果,这种现象称为多态性.9. 抽象是指强调实体的本质,内在的属性,忽略一些无关紧要的属性.10. 信息隐蔽是指所有软件部件内部都有明确的范围以及清楚的外部边界每个软件部件都有友好的界面接口,软件部件的内部实现与外部可访问性分离.11. 链表示对象间的物理与概念联结.12. 关联表示类之间的一种关系,就是一些可能的链的集合.第十一章 软件质量与质量保证1. 软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度.2. 为了完成预定功能,软件系统所需的计算机资源和程序代码数量的程度.3. 找到并改正程序中的一个错误所需代价的程度.4. 将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需的工作量.5. 将一个系统耦合到另一个系统所需的工作量.6. 修改或改进一个已投入运行的软件所需工作量的程度.7. 一个软件能再次用于其他相关应用的程度.8. 设计的规格说明书要符合用户的要求.9. 程序要按照设计规格说明所规定的情况正确执行.10. 冗余是指实现系统规定功能是多余的那部分资源,包括硬件,软件,信息和时间.第十二章 软件工程管理1. 软件配置管理,简称SCM,是一组管理整个软件生存期各阶段中变更的活动是一组管理整个软件生存期各阶段中变更的活动2. 软件配置项是软件工程中产生的信息项,它是配置管理的基本单位.3. 基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果.4. 文档是指某种数据媒体和其中所记录的数据.在软件工程中,文档用来表示对需求,工程或结果进行描述,定义,规定,报告或认证的任何书面或图示的信息.它们描述和规定了软件设计和实现的细节,说明使用软件的操作命令.第十三章 软件开发环境1. 软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成.2. 软件工具是指为支持计算机软件的开发,维护,模拟,移植或管理而研制的程序系统.3. CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发.4. 一个组织中的CASE系统从被始需求到完全废弃这一生存期.5. 一个CASE工作台是一组工具集,支持像设计,实现或测试等特定的软件开发阶段.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2. 减少步骤
应使用户为做某件事情而需敲击键盘的次数、点 按鼠标的次数、或者下拉菜单的距离,都减至最少。 还应使得技术水平不同的用户,为获得有意义的结果 所需使用的时间都减至最少。特别应该为熟练用户提 供简捷的操作方法(例如,热键)。 3. 及时提供反馈信息 每当用户等待系统完成一项工作时,系统都应该
第11章 面向对象设计
如前所述,分析是提取和整理用户需求,并建立 问题域精确模型的过程。设计则是把分析阶段得到的
需求转变成符合成本和质量要求的、抽象的系统实现
方案的过程。从面向对象分析到面向对象设计(通常缩 写为OOD),是一个逐渐扩充模型的过程。或者说,面 向对象设计就是用面向对象观点建立求解域模型的过 程。
11. 4软件重用
11.5 设计问题域子系统
通过面向对象分析所得出的问题域精确模型,为 设计问题域子系统奠定了良好的基础,建立了完整的 框架。只要可能,就应该保持面向对象分析所建立的 问题域结构。通常,面向对象设计仅需从实现角度对 问题域模型作一些补充或修改,主要是增添、合并或
分解类—&—对象、属性及服务,调整继承关系等。当
尽管分析和设计的定义有明显区别,但是在实际 的软件开发过程中二者的界限是模糊的。许多分析结 果可以直接映射成设计结果,而在设计过程中又往往 会加深和补充对系统需求的理解,从而进一步完善分 析结果。因此,分析和设计活动是一个多次反复迭代
的过程。面向对象方法学在概念和表示方法上的一致
性,保证了在各项开发活动之间的平滑(无缝)过渡, 领域专家和开发人员能够比较容易地跟踪整个系统开 发过程,这是面向对象方法与传统方法比较起来所具 有的一大优势。
11.2.5
使用简单的服务
面向对象设计出来的类中的服务通常都很小,一
般只有3~5行源程序语句,可以用仅含一个动词和一
个宾语的简单句子描述它的功能。 11.2.6 间也越长。 把设计变动减至最小
通常,设计的质量越高,设计结果保持不变的时
图11.1 理想的设计变动情况
11.3 系统分解
大多数系统的面向对象设计模型,在逻辑上都由 四大部分组成。这四大部分对应于组成目标系统的四 个子系统,它们分别是问题域子系统,人-机交互子系 统、任务管理子系统和数据管理子系统。当然,在不 同的软件系统中,这四个子系统的重要程度和规模可 能相差很大,规模过大的在设计过程中应该进一步划 分成更小的子系统,规模过小的可合并在其他子系统 中。某些领域的应用系统在逻辑上可能仅由3个(甚至 少于3个)子系统组成。
相关。
11.7 设计任务管理子系统
11.6.1 分析并发性 通过面向对象分析建立起来的动态模型,是分析 并发性的主要依据。如果两个对象彼此间不存在交互, 或者它们同时接受事件,则这两个对象在本质上是并
发的。
11.7.2 设计任务管理子系统 常见的任务有事件驱动型任务、时钟驱动型任务、 优先任务、关键任务和协调任务等。设计任务管理子 系统,包括确定各类任务并把任务分配给适当的硬件 或软件去执行。 1. 确定事件驱动型任务 某些任务是由事件驱动的,这类任务可能主要完 成通信工作。 2. 确定时钟驱动型任务 某些任务每隔一定时间间隔就被触发以执行某些 处理,例如,某些设备需要周期性地获得数据;某些 人-机接口、子系统、任务、处理器或其他系统也可能 需要周期性地通信。在这些场合往往需要使用时钟驱 动型任务。
11.2.2
一般—特殊结构的深度应适当
应该使类等级中包含的层次数适当。
11.2.3
设计简单的类
应该尽量设计小而简单的类,以便于开发和管理。 1. 避免包含过多的属性 2. 有明确的定义 3. 尽量简化对象之间的合作关系 4. 不要提供太多服务
11.2.4
使用简单的协议
一般来说,消息中的参数不要超过3个。
强内聚
1. 服务内聚 一个服务应该完成一个且仅完成一个功能。
2. 类内聚
设计类的原则是,一个类应该只有一个用途,它 的属性和服务应该是高内聚的。类的属性和服务应该 全都是完成该类对象的任务所必需的,其中不包含无 用的属性或服务。如果某个类有多个用途,通常应该 把它分解成多个专用的类。
3. 一般—特殊内聚
11.3.2
组织系统的两种方案
把子系统组织成完整的系统时,有水平层次组织 和垂直块组织两种方案可供选择。 1. 层次组织 这种组织方案把软件系统组织成一个层次系统,
每层是一个子系统。上层在下层的基础上建立,下层 为实现上层功能而提供必要的服务。每一层内所包含 的对象,彼此间相互独立,而处于不同层次上的对象, 彼此间往往有关联。实际上,在上、下层之间存在客 户—供应商关系。低层子系统提供服务,相当于供应商, 上层子系统使用下层提供的服务,相当于客户。
向用户提供有意义的、及时的反馈信息,以便用户能
够知道系统目前已经完成该项工作的多大比例。
4. 提供撤消命令 人在与系统交互的过程中难免会犯错误,因此, 应该提供“撤消(undo)”命令,以便用户及时撤消错误 动作,消除错误动作造成的后果。 5. 无须记忆 不应该要求用户记住在某个窗口中显示的信息, 然后再用到另一个窗口中,这是软件系统的责任而不 是用户的任务。 此外,在设计人-机交互部分时应该力求达到下述 目标:用户在使用该系统时用于思考人-机交互方法所 花费的时间减至最少,而用于做他实际想做的工作所 用的时间达到最大值。更理想的情况是,人-机交互界 面能够增强用户的能力。
果确实需要创建新类,则在设计这些新类的协议时,
应该考虑将来的可重复使用性。
11.2 启发规则
11.2.1 设计结果应该清晰易懂 使设计结果清晰、易读、易懂,是提高软件可维 护性和可重用性的重要措施。显然,人们不会重用那 些他们不理解的设计。保证设计结果清晰易懂的主要 因素如下。 1. 用词一致 2. 使用已有的协议 3. 减少消息模式的数目 4. 避免模糊的定义
11.1 面向对象设计的准则
所谓优秀设计,就是权衡了各种因素,从而使得 系统在其整个生命周期中的总开销最小的设计。对大 多数软件系统而言,60%以上的软件费用都用于软件维 护,因此,优秀软件设计的一个主要特点就是容易维 护。
11.1.1 模块化
11.1.2 抽象 11.1.3 信息隐藏 11.1.4 弱耦合 1. 交互耦合
如果对象之间的耦合通过消息连接来实现,则这种 耦合就是交互耦合。为使交互耦合尽可能松散,应该遵 守下述准则。 · 尽量降低消息连接的复杂程度。应该尽量减少消 息中包含的参数个数,降低参数的复杂程度。
· 减少对象发送(或接收)的消息数。
2. 继承耦合
与交互耦合相反,应该提高继承耦合程度。继承 是一般化类与特殊类之间耦合的一种形式。从本质上 看,通过继承关系结合起来的基类和派生类,构成了 系统中粒度更大的模块。因此,它们彼此之间应该结 合得越紧密越好。
2. 块状组织 这种组织方案把软件系统垂直地分解成若干个相

对独立的、弱耦合的子系统,一个子系统相当于一块,
每块提供一种类型的服务。 11.3.3 设计系统的拓扑结构
由子系统组成完整的系统时,典型的拓扑结构有 管道型、树型、星型等。设计者应该采用与问题结构 相适应的、尽可能简单的拓扑结构,以减少子系统之 间的交互数量。
问题域子系统过分复杂庞大时,应该把它进一步分解 成若干个更小的子系统。
下面介绍,在面向对象设计过程中,可能对面向 对象分析所得出的问题域模型作的补充或修改。 11.5.1 11.5.2 11.5.3 调整需求 重用已有的类 把问题域类组合在一起
在面向对象设计过程中,设计者往往通过引入一 个根类而把问题域类组合在一起。
为获得紧密的继承耦合,特殊类应该确实是对它 的一般化类的一种具体化,也就是说,它们之间在逻 辑上应该存在“ISA”的关系。因此,如果一个派生类 摒弃了它基类的许多属性,则它们之间是松耦合的。 在设计时应该使特殊类尽量多继承并使用其一般化类 的属性和服务,从而更紧密地耦合到其一般化类。
11.1.5
设计出的一般—特殊结构,应该符合多数人的概念, 更准确地说,这种结构应该是对相应的领域知识的正 确抽取。
11.1.6
可重用
软件重用是提高软件开发生产率和目标系统质量 的重要途径。重用基本上从设计阶段开始。重用有两 方面的含义:一是尽量使用已有的类(包括开发环境提
供的类库,及以往开发类似系统时创建的类),二是如
符合用户需要的界面,设计者首先应该把将来可能与 系统交互的用户分类。通常从下列几个不同角度进行 分类。 · 按技能水平分类(新手/初级/中级/高级)。
· 按职务分类(总经理/经理/职员)。
· 按所属集团分类(职员/顾客)。
2. 描述用户
应该仔细了解将来使用系统的每类用户的情况, 把获得的下列各项信息记录下来。 · 用户类型。 · 使用系统欲达到的目的。
来的、可供选用的服务的表示形式。设计命令层次时, 通常先从对服务的过程抽象着手,然后再进一步修改 它们,以适合具体应用环境的需要。
(3) 精化命令层次 为进一步修改完善初始的命令层次,应该考虑下 列一些因素。 · 次序:仔细选择每个服务的名字,并在命令层 的每一部分内把服务排好次序。排序时或者把最常用 的服务放在最前面,或者按照用户习惯的工作步骤排 序。
6. 易学
人-机交互界面应该易学易用,应该提供联机参考
资料,以便用户在遇到困难时可随时参阅。 7. 富有吸引力 人-机交互界面不仅应该方便、高效,还应该使人 在使用时感到心情愉快,能够从中获得乐趣,从而吸 引人去使用它。
11.6.2
设计人-机交互子系统的策略
1. 分类用户
为了更好地了解用户的需要与爱好,以便设计出
11.1 面向对象设计的准则
11.2 启发规则
11.3 系统分解
11.4 设计问题域子系统
11.5 设计人-机交互子系统 11.6 设计任务管理子系统
11.7 设计数据管理子系统 11.11 设计类中的服务 11.11 设计关联
相关文档
最新文档