软件工程导论习题1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程导论习题
软件生命周期每个阶段的基本任务:1问题定义2可行性研究3需求分析4总体设计5详细设计6编码和单元测试7综合测试8软件维护
2.软件过程生命周期模型分几个模型?瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型。
3.数据流图的定义;是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
4.数据字典由四类元素的定义组成;(1)数据流(2)数据流分量(即数据元素)(3)数据存储(4)处理。
5数据模型中包含3种相互关联的信息:数据对象,数据对象的属性及数据对象彼此间相互连接的关系6.模块独立的概念是模块化,抽象。信息隐蔽和局部化概念的直接结果。开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块立
7.模块独立性重要有两条理由:第一,有效的模块化(即具有独立的模块)的软件比较容易开发出来。第二,独立的模块比较容易测试和维护。
8.模块的独立程度的标准是内聚和耦合
9.耦合和内聚哪个最高最低,哪个最强最弱?功能内聚是最高程度的内聚,耦合程度最低,高程度的耦合是内容耦合,最弱的是非直接耦合。
10.启发式规则:1改进软件结构提高模块独立性,2模块规模应该适中3深度,宽度,扇出和扇入都应该适当4模块的作用域应该在控制域之内5力争降低模块接口的复杂程度6设计单入口单出口的模块7模块功能应该可以预测
11.人机界面设计的4个设计问题:1系统响应时间2用户帮助设施3出错信息处理4命令交互
12.软件系统的测试过程的几个步骤:1模块测试2子系统测试3系统测试4验收测试5平行运行
13.测试重点从5个方面对模块进行测试:1模块接口2局部数据结构3重要的执行通路4出错处理通路5边界条件。
14.非渐增式测试一下子把所有的模块放在一起,并把庞大的程序作为一个整体来测试,测试者面对的情况十分复杂。。。渐增式测试与“一步到位”的非渐增式测试相反,它把程序划分成小段来构造和测试,在这个过程中容易定位和改正错误,对接口可以进行更彻底的测试。
15.白盒测试技术中逻辑覆盖分那些等级?1语句覆盖2判定覆盖3条件覆盖4判定/条件覆盖5条件组合覆盖6点覆盖7边覆盖8路径覆盖
16.黑盒测试技术几种?1等价划分2边界值分析3错误推测
17.软件再工程过程?1库存目录分析2文档重构3逆向工程4代码重构5数据重构6正向工程
18.软件成分的重用级别:(1)代码重用(2)设计结果重用(3)分析结果重用
大题
1.为什么说喷泉模型较好地体现了面向对象软件开发过程无缝和迭代的特性?
迭代是软件开发过程中普遍存在的一种内在属性。一般来说,使用面向对象方法学开发软件时,工作重点应该放在生命周期中的分析阶段。由于在整个开发过程中都使用统一的的软件概念“对象”,所有其他概念都是围绕对象组成的,目的是保证分析工作中得到的信息不会丢失或改变,因此,对生命周期各阶段的区分就不重要了、不明显了。由于各阶段都使用统一的概念和表示符号,因此,整个开发过程都是吻合一致的,或者说是“无缝”连接的,这自然就很容易实现各个开发步骤的多次反复迭代,达到认识的逐步深化。
2.在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究实质上是要进行一次大大地压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。应该从3个方面研究,一技术可行性使用现在的技术能实现这个系统吗?
二经济可行性这个系统的经济效益能超过它的开发成本吗?三操作可行性系统的操作方式在这个用户组织内行得通吗?必要时还要从法律、社会效益等更广泛的方面研究。
步骤:1复查系统规模和目标2研究目前正在使用的系统3导出新系统的高层逻辑模型4进一步定义问题5导出和评价选择的解法6推荐行动方针7草拟开发计划8书写文档提交审查
3.为什么要进行需求分析?通常对软件系统又哪些要求?
需求分析的任务不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
在需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准确的描述软件需求。只有用户知道自己最需要什么,但是他们并不知道怎样用软件实现自己的需求,用户必须把他们对软件的需求尽量准确、具体的描述出来。分析员知道怎样用软件实现人们的需求,但是在需求分析开始时他们对用户的需求并不十分清楚,必须通过与用户的沟通获取用户对软件的需求。
需求分析和规格说明是一项十分艰巨复杂的工作。
1功能要求:指定系统必须提供的服务
2性能要求:指定系统必须满足的定时约束或容量约束,通常包括速度、信息量速率、主存容量、磁盘容量、安全性等方面的需求
3可靠性和可用性需求:可靠性需求定量地指定系统的可靠性,可用性和可靠性密切相关,它量化了用户可以使用系统的程度
4出错处理需求;当应用系统发现它自己犯了一个错误时所采取的行动
5接口需求:描述应用系统与它的环境通信的格式
6约束:设计约束或实现约束描述在设计或实现应用系统是应遵守的限制条件
7逆向需求:说明软件系统不应该做什么
8将来可能提出的要求:应该明确地列出那些虽然不属于当前系统开发的范畴,但是据分析将来很可能会提出来的要求
4.等价划分是怎样划分的?哪些是有效等价类和无效等价类?
等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。
(1)如果规定了输入值的范围,则可划分出一个有效的等价类(输入值在此范围内),两个无效的等价类(输入值小于最小值或大于最大值)。
(2)如果规定了输入数据的个数,则类似地也可以划分出一个有效的等价类和两个无效的等价类。
(3)如果规定了输入数据的一组值,而且程序对不同输入值做不同的处理,则每个允许的输入值是一个有效的等价类,此外还有一个无效的等价类(任一个不允许的输入值)。
(4)如果规定了输入数据必须遵循的规则,则可以划分出一个有效地等价类(符合规则)和若干个无效的等价类(从各种不同的角度违反规则)
(5)如果规定了输入数据为整型,则可以划分出正整数、零和负数等3个有效类。
(6)如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表
有效输入的等价类
(1)1~6个数字字符组成的数字串(最高位数字不是零)
(2)最高位数字是零的数字串
(3)最高位数字左邻是负号的数字串
无效的等价类
(1)空字符串(全是空格)
(2)左部填充的字符既不是零也不是空格
(3)最高位数字右面由数字和空格混合而成
(4)最高位数字右面由数字和其他字符混合而成
(5)负号和最高位数字之间又空格