当前位置:文档之家› 软件工程导论简答题整理版

软件工程导论简答题整理版

第一章

4.什么是软件工程?它与软件工程方法学有何关系?

软件过程是为了开发高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

软件过程定义了运用技术方法的顺序,应该交付的文档资料,为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。软件过程是软件工程方法学的3个重要组成部分之一。

7.假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你作出选择的理由。

答:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。

第三章

一列火车最多有两个火车头。只有一个火车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。火车头既可能是内燃机车也可能是电器机车。车厢分为硬座车厢、硬卧车厢和软卧车厢等3种。硬座车厢在所有车厢的前面部分,软卧车厢在所有车厢的后面部分。此外,在硬卧车厢和软卧车厢之间还有一节餐车。

答:jackson图善于描绘复杂事物的组成。用jackson图描绘一列火车的构成的方法至少有两种,一种方法是把火车分为一个车头和两个车头两类,另一种方法是把后车头作为可选的。图3.29给出了描绘一列火车的构成的jackson图。

用Jackson 图描绘一列火车的构成

第四章

3.假设有一个由5000行FORTRAN语句构成的程序(经编译后大约有25000条机器指令),你估计在对它进行测试期间将发生多少个错误?为什么?

答:经验表明,在类似的程序中,单位长度里的错误数Er/Ir近似为常数。美国的一些统计数字告诉我们,通常

0.5ⅹ10-2 <= Er/Ir <= 2ⅹ10-2

也就是说,在测试之前每1000条指令中大约有5-20个错误.

假设在该程序的每1000条指令中大约有10个错误,则估计在对它进行测试期间将发现的错误数为

25000ⅹ10/1000=250

第五章

3、某软件公司拟采取下述措施提高他们开发出的软件产品的可维护性。请判断那些措施是正确的,那些措施不正确。

(1)在分析用户需求时同时考虑维护的问题。

正确。在分析用户需求的同时考虑维护问题,列出将来可能变更或增加的需求,就可以在设计时为将来可能做的修改预先做一些准备,使得在用户确实提出这些维护要求时,实现起来比较容易一些。

(2)测试完程序后,删去程序中的注解以缩短源程序的长度。

不正确。程序中的注解是提高程序可理解性的关键的内部文档,删去程序中的注解必然会降低程序的可读性和可理解性,从而降低软件的可维护性。

(3)在软件开发过程中尽量保证各阶段文档的正确性。

正确。完整准确的文档对提高软件的可理解性有重要贡献,保证文档的正确性是提高软件可维护性的关键。

(4)编码时尽量多用全局变量。

不正确。程序中使用的全局变量多,不仅违背局部化原理而且会使得具有公共环境耦合的模块数量增多,从而降低程序的可理解性,可修改性和可测试性,因此,这样的软件可维护性较差。

(5)选用时间效率和空间效率尽可能高的算法。

不正确。一般说来,效率高的算法的可理解性较差,选用效率尽可能高的算法将降低软件的可维护性。事实上,程序的效率能够满足用户的需求就可以了,没有必要盲目地追求尽可能高的效率。

(6)尽可能利用硬件特点以提高程序效率。

不正确。程序对硬件特点依赖越多,运行程序的硬件变更适应性维护的工作量也就越大。(7)尽可能使用高级语言编写程序。

正确。用高级语言编程时,用户可以给程序变量和程序模块赋予含义鲜明的名字,通过名字能够比较容易的把程序对象和它们所代表的实体联系起来。此外,高级语言使用的概念和符号更符合人的习惯。上述事实都使得用高级语言编写的程序更容易阅读,因此也就更容易维护。

(8)进行总体设计时加强模块间的联系。

不正确。模块间耦合越紧密,程序就越难理解和修改,修改后测试也比较困难。因此,加强模块间的联系将降低软件的可维护性。

(9)尽量减少程序模块的规模。

不正确。程序模块的规模很小,就会使程序中包含的模块很多,这将使模块间的接口数量大

大增加,从而增加了理解,修改和测试程序的难度,降低了软件的可维护性。

(10)用数据库系统代替文件系统来存储需要长期保存的信息。

正确。书籍库系统比文件系统使用起来更方便,更安全,用数据库系统代替文件系统来存储需要长期保存的信息,可减少差错,降低改正性维护需求的数量。此外,使用数据库系统的程序比使用文件系统的程序更容易修改。上述事实表明,用数据库系统代替文件系统来存储需要长期保存的信息,将提高软件的可维护性。

(11)用CASE环境或程序自动生成工具来自动生成一部分程序。

正确。自动生成的程序段没有差错,对软件的改正性维护需求自然将减少。当因用户的需求变更而需要修改程序时,可以先修改相应部分的规格说明,然后用CASE环境或程序自动生成工具自动生成需改动的程序,显然,这样做可以降低维护的工作量。

(12)尽量用可重用的软件构成来组装程序。

正确。可重用的软件构件基本上没有错误,用这样的构件组装成的程序可靠性高,改正性维护需求自然就比较少。此外,可重用的软件构件适应性强,应用范围广,容易使它适应新需求,因此,用这样的构建组装的程序比较容易实现适应性或完善性维护。

(13)使用先进的软件开发技术。

正确。用先进的软件技术开发出来的软件容易理解容易修改容易重用,因此,可维护性较好。(14)采用防错程序设计技术,在程序中引入自检能力。

正确。在程序中引入自检能力可以显著提高软件的可靠性,因此将明显减少改正性维护需求的数量。

(15)把与硬件及操作系统有关的代码放到某些特定程序模块中。

