收藏 分享(赏)

河南农业大学软件工程考点.doc

上传人:dreamzhangning 文档编号:2633795 上传时间:2018-09-24 格式:DOC 页数:19 大小:547.50KB
下载 相关 举报
河南农业大学软件工程考点.doc_第1页
第1页 / 共19页
河南农业大学软件工程考点.doc_第2页
第2页 / 共19页
河南农业大学软件工程考点.doc_第3页
第3页 / 共19页
河南农业大学软件工程考点.doc_第4页
第4页 / 共19页
河南农业大学软件工程考点.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、第一章 软件工程概论1软件工程定义软件工程是开发、运行、维护和修复软件的系统方法。是一门指导计算机软件开发和维护的工程学科。软件工程学科是一门指导计算机软件开发和维护的工程学科。软件工程是一类求解软件的工程。2,软件工程包括三个要素:方法、工具和过程。方法:“如何做”工具:CASE,是软件开发环境中最重要的组成部分。过程:将方法和工具综合起来以达到合理、及时的进行计算机软件开发的目的。3,软件危机指在计算机软件开发和维护过程中所遇到的一系列问题:1、不能正确地估计软件开发成本和进度,致使实际开发成本往往高出预算很多。2、软件产品不可靠,满足不了用户的需求,甚至无法使用。3、交付使用的软件不易演

2、化,以至于人们不得不重复开发类似的软件。4、软件生产率低下,远远满足不了社会发展的需求。4,软件工程是为了解决软件危机而产生的。5,软件工程目标:生产具有正确性、可用性以及开销合算的产品。第二章软件开发模型1软件生存周期: 软件生命周期实质上是大型系统开发过程中各项目阶段的一种表示方法,如同任何事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程。根据这一思想,把上述基本的过程活动进一步展开,可以得到软件生命期的 6 个步骤,即制定计划、需求分析、设计、程序编码、测试及运行维护。软件生命期模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生命周期的系统开发、运作和维护所实施的全

3、部过程、活动和任务的结构框架。2,软件开发过程模型(软件生存周期模型) ,是把软件生存周期中软件生产活动的有序流程用一个合理的框架开发模型规范描述。软件开发模型是软件开发全部过程、活动和任务的结构框架。软件开发过程模型是一种软件过程的抽象表示法,它从一个特定的角度表现一个开发过程。软件过程模型主要是根据软件的类型、规模,特别是软件的开发方法、开发环境等多种因素确立模型。主要有:原型模型、演化模型、增量模型、瀑布模型。3,软件过程各阶段任务(了解)各种软件过程模型虽然有所不同,一般都由软件定义、软件开发和软件维护三个时期组成,每个时期又可由多个阶段(子阶段)组成。软件定义时期的活动是弄清软件“做

4、什么” ,软件开发时期的活动是集中解决软件“怎样做” ,软件维护时期的活动是聚焦于软件的“修改/完善” ,它们的主要活动特征可以概括为 “ What-How-Change ”。1,软件定义时期是了解用户(或客户)提出的需求、确定项目的总目标、考察和分析项目的可行性、导出实现项目目标应该采用的策略,系统的功能,并估计该项目需要的资源和成本,制定工程进度表等。软件定义时期可以划分成问题定义、可行性研究、需求分析和开发计划四个阶段,其中,最核心的是需求分析阶段,所以,软件定义时期也可以称为需求分析时期。 2,软件开发时期的任务是设计和实现已定义的,并经过需求分析的软件系统。软件开发时期通常划分成软件

