软件复习材料部分整合.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件设计的原理(原则)
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 )软件未达到产品说明书中已经标明的功能。
2 )软件功能超出了产品说明书指明的范围。
3 )软件出现了产品说明书中指明不会出现的错误
4 )软件未达到产品说明书虽未指出但应达到的目标
5 )软件测试员认为软件难以理解、不易使用、运行速度缓
慢,或者最终用户认为该软件使用效果不好
23.软件缺陷产生的原因:产品说明书56% 设计方案27% 编写代码7% 其他10%
24.软件测试定义:软件测试是为了发现错误而运行程序的过程,是根据软件开发各阶段的规格说明和程序内部结构精心设计一批测试用例,并利用这些用例去运行程序,以发现程序中的错误。
25.软件的测试用例=输入数据+预期输出结果
好的测试用例:是指发现迄今为止尚未发现的错误的用例
成功的测试过程:是指找到了迄今为止尚未找到的错误的测试过程。
26. 静态测试
白盒测试
软件测试的方法
动态测试
黑盒测试
27.软件测试步骤:单元测试组装测试确认测试系统测试
28.单元测试五个方面:(1 )模块接口测试(2 )局部数据结构测试(3 )路径测试(4 )程序异常测试(5 )边界条件测试
29.确认测试:α测试是邀请用户参加,在开发场地进行的测试,由开发组成员或用户实际操作运行,对测试过程中出现的问题,由开发者记录下来,作为修改的依据。
它的最大特点是整个测试过程是在受控环境下进行。
β测试是由部分用户在实际的使用环境下进行的测试测试过程中开发者不在现场,由用户独立操作,验证程序的各项功能,用户发现的问题全部记录下来,反馈给程序开发者,开发者对软件进行必要的修改,并准备最终的软件产品发布。
β测试的最大特点是实际的使用环境下进行的测试。
确认测试的结果可分为两种情况:
①测试结果与预期结果相符,程序的功能和性能满足用户需求;
②测试结果与预期结果不相符,将存在的问题列出清单,提供给开发者作为修改依据。
软件维护
30.软件维护的定义:在软件运行/维护阶段对软件产品所进行的修改就是维护。
31.四种维护活动:改正性维护(21%)适应性维护(25%)完善性维护(50%)
预防性维护
32.软件维护可以分为四步:
第一步: 软件维护申请报告
第二步: 维护工作的实施
第三步: 维护文档整理
第四步: 维护活动评价
练习题
【1-1】软件是计算机系统中与硬件相互依存的另一部分,它是包括( A )、( B )及( C )的完整集合。
其中,( A )是按事先设计的功能和性能要求执行的指令序列。
( B )是使程序能够正确操纵信息的数据结构。
( C )是与
程序开发、维护和使用有关的图文材料。
供选择的答案:
A C. ①软件②程序③代码④硬件
⑤文档⑥外设⑦数据⑧图表
【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.①数据流图②判定表③PAD图④数据词典
C.①要让软件做什么②要给该软件提供哪些信息
③要求软件工作效率如何④要让软件具有什么样的结构
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方法
C. ①Jackson方法②瀑布法③快速原型法④回溯法
D ~ E.①LCP(Wanier)方法②递归法③Parnas方法
④自下而上修正⑤逐步求精法⑥检测校正法
【3-3】请将下述有关模块独立性的各种模块之间的耦合,按其耦合度从低到高排列起来。
①内容耦合②控制耦合③非直接耦合④标记耦合
⑤数据耦合⑥外部耦合⑦公共耦合
【3-4】请将下述有关模块独立性的各种模块内聚,按其内聚度(强度)从高到低排列起来。
①巧合内聚②时间内聚③功能内聚④通信内聚
⑤逻辑内聚⑥信息内聚⑦过程内聚
【3-6】软件需求分析的任务不应包括( A )。
进行需求分析可使用多种工具,但( B )是不适用的。
在需求分析中,分析员要从用户那里解决的最重要的问
题是( 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:①模块功能规格说明②系统模块结构图③系统需求规格说明。