正确。把和硬件及操作系统有关的代码放到某些特定的程序模块中,可以把因环境变化而必须修改的程序代码局限在少数模块内,从而更容易修改和测试。

6.代码重构与正向工程有何相同之处?有何不同之处?

答:代码重构和正向工程都需要重新设计数据结构和算法,并且需要重新编写程序代码,这些是代码重构和正向工程的相同的地方。

通常代码重构并不修改程序的体系结构,它只修改某些模块的设计细节和模块中使用的局部数据结构,并重新编写这些模块的代码。如果修改的范围扩展到模块边界之外并涉及到程序的体系结构,则代码重构变成了正向工程。

第六章习题

3.为什么说夏利牌汽车是小汽车类的特化,而发动机不是小汽车类的特化?

答:夏利牌汽车具有小汽车的全部属性和行为,它只不过是一种特定品牌的小汽车,因此,夏利牌汽车可以从基类“小汽车”派生出来,也就是说,夏利牌汽车是小汽车类的特化。

发动机是组成小汽车的一种零件,小汽车还有车身、车灯、轮子等许多种其他零件,小汽车所具有的许多属性和行为发动机都不具有,因此,发动机不能从小汽车类派生出来,它不是小汽车类的特化。

9.试简历下述订货系统的用例模型。

假设一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。对于每个需要再次订货的零件应该列出下述数据:零件编号,零件名称,订货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的终端把事务报告给订货系统。当某种零件库存数量少于库存量临界值时就应该再次订货。

答:从对这个订货系统的需求可以知道,仓库管理员通过放在仓库中的终端把零件入库、出库事务报告给订货系统,系统接收到事务信息之后应该处理事务;采购员需要使用订货系统提供的产生报表功能,以获取订货报表。综上所述,可以画出下图所示的用例图。

订货系统用例图

第七章习题

2.应该依据什么准则来评价脚本?

答:脚本必须从用户的观点来描述每个重要的功能序列,因此,脚本应该能够说明系统的一类重要功能或具体的使用方法。

3.应该依据什么准则来评价状态图?

答:状态图应该描述所有可能的状态转换。图中每条弧都要有一个引起状态转换的事件。从开始结点(初态)到每个结点(中间状态),以及从每个结点到最终结点(终态),都必须有一条路径。

第八章

3、在面向对象设计过程中为什么会调整对目标系统的需求?怎样调整需求?

答:有两种情况会会导致修改由面向对象分析确定下来的系统需求:一是客户需求或系统外部环境发生了变化;二是分析员对问题域理解不透彻或缺乏领域专家帮助,以致面向对象分析模型不能完整、准确地反映客户的真实需求。

为了调整对目标系统的需求,通常只需简单地修改面向对象分析的结果(例如,增添或删掉一些类,从已有类派生出新类派,调整某些类之间的关系),然后把这些修改反映到问题域子系统中。

6、从面向对象分析阶段到面向对象设计阶段,对象模型有何变化?

答:在面向对象分析阶段建立的对象模型中,对象是对问题空间中实体的抽象。随着软件开发过程进入面向对象设计阶段,这些对象逐渐变成了解空间的实体。

第九章

2.为什么是强类型语言?这类语言有哪些优点?

答:按照编译时对程序中使用的数据进行类型检查的严格程度,可以把程序设计语言划分成两类。如果语言仅要求每个变量或属性隶属于一个对象,则是弱类型的;如果语法规定每个变量或属性必须准确地属于某个特定的类,则这样的语言是强类型的。

强类型的语言主要有两个优点:一是有利于在编译时发现程序错误,二是增加了优化的可能性。因此,强类型语言有助于提高程序的可靠性和运行效率。

4.为什么说参数化类有助于提高可重用性?

答:在实际的应用程序中,往往有这样一些软件元素(即函数、类等软件成分),从它们的逻辑功能看,彼此是相同的,所不同的主要是处理的对象类型不同。

所谓参数化类,就是使用一个或多个类型去参数化一个类的机制,有了这种机制,程序员就可以先定义一个参数化的类模板(即在类定义中包含以参数形式出现的一个或多个类型),然后在使用时把数据类型作为参数传递进来,从而把这个类模板在不同的应用程序中重复使用,或在同一程序的不同部分重复使用。

《软件工程导论》期末考试试题和答案(整理)

一、填空题 1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__ 测试________、运行与维护阶段。 2.按软件的功能进行划分,软件可以划分为系统软件、支撑软件 和应用软件。 3.可行性研究主要集中在以下四个方面经济可行性、技术可行 性、法律可行性和抉择。 4.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。 5.常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的___结构化设计 方法_________,以数据结构为基础构造模块的__jackson方法__________,以对象、类、继承和通信为基础的__面向对象设计方法__________。 6.__数据流图________和__数据字典___共同构成系统的逻辑模型。 7.软件测试的方法有__分析方法________和___非分析方法_______(即黑盒法)。 8.单元测试一般以___白盒_____________测试为主,___黑盒______测试为辅。 9.成本估计方法主要有__自底向上估计________、_自顶向下估计_________和算法模型估 计三种类型。 二、单项选择题 1.下列哪个阶段不属于软件生存周期的三大阶段( C )。 A、计划阶段 B、开发阶段 C、编码阶段 D、维护阶段 2.需求分析是(A )。 A、软件开发工作的基础 B、软件生存周期的开始 C、由系统分析员单独完成的 D、由用户自己单独完成的 3.原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要(B )。 A、明确的需求定义 B、完整的生命周期 C、较长的开发时间 D、熟练的开发人员