5、设计、软件实现和软件测试三个阶段。 软件测试也可以分解到软件实现的各个活动中,可重新划分成编码和单元测试、集成测试、系统测试三个阶段。甚至,还可以认为软件测试不是一个独立的阶段,因为它应该和所有软件生产活动并行进行。 3,件维护时期(阶段)任务是在整个软件运行时期内,当发现错误时加以改正,以确保运行正常;当环境改变时修改软件,以适应新的环境;当用户有新要求时及时改进软件,以满足需求等一系列维护活动。每一项维护活动一般都经过提出(或报告)维护问题、分析维护要求、提出维护方案、审批维护方案、确定维护计划、修改软件设计、修改程序、测试/验收、维护报告等一系列环节(维护活动实质是一次压缩和简化了的软件

6、定义和开发过程) 。4,瀑布模型(Waterfall Model)也称线性顺序模型。瀑布模型把开发过程分成固定的、相对独立的各个阶段,每个阶段都有确定的、有限的任务,而且在各个阶段采用一些规范的开发方法和管理手段,力求保证软件质量和提高软件生产率。该模型适用于需求非常清楚的软件开发环境。图 5. 瀑布模型5,原型模型可分为:快速原型模型、抛弃式原型模型、演化式原型模型1,图 8. 抛弃式原型模型抛弃式原型模型建立原型的目的是,评价目标系统的某一个或某一些特性,以便更准确地确定需求,或者更严格地验证设计方案。使用完之后就把该原型系统抛弃掉,然后再重新构造正式的目标系统。抛弃式原型模型本质上仍属于

7、瀑布模型,建立原型系统只不过是“需求分析”和“有效性验证”的一种辅助手段,需求分析阶段结束时原型系统的生存周期也就终止。6,增量模型(Incremental Model)把软件描述、设计、实现活动分解成一系列相互有联系的增量构件的迭代开发,是瀑布模型顺序特征和快速原型模型迭代特征相结合的一种软件构件化的模型。增量式的开发过程,首先根据客户需要提供的服务的优先次序,确定一系列交付增量,每个增量提供系统功能的一个子集。随着开发过程的进展,每次迭代产生一个可发布的(可执行的)软件增量构件。增量模型是一种非整体开发的模型。是一种进化式的开发过程。7,螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分

8、为 4 个工作步骤:第一,确定目标、方案和限制条件;第二,评估方案、标识风险和解决风险;第三,开发确认产品;第四,计划下一周期工作。对大型软件,需要多个原型描述系统的生存期,适于螺旋模型开发方法,将瀑布模型与原型化模型结合起来,并加入风险分析讨论。图 11. 螺旋模型结构第三章需求分析1软件需求说明书是用户验证的一个标准。2需求获取的内容分为:(了解) 物理环境:对系统运行时所处的环境的要求。 界面:软件与用户界面的友好性。 用户或人的因素:对用户的要求。 功能:你的系统什么的干活? 文档:文字说明等。 数据:对数据的各种要求。 资源:软件运行时所需的数据、软件、内存空间等各项资源。 安全性:

9、* 质量保证:可靠性和如何对付出错等。3,需求工程的基本活动包括: 获取需求;深入实际,在充分理解用户需求的基础上,获取系统需求。 需求分析与建模;进行需求建模、对模型或原型进行分析。 确认需求;确保需求说明准确、完整地表达系统的主要特性。 进化需求。客户的需要总是不断(连续)增长的 ,进化需求是必要的。 4,需求分析方法1结构化分析方法是一种以数据、数据的封闭性为基础,从问题空间到某种表示的映射方法,由数据流图(DFD 图)表示。2信息建模法 是从数据的角度对现实世界建立系统的信息模型,基本工具是 ER 图。是由实体、属性和关系组成的网络图。E-实体,是一个或一组对象; R-关系,实体之间联

10、系或交互作用。3面向对象的分析方法 面向对象分析方法(OOA)的关键是识别问题域内的对象,分析它们之间的关系,并建立起三类模型。5,结构化需求分析方法在结构化需求分析方法中模型表示工具有:数据流图、数据字典、小说明。 数据流图:是一种描述数据变换的图形工具,系统接受输入的数据,经过一系列的变换(加工) ,最后输出结果。 数据字典:以一种准确的和无二义的方式定义所有被加工引用的数据流和数据存储。 小说明:用于集中描述一个加工“做什么” 。 数据流图 在数据流图中,加工、数据流、数据存储、数据源和数据谭是数据流图的基本成分。6,数据字典以一种准确的和无二义的方式定义所有被加工引用的数据流和数据存储

