太原科技大学软件工程考试重点二.docx
《太原科技大学软件工程考试重点二.docx》由会员分享,可在线阅读,更多相关《太原科技大学软件工程考试重点二.docx(22页珍藏版)》请在冰豆网上搜索。
太原科技大学软件工程考试重点二
第六章详细设计
1.详细设计根本目标:
确定如何具体实现所要求的系统。
任务:
不是具体编写程序,而是设计程序的“蓝图”。
详细设计的结果决定最终程序代码的质量
2.结构程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出
口的控制结构。
经典的结构程序设计:
只允许使用顺序、IF_THEN_ELSE选择DO_WHILE
循环。
3.设计人机界面过程中会遇到的4个问题:
1)系统响应时间
系统响应时间指从用户完成某个控制动作,到软件给出预期的响应之间的这段时间。
系统响应时间有两个重要属性:
长度和易变性
2)用户帮助设施
大多数现代软件都提供联机帮助设施,用户无须离开用户界面就能解决自己的问题。
常见的帮助设施可分为集成的和附加的两类.
3)出错信息处理
出错信息和警告信息,是出现问题时交互式系统给出的“坏消息.
4)命令交互
多数情况下,用户既可以从菜单中选择软件功能,也可以通过键盘命令序列调用软件
功能。
4.设计过程
5.过程设计的工具:
1)程序流程图:
是一种描述程序的控制结构流程和指令执行情况的有向图。
缺点:
程序流程图的缺点:
(1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的
控制流程,而不去考虑程序的全局结构。
(2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾
结构程序设计的精神,随意转移控制。
(3)程序流程图不易表示数据结构。
2)盒图
特点:
(1)功能域明确,可以从盒图上一眼就看出来;
(2)不可能任意转移控制;
(3)很容易确定局部和全程数据的作用域;
(4)很容易表现嵌套关系,也可以表示模块层次结构
3)PAD图
它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易
特点:
(1)使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序;
(2)PAD图所描绘的程序结构十分清晰;
(3)用PAD图表现程序,通俗易懂,程序从图中最左竖线上端的结点开始执行,自
上而下,从左向右顺序执行,遍历所有结点;
(4)容易将PAD图转换成高级语言源程序,这种转换可以用软件工具自动完成;
(5)可用于表示程序逻辑,也可用于描绘数据结构;
(6)PAD图的符号支持自顶向下、逐步求精的方法。
4)判定表
当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后面即将介
绍的过程设计语言(PDL)都不易清楚地描述判定表却能够清晰地表示复杂的条件组
合与应做的动作之间的对应关系。
一个判定表由四部分组成:
--左上部列出所有条件
--左下部是所有可能做的动作
--右上部表示各种条件组合
--右下部是和每种条件组合相对应的动作
5)判定树
判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关
系。
6)过程设计语言(PDL)
过程设计语言(PDL)也称为伪码,它是用正文形式表示数据和处理过程的设计工具。
PDL的优点:
(1)可以作为注释直接插在源程序中间;
(2)可以使用普通的正文编辑程序或文字处理系统来完成PDL的书写和编辑工作;
(3)现在已经有一些自动处理程序可以自动地把PDL生成程序代码。
PDL的缺点:
不如图形工具形象直观.
6.面向数据流的设计方法是根据数据流确定软件结构;面向数据结构的设计方法是根据数据
结构设计程序处理过程,对程序处理过程进行描述。
通常面向数据结构的设计方法的设计步
骤如下:
(1)画出系统中输入、输出数据对应的数据结构图。
(2)根据数据结构图,映射得到相应的程序结构图。
(3)按照程序结构图,分析得到程序的详细过程性描述。
7.在面向数据结构的设计方法中,最典型的代表是Jackson方法和Warnier方法
JACKSON方法的特点:
优点:
1、适合于层次结构表达;
2、形象直观、可读性强;
3、同时表示数据结构和程序结构。
缺点:
不能直接在图上表示选择条件和循环结束条件。
影响了图的表达能力,也不易直
接把图翻译成程序,此外,框间连线为斜线,不易在行式打印机上输出。
为了解
决上述问题,本书建议使用图6.11中给出的改进的Jackson图。
Jackson结构程序设计方法由五个步骤组成:
1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构;
2)找出输入数据结构和输出数据结构中有对应关系的数据单元;
3)用三条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图
A.为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构
图的相应层次画一个处理框;
B.根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应
层次分别为它们画上对应的处理框;
C.根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应
层次分别为它们画上对应的处理框;
4)列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结
构图的适当位置;
5)用伪码表示程序。
8.程序复杂度定量度量方法是评介详细设计阶段模块质量的一种比较成熟的方法。
计算环形复杂度的方法
(1)环形复杂度V(G)=流图中的区域数;
(2)环形复杂度V(G)=E-N+2,
其中:
E是流图中边的条数,N是结点数;
(3)环形复杂度V(G)=P+1,
其中:
P为流图中判定结点的数目。
环形复杂度的用途;:
对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预
测。
第7章实现
1.通常把编码和测试统称为实现。
编码:
把软件设计结果翻译成用某种程序设计语言书写的程序,是对设计的进一步
具体化。
测试:
检测程序并改正错误的过程。
测试的目的:
在软件投入运行之前,尽可能发现软件中的错误,并改正错误。
2.选择一种编程语言的理论标准:
1)有理想的模块化机制;
2)可读性好的控制结构和数据结构;
3)便于调试和提高软件可靠性;
4)编译程序发现程序错误的能力强;
5)有良好的独立编译机制。
3.编码风格是指编程遵循的基本原则。
良好的编码风格有利于弥补语言的缺陷,编写出高质量的软件。
包括程序内部的文档、数据说明、语句构造、输入/输出、效率等方面的问题。
4.程序的效率是指程序的执行速度及程序所需占用的内存的存储空间。
即程序的时空复杂度。
效率问题涉及3方面:
(1)程序运行时间
(2)存储器效率
(3)输入输出效率
5.测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。
测试决不能证明软件是正确的,也不能证明错误的不存在,它只能证明错误的存在
6.软件测试准则:
1)所有测试都应该能追溯到用户需求;
软件中的问题根源可能在开发前期的各阶段解决、纠正错误也必须追溯到前期工作。
2)应该远在测试前就制定出测试计划;
完成需求模型既可以着手制定测试计划,建立了设计模型之后就可以立即开始设计详
细的测试方案。
因此,在编码之前就可以对所有测试工作进行计划和设计。
3)把Pareto原理应用到软件测试中
Pareto(帕雷特:
意大利经济学家)原则:
也称为80/20法则,即:
在众多现象中,
80%的结果取决于20%的原因。
4)从“小规模”测试逐步进行“大规模”测试;
通常,首先重点测试单个程序模块,然后把测试重点转向在集成的模块簇中寻找错
误,最后在整个系统中寻找错误。
5)穷举测试是不可能的;
穷尽测试:
包含所有可能情况的测试称为穷尽测试。
6)为了达到最佳测试效果,应该由独立的第三方从事测试工作。
7.测试方法包括:
静态测试和动态测试
静态测试:
基本特征是在对软件进行分析、检查和审阅,不实际运行被测试的软件。
静
态测试约可找出30~70%的逻辑设计错误。
动态测试:
通过运行软件来检验软件的动态行为和运行结果的正确性。
包括黑盒测试和白盒测试。
动态测试的两个基本要素:
被测试程序
测试数据(测试用例)
动态测试方法:
(1)选取定义域有效值,或定义域外无效值;
(2)对已选取值决定预期的结果;
(3)用选取值执行程序;
(4)执行结果与预期的结果相比不吻合,则程序有错
8.如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的
规定正常进称为白盒测试。
如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用
称为黑盒测试。
9.白盒测试的内容:
对程序模块的所有独立执行路径至少测试一次、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测试一次、在循环的边界和运行边界内执行循环体、
测试内部数据结构的有效性。
黑盒测试的内容:
Alpha/BetaTesting、菜单/帮助测试、发行测试、回归测试。
黑盒测试白盒测试
优点①适用于各阶段测试①可构成测试数据使特定程序部分得到测试
②从产品功能角度测试②有一定的充分性度量手段
③容易入手生成测试数据③可获较多工具支持
缺点①某些代码得不到测试①通常不易生成测试数据
②如果规格说明有误,则无法发现②无法对未实现规格说明的部分进行测试
③不易进行充分性测试③工作量大,通常只用于单元测试,有应用局限
10软件测试的步骤
1).模块测试
模块测试又称单元测试,它把每个模块作为单独的实体来测试。
2).子系统测试
子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试.
3)系统测试
系统测试是把经过测试的子系统装配成一个完整的系统来测试。
4).验收测试
验收测试把软件系统作为单一的实体进行测试(利用用户的实际数据测试)。
5)平行运行
平行运行是同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个
系统的处理结果。
11.单元测试通过编译系统检查并改正程序中所有的语法错误。
然后用详细设计模块说明为
指南,对重要的控制路径进行测试,以便发现模块内部的错误。
测试重点:
1).模块接口
主要检查下述几个方面:
参数的数目、次序、属性或单位系统与变元是否一致;是
否修改了只作输入用的变元;全局变量的定义和用法在各个模块中是否一致。
2).局部数据结构
局部数据说明、初始化、默认值等方面的错误。
3).重要的执行通路
选择最有代表性、最可能发现错误的执行通路进行测试就是十分关键的。
应该设
计测试方案用来发现由于错误的计算、不正确的比较或不适当的控制流而造成的
错误.
4).出错处理通路着重测试下述一些可能发生的错误:
(1)对错误的描述是难以理解的;
(2)记下错误与实际遇到的错误不同;
(3)在对错误进行处理之前,错误条件已经引起系统干预;
(4)对错误的处理不正确;
(5)描述错误的信息不足以帮助确定造成错误的位置。
5.边界条件
边界测试是单元测试中最后的也可能是最重要的任务,软件常常在它的边界上
失效。
12.计算机测试
必须为每个单元测试开发驱动程序和(或)存根程序。
驱动程序是一个“主程序”,它接收测试数据,传送给被测试的模块,并打印出有关的结
果。
(自底向上的集成测试)
存根程序