《软件工程导论》试题及答案

一, 判断题(正确的在括号内打上"√",错误的打上"×".每题1.5分,共15分) Warnier方法也是一种面向数据结构的设计方法,其逻辑更严格.(×) PAD图在设置了五种基本控制结构后,还允许递归调用. (×) 为了加快软件维护作业的进度,应尽可能增加维护人员的数目.(×) 当验收测试通过,软件开发就完成了.(×) 完成测试作业后,为了缩短源程序的长度应删除程序中的注解.(×) 在进行总体设计时应加强模块间的联系.(×) 系统结构图是精确表达程序结构的图形表示法.因此,有时也可以将系统结构图当作系统流程图使用.(×) 用黑盒法测试时,测试用例是根据程序内部逻辑设计的.(×) 在程序调试时,找出错误的位置和性质比改正该错误更难.(√) 以对象,类,继承和通信为基础的面向对象设计方法(OOD)也是常见的软件概要设计方法之一.(√) 二,单项选择题(每小题2分,共10分) 试判断下列叙述中,哪个(些)是正确的(D) a,软件系统中所有的信息流都可以认为是事务流 b,软件系统中所有的信息流都可以认为是变换流 c,事务分析和变换分析的设计步骤是基本相似的 A,a B,b C,c D,b和c 进行需求分析可使用多种工具,但(B)是不适用的. A,数据流图B,PAD图C,判定表D,数据词典 在详细设计阶段,经常采用的工具有(A). A,PAD B,SA C,SC D,DFD 详细设计的结果基本决定了最终程序的(C) A,代码的规模B,运行速度C,质量D,可维护性 使用白盒测试方法时,确定测试数据应根据(A)和指定的覆盖标准. A,程序的内部逻辑B,程序的复杂程度 C,该软件的编辑人员D,程序的功能 三,多项选择题(每题2分,共10分.注:正确得2分,漏选得1分,多选,错选不得分.) (ABCD)可以作为模块. A,子程序B,函数C,过程D,编译文件 下面哪些测试属于黑盒测试(BCD). A,路径测试B,等价类划分C,边界值分析D,错误推测E,循环测试 下列属于度量效益方法的是(ABCD). A,货币的时间价值B,投资回收期C,收入D,投资回报率 软件维护的策略包括(BCD). A,定期检测维护B,改正性维护C,适应性维护D,完善性维护 下列属于软件测试过程的是(ABE). A,单元测试B,组装测试C,内核测试D,法律验证E,确认测试 四,简答题(每题6分,共24分) 耦合性和内聚性有几种类型其耦合度,内聚强度的顺序如何 答案:低:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合:高 强:功能内聚,信息内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,偶然内聚:弱 请举例说明什么是多态,什么是重载

软件工程导论(第六版)课后习题答案

软件工程导论(第六版)课后习题答案软件工程导论(第六版)课后习题答案 1. 简答题 1.1 软件是如何演变而来的? 软件起源于计算机的发展。最初,计算机只能执行硬件内置的指令,而随着计算机的发展,人们开始意识到可以编写程序来控制计算机的 行为。因此,软件就诞生了。从最初的汇编语言、机器语言编写程序,到高级编程语言的出现,软件也逐渐从简单的指令集合演变为复杂的 程序系统。同时,计算机应用领域的拓展也催生了更多类型的软件, 如操作系统、数据库管理系统、图形界面等。软件工程导论旨在帮助 人们理解和应对软件开发过程中的种种问题和挑战。 1.2 简述软件危机的原因以及软件工程的解决途径。 软件危机指的是在软件开发过程中出现的一系列问题和挑战。其原 因主要包括: (1)软件开发过程中需求不明确或者需求频繁变更; (2)软件项目规模庞大,组织和管理困难; (3)软件开发中缺乏标准化的工程方法和规范; (4)软件开发中技术不成熟、人员培训和素质不足等。 为了应对软件危机,软件工程提出了一系列解决途径:

(1)引入系统化的软件开发过程,如瀑布模型、迭代模型、敏捷 开发等; (2)规范化软件开发活动,如需求分析、软件设计、编码、测试、维护等; (3)建立软件开发的标准和规范,如ISO 9000、CMMI等; (4)提高软件开发人员的专业水平,加强软件工程教育和培训。 1.3 软件工程活动的核心内容是什么? 软件工程活动的核心内容包括需求分析、软件设计、编码、测试和 维护等。 (1)需求分析:确定用户需求,定义软件的功能和性能要求。 (2)软件设计:制定软件的体系结构,并将需求转化为具体的设 计方案。 (3)编码:根据设计方案,使用编程语言实现软件的功能。 (4)测试:验证软件是否符合需求和设计的要求,发现并修复潜 在的问题。 (5)维护:对软件进行改进、优化和修复,确保软件长期稳定运行。 2. 应用题

《软件工程导论》期末考试试题和答案(整理)

《软件工程导论》期末考试试题和答案(整理) 一、填空题 1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__ 测试________、运行与维护阶段。 2.按软件的功能进行划分,软件可以划分为系统软件、支撑软件 和应用软件。 3.可行性研究主要集中在以下四个方面经济可行性、技术可行 性、法律可行性和抉择。 4.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。 5.常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的___结构化设计 方法_________,以数据结构为基础构造模块的__jackson方法__________,以对象、类、继承和通信为基础的__面向对象设计方法__________。 6.__数据流图________和__数据字典___共同构成系统的逻辑模型。 7.软件测试的方法有__分析方法________和___非分析方法_______(即黑盒法)。 8.单元测试一般以___白盒_____________测试为主,___黑盒______测试为辅。 9.成本估计方法主要有__自底向上估计________、_自顶向下估计_________和算法模型估 计三种类型。

