软件需求分析与设计复习题
一.判断
1、( × ) 程序设计语言种类很多,在进行软件开发时可以随便选择一种语言进行编码。
2. ( x ) 软件需求规格说明书在软件开发中具有重要的作用,是软件可行性分析的依据。 3、(× ) 在软件开发的各个阶段进行过程中,增加人员肯定会对整个项目提前完成有好处。 4.( x ) 好的测试用例应能证明软件是正确的。
5.( x ) 软件功能测试的测试用例主要是由需求阶段的功能说明部分转化而来。 6、( x ) CoCoMo模型可以用来估算系统的工作量和软件开发所需时间。 7.( x ) 有时为了测试的方便,而可以局部地修改软件系统。 8、( v ) OOA方法的核心思想是利用面向对象的概念和方法为软件需求建造模型,大致步骤是识别对象(属性和方法),识别类及其结构,定义对象之间的消息传递等。
9.( x ) 面向对象方法更适合于软件重用的根本原因在于它是软部件唯一的合成技术。 10、( v ) 系统需求分析员应该具有开发软、硬件系统的经验并且了解用户领域的知识。 11.( x ) 在软件的生命周期中,工作量最大的一个阶段就是编写程序。 12、( x )软件运行正确,可见软件中没有缺陷(fault)。
13.( x ) RUP(Rational Unified Process:统一软件过程)本质上是轻量级的软件过程规范。 14、( v )软件失败(failure)在系统交付之前和交付之后都可能被发现。
15.( x ) 基准测试(benchmark test)是非正式的用户确认和验收测试。 16、( x )开发人员和客户对软件质量因素的认可是完全一致的。
17.( x ) UML语言支持面向对象的主要概念,并与具体的开发过程相关。 18、( v )里程碑(milestone)就是开发过程中的某个活动(activity)。
19.( v ) 好的软件测试是用少量的测试用例运行程序,发现被测程序尽可能多的错误。 20、( x )在软件开发中一定要不惜代价避免风险。
21.( v ) 在需求分析中,分析员要从用户那里解决的最重要的问题是明确软件做什么。
对功能的具体实现。
22.( v ) 用例图定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部 23.( v ) 软件过载缺陷就是当运行程序时,软件内部定长的数据结构被溢出,系统任务无法 24.( v ) 结构化程序设计方法能改善程序结构,提高程序的运行效率。
二、选择 从供选择的答案中,选出正确的答案填入( )内
1.白盒测试法常用的方法是A方法,黑盒法中常用的方法是B方法和C方法,C方法根据输入的关系设计测试用例。供选择的答案: ( ② ③ ⑤ )
A、B、C:①综合测试 ②路径测试 ③等价分类 ④归纳测试 ⑤因 果 图 ⑥追 踪 ⑦回 溯 ⑧排 错 2. 软件工程的出现是由于( A )。
A.软件危机的出现 B. 计算机硬件技术的发展 C.软件社会化的需求 D. 计算机软件技术的发展
3. 系统技术可行性研究涉及的技术应该是( D )技术。
A.现在已提出的 B. 现在在研究的C.不一定可以获得的 D. 一定可以获得的
4.模块综合测试的方法有A和B两种,A是从下层模块向上层模块依次结合进行测试,为测试需要C以便调用被测模块,但从开发的初期就能并行进行测试作业,并且每个模块的D都很容易做,是这种方法的优点。其缺点是直到测试的最后阶段,程序的缺陷都难以发现。B是从上层模块向下层模块依次结合进行测试,为了测试需要设计E模块模拟被测模块所调用的下级模块。
供选择的答案: ( A:⑦ B:⑥ C:⑥ D:① E: ① ) A、B、D:①功能测试 ②组合测试 ③综合测试 ④可靠性测试 ⑤结构测试 ⑥自顶向下测试 ⑦自底向上测试
C、E: ①仿真 ②模拟 ③生成 ④转贮 ⑤跟踪
⑥驱动模块 ⑦宏模块 ⑧支持模块
1
5.软件设计中划分程序模块通常遵循的原则是要求各模块间的耦合性尽可能________,三种可能的模块耦合是:__________:例如,一个模块直接引用另一模块中的数据。 __________:例如,一个模块把开关量作为参数传送给另一模块。 __________:例如,一个模块把数值量作为参数传送给另一模块。
其中,__________的耦合性最强。 ( ② ⑧ ⑨ ⑤ ⑧ ) 6.软件是计算机系统中与硬件相互依存的部分,它是包括(A)、(B)及(C)的完整集合。其中,(A)是按事先设计的功能和性能要求执行的指令序列,(B)是使程序能够正确操纵信息的数据结构,(C)是与程序开发、维护和使用有关的图文资料。
A,B,C:① 软件 ② 程序 ③ 代码 ④ 硬件
⑤ 文档 ⑥ 外设 ⑦ 数据 ⑧ 图表
填入答案( A: ② B:⑦ C: ⑤ ) 7.软件测试的目的是A[ ]。为了提高测试的效率,应该B[ ]。使用白盒测试方法时,测试数据应该根据C[ ]和指定的覆盖标准。一般来说,与设计测试数据无关的文档是D[ ],软件测试工作最好由E[ ]来承担,以提高集成测试的效果。
A: (1)评价软件的质量 (2)发现软件的错误 (3)找出软件中的所有错误 (4)证明软件是正确的
B:(1)随机的选取测试数据 (2)取一切可能的输入数据作为测试数据
(3)在完成编码以后制订测试计划 (4)选择发现错误的可能性大的数据作为测试数据 C:(1)程序的内部逻辑 (2)程序的复杂程度
(3)使用说明书 (4)程序的功能
D:(1)需求规格说明书 (2)总体设计说明书 (3)源程序 (4)项目开发计划
E:(1)该软件的设计人员 (2)该软件开发组的负责人
(3)该软件的编程人员 (4)不属该软件开发组的软件设计人员 填入答案:(A: 2 B:4 C: 1 D: 3 E: 4 )
三、名词解释、简答与论述
1、软件工程的定义:软件工程是一种系统工程,不只包括对技术问题的分析与解决,还包括对开发过程和给参与者分配合适的角色等方面的管理。
2、说明错误、缺陷、失败的含义与联系。
答:错误,是进行软件开发过程中人为出错造成的。
缺陷:当人们在进行软件开发活动的过程中出现错误时,就会引起缺陷。
失败:是指系统违背了它应有的行为。可能会在系统交付前或交付后被发现,也可能在测试过程中或者在运行和维护过程中被发现。
(1)单个错误可能产生多个缺陷,并且缺陷可能驻留在任何开发或维护的产品中,如设计人员可能错误理解某个需求,创建处于需求分析人员和用户实际意图不相符的设计,这个设计缺陷是一种错误的编码,可能导致其他缺陷,像不正确的代码或用户手册中不正确的描述等。
(2)并非每一个缺陷都对应于一个失败,如果不执行缺陷代码或者不进入某个特定状态缺陷就不会引起失败。
(3)缺陷是系统的内部视图,这是从开发人员角度看问题而失败是系统的外部视图,它是用户所看到的问题。
3、软件质量应从哪几个方面来衡量?论述之。
答:(1)产品的质量:用户在测量软件质量的时候,用户从故障数目和故障类型等外部特性进行评价,如将失败分为次要的、主要的、灾难性的。设计和编写代码倾向于考虑内部特性,尤其是,从业人员通常会把故障的数目和类型看作产品质量的证据。
(2)生产该产品的过程的质量:任何一个活动出了差错都会影响产品的质量,对过程进行建模的优点是我们能够研究它,并寻找方法对他加以改进。
(3)在产品将使用的商业环境背景下的产品的质量
4、现代软件工程大致包含的几个阶段及各个阶段文档(P23-24) 答:
2
程编单系 可 序 写 元 统 行设程测 性 需计 序 试 集系系系成统统统测测交维试 试 付 护 SE实践发生变化的(七个)关键因素是什么? 分5、使现代求(1)商用产品投入市场时间的紧迫性。(2)计算技术在经济中的转变:更低的硬件成本,更高的开发和维护成本。 析 分(3)功能强大的桌面计算的可用性。 (4)广泛的局域网和广域网。 析 (5)面向对象技术的采用及其有效性。 (6)使用窗口、图标、菜单和指示器的图形用户界面 (7)软件开发瀑布模型的不可预测性。
6、请写出下列术语的英文全称或缩写:能力成熟度模型:CMM,极限编程:ExtremeProgramming,简称XP
7、瀑布模型及各阶段文档,优缺点?
答:需求分析 SRS
系统设计 系统设计文档如软件结构图 程序设计 模块功能算法和数据描述文档 编码 源程序和注释 单元测试和集成测试 测试报告 系统测试 测试报告 验收测试 测试报告 运行维护 维护报告
优点:(1)它的简单性使得开发人员很容易向不熟悉软件开发的客户作出解释。
(2)明确的表示出为了下一阶段的开发,那些中间产品是必须的。用里程碑明确表示出一个阶段的 结束,并伴随着提交物。
(3)瀑布模型是其他复杂模型的基础。
缺点:⑴最大的问题是它不能反映实际代码的开发过程。
⑵面临软件变动时, 该模型无法处理实际过程中的重复开发问题----软件是一个创造的过程,不是
一个制造的过程。 ⑶文档转换有困难。 ⑷没有将开发看成一个迭代的过程。 ⑸难以适应商业环境和操作环境的变化。 8、论述分阶段开发模型的含义, 分类及特点。
答:分阶段开发模型:系统被设计成部分提交, 每次用户只能得到部分功能, 而其他部分处于开发过程中. 分类:增量开发:系统需求按照功能分成若干子系统,开始建造的版本是规模小的、部分功能的系统,后续版本添加包含新功能的子系统,最后版本是包含全部功能的子系统集。
迭代开发:系统开始就提供了整体功能框架,后续版本陆续增强各个子系统,最后版本使各个子系统的功能达到最强.
9、在所有的软件开发过程模型中,你认为哪些过程给予你最大的灵活性以应对需求的变更?
1设计对于分析模型应该是可跟踪的:软件的模块可能被映射到多个需求上。 2设计结构应该尽可能的模拟实际问题。 3设计应该表现出一致性。 4不要把设计当成编写代码。
5在创建设计时就应该能够评估质量。 6评审设计以减少语义性的错误。
10、什么是项目进度?项目进度是对特定项目的软件开发周期的刻画。包括对项目阶段、步骤、活动的分解,对各个活动的交互关系的描述,以及对各活动完成时间的初步估算。
11、软件人员应该具备的能力是什么?
答:(1)完成工作的能力 (2)对工作的兴趣 (3)开发类似应用的经验 (4)使用类似工具或语言的经验 (5)使用类似开发环境的经验 (6)使用类似技术的经验 (7)培训 (8)与他人交流的能力
3