太原科技大学软件工程考试重点(二)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章详细设计
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法则,即:在众多现象中,