11、。包含: 数据流条目;数据存储条目;数据项条目7,实施步骤 结构化分析从本质上说是一种抽象和分解技术, “自顶向下、逐步求精”的过程。有了工具后(数据流图、数据字典、小说明),我们来看看如何进行结构化分析:1 确定系统边界,画出系统环境图。2 自顶向下,画出各层数据流图。3 定义数据字典。4 定义小说明。5 汇总前面各步骤的结果。8,需求的可变性必须进行验证。9,需求验证的内容 1 有效性检查指功能需求是否符合用户所提出的需求。2 一致性检查系统功能描述及约束是否一致。3 完备性检查是否包含所有系统用户的需求和约束。4 可检验性检查是否能设计出一组验证方法,确定了检验的标准。10,需求分析规格

12、说明书是需求分析阶段产生的一份最重要的文档,它以一种一致的、无二义的方式准确的表达用户的需求。有如下作用:1、作为软件开发机构和用户之间一份事实上的技术合同书。2、作为软件开发机构下一步进行设计和编码的基础。3、作为测试和验收目标系统的依据。第四章 软件设计1,软件设计任务涉及多方面,可分为总体设计和详细设计。2,软件设计的目标(如下图所示) 就是构造一个高内聚低耦合的软件模型。3,软件体系结构确定了系统的组织结构和拓扑结构。体系结构设计是软件设计的第一个阶段,该阶段侧重于系统宏观结构的设计,而不关心模块的内部算法。4,软件设计分为总体设计和详细设计两个阶段。其工作流程可用下图表示: 设计阶段

13、结束要交付的文档是设计说明书,根据设计方法的不同,有不同的设计文档。图 33. 软件设计工作流程每个设计步骤完成后,都应进行复审。5,以下经过长期考验的设计准则:软件结构的准则;模块化准则;软件独立性准则。1 软件结构的准则:软件结构表示软件的系统结构,是软件模块间关系的表示,均表示为层次关系。图 34. 软件结构示意图有关指标: 深度:表示软件结构中从顶层模块到最底层模块的层数; 宽度:表示控制的总分布; 扇出数:指一个模块直接控制下属的模块个数; 扇入数:指一个模块的直接上属模块个数。一个好的软件结构的形态准则是:顶部宽度小,中部宽度最大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较

14、高的扇入数。2,模块化准则:所谓模块化就是将系统划分成若干模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,以满足所要求的整个系统的功能。我们利用模块化来降低软件复杂度。注意选择分解的最佳模块数。3,软件独立性准则: 软件独立性的含义是指开发具有功能专一,模块之无过多相互作用的模块。又称为模块独立性准则。这种类型的模块可以并行开发,开发容易,能减少错误的影响,使模块容易组合、修改及测试。软件独立性的度量标准是两个定性指标:耦合性和内聚性。(1)耦合性用于描述模块之间联系的紧密程度。耦合性的几种类型:图 35. 耦合性的几种类型从三个方面衡量块间联系大小: 方式 (直接或间接) 类型

