软件需求分析与设计复习题-软件工程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件需求分析与设计复习题
一.判断
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:①仿真②模拟③生成④转贮⑤跟踪
⑥驱动模块⑦宏模块⑧支持模块
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)
答:
(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)与他人交流的能力
(9)与他人共同承担责任的能力(10)管理技能
12、软件项目组织的基本结构?主程序员组式的小组结构有什么优点?
答:(1)主程序员负责制组:简化交流,更快地作出决定(2)无私编程方法:所有小组成员共同决定,共同承担责任。
13、专家估算法的大致含义?算式估算法的大致含义?
答:专家估算法:依赖于专家判断,一些是非正式的技术,基于管理人员具有的类似项目的经验。
因此,预测的准确性基于估算者的能力、经验、客观性和洞察力。
算式估算法:其中S是系统规模估计量,a,b,c是常量,X是从x1到xn的一个成本因素的向量,m是基于这些因素的一个调整因子。
14、试述COCOMO模型的三个阶段基本工作原理或含义。
答:阶段1,项目通常构建原型以解决包含用户界面、软件和系统交互、性能和技术成熟性等方面在内的高风险问题。
COCOMO用应用点来估计规模。
阶段2(早期设计阶段),COCOMO采用功能点作为对规模的估计量。
阶段3(后体系结构阶段),COCOMO规模用功能点或代码行的形式来表述。
15、什么是风险?有几种降低风险的策略?
答:风险是指一种具有负面后果的、人们不希望发生的事件。
降低风险的策略:(1)通过改变性能或功能需求,避免风险
(2)通过把风险分配到其他系统中,或者购买保险以便在风险成为事实时弥补经济上的损失,从而转移风险。
(3)假设风险会发生,接受并用项目资源控制风险。
16、需求的含义是什么? 需求是对期望行为的表达。
17、用例的概念。
Use Case(用例)是一个UML中非常重要的概念:在不展现一个系统或子系统内部结构的情况下,对系统或子系统的某个连贯的功能单元的定义和描述。
18、举例说明获取需求时的需求分类及相互关系。
答:A必须满足的需求B很值得要得但不是必须的C可要可不要的。
19、什么是功能性需求和非功能性需求/质量需求?
答:功能性需求根据要求的活动(如对输入的反应、活动发生时每一个实体之前的状态和之后的状态等等)来描述需要的行为。
非功能性需求(质量需求)描述一些软件解决方案必须拥有的质量特性,如快速响应的时间,易使用性、高可靠性或低维护代价等。
20、什么是设计?概念设计?技术设计?
设计是将问题转换为解决方案的创造性过程,对解决方案的描述也称为设计。
概念设计描述软件的结构和功能,告诉客户系统能够做什么。
技术设计软件功能和接口的实现方法,告诉程序员怎样实现系统能做什么。
21、三种设计层次及其关系?
答:A:结构设计,由软件需求中的系统能力与系统部件关联起来而得到软件整体结构的过程。
包含模块,模块之间的联系,从子系统创建系统的相关操作。
B:代码设计,各个部件的算法、数据结构的设计。
构件=编程语言原语+数据操纵原语+组装机制。
C:运行设计:最底层的设计—内存分配、数据格式、位模式等。
自顶向下设计是有益的:首先涉及体系结构,然后进行代码设计,最后是执行设计。
随着设计人员对解决方案及其含义有更多的理解,他们就会往返于各层次之间。
22、论述设计用户界面应考虑的问题。
(242页)
答:(1)隐喻:可以认识和学习的基本术语。
(2)头脑中的模型:数据、功能、任务和角色的组织和表示。
(3)模型的导航规则:如何在数据,功能,活动和角色中移动。
(4)外观:系统向用户传输信息的外观特性。
(5)感觉:向用户提供有吸引力的体验和交互技术。
(6)文化问题:信仰,价值观、道德规范、传统、风俗和传说。
(7)用户偏好:个人喜好。
23、耦合与内聚的概念及层次划分?
耦合是两个软件部件之间的相关联程度。
内聚是软件部件内部的关联程度。
24、什么是面向对象?OO是一种软件开发方法,它将问题及其解决方法组织成一系列独立的对象,数据结构和动作都被包括在内。
25、OO开发有何优势?
答:语言的一致性:可以用同样的术语描述问题及其解决方案类、对象、方法、属性和行为。
在整个开发过程中,我们应该自始至终保持术语和视角的一致性。
过程的一致性:OO的过程使用数据和行为的封装形成的独立的单元,它从需求到应用实现和测试用相同语义的概念来表示系统。
26、OO开发过程有几个步骤?
答:OO需求分析,OO设计(系统设计:确定类、对象及它们之间的关系;程序设计:在模型中插入计算特性,确定类库的细节,考虑非功能性需求),OO编码和测试
27、用例图的组成和画法
答:参与者是与系统相关的实体所扮演的一种角色。
用例是对系统某些方面的功能性描述,他对参与者是可见的。
扩充扩展用例,说明不同的或更深层测的视角。
使用实际上对一定以用例的复用。
28、熟悉类图中各个类之间的基本关系分类
答:泛化(继承),关联,导航,依赖,聚合,组装
29、熟悉类图的组成和基本画法
答:类图(Class diagram)由许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和它们的内容互相连接)组成。
类图可以组织在(并且属于)包中,仅显示特定包中的相关内容。
类图(Class diagram)是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。
类图(Class diagram)最基本的元素是类或者接口。
30、为什么说编码工作是纷繁复杂甚至令人气馁?
答:(1)设计对于编码来说并不总是简单明了的。
(2)编码应该是可懂的。
(3)考虑重用。
31、一般性的编程原则应该从哪三个方面考虑?(340-344页)
答:(1)控制结构:体系结构和设计提出了很多组件的控制结构,当设计转换成代码时,希望能保留住这些内容。
①重组可以帮助理解。
②模块化易于理解测试和维护。
③保持结构的通用性。
④部件之间的耦合或依赖关系必须是可见的。
(2)算法:编写代码时,程序设计通常会制定一些算法。
(3)数据结构:编写程序时,应该安排数据的格式并进行存储,保持程序简单易懂,用数据结构确定程序结构。
32、在编写程序内部文档时,除了HCB外,还应添加什么注释信息?
答:(1)其他程序注释:段落注释;每次修改之后要更新;注释必须要有新的信息;边写边注释。
(2)有意义的变量名和语句标记。
(3)安排格式以增强理解。
(4)文档化数据。
33、什么是极限编程(XP)? 是一种轻量级的软件开发方法论,属于敏捷开发方法。
XP从实践中来,是对实践的总结,也是经过实践检验的,其主要特征是要适应环境变化和需求变化,充分发挥开发人员的主动精神。
XP承诺降低软件项目风险,改善业务变化的反应能力,提高开发期间的生产力,为软件开发过程增加乐趣等等。
34、解释设计和程序实现之间的关系,为什么说在设计和实现之间保持匹配很重要,可以采取哪些措施保持这种一致性?(本题没有固定答案,请结合所学知识回答,以下为答题要点)
答:软件设计是应用各种各样的技术和原理,并用它们足够详细的定义一个设备、一个程序或系统的物理实现的过程。
软件的设计是一个将需求转变为软件陈述(表达)的过程。
系统通过逐步求精使得设计陈述逐渐接近源代码,有两个基本步骤:初步设计和详细设计。
系统实现是MIS新系统开发工作的最后一个阶段。
它是将结构化系统设计的成果变成可实际运行的系统的过程。
主要工作包括:系统平台的建立,数据库的建立,应用程序设计与编码,程序测试与系统调试,试运行,文档整理与验收(鉴定)等。
(1) 设计的构件和源程序构件要直接对应, 以体现设计中的低耦合、高内聚、良好借口等设计的特色。
(2) 作为程序员,要注意“设计文档并不总是与编码直接对应”,在克服困难圆满完成设计与源代码实现的一致性的同时,要同时实现很多其他特性,比如源代码的易读性和可重用性等设计特色。
35、几种主要的软件缺陷类型是什么?
答:⑴算法缺陷:由于处理步骤中的某些错误,使得对于给定的输入,构件的算法或逻辑没有产生适当的输出。
⑵语法缺陷⑶计算缺陷和精度缺陷:一个公式的实现是错误的,或者计算结果没有达到要求的精度。
⑷文档故障:是指文档与程序实际做的事情不一致。
⑸压力故障/过载故障:填充数据结构时超出了规定的能力。
⑹能力故障/边界故障:系统活动到达指定的极限时,系统性能会变得不可接受。
⑺计时故障/协调故障:开发实时系统时,几个同时执行的或按仔细定义的顺序执行的进程之间的协调问题,当协调这些事件的代码不适当时发生协调故障。
⑻吞吐量故障/性能故障:系统不能以需求规定的速度执行。
⑼硬件和系统软件故障:提供的硬件和系统软件实际上并没有按照文档中的操作条件和步骤运作。
36、测试的各个阶段及其任务?
构件与系统是否能够按照评估,以确些软件和硬需求描述检使用环境中
中的其他构系统和程序设定集成的系件需求的剩查该系统。
测试该系统。
件隔离,对计规格说明中统是否确实余部分进行
其本身进行描述的那样共执行需求规比较。
测试。
同工作。
格说明中描
述的功能。
37、测试的方法--黑盒、白盒的概念?
黑盒:内容/结构未知,只测试测试对象的功能性。
测试的目标确信每种输入都被提交到黑盒观察输出。
优点:不受测试对象的内部结构和逻辑的约束。
缺点:不能以这种方式进行一个完整的测试。
白盒:根据测试对象的结构不同的方式来进行测试。
优点:模块详细测试。
缺点:实际上行不通。
38、什么是测试用例?指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。
内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。
39、什么是单元测试?
答:单元测试:检查集成的系统是否按照需求中指定的那样执行他的功能。
走查:程序员向评审小组提交代码及其相关文档,然后评审小组评论他们的正确性。
检查:评审小组按照事前准备好的关注问题清单来检查代码和文档。
40、集成测试及其主要方法的分类及其含义?
答:集成测试将集成的构件与非功能系统需求进行比较。
分类: ⑴自低向上集成(驱动程序)。
优点:易生成测试用例;适合于面向对象开发系统;底层为通用模块时比较好。
缺点:顶层设计缺陷为主要的缺陷,不能及时地发现更正。
⑵自顶向下集成(桩)。
优点:顶层模块缺陷尽早发现。
缺点:产生测试用力比较难;需要大量的桩。
41、系统测试的主要步骤及各自含义?
答:系统其他顾客用户
功能软件需求环境
需求需求说明
发挥作用的系统验收并确定的系统验收的系统检查集成的将集成的构根据客户的保证系统按
系统是否按件与非功能需求描述检照他应有的
照需求中指系统需求进查系统。
方式进行。
定的那样执行比较。
行他的功能。
42、什么是系统配置?配置管理?
系统配置是指保证计算机可以正常连接使用所需要的最低系统要求,分软件和硬件两方面。
配置管理是整个开发过程中,用于管理软件产品内容的一系列措施.SCM流程旨在确保在任何时候产品的内容都是已知的、可用的,以及在设计到实施的过程中,产品的功能都是可跟踪的,可以完全控制和保护产品的内容。
(
43、功能测试的含义极其作用?
答:功能测试检查集成的系统是否按照需求中指定的那样执行他的功能。
作用:故障检测
44、性能测试的含义与作用?
答:性能测试将集成的构件与非功能性系统需求进行比较,得到验证过的系统。
作用:测试非功能性需求
45、确认测试, 确认测试分类?(基准测试和引导测试)(447-448页)
答:验收测试是客户对系统的测试,以确保它符合他们对需求的理解,而客户对需求的理解可能与开发人员不同。
基准测试中客户准备一组代表在实际安装后系统运作的典型情况的测试用例。
针对每一个测试用例,客户评估系统的执行情况。
引导测试在实验的环境中安装系统,试验性测试依赖系统的日常工作来测试所有的功能。
46、什么是alpha测试?β测试?测试:在客户进行实际的试验性测试之前先试验这个系统——内部测试。
测试:客户的测试,属于试用性质的非正式的验收测试。
功能测试性能测试验收测试安装测试。