二、单项选择题 1.下列哪个阶段不属于软件生存周期的三大阶段( C )。 A、计划阶段 B、开发阶段 C、编码阶段 D、维护阶段 2.需求分析是(A )。 A、软件开发工作的基础 B、软件生存周期的开始 C、由系统分析员单独完成的 D、由用户自己单独完成的 3.原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要(B )。 A、明确的需求定义 B、完整的生命周期 C、较长的开发时间 D、熟练的开发人员 4.软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归 测试过程称为( A )。 A、改正性维护 B、适应性维护 C、完善性维护 D、预防性维护 5.一般说来,投入运行的软件系统中有错误(A )。 A、不是不可以理解的 B、是不能容忍的

长安大学软件工程导论简答题重点习题集

1.何谓软件危机?分析其产生的原因与摆脱危机的方法,你认为现在已经摆脱软件危机了吗?请说明理由。 答:软件危机是计算机软件开发和维护过程中遇到的一系列严重问题。这些问题不仅仅限于所开发出的软件不能正常工作,还包括如何开发软件,如何维护越来越多的现有软件,以及如何满足不断增长的软件需求。 软件危机的出现,究其原因,一方面是由软件本身的特点引起的,如软件越来越复杂,软件故障难于检测,工作量难以估计;另一方面则是因为软件开发和维护方法不当所造成的,如软件的个体化特征太强等。 为了摆脱软件危机所造成的困境,提出软件工程的概念,其主要思路是:要把人类长期以来从事各种工程项目所积累起来的行之有效的原理,概念,技术和方法,特别是人类从事计算机硬件研究和开发的经验教训,应用到软件的开发和维护中来。 我认为我国现在还未完全摆脱软件危机,因为随着经济发展,各行各业对软件人才的需求不断扩大,由于我国的软件人才缺口依旧很大,造成了某些行业内软件开发进度难以预测,软件开发成本难以控制,用户对产品功能难以满足,软件产品质量无法保证,软件产品难以维护,软件缺少适当的文档资料。 2.比较常用软件工程过程模型(瀑布模型,快速原型化模型,快速应用开发模型,渐增模型,螺旋模型)的优缺点。指出各自适用的情况。 答:瀑布模型优点:包括强制性的分阶段的方法,每一阶段都必须提供相应的文档,要求每一阶段的产出物(包括文档)都必须由SQA组进行仔细的检查确认等,因此开发过程便于管理和控制。瀑布模型是一种文档驱动的模型,开发过程中产生的需求规格说明书文档,设计文档,代码文档,以及其他文档如数据库手册,用户手册和操作文档等,对于软件使用和维护是非常必要的。 瀑布模型缺点:该模型将本来非线性的软件开发过程,人为地加以线性化,开发的产品只有交付使用时才能和用户见面,用户的反馈意见只能从需求分析开始从头修改,加大了软件开发的工作量。 快速原型化模型优点:能够开发出真正满足用户需要的软件。 快速原型化模型缺点:若采用原型作为最终产品,不利于软件维护工作。 快速应用开发模型优点:能够快速地完成整个信息系统的开发。 快速应用开发模型缺点:对于大的项目,为建立适当数目的RAD开发小组可能需要大量的人力资源;同时,RAD要求开发人员和用户双方在短期内对完成整个系统的开发达成协议,如果任何一方做不到的话,使用RAD进行开发则不可避免地会失败。 渐增模型优点:每一轮都可以向用户分发布一个高质量的可操作的版本,用户不需要等到最终软件产品被开发出来就可以使用软件的部分功能。由于软件产品不是突然一次性提交给用户使用的,用户可以比较容易接受,并且容易提出中肯的意见。这种方式不要求非常大的初始资金投入。 渐增模型缺点:要求下一轮新增的功能应能够无缝地集成到下一轮系统中去,可能这一点并不容易做到。如果整体结构设计不当,可能会导致整个软件的结构变坏。 螺旋模型优点:它强调可替换性和强约束性,使得螺旋模型支持对现有软件的复用,并且支持始终把软件质量看作一个目标。开发和维护被视为同样的方式。 螺旋模型缺点:主要适合于内部开发。只适合于规模比较大的系统的开发。它是风险驱动的,只有当项目组的成员擅长于进行风险分析时,才有理由采用螺旋模型。

软件工程导论(第六版)部分课后习题-答案

软件工程导论(第六版)部分课后习题-答案软件工程导论(第六版)部分课后习题-答案 一、选择题 1. 答案:B 解析:选择题解析 2. 答案:A 解析:选择题解析 二、判断题 1. 答案:对 解析:判断题解析 2. 答案:错 解析:判断题解析 三、填空题 1. 答案:软件工程 解析:填空题解析 2. 答案:开发、维护 解析:填空题解析

四、简答题 1. 答案:软件需求分析是软件工程的第一步,它主要是通过对用户 需求的调查和分析,确定软件系统需要具备的功能和性能以及相关约 束条件。 解析:简答题解析 2. 答案:软件开发过程中的质量保证主要包括软件测试和代码评审 两个方面。软件测试是通过运行和验证软件系统的过程,以确定其是 否满足预期的需求和标准。代码评审则是对软件代码进行审查和评估,在开发过程中发现和修复潜在的问题和错误。 解析:简答题解析 五、计算题 1. 答案:20 解析:计算题解析 2. 答案:1000 解析:计算题解析 六、案例分析题 1. 答案:软件项目管理是指对软件项目进行规划、组织、分配和控 制的过程。它包括项目范围管理、时间管理、成本管理、质量管理、 风险管理等方面。在一个项目中,软件项目经理负责整体的项目管理 工作,包括资源的分配、进度的控制、风险的管理等。

