软件工程第7章
- 格式:ppt
- 大小:526.00 KB
- 文档页数:53


山西大学商务学院教案
2009—2010学年第二学期
课程名称 软件工程
授课对象 07信息与计算科学B1班
授课教师 刘忠宝
教材版本 软件工程导论 张海藩著
第 1 页 第8章 软件维护
教学目标与要求 1、 了解维护的概念,掌握四类维护。
2、了解维护过程、软件的可维护性。
教学重点与难点 重点:1、维护的概念、
2、维护过程。
3、可维护性。
难点:维护过程
教学过程设计 新课导入、新课教学、课堂提问。
教学方法 以多媒体讲授为主,案例分析+提问、设问、练习、讨论等方法。
8.1 软件维护的定义
软件维护的主要目标是使已部署的软件按照需求规格说明书的要求(或用户的新需求)运行,这要求软件不仅要满足用户所需要的各项功能需求,同时还要满足用户对软件的非功能需求。软件维护包括下述四项活动
1、改正性维护
诊断和改正用户使用软件时所发现的软件错误的过程
2、适应性维护
为了使软件和变化了的环境适当地配合而进行的修改软件的活动。
3、完善性维护
用户在使用软件的过程中,往往提出增加新功能或改变某些已有功能的要求,还可能要求进一步提高程序的性能。为了满足这类要求而修改软件的活动称为完善性维护。
4、预防性维护
为了提高未来的可维护性或可靠性而主动地修改软件的活动。
8.2 软件维护的特点
一、结构化维护与非结构化维护差别巨大
1、非结构化维护
2、结构化维护
二、维护代价的高昂
三、维护的问题很多
8.3 软件维护过程
一、维护组织
二、维护报告 以高校工资管理系统为案例进行本章内容的讲解
详细讲解四种维护及应用场所
举例说明两种维护的差别
对每一个过程
第 2 页 三、维护的事件流
四、保存维护记录
五、评价维护活动
8.4 软件的可维护性
一、决定软件可维护性的因素
1、可理解性
第七章 面向数据流的设计方法
面向数据流的设计方法,即通常所说的结构设计法(简称SD方法),是根据需求阶段对数据流的分析(一般用数据流图和数据字典表示)设计软件结构。数据流图主要描绘信息在系统内部加工和流动的情况,面向数据流的设计方法根据数据流图的特性定义两种“映射”,这两种映射能机械地将数据流图转换为程序结构。该方法的目标是为软件结构设计提供一个系统化的途径,使设计人员对软件有一个整体的认识。本章所述技术用于软件的概要设计描述,包括模块、界面和数据结构的定义,这是所有后续开发工作的基础。每种软件设计方法都有长处和不足,先用哪种方法首先应考虑它适用的范围。任何软件系统都可以用数据流图表示,理论上,面向数据流的设计方法可用于任一种软件系统的开发。然而,该方法对那些顺序处理信息且不含层次数据结构的系统最为有效,例如过程控制、复杂的数值分析过程、以及科学与工程方面的应用,等等。当SD方法用于完全的数据处理时,即使系统中作用层次数据也同样行之有效。
从系统设计的角度出发,软件设计方法可以分为三大类。第一类是根据系统的数据流进行设计,称为面向数据流的设计或者过程驱动的设计,以结构化设计方法为代表。第二类是根据系统的数据结构进行设计,称为面向数据结构的设计或者数据驱动的设计,以 LCP(程序逻辑构造)方法、Jackson 系统开发方法和数据结构化系统开发(DSSD)方法为代表。第三类设计方法即面向对象的设计。
第一节 基本概念和设计过程
面向数据流设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。该方法实施的要点是:①建立数据流的类型。②指明流的边界 。③将数据流图映射到程序结构 。④用“因子化”方法定义控制的层次结构。⑤用设计测量和一些启发式规则对结构进行细化。
一、在系统结构图(SC)中的模块
在系统结构图中不能再分解的底层模块为原子模块。如果一个软件系统的全部实际加工(数据计算或处理)都由底层的原子模块来完成,而其他所有非原子模块仅仅执行控制或协调功能,这样的系统就是完全因子分解的系统。如果系统结构图是完全因子分解的 ,就是最好的系统 。一般地,在系统结构图中有4种类型的模块(如图7-1-1):
1/16十万种考研考证电子书、题库视频学习平台圣才电子书第7章实现1.下面给出的伪码中有一个错误。仔细阅读这段伪码,说明该伪码的语法特点,找出并改正伪码中的错误。字频统计程序的伪码如下:答:(1)错误:INSERTtheextractedwordintothetable在这个后面,没有给这个word的occurrencecount赋值为1。(2)语法特点:该伪代码在循环结构中嵌套循环结构,并且在嵌套的循环结构中又嵌套了IFELSE结构。2.研究下面给出的伪码程序,要求:(1)画出它的程序流程图。(2)它是结构化的还是非结构化的?说明理由。(3)若是非结构化的,则:
2/16十万种考研考证电子书、题库视频学习平台圣才电子书a.把它改造成仅用3种控制结构的结构化程序;b.写出这个结构化设计的伪码;c.用盒图表示这个结构化程序。(4)找出并改正程序逻辑中的错误。答:(1)程序流程图,如图7-8所示。
3/16十万种考研考证电子书、题库视频学习平台圣才电子书图7-8程序流程图(2)此程序是非结构化的,它有一个GOTO语句,并且是从一个循环体内转到循环体外的一条件语句内部。(3)①修改后的伪码,如图7-9所示。
4/16十万种考研考证电子书、题库视频学习平台圣才电子书图7-9修改后的伪码②修改后程序的盒图,如图7-10所示。图7-10修改后程序的盒图(4)程序中的错误:①语句“IFWORD=KEYWORD”里的变量“WORD”没有预先赋值。②程序中没有预先输入T的值。③“N=0”应该是“MATCH=0”。3.在第2题的设计中若输入的N值或KEYWORD不合理,会发生问题。(1)给出这些变量的不合理值的例子。(2)将这些不合理值输入程序会有什么后果?
5/16十万种考研考证电子书、题库视频学习平台圣才电子书(3)怎样在程序中加入防错措施,以防止出现这些问题?答:(1)N=1,KEYWORD=#。(2)不合理的值输入程序后无法打印出任何信息。(3)可以通过加入循环来防止出现这些错误的问题。4.回答下列问题。(1)什么是模块测试和集成测试?它们各有什么特点?(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对它进行测试期间将发现多少个错误?为什么?(3)设计下列伪码程序的语句覆盖和路径覆盖测试用例:答:(1)①模块测试时对每个单独的模块,分别用黑盒和白盒测试技术,测试它地功
软件工程考核知识点-第7章-软件测试
7.1 软件测试的目的及原则
7.1.1 软件测试的目的
(1)软件测试是为了发现错误而执行程序的过程。
(2)一个好的测试用例能够发现至今尚未发现的错误。
(3)一个成功的测试是发现了至今尚未发现的错误的测试。
因此,测试阶段的基本任务应该是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组“高产”的测试用例,利用这些实例执行程序,找出软件中潜在的各种错误和缺陷。
7.1.2软件测试的原则
在软件测试中,应注意以下原则:
(1)测试用例应由输入数据和预期的输出数据两部分组成。这样便于对照检查,做到"有的放矢"。
(2)测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。这样能更多地发现错误,提高程序地可靠性。对于不合理地输入数据,程序应拒绝接受,并给出相应提示。
(3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。例如程序正确打印出用户所需信息的同时还打印出用户并不需要的多余的信息。
(4)应制定测试计划并严格执行,排除随意性。
(5)长期保留测试用例。测试用例的设计耗费很大的工作量,必须作为文档保存。因为修改后的程序可能有新的错误,需要进行回归测试。同时,为以后的维护提供方便。
(6)对发现错误较多的程序段,应进行更深入的测试。有统计数字表明,一段程序中所发现的错误数越多,其中存在的错误概率也越大。因为发现错误数多的程序段,其质量较差。同时在修改错误过程中又容易引入新的错误。
(7)程序员避免测试自己的程序。测试是一种"挑剔性"的行为,心理状态是测试自己程序的障碍。另外,对需求规格说明的理解而引入的错误则更难发现。因此应由别的人或另外的机构来测试程序员编写的程序会更客观,更有效。
7.2 测试方法
软件测试方法一般分为两大类:动态测试方法与静态测试方法,而动态测试方法中又根据测试用例的设计方法不同,分为黑盒测试与白盒测试两类。