当前位置:文档之家› 软件工程导论习题1

软件工程导论习题1

软件工程导论习题软件生命周期每个阶段的基本任务: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)负号和最高位数字之间又空格5.软件的可维护性与哪些因素有关?在软件开发过程中应该采取哪些措施来提高软件产品的可维护性?1可理解性:表现为外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。

2可测试性:诊断和测试的容易程度取决于软件容易理解的程度3可修改性:软件容易修改的程度和设计原理和启发规则则直接有关。

4可移植性:把程序从一种计算环境(硬件配置和操作系统)转移到另一中计算环境的难易程度。

5可重用性:同一事物不做修改或稍加改动就再在不同环境中多次重复使用在每个阶段结束前的技术审查和管理复审中,应该着重对可维护性进行复审,在复审过程中,应该对将来要改进得部分和可能要改的部分加以注意指明,应该讨论软件的可移植性问题,考虑可能影响软件维护的系统界面。

在设计和编码过程中应该尽量使用可重用的软件构件,每个测试步骤都可以暗示在软件正式交付使用之前,程序中可能需要做预防性维护的部分。

,在完成了每项维护工作之后,都应该对软件维护本身仔细认真地复审。

6.面向对象设计应该遵循哪些规则?简述每条准则的内容,并说明遵循每条准则的必要性。

(1)模块化:面向对象软件开发模式,很自然地支持了把系统分解成模块的设计原理:对象就是模块。

它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。

(2)抽象:不仅支持过程抽象而且支持数据抽象,类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明,接口规定了外界可以使用的合法操作符,使用者通过操作符使用类中定义的数据,这类抽象称为规格说明抽象。

(3)信息隐蔽:信息隐蔽通过对象的封装性实现,类结构分离了接口和实现,从而支持了信息隐蔽。

(4)弱耦合:是一个软件结构内不同模块之间互连的紧密程度。

弱耦合是优秀设计的一个重要标准,这有助于使得系统中某一部分的变化对其他部分的影响家昂到最低程度。

两类耦合,一,交互耦合对象之间的耦合通过消息连接来实现,这就是交互耦合。

二,继承耦合,与交互耦合相反,一个提高继承耦合程度(5)强内聚:内聚衡量一个模块内各个元素彼此结合的紧密程度,也可以把内聚定义为设计使用的一个构件内的各个元素,对完成一个定义明确的目的所作出的贡献程度。

(6)可重用:软件重用是提高软件开发生产率和目标系统质量的重要途径。

7.叙述能力成熟度的5个等级的特点?1初始级:软件过程的特征是无序的,有时甚至混乱。

处于这个最低成熟度等级的软件机构,基本上没有健全的软件工程管理制度,其软件过程完全取决于项目组的人员配备,所以具有不可预测性。

人员变了过程也随之改变。

过程能力是不可预测的,软件过程是不稳定的,产品质量只能根据相关人员的个人工作能力而不是软件机构的过程能力来预测。

2可重复级:软件机构建立了基本的项目管理过程,可跟踪成本、进度、功能和质量。

软件机构针对所承担的软件项目建立了基本的软件管理控制制度,通过对以前项目的观察和分析,可以提出针对现行项目的约束条件。

软件机构的过程能力概括为,软件项目的策划和跟踪是稳定的,已经为一个有纪律的管理过程提供了可重复以前成功实践的项目环境。

3已定义级:软件机构已经定义了完整的软件过程(过程模型),软件过程已经文档化和标准化。

有一个固定的的过程小组从事软件过程活动,无论是管理活动还是工程活动都是稳定的,软件开发的成本和进度以及产品的功能和质量都受到控制,而且软件产品的质量具有可追溯性。

4已管理级:软件机构对软件过程(过程模型和过程实例)和软件产品都建立了定量的质量目标,所有项目的重要的过程活动都是可度量。

软件过程是可度量的,软件过程在可度量的范围内运行。

5优化级:软件机构集中精力持续不断地改进软件过程,是一个以防止出现缺陷为目标的机构,它有能力识别软件过程要素的薄弱环节,并有足够的手段改进它们。

软件过程是可优化的。

8.P138 9. P31710.成本效益分析的货币的时间价值、投资回收期、纯收入?n也就是p元钱在n年后的价值。

反之,如果n年后能收入F元钱,那么这些钱现在的价值是:P=F/(1+i)n修改库存清单系统两年以后可以节省4225.12元,比最初的投资5000元还少774.88元,第三年以后将在节省1779.45元。

相关主题