解析:案例分析题解析 2. 答案:敏捷开发是一种迭代、逐步增量的软件开发方法。它强调 快速、灵活地响应用户需求的变化,通过频繁的迭代和持续的反馈来 逐步完善软件系统。敏捷开发方法注重团队合作、交流和高效的沟通,通过直接面对面的沟通取代冗长的文档和繁琐的流程,提高软件开发 的效率和质量。 解析:案例分析题解析 总结: 本文主要针对《软件工程导论(第六版)》部分课后习题提供了答案 和解析。其中包括选择题、判断题、填空题、简答题、计算题和案例 分析题等多个题型。通过解答这些习题,读者可以进一步加深对软件 工程的理解和掌握。希望本文对读者有所帮助,谢谢阅读。

软件工程导论(整理)

一、软件危机与软件工程 1、软件危机 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.(正常、不正常运行软件都具有这种问题) 2、软件危机的原因 1)软件本身特点造成; 程序规模庞大; 程序复杂性随着程序规模的增加而呈指数上升。 2)软件开发与维护的方法不正确。 主要表现: (a)忽视软件需求分析; (b)认为软件开发就是写程序并使之运行; (c)轻视软件维护; 3、解决软件危机的途径: 1、组织管理:软件开发不是某种个体劳动的神秘技巧,软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。 2、方法:应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。 3、工具:应该开发和使用更好的软件工具。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好. 4、软件工程包括哪7条基本原理? 1. 用分阶段的生命周期计划严格管理; 2。坚持进行阶段评审; 3. 实行严格的产品控制; 4. 采用现代程序设计技术; 5. 结果能清楚地审查; 6. 开发小组的人员应该少而精; 7。承认不断改进软件工程实践的必要性。 5、软件开发流程? 1)、问题定义2)、可行性研究3)、需求分析4)、总体设计5)、详细设计6)、编码和单元测试7)、综合测试8)、软件维护 6、软件开发模型 瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、rational统一过程、敏捷过程与极限编程、微软过程 二、可行性研究

软件工程导论简答题整理版

第一章 4.什么是软件工程?它与软件工程方法学有何关系? 软件过程是为了开发高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 软件过程定义了运用技术方法的顺序,应该交付的文档资料,为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。软件过程是软件工程方法学的3个重要组成部分之一。 7.假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你作出选择的理由。 答:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。 第三章 一列火车最多有两个火车头。只有一个火车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。火车头既可能是内燃机车也可能是电器机车。车厢分为硬座车厢、硬卧车厢和软卧车厢等3种。硬座车厢在所有车厢的前面部分,软卧车厢在所有车厢的后面部分。此外,在硬卧车厢和软卧车厢之间还有一节餐车。 答:jackson图善于描绘复杂事物的组成。用jackson图描绘一列火车的构成的方法至少有两种,一种方法是把火车分为一个车头和两个车头两类,另一种方法是把后车头作为可选的。图3.29给出了描绘一列火车的构成的jackson图。

用Jackson 图描绘一列火车的构成 第四章 3.假设有一个由5000行FORTRAN语句构成的程序(经编译后大约有25000条机器指令),你估计在对它进行测试期间将发生多少个错误?为什么? 答:经验表明,在类似的程序中,单位长度里的错误数Er/Ir近似为常数。美国的一些统计数字告诉我们,通常 0.5ⅹ10-2 <= Er/Ir <= 2ⅹ10-2 也就是说,在测试之前每1000条指令中大约有5-20个错误. 假设在该程序的每1000条指令中大约有10个错误,则估计在对它进行测试期间将发现的错误数为 25000ⅹ10/1000=250 第五章 3、某软件公司拟采取下述措施提高他们开发出的软件产品的可维护性。请判断那些措施是正确的,那些措施不正确。 (1)在分析用户需求时同时考虑维护的问题。 正确。在分析用户需求的同时考虑维护问题,列出将来可能变更或增加的需求,就可以在设计时为将来可能做的修改预先做一些准备,使得在用户确实提出这些维护要求时,实现起来比较容易一些。 (2)测试完程序后,删去程序中的注解以缩短源程序的长度。 不正确。程序中的注解是提高程序可理解性的关键的内部文档,删去程序中的注解必然会降低程序的可读性和可理解性,从而降低软件的可维护性。 (3)在软件开发过程中尽量保证各阶段文档的正确性。 正确。完整准确的文档对提高软件的可理解性有重要贡献,保证文档的正确性是提高软件可维护性的关键。 (4)编码时尽量多用全局变量。 不正确。程序中使用的全局变量多,不仅违背局部化原理而且会使得具有公共环境耦合的模块数量增多,从而降低程序的可理解性,可修改性和可测试性,因此,这样的软件可维护性较差。 (5)选用时间效率和空间效率尽可能高的算法。 不正确。一般说来,效率高的算法的可理解性较差,选用效率尽可能高的算法将降低软件的可维护性。事实上,程序的效率能够满足用户的需求就可以了,没有必要盲目地追求尽可能高的效率。 (6)尽可能利用硬件特点以提高程序效率。 不正确。程序对硬件特点依赖越多,运行程序的硬件变更适应性维护的工作量也就越大。(7)尽可能使用高级语言编写程序。 正确。用高级语言编程时,用户可以给程序变量和程序模块赋予含义鲜明的名字,通过名字能够比较容易的把程序对象和它们所代表的实体联系起来。此外,高级语言使用的概念和符号更符合人的习惯。上述事实都使得用高级语言编写的程序更容易阅读,因此也就更容易维护。 (8)进行总体设计时加强模块间的联系。 不正确。模块间耦合越紧密,程序就越难理解和修改,修改后测试也比较困难。因此,加强模块间的联系将降低软件的可维护性。 (9)尽量减少程序模块的规模。 不正确。程序模块的规模很小,就会使程序中包含的模块很多,这将使模块间的接口数量大

