软件复习材料部分整合.doc由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“工艺标准复习资料doc”。
软件设计的原理(原则)
1.模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能
2.抽象是抽出事物的本质特性(共性),而暂时不考虑它们的细节
3.逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术(例如,规格说明技术,设计和实现技术)的基础
4.信息隐藏原理指出:设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。
所谓局部化:是指把一些关系密切的软件元素物理地放得彼此靠近。
5.模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。
软件的特点
6.软件是逻辑实体。具有抽象性。软件的形态不可见,必须通过观察、分析、思考、判断来了解其功能、性能和其它特性。
软件是人脑思维的产物,其生产过程与硬件不同--开发过程的质量控制及软件产品保护问题。
软件的开发和运行受计算机系统限制--软件移植问题。
软件的开发技术落后,手工开发方式仍占统治地位,开发效率低。可行性研究与计划 7.目的可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。8.可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程。9.四个可行性:经济可行性,技术可行性,操作可行性,法律可行性
10.可行性研究的步骤:复查系统规模和目标,研究目前正在使用的系统,导出新系统的高层逻辑模型,重新定义问题,导出和评价供选的解法,推荐一个方案并说明理由,推荐行动方针,书写文档提交审查
需求分析
11.需求可分解为4个层次:业务需求、用户需求、功能需求和非功能需求。12.获取需求的方法:访谈问卷调查情景分析实地考察构造原型 13.结构化分析方法:
特点是利用数据流图来帮助人们理解问题,对问题进行分析。即利用图形工具来模拟数据处理过程。
该方法的核心是数据流图。
14.结构化分析法使用的工具:数据流图数据字典结构化英语判定表或判定树。
详细计划
15.详细设计的工具:图形工具表格工具语言工具
16.其中的(1)程序流程图(2)N-S图(3)PAD图自己再详细设计中看
软件编码
17.程序设计语言
机器语言
低级语言
汇编语言 传统高级语言
高级语言
超高级语言
18.程序设计语言的特性:心理特性工程特性技术特性 19.工程特性:可移植性开发工具的可利用性可维护性
20.程序设计风格体现在四个方面:-源程序文档化
-数据说明方法
-语句结构
-输入/输出方法
软件测试
21.软件有缺陷进行软件测试
22.什么是软件缺陷?1)软件未达到产品说明书中已经标明的功能。)软件功能超出了产品说明书指明的范围。3)软件出现了产品说明书中指明不会出现的错误 4)软件未达到产品说明书虽未指出但应达到的目标)软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为该软件使用效果不好
23.软件缺陷产生的原因:产品说明书56% 设计方案27% 编写代码7% 其他10% 24.软件测试定义:软件测试是为了发现错误而运行程序的过程,是根据软件开发各阶段的规格说明和程序内部结构精心设计一批测试用例,并利用这些用例去运行程序,以发现程序中的错误。
25.软件的测试用例=输入数据+预期输出结果
好的测试用例:是指发现迄今为止尚未发现的错误的用例
成功的测试过程:是指找到了迄今为止尚未找到的错误的测试过程。26.静态测试
白盒测试软件测试的方法
黑盒测试 动态测试
27.软件测试步骤:单元测试组装测试确认测试系统测试
28.单元测试五个方面:(1)模块接口测试(2)局部数据结构测试(3)路径测试(4)程序异常测试(5)边界条件测试
29.确认测试:α测试是邀请用户参加,在开发场地进行的测试,由开发组成员或用户实际操作运行,对测试过程中出现的问题,由开发者记录下来,作为修改的依据。它的最大特点是整个测试过程是在受控环境下进行。
β测试是由部分用户在实际的使用环境下进行的测试测试过程中开发者不在现场,由用户独立操作,验证程序的各项功能,用户发现的问题全部记录下来,反馈给程序开发者,开发者对软件进行必要的修改,并准备最终的软件产品发布。
β测试的最大特点是实际的使用环境下进行的测试。
确认测试的结果可分为两种情况:
①测试结果与预期结果相符,程序的功能和性能满足用户需求;
②测试结果与预期结果不相符,将存在的问题列出清单,提供给开发者作为修改依据。
软件维护
30.软件维护的定义:在软件运行/维护阶段对软件产品所进行的修改就是维护。31.四种维护活动:改正性维护(21%)适应性维护(25%)完善性维护(50%)4 预防性维护
32.软件维护可以分为四步: 第一步: 软件维护申请报告 第二步: 维护工作的实施 第三步: 维护文档整理 第四步: 维护活动评价
练习题
【1-1】软件是计算机系统中与硬件相互依存的另一部分,它是包括(A)、(B)及(C)的完整集合。其中,(A)是按事先设计的功能和性能要求执行的指令序列。(B)是使程序能够正确操纵信息的数据结构。(C)是与程序开发、维护和使用有关的图文材料。
供选择的答案:
AC.① 软件 ② 程序 ③ 代码 ④ 硬件
⑤ 文档
⑥ 外设 ⑦ 数据 ⑧ 图表
【1-2】开发软件时对提高软件开发人员工作效率至关重要的是(A)。软件工程中描述生存周期的瀑布模型一般包括计划、(B)、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成(C)和(D)两步。供选择的答案:
A. ① 程序开发环境 ② 操作系统的资源管理功能
③ 程序人员数量
B. ① 需求分析
④ 计算机的并行处理能力
③ 可行性分析 ④ 问题定义
④ 数据设计
② 需求调查
C、D.① 方案设计 ② 代码设计 ③ 概要设计⑤ 运行设计
构设计
⑥ 详细设计
⑦ 故障处理设计 ⑧ 软件体系结【2-1】软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别、分析与综合、编写需求分析文档以及()。供选择的答案: A.总结 B.阶段性报告 C.需求分析评审 D.以上答案都不正确
【2-2】各种需求方法都有它们共同适用的()。供选择的答案:
A.说明方法 B.描述方式
C.准则
D.基本原则
【2-3】 软件需求分析的任务不应包括(A)。进行需求分析可使用多种工具,但(B)是不适用的。在需求分析中,分析员要从用户那里解决的最重要的问题是(C)。需求规格说明书的内容不应当包括(D)。该文档在软件开发中具有重要的作用,但其作用不应当包括(E)。供选择的答案:
A.① 问题分析 辑模型
B.C.① 数据流图
② 判定表
③ PAD图
④ 数据词典
② 信息域分析 ③ 结构化程序设计
④ 确定逻① 要让软件做什么
② 要给该软件提供哪些信息
③ 要求软件工作效率如何 ④ 要让软件具有什么样的结构
D.① 对重要功能的描述
② 对算法的详细过程性描述
③ 软件确认准则
④ 软件的性能
E.① 软件设计的依据
同理解
③ 软件验收的依据
② 用户和开发人员对软件要“做什么”的共
④ 软件可行性分析的依据
【2-4】原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于(A)系统。它从用户界面的开发入手,首先形成(B),用户(C),并就(D)提出意见,它是一种(E)型的设计过程。供选择的答案:
A.① 需求不确定性高的 ② 需求确定的 ③ 管理信息 持
B.① 用户界面使用手册
② 用户界面需求分析说明书
④ 决策支③ 系统界面原型
④ 完善的用户界面
② 阅读文档资料
C.① 改进用户界面的设计
③ 模拟用户界面的运行 ④ 运行用户界面原型
D.① 同意什么和不同意什么 ② 使用和不使用哪一种编程语言
③ 程序的结构
E.① 自外向内
④ 执行速度是否满足要求
③ 自内向外
④ 自底向上
② 自顶向下
【3-1】从下列有关系统结构图的叙述中选出正确的叙述。
(1)系统结构图中反映的是程序中数据流的情况。
(2)系统结构图是精确表达程序结构的图形表示法。因此,有时也可将系统结构当作程序流程图使用。
(3)一个模块的多个下属模块在系统结构图中所处的左右位置是无关紧要的。(4)在系统结构图中,上级模块与其下属模块之间的调用关系用有向线段表示。这时,使用斜的线段和水平、垂直的线段具有相同的含义。
【3-2】软件的开发工作经过需求分析阶段,进入(A)以后,就开始着手解决“怎么做”的问题。常用的软件设计方法有(B)、(C)、(D)和(E)等方法。供选择的答案: A B.① 程序设计
⑤ SD方法
② 设计阶段
③ 总体设计
④ 定义阶段
⑥ SP方法
③ 快速原型法 ④ 回溯法
③ Parnas方法 C.① Jackson方法 ② 瀑布法
D E.① LCP(Wanier)方法 ② 递归法
④ 自下而上修正 ⑤ 逐步求精法 ⑥ 检测校正法
【3-3】请将下述有关模块独立性的各种模块之间的耦合,按其耦合度从低到高排列起来。
① 内容耦合② 控制耦合 ⑥ 外部耦合③ 非直接耦合 ④ 标记耦合 ⑦ 公共耦合 ⑤ 数据耦合
【3-4】请将下述有关模块独立性的各种模块内聚,按其内聚度(强度)从高到低排列起来。
① 巧合内聚
⑤ 逻辑内聚
② 时间内聚 ⑥ 信息内聚
③ 功能内聚 ⑦ 过程内聚
④ 通信内聚
【3-6】软件需求分析的任务不应包括(A)。进行需求分析可使用多种工具,但(B)是不适用的。在需求分析中,分析员要从用户那里解决的最重要的问 8 题是(C)。需求规格说明书的内容不应当包括(D)。该文档在软件开发中具有重要的作用,但其作用不应当包括(E)。供选择的答案: A.① 问题分析 型
B.① 数据流图
② 判定表
③ PAD图
④ 数据词典
② 信息域分析 ③ 结构化程序设计
④ 确定逻辑模C.① 要让软件做什么
② 要给该软件提供哪些信息
③ 要求软件工作效率如何 ④ 要让软件具有什么样的结构 D.① 对重要功能的描述
③ 软件确认准则
E.① 软件设计的依据
解
③ 软件验收的依据
④ 软件可行性分析的依据
② 对算法的详细过程性描述 ④ 软件的性能
② 用户和开发人员对软件要“做什么”的共同理【3-7】原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于(A)系统。它从用户界面的开发入手,首先形成(B),用户(C),并就(D)提出意见,它是一种(E)型的设计过程。供选择的答案:
A.① 需求不确定性高的 ② 需求确定的 ③ 管理信息 B.① 用户界面使用手册
③ 系统界面原型
④ 决策支持
② 用户界面需求分析说明书 ④ 完善的用户界面
② 阅读文档资料 ④ 运行用户界面原型 C.① 改进用户界面的设计
③ 模拟用户界面的运行D.① 同意什么和不同意什么 ② 使用和不使用哪一种编程语言
③ 程序的结构
E.① 自外向内
④ 执行速度是否满足要求
③ 自内向外
④ 自底向上
② 自顶向下
【例2】测试过程需要三类输入:(A)、(B)和(C)。请选择正确的答案填入下图中以完成测试信息处理的全过程。
供选择的答案: A C.① 接口选择 D F.② 软件配置
③ 硬件配置
⑥ 测试工具
④ 测试配置 ① 排错
⑤ 测试环境
② 可靠性分析 ③ 结果分析 ④ 数据分类
【例3】软件测试是软件质量保证的主要手段之一,测试的费用已超过(A)的30%以上。因此,提高测试的有效性十分重要。“高产”的测试是指(B)。根据国家标准GB 8566–88《计算机软件开发规范》的规定,软件的开发和维护划分为8个阶段,其中,单元测试是在(C)阶段完成的,集成测试的计划是在(D)阶段制定的,确认测试的计划是在(E)阶段制定的。供选择的答案:
A.① 软件开发费用 ② 软件维护费用 ③ 软件开发和维护费用 ④ 软件研制费用 ⑤ 软件生存期全部
B.① 用适量的测试用例运行程序,证明被测程序正确无误
② 用适量的测试用例运行程序,证明被测程序符合相应的要求 ③ 用少量的测试用例运行程序,发现被测程序尽可能多的错误
④ 用少量的测试用例运行程序,纠正被测程序尽可能多的错误
C E.① 可行性研究和计划
② 需求分析 ③ 概要设计
④ 详细设计
⑦ 确认测试
⑤ 实现
⑥ 集成测试
⑧ 使用和维护
【例4】集成测试也叫做(A)或(B)。通常,在(C)的基础上,将所有模块按照设计要求组装成为系统。子系统的集成测试特别称为(D),它所做的工作是要找出子系统和系统需求规格说明之间的(E)。需要考虑的问题是:在把各个模块连接起来的时侯,穿越模块接口的数据是否会(F); 一个模块的功能是否会对另一个模块的功能产生不利的影响;各个(G)组合起来,能否达到预期要求的(H);(I)是否有问题;单个模块的误差累积起来是否会放大。供选择的答案: A D.① 单元测试 ④ 系统测试
② 部件测试
③ 组装测试
⑤ 确认测试 ⑥ 联合测试
③ 父功能
④ 局部数据 E I.① 子功能
结构
② 丢失
⑤ 全局数据结构 ⑥ 不一致
⑦ 一致
【5-1】从供选择的答案中选出应填入下列()中的字句。软件测试的目的是(A)。为了提高测试的效率,应该(B)。使用白盒测试方法时,确定测试数据应根据(C)和指定的覆盖标准。与设计测试数据无关的文档是(D)。
软件的集成测试工作最好由(E)承担,以提高集成测试的效果。供选择的答案:
A.① 评价软件的质量
② 发现软件的错误 ④ 证明软件是正确的
③ 找出软件中的所有错误
B.① 随机地选取测试数据
② 取一切可能的输入数据作为测试数据 ③ 在完成编码以后制定软件的测试计划
④ 选择发现错误的可能性大的数据作为测试数据
C.① 程序的内部逻辑
③ 使用说明书
② 程序的复杂程度
④ 程序的功能
② 程序的复杂程度 D.① 该软件的设计人员
③ 源程序
④ 项目开发计划
② 该软件开发组的负责人
④ 不属于该软件开发组的软件设计人员 E.① 该软件的设计人员
③ 该软件的编程人员
【5-2】请从供选择的答案中选出应填入下列()中的字句。
程序的三种基本控制结构是(A)。它们的共同点是(B)。结构化程序设计的一种基本方法是(C)。软件测试的目的是(D)。软件调试的目的是(E)。供选择的答案: A.① 过程,子程序,分程序
③ 递归,堆栈,队列
B.① 不能嵌套使用
③ 已经用硬件实现
C.① 筛选法
② 顺序,条件,循环 ④ 调用,返回,转移 ② 只能用来写简单的程序 ④ 只有一个入口和一个出口
④ 逐步求精法
② 递归法
③ 归纳法
D.① 证明程序中没有错误
③ 测量程序的动态特性
E.① 找出错误所在并改正之
③ 对错误性质进行分类
② 发现程序中的错误 ④ 检查程序中的语法错误 ② 排除存在错误的可能性 ④ 统计出错的次数
【5-3】从下列关于软件测试的叙述中,选出5条正确的叙述。(1)用黑盒法测试时,测试用例是根据程序内部逻辑设计的。
(2)尽量用公共过程或子程序去代替重复的代码段。
(3)测试是为了验证该软件已正确地实现了用户的要求。
(4)对于连锁型分支结构,若有n个判定语句,则有2n条路径。
(5)尽量采用复合的条件测试,以避免嵌套的分支结构。
(6)GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。
(7)发现错误多的程序模块,残留在模块中的错误也多。
(8)黑盒测试方法中最有效的是因果图法。
(9)在做程序的单元测试时,桩(存根)模块比驱动模块容易编写。
(10)程序效率的提高主要应通过选择高效的算法来实现。【5-7】从供选择的答案中选出应填入下面有关软件测试的叙述的()内的正确答案。
软件测试方法可分为黑盒测试法和白盒测试法两种。
黑盒测试法是通过分析程序的(A)来设计测试用例的方法。除了测试程序外,它还适用于对(B)阶段的软件文档进行测试。
白盒测试法是根据程序的(C)来设计测试用例的方法。除了测试程序外,它也适用于对(D)阶段的软件文档进行测试。
白盒法测试程序时常按照给定的覆盖条件选取测试用例。(E)覆盖比(F)覆盖严格,它使得每一个判定的每一条分支至少经历一次。(G)覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值。(H)覆盖比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。
单元测试一般以(I)为主,测试的依据是(J)。供选择的答案:
A, C:① 应用范围
② 内部逻辑
B, D:① 编码
③ 功能
④ 输入数据
② 软件详细设计
③ 软件总体设计
④ 需求分析
④ 判定/条件 E, F, G, H:① 语句
② 判定
③ 条件
⑤ 多重条件
⑥ 路径
I:① 白盒法 ② 黑盒法
J:① 模块功能规格说明
② 系统模块结构图
③ 系统需求规格说明