15、(数据型、控制型、混合型) 数量(数量越大,块间联系越紧密。图 36. 三个方面间的联系(1) 内聚性 用于描述模块内部联系的紧密程度。内聚性的几种类型:图 37. 内聚的类型6,从系统设计的角度出发,软件设计方法可分为 3 大类:1,面向数据流的设计;2,面向数据结构的设计,3,面向对象的设计。7,结构化设计方法分为两部分: 总体设计和详细设计。 总体设计:确定系统的整体模块结构。任务:解决系统的模块结构,即分解模块,确定模块功能及系统模块的层次结构。文档:模块结构图及其模块功能说明。1总体设计的目标:是把系统的功能需求分配给软件结构,形成软件的模块结构图。如图 38 所示:2总体设计的表示

16、形式层次图:总体设计常用的表示方法,用来描绘软件的层次结构。HIPO 图:H 图+IPO 图。结构图:精确表达程序结构的图形表示方法。(模块之间上下的联系是调用关系)图 38. 软件的模块结构图3,结构化设计方法可以把数据流图变换成软件结构。 从 DFD 图导出初始的模块结构图(SC):中心变换型(transform center) _ 变换分析; 事务处理型(transaction) _ 事务分析。 按照 SD 法设计总则,改进模块结构图。注意:模块结构图不同于“框图” 。软件 层次性:反映软件整体的性质 (结构图)过程性:反映局部的性质 (框图)4,中心变换型的 DFD 图:这类数据流图可

17、看成是对输入数据进行转换而得到输出数据的处理。 DFD 图可以明显分为“输入处理输出”三部分。 ,5,设计的准则: (1) 好的设计的准则:模块化;抽象;耦合;内聚耦合性是程序结构中各个模块之间相互关联的度量,他取决于各个模块之间接口的复杂程度、调用模块的方式以及那些信息通过接口。模块化设计的目标是希望建立模块间耦合尽可能松散的系统。 (耦合性最松散的是数据耦合)内聚是模块内部各成分之间相互关联的强度。应尽量增加内聚性,它比减少耦合性更重要,应当把更多的注意力集中到提高模块的内聚程度上来。 (内聚最强的是功能内聚)(2)启发式规则1 改进软件结构提高模块独立性 2 模块规模应该适中 3 深度、

18、宽度、扇出和扇入应适中4 模块的作用域应该在控制域之内 5 力争降低模块接口的复杂性 6 模块功能应该可以预测6,结构图的描述能力比层次图更强,图中的每一个方框代表一个模块,框内注明模块的名字或主要功能。方框之间的直线表示模块的调用关系。1、模块:在结构图中,模块用矩形框表示,并用模块的名字标记它。2、模块的调用关系和接口:两个模块之间用单向箭头联结。3、模块间的信息传递:用尾端带有空心圆的短箭头表示数据信息,用尾端带有实心圆的短箭头表控制信息。4、两个辅助符号:当模块 M 有条件的调用另一个模块时在箭头尾部标以一个菱形符号。当一个模块反复的调用模块 A、B、C 时,在调用箭头尾部标以一个弧形

19、符号。结构图例图 48.生产最佳解的一般结构 详细设计:给出软件模块结构中各模块的内部过程描述(算法) 。对模块图中每个模块的过程进行描述,常用的描述的方式有:伪代码,流程图,N-S 图,PAD 图等。(一)详细设计的任务结构化程序设计的第二阶段,详细设计阶段的任务是开发一个可以直接转换为程序的软件表示,即对系统中每个模块的内部过程进行设计和描述。给出软件模块结构中各模块的内部过程描述(算法) ,包含实现对应的总体设计的模块所需的处理逻辑,主要有:1、详细的算法。2、数据表示和数据结构。3、实施的功能和使用的数据之间的关系。详细设计的主要任务是给出软件模块结构中各个模块的内部过程描述,也就是模

20、块内部的算法设计。而我们接下来看看这些算法的表示形式(二)详细设计工具1. 程序流程-程序流程也称程序框图,使用最为普遍。有五种基本控制结构: 顺序型:几个连续的加工步骤依次排列构成。 选择型:有某个逻辑判断是的取值决定选择两个加工中的一个。 先判定型循环:在循环控制条件成立时,重复执行特定的加工。 后判定型循环:重复执行某些特定的加工,直到控制条件成立。 多情况型选择:列举多种加工情况,根据控制变量的取值,选择执行其一。程序流程图基本结构如图 50 所示。2. 标准程序流程图的规定符号标准程序流程图的规定符号如图 51 所示.图 50. 程序流程图基本结构图 51. 标准程序流程图的规定符号

21、3,盒图(N-S)图盒图是 70 年代由 Nassi 和 Shneiderman 提出的。又称 N-S 图。也有五种基本控制结构: 顺序型:几个连续的加工步骤依次排列构成。 选择型:有某个逻辑判断是的取值决定选择两个加工中的一个。 先判定型循环:在循环控制条件成立时,重复执行特定的加工。 后判定型循环:重复执行某些特定的加工,直到控制条件成立。 多情况型选择:列举多种加工情况,根据控制变量的取值,选择执行其一。N-S 图基本结构如图 52 所示。图 52. N-S 图基本结构4,PAD 图PAD 图是 1973 年由日本日立公司发明的,PAD 图又称问题分析图(problem Analysis

22、 Diagram)用二维树型结构的图表示的控制流,将这种图转换为程序代码比较容易。其基本控制结构如下:例:对数组 X 进行排序。 “自顶而下,逐步求精”1、循环一次,排好一个 XhH:=1,n-1 排好第 h 个 X h2、细化3、连接各图,构成完整的 PAD 图一、名词解释:1 软件工程2 软件开发模型3 数据流图4 软件设计评价准则5 结构图6 模块耦合7 模块内聚二、选择填空1. 结构设计是一种应用最广泛的系统设计方法,是以( )为基础、自顶向下、逐步求精和模块化的过程。A、数据流 B、数据流图 C、数据库 D、数据结构2. ( )的内容不应当包括对算法的详细过程性描述。A、需求规格说明

23、书 B、总体框图 C、软件确认准则 D、软件的性能3.( )是一种传统的程序设计表示工具。A、程序流程图 B、数据流图 C、结构图 D、HIPO 图4.( )的三种基本控制结构的共同特点是只有一个入口和一个出口。 A、程序 B、高级语言 C、文档 D、数据字典5. 模块在同一段时间内完成各种初始化工作,这属于( ) 。A、偶然内聚 B、逻辑内聚 C、时间内聚 D、过程内聚6. 在详细设计的图示工具中, ( )的形状象一个盒子。A、HIPO 图 B、流程图 C、N-S 图 D、PAD 图三、填空1 软件开发是,一个错误发现的越晚,为改正它所付出的代价就 。2从系统设计的角度出发,软件设计方法分为

24、 、 三大类。3总体设计阶段所使用的表示工具有 、 、。4详细设计的根本目标是 。5详细设计的工具有 、 、 。四、判断 1. 程序流程图只反映数据的流向,不反映处理逻辑的先后2. 模块的内聚性程度与该模块在分层结构中的位置有关系3. HIPO 图是由一组 H 图和一张 IPO 图组成五、简答说明“软件生存周期”的概念1 软件工程的基本原则和目标2 模块的内聚性程度与该模块在分层结构中的位置有关系吗?说明原因。6PAD 图设置的基本控制结构?7. 模块的独立性是什么?8. 结构图是什么?9. 从系统设计的角度出发,软件设计方法分为?10. 模块耦合衡量?11.模块内聚衡量?六、画出下面程序的流

25、程图、N-S 图和 PAD 图。ORG 2000HMOV R0 , #0AHDL2:MOV R 1 , #7DHDL1:NOPNOPDJNZ R1 , DL1DJNZ R0 , DL2ENDF DHIJ结束E 七、把下面程序的流程图转换为 N-S 图和 PAD 图开始NAYBN C YN YG八、把下面程序的流程图转换为 N-S 图和 PAD 图九,把下面程序的流程图转换为 N-S 图和 PAD 图。S1X5i1) AND (B=0) THEN X:=X/A ;IF (A=2) OR (X1) THEN X:=X+1END;白盒法举例:Procedure (VAR A,B,X:REAL) ;

26、BEGINIF(A1) AND (B=0) THEN X:=X/A ;IF (A=2) OR (X1) THEN X:=X+1END;图 62. 白盒法4语句覆盖语句覆盖:使得程序中每个语句至少都能被执行一次。例:满足语句覆盖的情况:执行路径:ace用例格式:输入(A,B,X),输出(A,B,X)选择用例:(2,0,4),(2,0,3)5判定覆盖使得程序中每个判定至少为 TRUE 或 FALSE 各一次。覆盖情况:应执行路径ace abd 或: acd abe 图 63. 路径流程图选择用例(其一): (2,0,4),(2,0,3) ace(1,1,1),(1,1,1) abd (2,1,1)

27、,(2,1,2) abe(3,0,3),(3,1,1) acd6条件覆盖使得判定中的每个条件获得各种可能的结果。应满足以下覆盖情况: 图 63. 路径流程图判定一: A1, A1, B=0, B0 判定二: A=2, A2, X1, X1选择用例: (2,0,4),(2,0,3)(1,1,1),(1,1,1) 注意:(1,0,3),(1,0,4)(2,1,1),(2,1,2)满足条件覆盖,但不满足判断覆盖。7判定/条件覆盖同时满足判断覆盖和条件覆盖。应满足以下覆盖情况:条件: A1, A1, B=0, B0A=2, A2, X1, X1应执行路径ace abd 或: acd abe选择用例:(

28、2,0,4),(2,0,3)(ace)(1,1,1),(1,1,1) (abd)8条件组合覆盖使得每个判定中条件的各种可能组合都至少出现一次。满足以下覆盖情况: A1, B =0 A1, B0 A1, B =0 A1, B0 A=2, X1 A=2, X1 A2, X1 A2, X1选择用例:(2,0,4),(2,0,3) (2,1,1),(2,1,2) (1,0,3),(1,0,4) 图 64. 条件组合覆盖(1,1,1),(1,1,1) 2,黑盒法不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。在黑盒测试方法中常用的有:等价分类法,边值分析法,错误推测法,因果图法。

29、1. 等价分类法 基本思想:根据程序的 I/O 特性,将程序的定义域划分为有限个等价区段 “等价类” ,从等价类中选择出的用例,具有“代表性” 。等价类分为:有效等价类 对于程序的规格说明,是合理的、有意义的输入数据构成的集合。无效等价类 对于程序的规格说明,是不合理的、没有意义的输入数据构成的集合。2. 边值分析法 1x2 0.99, 1, 1.01,边值分析法的基本思想: 选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用例既考虑输入亦考虑输出。(1)分析步骤: A 先划分等价类。 B 选择测试用例,测试等价类边界。(2)边界选择原则: A 按照输入值范围的边界。1x

30、2 B 按照输入/输出值个数的边界。C 输出值域的边界。 D 输入/输出有序集的边界。1,3,5,7,9 (3)边值分析法举例A 按照输入值范围的边界。例如:输入值的范围是-1.0 至 1.0,则可选择用例: 1.0、1.0、-1.001、1.001。 B 按照输入/输出值个数的边界。3. 错误推测法凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例。4. 因果图法-因果图法把输入条件视为“因” ,把输出条件视为“果” ,将黑盒看成是从因到果的网络图,采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系。根据这种关系可选择高效的测试用例。 因果

31、图是一种形式化语言,是一种组合逻辑网络图。 因果图的基本符号0 - 表示“不出现” 1 - 表示“出现”6,测试步骤(了解)所有测试过程都应采用综合测试策略;即先作静态分析,再作动态测试。并事先制订测试计划。测试过程通常可分 4 步进行:(1)单元测试:又称模块测试,以详细设计文档和源程序清单为指导,测试模块内的重要控制路径。(2)集成测试:也称组装测试或联合测试。通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。 (3)有效性测试:也称确认测试。它的任务是验证软件的有效性,即验证软件的功能和性能及其它特性是否与用户的要求一致。 (4)系统测试(system testing )

32、:将经过确认测试的软件,与计算机硬件、外设、支持软件等一起,在实际运行环境下测试。 (5)验收测试( acceptance testing):验收测试是以用户为主的测试。第八章 软件维护 1,软件维护是指在软件维护阶段对软件产品所进行的一系列维护活动。因为软件(产品)不仅仅包括程序,任何对文档、手册或产品其他组成部分的修改也都属于软件维护范围。软件维护阶段变更/演化软件的基本目标: 改正错误、优化软件、增加功能,提高软件产品质量; 延长软件寿命(软件生存周期) ,提高软件产品的价值。 2,软件维护的特点(了解) 软件维护是软件生产性活动中延续时间最长、工作量最大的活动。所以,软件维护是使软件成

33、本大幅度上升的重要因素。 软件维护不仅工作量大、任务重,如果维护得不当,还会产生一些副作用,甚至引入新的错误。因此,软件维护直接影响软件(产品)的质量和使用寿命,维护活动必须慎之又慎。 软件维护活动实际是一个修改和简化了的软件开发过程。软件开发的所有环节,如分析、设计、实现和测试等几乎都要在维护活动中用到。 软件维护和软件开发一样,都要采用软件工程原理和方法。这样才可以保证软件维护的标准化、高效率,从而降低维护成本。3,软件可维护性是指纠正软件的错误和缺陷,为满足新要求或环境变化而进行修改、扩充、完善的容易程度。软件可维护性定义为软件的可理解、可测试、可修改性的难易程度。可维护性既是软件(产品

34、)质量的属性之一,又和其他软件质量属性有相当密切的关系。4,软件维护的类型根据维护工作的特征,软件维护活动可以归纳为改正性维护、完善性维护、适应性维护和预防性维护 4 类。 改正性维护( Corrective Maintenance):对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。改正性维护是为了识别和纠正软件潜在错误、改正软件性能上的缺陷、排除实施中的误使用,而进行的测试、诊断和改正错误的维护活动。根据统计资料,继续纠正软件潜在的错误的工作量大约占总维护量的 20%。软件维护阶段的最初 12 年内,改正性维护量较大。随着软件

35、(产品)进入正常的使用期,错误发现率急剧降低,并趋于稳定,改正性维护量也趋于减少。 完善性维护( Perfective Maintenance):扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要。完善性维护是为了满足日益增长的新要求,修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件可维护性等的维护活动。完善性维护是有计划的一种软件“再开发”活动。这种维护活动过程复杂,而且还可能会引入新的错误,必须格外慎重。软件维护阶段的正常期,由于来自用户改造、扩充和加强软件功能、性能的要求逐步增加,完善性维护工作量也逐步增加。在所有维护活动中,完善性维护所占的比重最大,大约占

36、总维护量的 50%以上。 适应性维护( Adaptive Maintenance)要使运行的软件能适应运行环境的变动而修改软件的过程。随着计算机的飞速发展,外部环境(新的硬件、软件配置)或数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。适应性维护是为了使软件产品适应软、硬环境的变更而进行修改软件的维护活动,它大约占总维护量的 25%。 预防性维护( Preventive Maintenance)为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进行修改。预防性维护是为提高软件可维护性和可靠性等,主动为以后进一步维护软件打下良好基础的维护活动

37、,它大约占总维护量的 5%。预防性维护主要是采用先进的软件工程方法对已经过时的、可能需要维护的软件系统,或者某种的一部分重新进行设计、编码和测/调试“再工程” ,以期达到结构上的更新。可以认为,预防性维护的意义在于“把今天的方法学运用于昨天的系统,以满足明天的需要” 。 四类软件维护的比例如下所示:5,软件维护过程 为了有效完成维护任务,仍然要采用软件工程原理、方法和技术,降低维护成本并保证软件维护的标准化和高效率。概括地说,每项软件维护活动的过程是:维护申请制定维护计划进行维护活动建立维护文档复审/评价维护6,软件维护工作流程具体如下: 确认维护类型 实施维护 维护评审7, 维护费用高达开发

38、费用的 55% 70%,而且逐年上涨。8, 提高软件可维护性 提高软件可维护性的两个方面:1. 在软件开发期的各个阶段进行各项开发活动的同时,应该时时、处处努力提高软件可维护性,保证软件产品在发布之日有尽可能高水准的可维护性(这是最重要的) 。2. 在软件维护期进行维护活动的同时,兼顾提高软件的可维护性,更不能对可维护性产生负面影响。 提高软件可维护性的主要技术途径:1. 建立完整的、一致性的文档 2. 明确质量标准和它们的优先级3. 采用易于维护的技术和工具 4. 加强可维护性复审9,软件测试不等于程序调试,软件测试与软件调试的不同点:1,测试证明程序员的失败,调试证明程序员的正确,测试一般不由程序员做。2,测试结果可预见,调试结果不可预见。3,测试是有计划的,并进行了测试设计,调试不受时间约束。4,测试是一个发现错误、改正错误的过程,调试是一个推理过程。5,测试是在不了解软件的条件下完成的,调试是在完全了解软件设计的条件下做的。10,软件维护的相关文档。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

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

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报