软件工程导论复习题含答案

软件工程导论复习题含答案 软件工程习题集 第1章概述 (一)单项选择题 1.“软件危机”产生的主要原因是(a)。 a.软件日益巨大 b.开发方法不当 c.开发人员编写程序能力差 d.没保护不好软件2.软件就是一种(b)性工业产品。 a.理论 b.科学知识(或逻辑) c.消耗 d.体力 3.需求分析是在(b)进行的。 a.用户 b.用户和分析设计人员之间 c.开发人员内部4.软件的主要结构和功能就是在(a)阶段同意的。 a.分析设计 b.编程 c.测试 d.维护 5.软件就是计算机系统中与硬件相互依存的另一部分,它的组成部分就是(d)。 d.使用和维护人员间 a.程序、数据b.程序、文档c.程序d.程序、数据、文档 6.在软件工程时期,决定软件质量的主要因素是(a) a.管理水平b.个人程序技术c.小组技术水平d.硬件的发展 7.在软件开发模型中,提出最早、应用最广泛的模型是(a)。 a.瀑布模型 b.喷泉模型 c.增量模型 d.螺旋模型 8.瀑布模型把软件生存周期划分为软件定义、软件开发与(c)三个阶段,而每一阶段又可分为若干更小的阶段。 a.详细设计 b.可行性分析 c.运转及保护 d.测试与排错 9.计算机辅助软件工程,简称(d)。 a.sa

b.sd c.sc d.case 10.软件危机是软件产业化过程中出现的一种现象,下述现象中:(c)是其主要表现。 ①软件须要快速增长难以满足用户。②软件开发成本提升。③软件开发进度难以掌控。 ④软件质量难于确保。a.③和④ b.③和④ c.全部 d.①、②和③ 11软件工程的发生主要就是由于(c)。 a.程序设计方法学的影响c.软件危机的出现 b.其他工程科学影响d.计算机的发展 12、软件生成周期模型有多种,下列选项中,(c)不是软件生存周期模型。a.螺旋模 型b.增量模型c.功能模型d.瀑布模型 (二)简答题 1.软件产品的特点是什么? 2.软件生产的发展经历了哪几个时代?各有何特征? 3.软件危机的概念、表现形式、 产生原因、化解途径4.详述主要的软件生存期模型(或软件开发模型)。 5.简述瀑布模型的阶段划分和各阶段的主要任务以及瀑布模型存在的问题。 第2章软件可行性研究 (一)单项选择题 1.在软件的可行性研究中经常从相同角度对系统展开可行性研究,其中从功能角度对 系统展开研究属(b)的研究。 a.经济可行性 b.技术可行性 c.操作可行性 d.法律可行性2.下列不属于成本-效益分 析的度量指标是(c)。 a.货币的时间价值 b.投资回收期 c.性质因素 d.纯收入3.软件可行性研究实质上就是 必须展开一次(a)需求分析、设计过程。 a.简化、压缩的 b.详细的 c.彻底的 d.深入的4.一个项目是否开发,从经济上来说是 否可行,归根结底是取决于(a)。 a.成本估计

软件工程导论复习简答题

软件工程导论复习简答题 简答题 1、什么是软件工程?它目标和内容是什么? 软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科。软件工程目标:付出较低开 发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开 发任务,及时交付使用;开发的软件可靠性高。软件工程内容:包括开发技术和开发管理两个方面。 2、软件开发中有哪几种过程模型?哪些适用于面向对象的软件开发? 软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等。 其中喷泉模型、统一软件过程适用于面向对象的软件开发。 3、什么是结构分析方法?该方法使用什么描述工具? 结构化分析:简称SA,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽 象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。使用数据流 图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑。 4、什么是软件概要设计?该阶段的基本任务是什么? 把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。 基本任务:⑴设计软件系统结构⑵进行数据结构及数据库的设计 ⑶编写概要设计的文档⑷评审 5、软件维护有哪些内容? (1)校正性维护。在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴露出来。为了

识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维 护。 (2)适应性维护。为了使应用软件适应计算机硬件、软件环境及数据环境的不断发生的变化而修改 软件的过程称为适应性维护。 (3)完善性维护。为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善 性维护。 (4)预防性维护。为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。 6、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系? 软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。 单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模 块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。 集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。 确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。 系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。 7、什么是软件生存周期?它有哪几个活动? 软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。 包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。

软件工程导论知识点总结(整理)

