、填空题(每空1分,共25 分)
1. 软件生存周期一般可以划分为,问题定义、____________________ 、_____________ 、设计、
编码、测试和 _______________ 。
2. 基于软件的功能划分,软件可以划分成_______________ 、__________ 、____________ 三种。
3. 可行性研究,应从 ________________ 、技术可行性、运行可行性、__________________ 和开
放方案可行性等方面研究。
4. 系统流程图是描绘 ________________ 的传统工具。它的基本思想是用图形符号以_
______________ 描绘系统里面的每个部件。
5. 数据流图的基本四种成分:数据输入的源点和数据输出汇点、__________________ 、
_______________ 和_______________ 。
6. 结构化分析方法是面向 _____________________ 进行需求分析的方法。结构化分析方法使
用__________________ 与__________________ 来描述。
7. __________ 是自动地共享类、子类和对象中的方法和数据的机制。
8. 软件详细设计工具可分为3类,即____________________ 、_____________________ 和
9. 为了在软件开发过程中保证软件的质量,主要采取下述措施:__________________ 、
复查和管理复审、 ____________________ 。
10. 大型软件测试包括 ___________________ 、___________________ 、确认测试和__________
________ 四个步骤。
1、可行性研究需求分析运行与维护
2、系统软件支撑软件应用软件
3、经济可行性法律可行性
4、物理系统黑盒子形式
5、加工数据流数据存储文件
6、数据流数据流图DFD 数据字典DD
7、继承性
8、图示工具、设计语言表格工具
9、审查测试
10、单元测试集成测试系统测试、单项选择题(每小题2分,共20分)
1. 软件设计中划分模块的一个准则是()。
A、低内聚低耦合
B、低内聚高耦合
C、高内聚低耦合
D、高内聚高耦合
2. Jackson设计方法是由英国的M.Jackson提出的,它是一种面向()的软件
设计方法。
A 、 对象
B 、 数据流
C 、 数据结构
D 、 控制结构 3.
试判断下列叙述中,哪 个(些)是正确的 ( ) 。
a 、 软件系统中所有的信息流都可以认为是事务流
b 、 软件系统中所有的信息流都可以认为是变换流
c 、 事务分析和变换分析的设计步骤是基本相似的 A 、 a B 、 b C 、 c D 、 b 和 c
4.
(
)是用户和设计交换最频繁的方法。
A 、 原型化方法
B 、瀑布模型方法
C 、 螺旋模型方法
D 、构件组装模型
5.
软件工程方法学的目的是: 使软件生产规范化和工程化, 而软件工程方法得以实施
的主要保证是 (
) 。
A 、硬件环境
B 、软件开发的
环境
C 、 软件开发工具和软件开发的环境
D 、 开发人员的素质
6.
20世纪 50年代以来,出现了许多不同的程序设计语言,下列语言中哪个语言是低 级语言 ( ) 。
1. 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。 ( X )
2. 发现错误多的程序模块,残留在模块中的错误也多。 ( V )
3. 为了加快软件维护作业的进度,应尽可能增加维护人员的数目。
( X )
4. 软件维护就是改正软件中的错误。 ( X )
5. 质量保证是为了保证产品和服务充分满足消费者要求的质量而进行的有计划 ,有组
织的活动。( V )
6. 软件开发的主要任务是写程序。
( X )
7.
测试只能证明程序有错误 , 不能证明程序没有错误。 ( V )
8.
模块化程序设计中,模块越小,模块化的优点越明显。一般来说,模块的大小都在
10 行以下。( X )
9. 在编制程序时,首先应该对程序的结构充分考虑, 不要急于开始编码,而要像写软 件文档那样,很
好地琢磨程序具有什么样的功能,这些功能如何安排,等等。
A 、 PASCAL
B 、
C 、 C++
VISUAL BASIC
汇编语言
D 、
7. A
、
B
、
C
、 软件测试的目的是? (
)
证明软件的正确性 找出软件系统中存在的所有错误 证明软件系统中存在错误 尽可能多的发现软件系统中的错误
使用白盒测试方法时,确定测试数据应根据( A 、程序的内部逻辑 C 、该软件的编辑人员 9.
软件维护工作的最主要部分是
A 、 校正性维护 C 完善性维护 10. PDL 是(
)语言。
A 、 高级程序设计语言
B
C 中级程序设计语言
D
三、判断题(正确的在括号内打上“V”
)和指定的覆盖标准。
B 、程序的复杂程度 D 、程序的功能
( ) 。
B 、适应性维护 D 、预防性维护
、伪码式
、低级程序设计语言
,错误的打上“X” 。每题2分,共20 分)
(X )
10. 程序设计风格指导原则提出,尽量多使用临时变量。(X )四、简答题(每题5分,共20 分)
1.什么是软件工程?软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技
术方法结合起来。
2.耦合性和内聚性有几种类型? 其耦合度、内聚强度的顺序如何?
低:非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内
容耦合:高
强:功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚
巧合内聚:弱
3.简述需求分析工作可以分成哪四个方面?软件需求分析的有哪三个基本原则?:需求分析阶段分成四个方面:对问题的识别、分析与综合、制定规格说明和评审。三个基本原则:必须能够表达和理解问题的数据域和功能域;必须按自顶向下、逐步分解的方式对问题进行分解和不断细化;要给
出系统的逻辑视图和物理视图。
4.什么是黑盒测试法?黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据,产生正确地输出信息。
五、程序设计与算法描述题(共15 分)
1. 根据下面的伪代码程序,完成相应要求。(8 分)
START
IF C1
THEN
WHILE C2 DO
ENDDO
ELSE
BLOCK
g
P
ENDBLOCK
ENDIF
REPEAT UNTIL C3
q
r
ENDREP
STOP
1)画出程序流程图(4分)
2)用N- S图描述(4分)
START
INPUT (M,N)
IF M>=10
THEN X=10
ELSE X=l
ENDIF
IF N>=20
THEN Y=20
ELSE Y=2
ENDIF
PRINT(X,Y)
STOP
设计该程序的语句覆盖和路径覆盖测试用例。(7分)M=9(或 M=IO(或>=10),N=20(或>=20) 路径覆盖的测试用例为 M=9,N=19; M=9 N=20; M=l0,N=l9 ; M=10,N=20 要目标是提高软件质量,减少软件维护代价。 V 运行维护:主要任务是使软件持久地满足用户的需要 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 可行性研究: 1任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、 四个方面:技术、经济、操作可行性 3、 数据流图四种成分:1、源点/终点2、处理3、数据存储 4、数据流 需求分析: 1任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。 2、 结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、 实体联系图:1、数据对象2、属性3、联系(1:1、1: N 、M:N ) 总体设计: 任务:回答“概括的说,系统应该如何实现” ,用比较抽象概括的方式确定系统如何完成预 定的任务,也就是说应该确定系统的物理配置方案, 并且进而确定组成系统的每个程序结构。 系统设计阶段(确定系统具体实施方案) 、结构设计阶段(确定软件结构) 模块独立:内聚和耦合 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统 低 ------------------------ 期合性 *高 强 ---------------------- 櫃块独立性 --------------------------- 勃 内聚(Cohesion ): —个模块内各元素结合的紧密程度 高 < 内聚性 ------------------------- 低 强 ------------------------ 模块 ------------------------------- 弱 功能单? 功能分散 面向数据流的设计方法:变换流和事务流 详细设计: 任务:确定应该怎样具体的实现所要求的系统, 也就是说经过这个阶段的设计工作应该得出 对目标系统的精确描述, 从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书 写的程序。 软件生命周期: 问题定义(确定题目) 可行性研究 需求分析 ,「概要设计 系统设计Y I 详细设计 「编码和单元测试 系统实现 J 过程设计的工具(程序流程图、盒图、PAD 图、判定表、判定树)面向数据结构的设计方法(jackson 方法): 程序复杂程度的定量(McCabe方法):1、V(G)=E-N+2 (E是流图中边的条数,N是结点数)2、V (G)=P+1 (P是流图中判定结点的个数)3、流图中的区域数等于环形复杂度。 编码单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 集成测试:在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。白盒测试技术(逻辑覆盖、基本路经测试)白盒测试时将程序看作是一个透明的盒子,也就是说测试人员完全了解程序的内部结构和处理过程。所以测试时按照程序内部的逻辑测试程序、检验程序中的每条通路是否都能按预定的要求正确工作。白盒测试又称为结构测试。语句覆盖就是设计足够的调试用例,使得程序中的每个语句至少执行一次。判定覆盖就是设计足够的测试用例,使得程序中每个判定的取“真”分支和取“假”分支至少都执行一次,判定覆盖又称分支覆盖条件覆盖就是设计足够的测试用例,使得程序判定中的每个条件能获得各种可能的结果。判定/条件覆盖就是设计足够的测试用例,使得判定中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。 条件组合覆盖就是设计足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次。 基本路经测试: 黑盒测试技术(等价划分) 黑盒测试时完全不考虑程序内部的结构和处理过程,只按照规格说明书的规定来检查程序是否符合它的功能要求。黑盒测试是在程序接口进行的测试,又称为功能测试。 1 、黑盒测试检查的主要方面有:程序的功能是否正确或完善;数据的输入能否正确接收,输出是否正确;是否能保证外部信息(如数据文件)的完整性等。 用黑盒法设计测试用例时,必须用所有可能的输入数据来检查程序是否都能产生正确的输出2、等价类划分等价类的划分在很大程度上依靠的是测试人员的经验,下面给出几条基本原则: (1)如果输入条件规定了取值范围,则可划分出一个有效的等价类(输入值在此范围内) 和两个无效的等价类(输入值小于最小值、输入值大于最大值)。 (2)如果输入条件规定了输入数据的个数,则可相应地划分出一个有效的等价类(输入数据的个数等于给定的个数要求)和两个无效的等价类(输入数据的个数少于给定的个数要求、输入数据的个数多于给定的 个数要求)。 3)如果输入条件规定了输入数据的一组可能的值,而且程序对这组可能的值做相同的处 理,则可将这组可能的值划分为一个有效的等价类,而这些值以外的值划分成无效的等价类。(4)如果输入条件规定了输入数据的一组可能的值,但是程序对不同的输入值做不同的处理,则每个输入值是一个有效的等价类,此外还有一个无效的等价类(所有不允许值的集合)(5)如果输入条件规定了输入数据必须遵循的规则,则可以划分一个有效的等价类(符合规则)和若干个无效的等价类(从各种角度违反规则)。维护(改正性维护、适应性维护、完善性维护、预防性维护)决定软件可维护性因素(可理解性、可测试性、可修改性、可移植性、可重用性)面向对象方法学优点:1、与人类习惯的思维方法一致2、稳定性好3、可重用性好4、较易开发大型软件产品5、可维护性好 对象模型1、关联2、聚集3、泛化4、依赖和细化