软件工程第十一章
[计算机软件技术基础(第三版)麦中凡 苗明川 何玉洁]第十一章_软件开发与软件维护
![[计算机软件技术基础(第三版)麦中凡 苗明川 何玉洁]第十一章_软件开发与软件维护](https://img.taocdn.com/s3/m/37950616c5da50e2524d7fce.png)
返回
20
一个圈就是一个过程/函数,可退化为一 个语句,也可再分解为一个子DFD图,出入的数
据流不变。 返回
21
控制流图
扩充DFD图为CFD(Control Flow Diagram)图,把控制动作以虚 线表示,非控制动作仍如DFD图。大圆圈依然是处理功能,虚箭头上 标明控制项(或事件)名。同样,平行虚线表示控制项存储(图11.14中 未示出),竖线条表示控制(规格)说明,即系统的行为。下面是复印 机的控制流图。
返回
15
状态图(State)
状态图描述某个对象实体因事件改变其状态,也就是行 为的综合快照,即在什么事件驱使下状态有什么改变。在需求 分析和设计中可以帮助找出遗漏和不太明确的功能(事例)。例 如旅店系统中的客房,用RoomState类来描述客房状态,则用 状态图对它建模,如图11.10所示。
返回
返回软件需求的目标是把用户的“需要”变成系统开发 的“需求”,或称需求规范。这个工作大体上分三 步:收集用户、市场、公司对本项目的需要;经过 分析建立解题模型;细化模型,抽取需求。请注意, 这个需求每一条都是系统测试的验收准则,所以模 型要细化到能写出可验收需求的程度,决不能太笼 统,如“开发一个办公室系统要灵活、方便好用。” 就不是一个好的需求,因为它既不能指导开发,也 无法验收。好的需求具有众多特点,归纳下来主要 有:一致的,完整的,可理解的,无二异的,和可 测试的。
返回
17
活动图(activity)
在分析和设计时,UML的活动图十分有用。它把传统的流 程图(Flowchart,只描述程序的动作步骤)和数据流图(DFD,只 描述动作后输入/输出数据的改变,不看步骤先后)结合在一起。 活动图既有控制流(顺序、分支、循环)又有数据流(每个动作点 前后数据变化),增加了数据、动作的同步分支,并且给每个对 象一个泳道,清晰地描述了对象间数据传递。较粗的活动图用于 分析,在设计时细化。在下节给出例子。
《软件工程》教学教案

《软件工程》教学教案一、第一章:软件工程概述1. 教学目标了解软件工程的定义、目的和重要性,掌握软件开发的基本过程和原则。
2. 教学内容软件工程的定义和重要性;软件开发的基本过程;软件工程的原则和方法。
3. 教学方法采用讲授法,结合案例分析,让学生了解和掌握软件工程的基本概念和原则。
4. 教学资源教材、课件、案例分析。
5. 教学评价通过课堂提问和案例分析,评估学生对软件工程的理解和应用能力。
二、第二章:软件需求分析1. 教学目标掌握软件需求分析的基本概念、方法和过程,能够运用需求分析工具进行需求收集和分析。
2. 教学内容软件需求分析的基本概念;需求分析的方法和过程;需求分析工具的使用。
3. 教学方法采用讲授法和实例分析,让学生了解和掌握需求分析的方法和过程。
4. 教学资源教材、课件、实例分析。
5. 教学评价通过课堂提问和实例分析,评估学生对需求分析的理解和应用能力。
三、第三章:软件设计1. 教学目标掌握软件设计的基本概念、方法和过程,能够运用设计工具进行软件架构和详细设计。
2. 教学内容软件设计的基本概念;设计方法和过程;设计工具的使用。
3. 教学方法采用讲授法和实例分析,让学生了解和掌握软件设计的方法和过程。
4. 教学资源教材、课件、实例分析。
5. 教学评价通过课堂提问和实例分析,评估学生对软件设计的理解和应用能力。
四、第四章:软件实现1. 教学目标掌握软件实现的基本概念、方法和过程,能够运用编程语言进行软件编码和测试。
2. 教学内容软件实现的基本概念;实现方法和过程;编程语言和测试工具的使用。
3. 教学方法采用讲授法和编程实践,让学生了解和掌握软件实现的方法和过程。
4. 教学资源教材、课件、编程环境和测试工具。
5. 教学评价通过编程实践和测试结果,评估学生对软件实现的理解和应用能力。
五、第五章:软件维护1. 教学目标掌握软件维护的基本概念、方法和过程,能够进行软件维护和优化。
2. 教学内容软件维护的基本概念;维护方法和过程;软件优化技巧。
软件工程第十一章面向对象设计

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

第一章测试1.软件没有相应的文档,且最终不能满足用户要求是软件危机的一种表现。
()A:错B:对答案:B2.软件本身的不可见性和复杂性随规模的增加呈指数上升是产生软件危机的主要原因。
()A:错B:对答案:A3.开发软件就是写程序。
()A:错B:对答案:A4.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称()。
A:软件危机B:软件工程C:软件产生D:软件周期答案:A5.以下对软件工程描述正确地是()。
A:结合最好的技术方法。
B:经济地开发出高质量的软件并有效地维护它。
C:一门工程学科。
D:采用经过时间考验而证明正确的管理技术。
答案:ABCD6.软件生命周期中所花费费用最多的阶段是()。
A:需求分析。
B:软件总体设计。
C:软件实现。
D:软件维护。
答案:D7.软件是()。
A:计算机系统。
B:处理对象和处理规则的描述。
C:程序。
D:程序、数据及其文档的集合。
答案:D8.同螺旋模型相比,原型模型主要缺少()。
A:客户评估B:制定计划C:风险分析D:实施工程答案:C9.在软件生存周期模型中,不适应变化需求的软件开发模型是()。
A:原型模型B:瀑布模型C:螺旋模型D:增量模型答案:B10.针对高质量软件的生产的软件过程模型()。
A:RUP模型B:基于构件的模型C:净室模型D:增量模型答案:C第二章测试1.可行性研究的技术可行性是指现有技术是否可行。
()A:对B:错答案:A2.可行性研究的成本效益分析是从经济方面讨论是否可行。
()A:对B:错答案:A3.可行性分析研究的目的是()。
A:功能内聚B:项目值得开发否C:开发项目D:争取项目答案:B4.描绘物理系统的传统工具是()。
A:程序流程图B:系统流程图C:数据流程图D:软件结构图答案:B5.数据字典的基本功能是()。
A:数据维护。
B:数据通信。
C:数据定义。
D:数据库设计。
答案:C6.使用数据流图对工资系统进行需求分析建模,外部实体是()。
A:工资单B:工资系统代码C:工资数据库维护D:接受工资单的银行答案:D7.数据流图的作用包括()。
软件工程导论第11章

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

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

计算机科学与工程学院
11.3 用例建模
用例建模描述一个系统应该做什么,描述的 是外部参与者所理解的系统功能。构建用例模型 是通过开发者与客户或最终使用者对需求规格说 明达成的共识,明确系统的基本功能,为后阶段 的工作打下基础。 用例模型的基本组成部件是用例、参与者和 系统。用例用于描述系统的功能,也就是从外部 用户的角度,观察系统应支持哪些功能,帮助分 析人员理解系统的行为,它是对系统功能的宏观 描述。
计算机科学与工程学院 软件工程(Software Engineer)
4)依赖(Dependency) 依赖是两个模型元素间的语义连接,一 个是独立的模型元素,一个是依赖的模型 元素。 5)细化(refinement) 细化是UML中的术语,表示对事物更详 细一层的描述。两个元素A、B描述同一件 事物,它们的区别是抽象层次不同,若元素B 是在元素A的基础上的更详细的描述,则称元 素B细化了元素A,或称元素A细化成元素B。
UML 主要作者提出的目标是: 提供给用户一个易于使用和表达的可视化的建模语言,使他们能 够开发和交流有意义的模型。独立于任何开发语言。独立于任何开发 过程。简单并且可扩展,具有扩展和专有化机制,便于扩展,无需对 核心概念进行修改。提供了解建模语言的一个基本手段。支持面向对 象的设计与开发中涌现出的高级概念,例如协作、框架、模式和构件, 强调在软件开发中对架构、框架、模式和构件的重用。最佳的软件工 程实践经验的集成。有利于面向对象工具的市场成长。
张三 : 作家 姓名 : String = 张三 年龄 : Integer = 28
(b)对象图
计算机科学与工程学院
软件工程(Software Engineer)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11.1概述11.1.1 软件质量的定义软件质量定义为:(1)与所确定的功能和性能需求的一致性。
(2)与所成文的开发标准的一致性。
(3)与所有专业开发的软件所期望的隐含特性的一致性。
11.1.2 软件质量的度量和评价影响软件质量的因素可以分为两大类:(1)可以直接度量的因素,如单位时间内千行代码(KLOC)中产生的错误数。
(2)只能间接度量的因素,如可用性或可维护性。
在软件开发和维护的过程中,为了定量地评价软件质量,必须对软件质量特性进行度量,以测定软件具有要求质量特性的程度。
11.1.3 软件质量保证1. 什么是软件质量保证软件的质量保证就是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量的活动,即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。
2. 质量保证的策略质量保证策略的发展大致可以分为以下三个阶段:(1)以检测为重。
产品制成后才进行检测,这种检测只能判断产品的质量,不能提高产品质量。
(2)以过程管理为重。
把质量保证工作重点放在过程管理上,对制造过程的每一道工序都进行质量控制。
(3)以新产品开发为重。
3. 质量保证的主要任务(1)正确定义用户要求。
(2)技术方法的应用。
(3)提高软件开发的工程能力。
(4)软件的复用。
(5)发挥每个开发者的能力。
(6)组织外部力量协作。
(7) 排除无效劳动。
最大的无效劳动是因需求规格说明有误、设计有误而造成的返工。
(8) 提高计划和管理质量。
4. 质量保证与检验软件质量必须在设计和实现过程中加以保证。
11.2 质量度量模型11.2.1McCall质量度量模型这是McCall等人于1979年提出的软件质量模型。
针对面向软件产品的运行、修正、转移,软件质量概念包括11个特性,其定义如下:(1)面向软件产品操作。
(2)面向软件产品修改。
(3)面向软件产品适应。
11.2.2 ISO的软件质量评价模型软件质量度量模型由三层组成。
11.3 软件复杂性11.3.1 软件复杂性的基本概念软件复杂性度量的参数很多,主要有:(1)规模,即总共的指令数,或源程序行数。
(2)难度,通常由程序中出现的操作数的数目所决定的量来表示。
(3)结构,通常用于程序结构有关的度量来表示。
(4)智能度,即算法的难易程度。
软件复杂性主要表现在程序的复杂性。
程序的复杂性主要指模块内程序的复杂性。
它直接关联到软件开发费用的多少、开发周期长短和软件内部潜伏错误的多少。
同时它也是软件可理解性的另一种度量。
要求复杂性度量满足以下假设:(1)它可以用来计算任何一个程序的复杂性。
(2)对于不合理的程序,例如对于长度动态增长的程序,或者对于原则上无法排错的程序,不应当使用它进行复杂性计算。
(3)如果程序中指令条数、附加存储量、计算时间增多,不会减少程序的复杂性。
11.3.2 软件复杂性的度量方法1. 代码行度量法度量程序的复杂性,最简单的方法就是统计程序的源代码行数。
此方法的基本考虑是统计一个程序的源代码行数,并以源代码行数作为程序复杂性的质量。
2. McCabe 度量法McCabe度量法是由Thomas McCabe 提出的一种基于程序控制流的复杂性度量方法。
McCabe复杂性度量又称环路度量。
它认为程序的复杂性很大程度上取决于程序的复杂性。
单一的顺序结构最为简单,循环和选择所构成的环路越多,程序就越复杂。
这种方法以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值。
程序图是退化的程序流程图。
也就是说,把程序流程图的每一个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序图。
程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作分支和循环的具体条件。
因此,它往往把一个简单的IF 语句与循环语句的复杂性看成是一样的,把嵌套的IF 语句与CASE的复杂性看成是一样的。
下面给出计算环路复杂性的方法,如图11-4所示。
根据图论,在一个强连通的有向图G中,环的个数V(G)由以下公式给出:V(G)=m-n+2p其中,V(G)是有向图G中环路数,m 是图G中弧数,n是图G中结点数,p是图G中强连通分量个数。
在一个程序中,从程序图的入口点总能到达图中任何一个结点,因此,程序总是连通的,但不是强连通的。
为了使图成为强连通图,从图的入口点到出口点加一条用虚线表示的有向边,使图成为强连通图。
这样就可以使用上式计算环路复杂性了。
以图4-11所给出的例子示范,其中,结点数n=6,弧数m=9,p=1,则有V(G=m-n+2p=9-6+2=5即McCabe 环复杂度度量值为5。
这里选择的5 个线形无关环路为(abefa),(beb),(abea), (acfa),(abcfa),其他任何环路都是这5 个环路的线形组合。
当分支或循环的数目增加时,程序中的环路也随之增加,因此,McCabe 环复杂度度量值实际上是为软件测试的难易程度提供一个定量度量的方法,同时也间接表示了软件的可靠性。
实验表明,源程序中存在的错误数以及为了诊断he纠正这些错误所需要的时间与McCabe 环复杂度度量值有明显的关系。
利用McCabe 环复杂度度量值时,有几点说明。
(1)环路复杂度取决于程序控制结构的复杂度。
当程序的分支数目或循环数目时其复杂度也增加。
环路复杂度与程序中覆盖的路径条数有关。
(2)环路复杂度是可增加的。
例如,模块A的复杂度为3,模块B的复杂度为4,则模块A与模块B的复杂度是7。
(3)McCabe建议,对于复杂度超过10的程序,应分成几个小程序,以减少程序中的错误。
(4)这种度量的缺点是:①对于不同种类的控制流的复杂度不能区分。
②简单IF语句与循环语句的复杂性同等看待。
③嵌套IF语句与简单CASE 的复杂性是一样的。
④模块间接口当成一个简单分支一样处理。
⑤一个具有1000行的顺序程序与一行语句的复杂性相同。
尽管McCabe 复杂度度量法有许多缺点,但它容易使用,而且在选择方案和估计排错费用等方面都是很有效的。
11.4 软件可靠性11.4.1 软件可靠性定义软件可靠性定义表明了一个程序按照用户的要求和设计的目标,执行其功能的正确程度。
一个可靠的程序应要求是正确的、完整的、一致的和健壮的。
11.4.2 软件可靠性指标软件可靠性与可用性的定量指标,是指能够以数字概念来描述可靠性的数学表达式中所使用的量。
下面主要讨论常用指标平均失效等待时间MTTF 与平均失效间隔时间MTBF。
1. MTTF(Mean Time To Failure)平均失效等待时间MTTF 定义为:2. MTBF(Mean Time Betmeen Failure)MTBF是平均失效间隔时间,它是指两次相继失效之间的平均时间。
11.4.3 软件可靠性模型软件可靠性是软件最重要的质量要素之一。
令MTTF是机器的平均无故障时间,MTTR 是错误的平均修复时间,则机器的稳定可用性可定义为:A=MTTF/(MTTF+MTTR)软件可靠性模型通常分为如下几类:(1)由硬件可靠性理论导出的模型。
(2)基于程序内部特性的模型。
(3)植入模型。
11.5 软件评审对软件工程来说,软件评审是一个“过滤器”,在软件开发的各个阶段都要采用评审的方法,以发现软件中的缺陷,然后加以改正。
把“质量”理解为“用户满意程度”。
为使用户满意,有两个必要条件:(1)设计的规格说明书要符合用户的要求。
(2)程序要按照设计规格说明书所规定的情况正确执行。
11.5.1 设计质量的评审内容(1)评价软件的规格说明是否合乎用户的要求,即总体设计思想和设计方针是否明确;需求规格说明是否得到了用户或单位上级机关的批准;需求规格说明与软件的概要设计规格说明是否一致等。
(2)评审可靠性,即是否能避免输入异常(错误或超载等)、硬件失效及软件失效所产生的失效,一旦发生应能及时采取代替或恢复手段。
(3)评审保密措施实现情况,即是否提供对使用系统资格进行检查;对特定数据的使用资格、特殊功能的使用资格进行检查,在查出有违反使用资格情况后,能否向系统管理人员报告有关信息;是否提供对系统内重要数据加密的功能等。
(4)评审操作特性实施情况,即操作命令和操作信息的恰当性,输入数据与输入控制语句的恰当性;输出数据的恰当性;应答时间的恰当性等。
(5)评审性能实现情况,即是否达到所规定性能的的目标值。
(6)评审软件是否具有可修改性、可扩充性、可互换性和可移植性。
(7)评审软件是否具有可测试性。
(8)评审软件是否具有复用性。
11.5.2 程序质量的评审内容程序质量评审通常它是从开发者的角度进行评审,直接与开发技术有关。
它着眼于软件本身的结构、与运行环境的接口、变更带来的影响而进行的评审活动。
1. 软件的结构(1) 功能结构。
在软件的各种结构中,功能结构是用户唯一能见到的结构。
需要检查的项目有:①数据结构:包括数据名和定义;构成该数据的数据项;数据与数据间的关系。
②功能结构:包括功能名和定义;构成该功能的子功能;功能与子功能之间的关系。
③数据结构和功能结构之间的对应关系:包括数据元素与功能元素之间的对应关系;数据结构与功能结构的一致性。
(2)功能的通用性。
(3)模块的层次。
(4)模块结构。
①控制流结构:规定了处理模块与处理模块之间的流程关系。
检查处理模块之间的控制转移关系与控制转移形式(调用方式)。
②数据流结构:规定了数据模块是如何被处理模块进行加工的流程关系。
检查处理模块与数据模块之间的对应关系;处理模块与数据模块之间的存取关系,如建立、删除、查询、修改等。
③模块结构与功能结构之间的对应关系:包括功能结构与控制流结构的对应关系;功能结构与数据流结构的对应关系;每个模块的定义(包括功能、输入与输出数据)。
(5) 处理过程的结构。
处理过程是最基本的加工逻辑过程。
2. 与运行环境的接口(1)与硬件的接口。
(2)与用户的接口。
随着软件运行环境的变更,软件的规格也在跟着不断地变更。
运行环境变更时的影响范围,需要从以下三个方面来分析:(1)与运行环境的接口。
(2)在每项设计工程规格内的影响。
(3)在设计工程相互间的影响。
11.6 软件容错技术提高软件质量和可靠性的技术大致分为两类,一类是避开错误(fault-avoidance)技术,即在开发的过程中不让差错潜入软件的技术;另一类是容错(fault-tolerance)技术,即对某些无法避开的差错,使其影响减少至最小的技术。
11.6.1 容错软件定义归纳容错软件的定义,有以下四种:(1)规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件为具有容错功能的软件,即容错软件。
(2)规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称之为容错软件。