《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这 些问题表现在以下几个方面: (1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住。 (3)一般软件很难维护。 (4)软件生产效率很低。 (5)软件开发成本越来越大。 (6)软件成本与开发进度难以估计。 (7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.为什么会产生软件危机? (1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性. (2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。 (3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 3.怎样克服软件危机? (1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训.在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。 (2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。 (3)根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境. 总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 4.构成软件项目的最终产品: 应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料. 5.什么是软件生存周期? 软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。 6.软件生存周期为什么划分成阶段? (1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。 (2)可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的组织管理,也便于采用良好的技术方法。 (3) 使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量,特别是提高了软件的可维护性。 7.应该怎样来划分阶段? (1)每一个阶段的任务尽可能独立; (2)同一阶段内的任务性质尽可能相同;

软件工程导论简答题整理版

软件工程导论简答题整理版 1. 什么是软件工程? 软件工程是指通过系统性的、可量化的方法,对软件的开发、运行 和维护进行管理,以提高软件质量和效率的学科。 2. 为什么需要软件工程? 软件工程的出现是为了解决传统的软件开发方式中存在的问题,例 如项目延期、质量低下和开发成本高等。通过软件工程的方法和原则,可以规范开发过程,提高开发效率和质量。 3. 软件生命周期是什么? 软件生命周期是指从软件开发开始到废弃的整个过程。它包括需求 分析、设计、编码、测试、部署和维护等阶段。 4. 什么是软件需求? 软件需求是对软件系统功能、性能和其他特性的描述和规定。它包 括用户需求、系统需求和软件需求规格说明等。 5. 如何进行软件需求分析? 软件需求分析是指对软件需求进行细化和明确,以便于后续的设计 和开发工作。可以通过访谈用户、观察业务流程和收集用户反馈等方 式进行需求分析。 6. 什么是软件设计?

软件设计是指根据软件需求,定义软件系统的结构、组件和接口等,以满足需求的功能和质量要求。 7. 软件设计有哪些原则? 软件设计应遵循高内聚、低耦合、模块化、可重用、可维护等原则。同时,还需要考虑软件的可靠性、可扩展性和性能等因素。 8. 软件测试的目的是什么? 软件测试的目的是评估软件系统的质量和功能是否符合需求规格。 通过测试可以发现软件中的错误和缺陷,并促使其修复,以提高系统 的稳定性和可靠性。 9. 软件测试方法有哪些? 常见的软件测试方法包括黑盒测试、白盒测试和灰盒测试。黑盒测 试关注输入和输出,不关心内部实现;白盒测试关注程序内部结构和 代码逻辑;灰盒测试结合了黑盒测试和白盒测试的思想。 10. 什么是软件配置管理? 软件配置管理是指对软件配置项进行控制和管理,保证软件系统的 可控性和可维护性。它包括配置项的标识、变更控制、版本管理和发 布管理等。 11. 什么是软件项目管理?

软件工程导论-期末题库(完整版)

软件工程导论-期末题库(完整版) 1.填空题 1.一般来说,可以从__一致性__、_完整性___、_现实性____和_有 效性___四个方面验证软件需求的正确性。 2.IPO图是_输入、处理和输出图_的简称,它是美国IBM公司发展 完善起来的一种图形工具。 3.系统流程图是描述__物理模型__的传统工具,用图形符号表达了 系统中各种元素之间的_____信息流动_____情况。 4.数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形 表示数据的源点/终点。 5.软件测试的步骤按顺序分别是:___单元测试_____、子系统测试、系统测试(子系统 和系统测试通常称为集成测试)、__确认测试__和_____系统测试 (集成测试)____6.软件生命周期一般可分为_问题定义_、可行性研究、_需求分析_、设计编码、_测试_、 运行与维护阶段。 7.可行性研究主要集中在以下四个方面_经济可行性_、__技术可行 性____、__法律可行 性___和抉择。

8.在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。9.复杂问题的对象模型通常由下述五个层次组成:主题层、___类与对象_层、__结构___ 层、_属性_层和__服务_层。 10.实施精化设计的目标是基于模块的“高内聚低耦合”的原则,提高模块的_独立性。11.软件生命周期一般可分为___问题定义_、可行性研究、__需求分析__、概要设计__、 详细设计、编码、__软件测试_、运行与维护阶段。 12.面向对象的数据存储管理模式分为__文件__、_关系数据库__和__面向对象数据库 ___三种。 13.单元测试一般以_白盒_测试为主,__黑盒__测试为辅。 14.软件工程三要素包括_方法_、__工具___和__过程___,其中,_过程_支持软件开 发的各个环节的控制和管理。 15.类构件的重用方式有_实力重用__、__继承重用______和_多态重用__三种。16.能力成熟度模型分为5个等级:初始级、____可重复____级、__已定义___级、____ 已管理__级和__优化____级。 2.判断题 1.向滞后的项目中增加人手会使得项目更加滞后。(T)

软件工程导论复习题含答案

软件工程习题集 第1章概述 (一)单项选择题 1.“软件危机”产生的主要原因是( A )。 A.软件日益庞大 B.开发方法不当 C.开发人员编写程序能力差 D.没有维护好软件 2. 软件是一种( B )性工业产品。 A. 理论 B. 知识(或逻辑) C. 消耗 D. 体力 3. 需求分析是在( B )进行的。 A. 用户 B. 用户和分析设计人员之间 C. 开发人员内部 D. 使用和维护人员间 4. 软件的主要结构和功能是在( A )阶段决定的。 A. 分析设计 B. 编程 C. 测试 D. 维护 5.软件是计算机系统中与硬件相互依存的另一部分,它的组成部分是( D )。 A.程序、数据 B.程序、文档 C.程序 D. 程序、数据、文档 6.在软件工程时期,决定软件质量的主要因素是( A ) A.管理水平 B.个人程序技术 C.小组技术水平 D.硬件的发展 7. 在软件开发模型中,提出最早、应用最广泛的模型是( A )。 A. 瀑布模型 B. 喷泉模型 C. 增量模型 D. 螺旋模型 8.瀑布模型把软件生存周期划分为软件定义、软件开发与( C )三个阶段,而每一阶段又可分为若干更小的阶段。 A. 详细设计 B. 可行性分析 C. 运行及维护 D. 测试与排错 9. 计算机辅助软件工程,简称( D )。 A. SA B. SD C. SC D. CASE 10. 软件危机是软件产业化过程中出现的一种现象,下述现象中:( C )是其主要表现。 ①软件需要增长难以满足。 ②软件开发成本提高。 ③软件开发进度难以控制。 ④软件质量不易保证。 A. ③和④ B. ③和④ C. 全部 D. ①、②和③ 11 软件工程的出现主要是由于( C )。 A. 程序设计方法学的影响 B. 其他工程科学影响 C. 软件危机的出现 D. 计算机的发展

软件工程导论简答题参考资料——课后习题答案

第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。(4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。 (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。 软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机? 1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 软件工程的本质特征: (1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经常变化的,开发过程中必须考虑软件将来可能的变化 (4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具 (5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户 (7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作) 消除软件危机的途径: (1) 对计算机软件有一个正确的认识(软件≠程序) (2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目 (3) 推广使用在实践中总结出来的开发软件的成功技术和方法 (4) 开发和使用更好的软件工具 三、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。

《软件工程导论》试题及答案

《软件工程导论》试题及答案 软件工程导论试题及答案 一、选择题 1. 软件工程是一门多学科交叉的学科,其中包括以下哪些学科? A. 计算机科学 B. 电子工程 C. 数学 D. 管理学 E. 心理学 答案:A、B、C、D 2. 软件工程的目标是什么? A. 提高软件开发效率 B. 提高软件质量 C. 提高软件可靠性 D. 提高软件维护性 E. 提高软件安全性 答案:A、B、C、D、E

3. 软件过程模型是指软件开发过程中的一种抽象表示方法,常用的软件过程模型有哪些? A. 瀑布模型 B. 增量模型 C. 螺旋模型 D. 敏捷模型 E. 喷泉模型 答案:A、B、C、D 4. 以下哪个开发方式可以在软件开发过程中提供更多的灵活性和快速反馈? A. 瀑布模型 B. 增量模型 C. 螺旋模型 D. 敏捷模型 答案:D 5. 软件需求分析的主要任务是什么? A. 确定软件的功能和性能需求 B. 定义软件系统的架构

C. 设计软件的用户界面 D. 实施软件测试 答案:A 二、填空题 1. 软件工程的核心目标是提高软件的 ______ 和 ______ 。 答案:质量、可靠性 2. 软件工程中的四个基本活动是需求分析、设计、 ______ 和 ______ 。 答案:实现、维护 3. 瀑布模型的五个阶段依次是:需求分析、设计、编码、 ______ 和 ______ 。 答案:测试、维护 4. “快速原型”开发模型注重 ______ 。 答案:用户参与 5. 敏捷开发模型的核心原则是 ______ 。 答案:迭代开发 三、简答题 1. 请简要说明为什么软件工程是一门多学科交叉的学科?

软件工程导论复习题及答案详解

第一章 一、名称解释 1.软件 2.文档 3.软件工程 4.软件生存周期 5.软件工程过程 6.软件生存周期模型 7.软件开发方法8.软件工具 二、填空题 1.构成一个完整计算机系统的两部分是硬件与________。 2.程序设计时代的生产方式是________。 3.软件工程涉及到几个学科,它是一门_____学科。 4.软件开发划分的各阶段任务尽可能独立,同一阶段任务性质尽可能________。 5.将软件生存周期各个活动规定为依线性顺序联接的若干阶段的模型是________模型。 6.喷泉模型是一种以用户需求为动力,以_______为驱动的模型。 7.结构化方法是一种面向数据流的开发方法。由结构化分析、_______、结构化程序设计构成。 8.软件工程研究的主要内容是软件开发管理和_______两个方面。 9.软件工具是支持软件开发人员的开发和维护活动而使用的________。 10.一个软件项目的开发中,要采用一种生存周期模型,要按照某种________,使用相应的工具来进行。 三、选择题 1.软件是一种( )产品。 A.物质 B.逻辑 C.有形 D.消耗 2.软件产品的开发主要是( )。 A.复制 B.再生产 C.拷贝 D.研制 3.个体手工劳动生产方式的时代是( )。 A.程序设计 B.软件生产自动化 C.程序系统 D.软件工程 4.与计算机科学的理论研究不同,软件工程是一门( )学科。 A.理论性 B.原理性 C.工程性 D.心理性 5.软件重用的单位是( )。 A.软件模块 B.性能 C.系统 D.功能 6.软件开发费用只占整个软件系统费用的( )。 A.1/2 B.1/3 C.1/4 D.2/3 7.软件开发中大约要付出( )%的工作量进行测试和排错。 A.20 B.30 C.40 D.50 8.准确地解决“软件系统必须做什么”是( )阶段的任务。 A.可行性研究 B.需求分析 C.详细设计 D.编码 9.软件生存周期中最长的是( )阶段。 A.需求分析 B.概要设计 C.测试 D.维护 四、简答题 1.软件产品的特性是什么? 2.软件生产有几个阶段?各有何特征? 3.什么是软件危机?产生的原因是什么? 4.软件工程的性质、目标和内容是什么? 5.软件工程面临的问题是什么? 6.软件工程过程有哪些过程? 7.软件生存周期有哪几个阶段? 8.软件生存周期模型有哪些主要模型?

相关主题
文本预览
相关文档 最新文档