文档库 最新最全的文档下载
当前位置:文档库 › 软件工程课后习题

软件工程课后习题

软件工程课后习题
软件工程课后习题

1.简述软件设计阶段的任务及主要完成的工作。答:设计阶段的任务是给出系统的实现方案。工作包括概要设计和详细设计。概要设计的主要任务是确定系统的架构及模块组成、模块之间的调用关系、每个模块完成的功能及接口另外还包括测试计划及系统数据结构和数据库设计等。详细设计主要是确定每个模块内部的细节给出主要的算法及控制流程。

2.什么是对象? 请举例子说明。解:对象是系统中用来描述客观事物的一个实体 是构成系统的一个基本单位由一组属性和一组对属性进行操作的服务组成。实体可以是物理的如一个桌子可以是概念上的如一个开发项目图1

对象和属性之间有何区别?对象是对客观世界实体的抽象,它是描述实体静态属性的数据和代表实体运动状态的操作结合在一起所构成的统一体。属性只不过是对象的一种特性,它是组成对象的一种成分。

3.如何理解软件维护? 解:所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。维护的类型有三种:改正性维护;适应性维护;完善性维护。此外,为提高软件产品的可维护性还需要进行预防性维护。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用 应当进行的诊断和改正错误的过程就叫做改正性维护。为使软件适应这种变化而去修改软件的过程就叫做适应性维护。在软件的使用过程中 用户往往会对软件提出新的功能与性能要求。为了满足这些要求需要修改或再开发软件以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性,这种情况下进行的维护活动叫做完善性维护

4.以G.J.Myers的观点,简述对软件测试的目的(标/基本任务)解:( 1)为了发现错误而执行程序的过程;(2)好的测试方案极可能发现至今尚未发现的错误测试方案;(3)成功的测试是发现至今尚未发现的错误的测试。

8.软件工程的过程模型有几种?过程模型的特点?软件工程的过程模型有瀑布模型、快速原型模型、增量模型、螺旋模型。瀑布模型特点:(1)阶段间具有顺序性和依赖性;(2) 推迟实现的观点,划分逻辑设计与物理设计,尽可能推迟程序的物理实现;(3质量保证的观点,每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。

快速原型模型:快速开发工具;得到良好地需求定义,可处理模糊需求;开发者和用户可充分通信;使某些类型的风险降至最低。增量模型:第一个增量往往是核心产品;每一个增量均发布一个可操作产品;早期的增量是最终产品的“可拆卸”版本。螺旋模型:风险驱动的;瀑布模型+快速原型+风险分析;主要适用于内部开发的大规模软件项目。

1.什么是软件工程?它目标和内容是什么?软件工程是:1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2)研究1)中提到的途径。软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程内容:包括开发技术和开发管理两个方面。

2、耦合性和内聚性有几种类型? 其耦合度、内聚强度的顺序如何?答:低:非直接耦合→数据耦合→标记耦合→控制耦合→外部耦合→公共耦合→内容耦合:高;强:功能内聚→信息内聚→通信内聚→过程内聚→时间内聚→逻辑内聚→巧合内聚:弱

8、衡量模块独立性的两个标准是什么?各表示什么含义?内聚和耦合。内聚:内聚:内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏局部化概念的自然扩展;耦合:也称块间联系,耦合是对一个软件结构内不同模块之间互连程度的度量。内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。

3、简述需求分析工作可以分成哪四个方面?软件需求分析的有哪三个基本原则?答:需求分析阶段分成四个方面:对问题的识别、分析与综合、制定规格说明和评审。三个基本原则:必须能够表达和理解问题的数据域和功能域;必须按自顶向下、逐步分解的方式对问题进行分解和不断细化;要给出系统的逻辑视图和物理视图。

2、软件开发中有哪几种过程模型?哪些适用于面向对象的软件开发?软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等。其中喷泉模型、统一软件过程适用于面向对象的软件开发。

1、什么是软件概要设计?该阶段的基本任务是什么?

把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。基本任务:⑴设计软件系统结构;⑵进行数据结构及数据库的设计;⑶编写概要设计的文档;⑷评审

6、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?

软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档;集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效;确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求;系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。

7、什么是软件生存周期?它有哪几个活动?软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。

14、软件设计的基本原理包括哪些内容?⑴模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求。⑵抽象:认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素。通过抽象确定组成软件的过程实体。⑶信息隐蔽:将模块实现自身功能的细节与数据"隐蔽"起来。模块间仅交换为完成系统功能所必须的信息。⑷模块独立性:每个模块只完成系统要求的独立的子功能。

1.什么是需求分析?需求分析阶段的基本任务是什么?需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,

将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。基本任务:⑴问题识别;⑵分析与综合,导出软件的逻辑模型;⑶编写文档

12、单元测试有哪些内容? 单元测试主要针对模块的以下五个基本特征进行测试:(1)模块接口;(2)局部数据结构;(3)重要的执行路径;(4)错误处理;(5)边界条件

21、说明面向对象的特征?面向对象的特征是:1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。4.多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

4.请简述黑盒测试和白盒测试有何区别,黑盒测试有哪些常用方法?黑盒测试和白盒测试的区别:前者基于功能,

后者基于结构;黑盒测试常用方法有:边界值、等价类、因果图、错误推测法等。

4.什么是黑盒测试?黑盒测试主要采用的技术有哪些? 测试也称为功能测试它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试主要采用的技术有:等价分类法、边沿值分析法、错误推测法和因果图等技术。

5.什么是白盒测试?白盒测试主要采用的技术有哪些? 测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。白盒测试主要采用的技术有:路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。

26.CMM全称是什么?分为哪几个级别?CMM全称是软件能力成熟度模型;从无序到有序的进化分成5个级别,

分别为:1 初始级;2 可重复级;3 已定义级;4 已管理级;5 优化级。

28、软件生命周期划分为哪几个阶段?软件生命周期分为三个时期八个阶段:软件定义:问题定义、可行性研究;软件开发:需求分析、概要设计、详细设计、编码、测试;软件运行:软件维护

1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面:1)用户对开发出的软件很难满意。2)软件产品的质量往往靠不住。3)一般软件很难维护。4)软件生产效率很低。5)软件开发成本越来越大。6)软件成本与开发进度难以估计7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。2.为什么会产生软件危机? (1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。 (2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。 (3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。

3.怎样克服软件危机? (1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。 (2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。 (3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

1.软件生命周期划分成哪些阶段软件生命周期(各阶段)软件生命周期由软件定义、软件开发和运行维护三个时期组成。

1.软件定义时期划分为三个阶段:问题定义、可行性研究和需求分析;

2.开发时期:总体设计、详细设计、编码和单元测试、综合测试;

3.维护时期:主要任务是使软件持久地满足用户的需要。

2.可行性研究目的? 确定在问题定义中所提出的问题是否值得去解,在限制条件下,问题能否解决。

3.可行性研究的任务? (1) 进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型; (2) 从系统逻辑模型中,选择问题的若干种主要解法,研究每一种解法的可行性,为以后的行动提出建议; (3) 如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐一个较好的解决方案,并为工程制定一个初步的计划。

5.可行性研究的步骤? (1)复查系统规模和目标;(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型;(4)进一步定义问题(5)导出和评价供选择的解法 (6)推荐行动方针;(7)草拟开发计划; (8)书写文档提交审查。

4.可行性研究包括哪几方面的内容? (1)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;(2)经济可行性:经济效益是否超出开发成本;(3)操作可行性:系统操作在用户内部行得通吗?(4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。

4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。

6.软件生存周期为什么划分成阶段?

(1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。

(2) 可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的组织管理,也便于采用良好的技术方法

(3) 使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量,特别是提高了软件的可维护性。

7.应该怎样来划分阶段? (1)每一个阶段的任务尽可能独立;(2)同一阶段内的任务性质尽可能相同; (3)每一个阶段任务的开始和结束有严格的标准。

10.什么是软件工程环境: 方法与工具的结合,加上配套的软、硬件支持称为软件工程环境。它能支持开发者按照软件工程的方法,全面完成生存周期中的各项任务。

1. 问题定义的任务和主要工作? 问题定义的任务:将用户提出的要求具体化、定量化;确定研制系统的范围,明确研制的边界。问题定义阶段的工作: 1) 通过调查研究,了解系统需求; 2) 确定系统的功能需求、性能需求、可靠性需求、安全及保密性、资源、开发费用及开发进度等的需求; 3) 问题定义阶段的产品--系统目标与范围说明书。

6. 可行性研究报告的主要内容?可行性分析的结果是可行性研究报告,内容包括: (1)系统概述:说明开发的系统名称,提出单位和开发单位。 (2) 可行性研究的前提:系统目标;要求;约束和限制;可行性研究的基本准则等。 (3) 对现有系统的分析:处理流程,图示说明现有系统的处理流程和数据流程;现有系统存在的问题。 (4) 系统需求:主要功能;主要性能及其要求;操作要求;信息要求;限制性要求。(5) 建议系统:系统目标;处理流程;系统结构,功能,性能;系统技术可行性;投资和效益分析;操作可行性;法律可行性。(6) 其它可选方案:与国内外同类型方案的比较;提出一两个可行性方案供论证和探讨。(7) 制定下一阶段的预算。(8) 结论性意见:由用户方、设计方和投资方共同签署意见。

1.需求分析的描述工具有哪些? 有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier图、IPO图和需求描述语言等。

2.需求分析的基本任务是什么? 准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。

4.什么是结构化分析?它的结构化体现在哪里? 结构化分析:使用数据流程图、数据字典、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档-需求规格说明书。结构化体现在将软件系统抽象为一系列的逻辑加工单元,各单元之间以数据流发生关联。

5.软件需求规格说明书由哪些部分组成? 组成包括: (1) 引言:编写目的、背景说明、术语定义及参考资料等。 (2) 概述主要功能、约束条件或特殊需求。 (3) 数据流图与数据字典。 (4) 用户接口、硬件接口及软件接口。 (5) 性能需求、属性等。 (6) 其它需求,如数据库、操作及故障处理等。

6.为什么数据流图要分层?画分层的DFD要遵循哪些原则? 分层的目的:便于逐步细化、结构清晰。画分层的DFD要遵循哪些原则: (1)父图与子图之间数据要平衡。 (2)分解的深度和层次达到使加工足够简单、易于理解的基本加工为止。 (3)区分局部文件和局部外部项(局限于数据流中某一层或某几层的文件和外部项)。 (4)不要把控制流作为数据流。 (5)忽略琐碎的枝节。 (6)每个数据流要有一个合适的名字,尽量使用现实系统中有具体意义的名字。

7.系统流程图与数据流程图有什么区别? 系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具。系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况。数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况。

8.数据字典包括哪些内容?它的作用是什么?

数据字典是描述数据流图中数据的信息的集合。它对数据流图上每一个成分:数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成。对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型。

9.描述加工逻辑的工具有哪些? 有决策树(又称判定树)、决策表(又称判断表)和结构化语言等。

1. 系统设计包括哪两个阶段? 系统设计包括总体设计与详细设计两个阶段。

2. 总体设计的主要任务是什么?总体设计的主要任务是完成软件结构的设计,确定系统的模块及其模块之间的关系。

3. 什么是模块?模块具有哪几个特征?总体设计主要考虑什么特征?模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。模块具有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性。概要设计主要考虑输入、输出(参数传递)和功能两个特性。

4. 什么是模块化?模块设计的准则?模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。模块设计的准则:(1)改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合;(2)模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中。 (3)软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数不要超过5个。(4)尽量降低模块接口的复杂程度;(5)设计单入口、单出口的模块。(6)模块的作用域应在控制域之内。

5. 变换型数据流由哪几部分组成?变换型结构由三部分组成:传入路径、变换(加工)中心和传出路径。

6. 变换分析设计的步骤? 1) 区分传入、传出和变换中心三部分,划分DFD图的分界线; (2) 完成第一级分解:建立初始SC图的框架; 3) 完成第二级分解:分解SC图的各个分支; 4) 对初始结构图按照设计准则进行精化与改进。

7. 事务型数据流由哪几部分组成?事务型结构由至少一条接受路径、一个事务中心与若干条动作路径组成。

8. 事务分析设计的步骤? (1) 在DFD图中确定事务中心、接收部分(包含全部接收路径)和发送部分(包含全部动作路径); (2) 画出SC图框架,把DFD图的三部分分?quot;映射"为事务控制模块,接收模块和动作发送模块.一般得到SC图的顶层和第一层(如果第一层简单可以并入顶层); (3) 分解和细化接收分支和动作分支,完成初始的SC图; (4) 对初始结构图按照设计准则进行精化与改进。

9. 比较层次方框图与结构图是的异同? (1) 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构。(2) 二者都采用多层次矩形框树形结构。层次方框图的顶层矩形框代表完整的数据结构, 下面各层矩形框依次代表上个框数据的子集;结构图是在层次图的每一个方框内注明模块的名字或主要功能,方框之间的直线表示模块的调用关系,用带注解的箭头表示模块调用过程中传递的信息。

1.详细设计的目的? 为软件结构图(SC图或HC图)中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述.

2.详细设计的主要任务?编写软件的“详细设计说明书”.软件人员要完成的工作:(1)为每一个模块确定采用的算法, 选择某种适当的工具表达算法的过程,写出模块的详细过程描述.(2) 确定每一模块使用的数据结构.(3) 确定模块结构的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及关于模块输入数据、输出数据及局部数据的全部细节.(4) 为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试.

3.结构化程序设计的基本原则?在详细设计中所有模块都使用单入口、单出口的顺序、选择、循环三种基本控制结构.

4.比较面向数据流和面向数据结构两类设计方法的异同? 相同点1)遵守结构程序设计“由顶向下”逐步细化的原则,并以其为共同的基础;2)均服从“程序结构必须适应问题结构”的基本原则,各自拥有从问题结构(包括数据结构)导出程序结构的一组映射规则。不同点1)面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构。面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构。2)面向数据流的设计的最终目标是软件的最终SC图,面向数据结构的设计的最终目标是程序的过程性描述。

5.比较Jackson方法和LCP方法的异同? Jackson与LCP设计方法都是以数据结构为出发点,以程序的过程描述为最终目标,设计步骤基本相似。它们的主要差别是;1)使用不同的表达工具,其中LCP方法中的表达工具Warnier图比Jackson 设计方法中的表达工具Jackson图有更大的通用性;2)Jackson方法的步骤和指导原则有一定的灵活性,而LCP设计方法则更加严密。

6.详细设计的描述工具应具备什么功能?无论哪类描述工具不仅要具有描述设计过程,如控制流程、处理功能、数据组织及其它方面的细节的能力,而且在编码阶段能够直接将它翻译为用程序设计语言书写的源程序。

1.编码的任务?使用选定的程序设计语言,把模块的过程性描述翻译为用语言书写的源程序(源代码)。

2.对源程序基本要求?源程序要求:正确可靠、简明清晰、效率高。(1)源程序的正确性是对程序质量的最基本要求;

(2)源程序的简明清晰,便于验证源代码和模块规格说明的一致性,容易进行测试和维护;(3)对于大多数模块,编码时应该把简明清晰放在第一位;(4)除了编码阶段产生源代码外,在测试阶段也需要编写一些测试程序,用于对软件的测试。3.程序设计语言的特点? (1)名字说明:程序中使用对象的名字,能为编译程序所检查和识别;(2)类型说明:定义对象的类型,确定该对象的使用方式;3)初始化:为变量提供适当的初始值或由系统给变量赋一特殊的表明未初始化的值;(4)对象的局部性:程序中真正需要的那部分才能访问的对象;5)程序模块:控制程序对象的名字;(6)循环控制结构:如FOR 语句、WHILE-DO语句、REPEAT-UNTIL语句等;7)分支控制结构:如IF语句、CASE语句等;(8)异常处理:为程序运行过程中发生的错误和意外事件提供检测和处理上的帮助;(9)独立编译:能分别编译各个程序单元。

4.选择程序设计语言需要考虑的因素? (1)选择用户熟悉、便于用户维护的语言。(2)选择目标系统的环境中可以提供的编译程序所能选用的语言。(3)选择可以得到的软件工具,能支持程序开发中可以利用的语言。(4)根据工程规模的大小、目标系统应用范围,如实时应用选择Ada语言或汇编语言,系统软件开发选择C语言或汇编语言,软件开发中若含有大量数据操作则选择SQL、dBASE等数据库语言等。5)选择程序员熟悉的语言。6)选择标准化程度高、程序可移植性好的语言。(7)根据算法与计算的复杂性、数据结构的复杂性选择。如对于系统程序和结构复杂的应用程序,选择支持数组、记录(或结构)与指针动态数据结构的Pascal语言或C语言。(8)根据实时要求系统需要的响应速度和效率选择相应的语言。

5.编码风格的指导原则。 (1)源程序:包括适当的标识符、适当的注解、程序清单的合理布局与清晰;

(2)数据说明:数据结构或数据类型的说明次序标准化;变量名称尽量有意义;对复杂的数据结构在注解中要说明在程序设计中实现这个数据结构的方法。(3)语句的构造简单明了:不要为节省空间将多个语句写在同一行;尽量避免复杂的条件及“非”条件的测试;避免大量使用循环嵌套和条件嵌套;括号的使用是为了使逻辑表达式和算术表达式的运算顺序清晰直观。(4)效率:考虑程序运行的时间存储器效率、输入/输出的效率;在处理程序正确性、清晰与效率之间的关系时先求程序正确后求快;先求清楚后求快;保持程序简单以求快;书写清楚,不为“效率”牺牲清晰。

6.第四代语言(4GL)应具备哪些的特征?(1)具有很强的数据管理能力,能对数据库进行有效的存取、查询和其它有关操作;

(2)能提供一组高效的、非过程化的命令,组成语言的基本语句,编程时用户只需用这些命令说明“做什么”,不必描述实现的细节;(3)能满足多功能、一体化的要求。为此,语言中除必须含有控制程序逻辑与实现数据库操作的语句外,还应包括生成与处理报表、表格、图形,以及实现数据运算和分析统计功能的各种语句,共同构成一个一体化的语言,以适应多种应用开发的需要。

2.测试与调试的主要区别?(1)测试从一个侧面证明程序员的失败;调试证明程序员的正确;(2)测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试从不可知内部条件开始,除统计性调试外,结果是不可预见的;(3)测试有计划并且要进行测试设计;调试不受时间约束;(4)测试是发现错误、改正错误、重新测试的过程;调试是一个推理的过程;(5)测试执行是有规程的;调试执行要求程序员进行必要的推理;(6)测试由独立的测试组在不了解软件设计的件下完成;调试由了解详细设计的程序员完成;(7)大多数测试的执行和设计可由工具支持;调试用的工具主要是调试器。

3.人工复审的方式和作用? 人工复审的方式:代码会审、走查和排练和办公桌检查;人工复审的作用:检查程序的静态错误。

6.路径测试技术中几种主要覆盖的含义?举例说明? 语句覆盖:至少执行程序中所有语句一次。判定覆盖:使被测程序中的每一个分支至少执行一次。故也称为分支覆盖。条件覆盖:执行所有可能的穿过程序的控制路流程。条件组合测试:设计足够的测试用例,使每个判定中的所有可能条件取值组合至少执行一次。

7.等价分类法的测试技术采用的一般方法?举例说明? (1)为每个等价类编号;(2)设计一个新的测试方案,以尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类被覆盖为止。(3)设计一个新的测试方案,使它覆盖一个尚未被覆盖的无效等价类, 重复这一步骤,直到所有无效等价类被覆盖为止。

8.软件测试的一般步骤? 模块测试、子系统测试、系统测试、验收测试、平行运行。

9.比较集成试的两种方式的优劣? 非渐增式测试方式:分别测试模块,再把所有模块按设计要求放在一起组成所要的程序。该方法编写测试软件工作量大,模块间的接口错误发现得晚,错误定位较难诊断,总体测试有的错误容易漏掉,测试时间相对较少,可以并行测试所有模块,能充分利用人力,加快工程进度;渐增式测试方式:把下一个要测试的模块,同已经测试好的那些模块结合起来进行测试。该方法利用已测试过的模块作测试软件,开销小,较早发现模块间的接口错误,错误定位往往和最近入的模块相关,对已测试好的模块可在新加入模块的条件下受到新的检验,测试更彻底,需要较多的测试时间,不能并行测试。总的来说,渐增式测试方法比较好。

10.软件测试的策略?(1)在任何情况下都应使用边界值分析的方法。(2)必要时用等价类划分法补充测试方案。(3)必要时再用错误推测法补充测试方案。(4)对照程序逻辑,检查已设计出的测试方案。(5)根据对程序可靠性的要求采用不同的逻辑覆盖标准,再补充一些测试方案。

1.为什么说软件的维护是不可避免的?

因为软件的开发过程中,一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进行软件的修改或完成功能的增删等,为了提高软件的应用水平和使用寿命,软件的维护是不可避免的。

3.影响软件维护的因素有哪些?开发方法:采用模块化详细设计文档有助于理解软件的结构、界面功能和内部流程;开发过程中严格而科学的管理规划及清晰可靠的文档资料对发生错误后的理解与纠错是至关重要的;开发过程中模块的独立程度越高,对软件修改越容易,对软件的改进和移植越方便。开发条件:软件开发及维护人员的水平决定了软件开发的质量和维护的效率;开发过程中使用标准的程序设计语言和标准的操作系统接口,可以大大提高软件的可维护性;在测试过程中用例的有效性,可极大地减少软件存在的错误;其次使用规范化的文档资料可为维护提供更好的依据。

4.软件维护困难主要表现在什么方面?(1) 一般来讲,维护人员对开发人员写的程序及文档,理解都比较困难,对维护工作不会喜欢;2) 维护持续时间都很长,在开发人员不在现场的轻快下,维护软件通常是很困难的; (3) 绝大多数软件在设计时对将来的软件修改都没有考虑或考虑不多,尤其未能在设计中强调并认真解决好模块的独立性,使软件的修改既困难又易发生差错。

5.决定软件可维护性的因素?软件的可理解性、可测试性、可修改性、可移植性、可重用性。

6.软件价格应该计入维护成本吗?为什么?在软件的生命周期中,软件维护的工作量非常大,不同应用领域的维护成本差别也很大。一般大型软件的维护成本远远高于开发成本若干倍。因此软件价格中应该计入维护成本。

1.软件工程管理的内容?(1) 费用管理: 对软件开发进行成本核算,使软件生产按照商品生产的规律办事。包括:以简单、科学方法估算软件开发费用,作为签定开发合同的根据;管理开发费用的有效使用,即用经济手段来保证产品如期按质完成。(2) 质量管理: 按项目的质量保证计划,确保各个开发阶段的开发和维护工作全部按软件工程的规范进行,保证软件产品的质量。(3) 配置管理:通过对于程序、文档和数据的各种版本所进行的管理,保证资料的完整性与一致性。(4) 项目管理:制定《项目实施计划》,按照计划的内容组织和实施软件的工程化生产。最终目标是以合理的费用和进度,圆满完成计划所规定的软件项目。

2.软件项目有哪些特点?(1) 软件项目与其他任何产业项目不同,它是算法、思想、概念、组织、流程、效率、优化等的融合体;(2) 开发软件项目产品,在多数情况下,用户给不出明确的想法和要求。(3) 在开发过程中,程序及其相关的文档资料常常需要修改,在修改过程中又可能带来新的问题,且这些问题要在很久以后才会发现。(4) 在研制开发过程中,文档资料是不可缺少的,但工作量又是巨大的,往往也是人们不愿去作的。(5) 参加软件项目的工作人员,要求具有一定的业务水平和实际工作经验,而很难完全避免的人员流动,对工作的影响是很大的。离开的人员不仅带走了重要的信息,而且带走了工作经验。

3.软件成本估算的一般方法?自顶向下估计: 首先估算出项目总的开发成本,然后在项目内部进行成本分配。由少数专家参与,依靠他们过去的经验,将要开发的软件与过去开发过的软件进行"类比",以估计新的软件开发所需要的工作量和成本。自底向上估计: 将开发任务分成若干子任务,子任务又分成子子任务,直到每一个单元内容足够明确为止;把各个任务单元的成本估计出来,汇合成项目的总成本。该方法得到的结果比较接近实际。

4.为什么在软件开发中,不能用简单增加人员的方法来缩短开发时间?大量软件开发实践说明:向一个已经延迟的项目追加开发人员,可能使它完成得更晚。因为当开发人员以算术级数增长时,而人员之间的通信将以几何级数增长,往往"得不偿失"。

5.影响软件质量的主要因素有哪些?(1) 产品运行:正确性、风险性、效率、完整性、健壮性和可用性;(2) 产品修改:可理解性、可维护性、灵活性、可测试性; (3) 产品转移:可移植性、可重用性和互运行性。

1.软件工具是什么?按照软件生存周期可将其分为几类?软件工具是指为支持计算机软件及其文档的开发、维护、模拟、移植或管理而研制的程序系统。按照软件生存周期可将其分为如下几类: (1) 需求分析:如数据流图绘制与分析工具、状态转换图绘制与分析工具、面向对象的模型和分析工具、快速原型构造工具、数据字典与数据库工具等。 (2) 软件设计:如HIPO图、PDL(程序设计语言)或PAD(问题分析图)支持工具等。 (3) 编码:集成化的程序员工作平台。如各种正文编辑器和常规的编译程序、汇编程序、连结程序及符号调试器等。 (4) 软件测试:如静态分析器、动态覆盖率测试器、测试用例生成器、测试报告生成器及环境模拟器等。 (5) 软件维护:如反汇编程序、反编译程序、程序结构分析器、源程序格式化工具、文档生成工具、源程序至PAD(问题分析图)或流程图的自动转换工具等。

2.评价软件工具的原则?(1) 易用性:友好的用户界面,用户乐于使用;(2) 对开发方法的支持:能满足预期的任务和功能需求,且能支持完成该任务所遵循的方法学;(3) 稳健性:具备自检测机制,即使在故障情况下也不会导致严重后果;

(4) 性能:能使资源得到充分有效的利用;(5) 工具结构柔性:工具结构是柔软的、可修改的和可扩充的。

3.什么是软件开发环境?按技术发展方向分为哪几类环境?将一组相关的软件工具按照一定的软件开发方法、软件生产和维护模型有机的组合起来,为特定的领域所使用,以支持从需求分析、设计、编码、测试直到维护的整个软件生命周期的计算机辅辅助开发程序系统称为软件开发环境。按技术发展方向软件开发环境可分为以语言为中心的环境、面向结构化的环境和工具箱环境。

4.工具箱类软件工具的基本特点?(1) 在某种OS基础上通过一组小的实用工具构成;(2) 虽然各工具之间相互独立,但系统能提供统一的用户命令界面及工具之间统一的数据交换方式;(3) 工具箱中各工具之间是相互独立的,用户可根据需要进行灵活的增加和裁减;(4) 工具箱环境中一般除了包括支持编码阶段的工具(如编辑程序、编译程序、汇编程序、连结程序调试程序等)外,还可包括支持大型软件开发方面的工具;(5) 由于工具箱环境具有较强的通用性和灵活性,因而目前商品化的算机系系统上配置的软件环境大多属于这一类。如:UNIX程序设计环境、及VAX/VNS SET、PCDE、APCE等程序设计环境。

5.软件开发环境的组成与各成分的作用?软件开发环境的构成:交互式人机界面、工具集及软件环境数据库。交互式人机界面:人机界面(也称用户界面或人机对话)是用户与计算机系统之间相互交流的中间媒介。工具集:工具集中软件工具是构成软件开发环境的基本成分。包含在软件开发环境中的工具不是各自封闭和分离的,而是与某种软件开发方法或某种软件加工模型相适应,并以一种综合的、一致的和整体连贯的形态来支持软件开发的全过程。软件环境数据库:是各个软件工具之间共享数据及相互连结的统一媒介。

6.软件开发环境数据库在软件开发中的作用?

软件环境数据库是用于支持软件项目的大型数据库;软件环境数据库中主要存储软件开发过程中产生的有关产品或半成品的数据及各种项目数据,如源程序、测试数据和各种文档等,它构成软件开发和维护过程中所有项目数据的集中化的存储设施,是集成化软件开发环境的核心组成部分,也是各个软件工具之间共享数据及相互连结的统一媒介。

7.集成化项目支持环境IPSE的主要特征是什么?(1) 集成化和相互兼容的工具集;(2) 支持项目的管理和控制; (3) 支持配置管理;(4) 支持多种语言的软件开发;(5) 支持硬件开发;(6) 允许宿主机和目标机使用分布式系统。

8.CASE的含义是什么?CASE是计算机辅助软件工程的简称。简单的说,可以将CASE理解为: CASE=软件工程+自动化工具.从狭义角度解释它是一组工具和方法的结合;从广义角度解释它是辅助软件开发的任何计算机技术;从学术研究角度解释:它是软件开发方法、软件开发管理和软件工具等方面多年研究和发展的产物;从软件产业角度解释它是种类繁多的软件开发和系统集成的产品和软件工具的集合。

9.CASE工具一般分为几类?有什么区别?CASE工具可以理解为除OS外的所有软件工具的总称。按对软件过程的支持范围CASE工具分为三类:一是工具: 支持单个任务;二是工作台:支持某一软件过程或一个过程中的某些活动;三是环境:支持某些软件过程及相关的大部分活动。

软件工程考试题库

软件工程考试题库 Final approval draft on November 22, 2020

一填空题 1.用原型过程代替全部开发阶段,这种快速原型是(实验型或演化型)原型。 2.可行性研究实质上是进行一种简化、压缩了的(需求分析和设计)。 3.结构图的主要内容有(模块)、(模块的控制关系)、(模块的信息传递)。 4.模块之间的联系越紧密,其耦合性就越(强),模块的独立性就越(差)。 5.软件工程研究的主要内容包括软件开发技术和软件开发管理两个方面,在软件开发技术方面,主要是研究(软件开发方法)、(软件开发过程)、(软件开发工具和环境),在软件开发管理方面,主要是研究(软件管理学)、(软件经济学)、(软件心理学)。 6.状态图反映了(状态)与(事件)的关系,状态图确定了由事件序列引起的(状态序列)。 7.可行性研究实质上是进行一种简化、压缩了的(需求分析和设计)。 8.在数据流图中,(数据流)是数据在系统内传播的路径,因此由一组(成分固定的数据项)组成,加工(又称为数据处理)是对数据流进行某些(操作或交换)。 9.(偶然内聚)指一个模块内的各处理元素之间没有任何联系,这是内聚程度最(差)的内聚。 10假如n个相同的系统(硬件或软件)进行测试,它们的失效时间分别是t1,t2,tn,则平均失效等待时间MTTF=(1/n )。 11(维护申请报告)是一种由用户产生的文档,它用作计划维护任务的基础。 12在软件开发和维护过程中,一个软件往往有许多版本,版本控制工具用来存储、更新、恢复和管理一个软件的(多个版本)。 13软件工具通常由工具、(工具接口)和用户工具三个部分组成。 14类的实例化是(对象)。 15形式化规约语言由(语法)、(语义)和(一组关系)组成。 16 软件质量保证应从(产品计划和设计)开始,直到投入使用和售后服务的软件生存期的每一个阶段中的每一步骤。 17 为了提高软件的质量,软件质量保证的任务大致可归结为以下8类:(正确定义用户要求)、(技术方法的应用)、(提高软件开发的工程能力)、(软件的复用)、(发挥每个开发者的能力)、(组织外部力量协作)、(排除无效劳动)、(提高计划和管理质量)。 18 软件测试时需要的三类信息,分别是(软件配置)、(测试配置)、(测试工具)。 19 在面向对象方法中,信息隐蔽通过对象的(封装性)来实现,类结构分离了(接口)与(实现),从而支持了信息隐蔽。 20 增量模型在开发工程中以一系列(增量方式)开发系统,推迟某阶段的(细节),从而(尽早)产生工作软件。 二选择题 1.(A)是计算机程序及其说明程序的各种文档。 A 软件 B文档 C 数据 D 程序 2.软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、(B)和维护等活动。 A 应用 B 测试 C 检测 D 以上答案都不正确 3.建立原型的目的不同,实现原型的途径也有所不同,下列不正确的类型是(B)。 A 用于验证软件需求的原型 B 垂直原型 C 用于验证设计方案的原型 D 用于演化出目标系统的原型

软件工程课后习题测验简答题

第一章: 三、简答题 1.软件产品的特性是什么? 答:●软件是一种逻辑产品,具有无形性; ●软件产品的生产主要是研制;主要是脑力劳动; ●软件不存在磨损和老化问题,但存在退化问题; ●软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式; ● 软件具有“复杂性”,其开发和运行常受到计算机系统的限制。 2. 软件发展有几个阶段?各有何特征? 答:①程序设计阶段。 硬件特征:价格贵、存储容量小、运行可靠性差。 软件特征:只有程序、程序设计概念,不重视程序设计方法。 ②程序系统阶段。 硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。 软件特征:程序员数量猛增,开发人员素质低。 ③软件工程阶段。 硬件特征:向超高速、大容量、微型化及网络化方向发展。 软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。 3.什么是软件危机?其产生的原因是什么? 答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。软件危机主要表现在两个方面: (1) 软件产品质量低劣,甚至开发过程就夭折。 (2)软件生产率低,不能满足需要。 4.什么是软件过程?有哪些主要的软件过程模型?它们各有哪些特点? 答:软件过程是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。软件过程模型是对软件开发实际过程的抽象和简化,是描述软件开发过程中各种活动如何执行的模型,因此又称为软件开发模型。 主要的软件过程模型有:瀑布模型、增量模型、螺旋模型、喷泉模型和基于知识的模型等。 ⑴瀑布模型是经典的软件开发模型,将软件开发活动中的各项活动规定为依线性顺序连接的若干阶段,它简单易用,在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大的作用。但在软件开发实践中也逐渐暴露出它的缺点。它将一个充满回溯的软件开发过程硬性分割为几个阶段,无法解决软件需求不明确或者变动的问题。 ⑵增量模型是一种非整体开发的模型。根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。 ⑶螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:制定计划、风险分析、实施工程、客户评估。 ⑷喷泉模型用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。软件开发过程有4

软件工程习题及参考答案

软件工程习题及部分参考答案 判断题 ?软件也会磨损和老化。(X) ?完善性维护是提高或完善软件的性能。(√) ?数据字典是对数据流图中的数据流,加工、数据存储、数据的源和终点进行详细定义。 (X) ?软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开发实际上就是编写程序代码。(X) ?软件模块之间的耦合性越弱越好。(√) ?如果通过软件测试没有发现错误,则说明软件是正确的。(X) ?快速原型模型可以有效地适应用户需求的动态变化。(√) ?模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高聚,低耦合度的软件产品。(√) ?集成测试主要由用户来完成。(X) ?确认测试计划应该在可行性研究阶段制定(X) ?白盒测试无需考虑模块部的执行过程和程序结构,只要了解模块的功能即可。(X) ?软件概要设计包括软件系统结构设计以及数据结构和数据库设计。(√) ?软件工程采用的生存周期方法就是从时间角度对软件的开发和维护这个复杂问题进行分解,将软件生存的时期分为若干阶段。(√) ?系统流程图表达的是部件的信息流程,还表示对信息进行加工处理的控制过程。(╳)?模块越多,开发成本越小。(╳) ?软件测试的目的就是证明软件没有错。(╳) ?PAD图在设置了五种基本的控制结构后,还允许递归使用。(√) ?在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案。(×) ?SA法是面向数据流,建立在数据封闭原则上的需求分析方法。(√) ?HIPO 法既是需求分析方法,又是软件设计方法。(√) ?在面向对象的需求分析方法中,建立动态模型是最主要的任务。(×) ?加工小说明是对系统流程图中的加工进行说明。(×) ?判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。(×) ?需求分析的主要方法有SD 法、OOA 法及HIPO 法等。(×) ?分层的DFD 图可以用于可行性分析阶段,描述系统的物理结构。(×) ?信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R 图。(√) ?用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。(√) ?PDL经常表现为一种"混杂"的形式,他不允许自然语言如英语的词汇与某种结构化程序设计语言(如Pascal,C,Ada等)的语法结构交织在一起.(X) ?设计阶段的输出是编码阶段的输入.(√) ?通过软件测试,可以发现软件中所有潜伏的错误.(X) ?非结构化维护用于软件的配置中只有源代码维护.(√) ?系统规格说明是系统分析和定义阶段生成的一种文档.(√) ?数据流图的分解速度应保持较高.通常一个加工每次可分解为10~20个子加工.(X)

软件工程考试题库

软件工程概述 一单项选择 1.软件生命周期一般包括:软件开发期和软件运行期,下述(D)不是软件开发期所应包含的内容。 A需求分析B结构设计C程序编制D软件维护 2.软件是一种逻辑产品,它的开发主要是(A)。 A研制B拷贝C再生产D复制 3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是(C)。 A喷泉模型B增量模型C瀑布模型D螺旋模型 4.在软件生存周期中,(B)阶段必须要回答的问题是“要解决的问题是做什么?”。 A详细设计B可行性分析和项目开发计划C概要设计D软件测试 5.软件产品与物质产品有很大区别,软件产品是一种(C)产品 A有形B消耗C逻辑D文档 6.(C)把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。 A原型模型B螺旋模型C基于知识的智能模型D喷泉模型 7.(B)阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。 A概要设计B详细设计C编码D测试 8.下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是(A)。 A原型模型B瀑布模型C基于知识的智能模型D变换模型 9.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是(C)。 A原型模型B瀑布模型C喷泉模型D螺旋模型 10.下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是(D)。 A原型模型B瀑布模型C喷泉模型D螺旋模型 11.软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为(C)。 A可修改性B可靠性C可适应性D可重用性 12.软件特性中,一个软件能再次用于其他相关应用的程度称为(B)。 A可移植性B可重用性C容错性D可适应性 13.软件特性中,(A)是指系统具有清晰的结构,能直接反映问题的需求的程度。 A可理解性B可靠性C可适应性D可重用性 14.软件特性中,软件产品交付使用后,在实现改正潜伏的错误、改进性能、适应环境变化等方面工作的难易程度称为(B)。 A可理解性B可维护性C可适应性D可重用性 15.软件特性中,软件从一个计算机系统或环境移植到另一个上去的难易程度指的是(C). A可理解性B可修改性C可移植性D可重用性 16.软件特性中,在给定的时间间隔内,程序成功运行的概率指的是(D)。 A有效性B可适应性C正确性D可靠性 17.软件特性中,允许对软件进行修改而不增加其复杂性指的是(A)。 A可修改性B可适应性C可维护性D可移植性 18.软件特性中,多个软件元素相互通讯并协同完成任务的能力指的是(B)。 A可理解性B可互操作性C可维护性D可追踪性 19.软件特性中,根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向

软件工程复习题

软件工程复习题纲 1、什么叫软件? 2、什么叫软件危机? 3、什么叫软件工程? 4、两种软件工程方法学开发软件时要建立哪些模型? 5、软件设计分哪两个阶段?总体设计的两个阶段分别是什么? 6、UML中实现关系、依赖关系、泛化关系等符号? 7、软件与硬件的区别是什么? 8、耦合与内聚分别有哪些?如何定义?如何区分? 9、软件测试的目的是什么? 10、软件需求分析的任务是什么? 11、UML中活动图、状态图、顺序图都分别描述什么? 12、UML中的事物有哪些? 13、瀑布模型与原型模型分别适用于开发哪些软件? 14、软件测试的步骤有哪些?每个测试阶段的测试依据是什么?分别有谁来测试? 15、白盒测试与黑盒测试分别有哪些测试方法?如何对具体问题测试? 16、软件设计的原则有哪些? 17、数据流图的作用是什么?如何画数据流图? 18、什么叫数据字典?如何写数据字典? 19、什么叫流图?如何画出流图?流图的环形复杂度如何计算? 20、面向对象的基本概念类、对象、封装、继承等定义是什么? 21、用例图的作用是什么? 22、详细设计阶段用到了哪些图形工具? 23、什么叫维护?维护的类型有哪些? 24、计算机软件的开发经过哪三个大阶段? 25、软件开发的各阶段的任务是什么? 26、UML中的关系有哪些? 27、用例、活动、状态、节点等图形符号分别是什么? 28、软件工程的启发式规则有哪些? 29、模块的作用域与控制域分别指什么? 30、模块的扇入、扇出、深度、宽度分别是什么意思? 31、所有讲过的例题、留过的作业题。 相关习题: 一、填空、选择题 1、画出UML中依赖关系的图形符号。 2、在UML 2.0中定义了四种交互图,其中强调对象调用顺序的是图。 3、UML中实现关系的图形符号是。 4、软件生命周期可划分为8个阶段,它们是什么? 5、软件测试的目的是发现错误,通常把测试方法按功能划分为和两 大类。因为通常不可能做到穷尽测试,所以精心设计是保证达到测试目的所必须的。 6、计算机软件的开发经过三个阶段分别为:定义、和运行。 7、软件维护的活动包括四种:、、和

软件工程课后习题答案

软件工程课后习题答案 习题1 略。 习题2 略。 习题3 略。 习题4 2.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则? 人们在理解用自然语言描述得规格说明时,容易产生二义性。为了克服非形式化方法得缺点,人们把数学引入软件开发工程,创造了基于数学得形式化说明技术。 应用形式化方法得准则: (1)应该选用释放得表示方法; (2)应该形式化,但不要过分形式化; (3)应该估算成本; (4)应该有形式化方法顾问随时提供咨询; (5)不应该放弃传统得开发方法; (6)应该建立详尽得文档; (7)不应该放弃质量标准; (8)不应该盲目依赖形式化方法; (9)应该测试、测试再测试; (10)应该重用。 4.用有穷状态机说明自动化图书馆流通系统

习题5 略。 习题6 略。 习题7 略。 习题8 略。 习题9 1.什么就是面向对象方法学?它有哪些优点? 面向对象方法学,就是尽可能模拟人类习惯得思维方式,使开发软件得方法与过程尽可能接近人类认识世界解决问题得方法与过程,从而使得实现解法得解空间(也称为求解域)与描述问题得问题空间(也称为问题域)在结构上尽可能一致。 优点: 1.与人类习惯得思维方法一致; 2.稳定性好; 3.可重用性好; 4.较易开发大型软件产品; 5.可维护性好 10.建立订货系统得用例模型。 分析如下:从对这个订货系统得需求可以知道,仓库管理员通过放在仓库中得终端把零件入库/出库市事务报告给订货系统,系统接受到事务信息之后应该处理事务;采购员需要使用订货系统提供得产生报表功能,以获取订货报表。综上所述,用例如下: 习题10 1.用面向对象方法分析研究本书习题2第2题中描述得储蓄系统,试建立它得对象模型、动态模型与功能模型。

软件工程课后习题参考答案

1.简述软件开发的本质。 答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。P19 2.简述实施软件开发的基本途径。 答:实施软件开发的基本途径是系统建模。所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。P19 3.简述何谓模型以及软件开发中所涉及的模型。 答:模型是一个抽象。该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。 软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。 4.简述软件开发所涉及的两大类技术。 答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。 5、简述需求与需求规约的基本性质。 答:需求的基本性质:1) 必要的,该需求是用户所要求的。2)无歧义的,该需求只能用一种方式解释。3)可测的,该需求是可进行测试的。4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。5)可测量的,该需求是可测量的。 需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。 3)完整的:没有被遗漏的需求。4)一致的:不存在互斥的需求。 6、简述软件需求的分类。

答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可 7、举例说明功能需求和非功能需求之间的基本关系。 答: 非功能需求可作用于一个或多个功能需求,例如 非功能需求可作用于一个或多个功能需求 其中,非功能需求1作用于功能需求1和功能需求3等;非功能需求2作用于功能需求2等。P24 8、有哪几种常用的初始需求发现技术 答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。P26 9、简述需求规约的3种基本形式。 (1) 非形式化的需求规约。非形式化的需求规约即以一种自然语言来表达需求规约,如同使用一种自然语言写了一篇文章。(2) 半形式化的需求规约。半形式化的需求规约即以半形式化符号体系(包括术语表、标准化的表达格式等)来表达需求规约。(3)形式化的需求规约。形式化的需求规约即以一种基于良构数学概念的符号体系来编制需求规约,一般往往伴有解释性注释的支持。 P29 10、简述软件需求规约的内容和作用。 答:软件需求规约的内容有:引言、总体描述、特定需求、附录、索引。P28 需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求规约是一个管理控制点。3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。4)需求规约是创建产品验收测试计划和用户指南的基础。P31 11、简述需求规约在项目开发中的基本作用。 答:需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求

软件工程题库

软件工程单元一(概述) 一单项选择 1.软件是一种逻辑产品,它的开发主要是(A )。 A研制B拷贝C再生产D复制 2.软件生命周期一般包括:软件开发期和软件运行期,下述(D )不是软件开发期所应包含的内容。 A需求分析 B 结构设计C程序编制D软件维护 3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是( C )。 A喷泉模型 B 增量模型C瀑布模型D螺旋模型 4.在软件生存周期中,(B )阶段必须要回答的问题是“要解决的问题是做什么?”。 A详细设计 B 可行性分析和项目开发计划C概要设计D软件测试 5.软件产品与物质产品有很大区别,软件产品是一种(C )产品 A有形 B 消耗C逻辑D文档 6.(C )把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。 A 原型模型 B 螺旋模型 C 基于知识的智能模型 D 喷泉模型 7.( B )阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。A概要设计 B 详细设计 C 编码 D 测试 8.下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是(A )。 A 原型模型 B 瀑布模型 C 基于知识的智能模型 D 变换模型 9.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是( C )。 A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型 10.下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是(D )。 A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型 11.软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为(C )。 A可修改性B可靠性C可适应性 D 可重用性 12.软件特性中,一个软件能再次用于其他相关应用的程度称为(B )。 A可移植性B可重用性 C 容错性 D 可适应性 13.软件特性中,(A )是指系统具有清晰的结构,能直接反映问题的需求的程度。 A可理解性B可靠性C可适应性 D 可重用性 14.软件特性中,软件产品交付使用后,在实现改正潜伏的错误、改进性能、适应环境变化等方面工作的难易程度称为(B )。 A可理解性 B 可维护性C可适应性 D 可重用性 15.软件特性中,软件从一个计算机系统或环境移植到另一个上去的难易程度指的是(C ). A可理解性B可修改性C可移植性 D 可重用性 16.软件特性中,在给定的时间间隔内,程序成功运行的概率指的是( D )。 A有效性B可适应性C正确性 D 可靠性 17.软件特性中,允许对软件进行修改而不增加其复杂性指的是(A )。 A可修改性B可适应性C可维护性 D 可移植性 18.软件特性中,多个软件元素相互通讯并协同完成任务的能力指的是(B )。 A可理解性B可互操作性C可维护性 D 可追踪性 19.软件特性中,根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力指的是(C )。 A 可理解性 B 可互操作性C可追踪性 D 可维护性 20.软件的可修改性支持软件的(D )。 A 有效性 B 可互操作性C可追踪性 D 可维护性 21.软件的可移植性支持软件的(A )。 A 可适应性 B 可互操作性C可追踪性 D 有效性 22.软件的可理解性支持软件的(B )。

软件工程(2nd)教材复习题答案

习题答案 习题一答案 一、选择题 1. 软件的主要特性是(A B C)。 A) 无形 B) 高成本 C) 包括程序和文档 D) 可独立构成计算机系统 2. 软件工程三要素是(B)。 A) 技术、方法和工具 B) 方法、工具和过程 C) 方法、对象和类 D) 过程、模型、方法 3. 包含风险分析的软件工程模型是(A)。 A) 螺旋模型 B) 瀑布模型 C) 增量模型 D) 喷泉模型 4. 软件工程的主要目标是(C)。 A) 软件需求 B) 软件设计 C) 风险分析 D) 软件实现 5. 下列属于面向对象开发方法的是(A B C D)。 A) Booch B) UML C) Coad D) OMT 6. 软件危机的主要表现是(B D)。 A) 软件成本太高 B) 软件产品的质量低劣 C) 软件开发人员明显不足 D) 软件生产率低下 7. 软件开发方法的主要工作模型有(A B C) A) 螺旋模型 B) 循环模型 C) 瀑布模型 D) 专家模型 8. 软件工程的目标有(A B C)。 A) 易于维护 B) 低的开发成本 C) 高性能 D) 短的开发期 9. 软件工程学的目的和意义是(A D)。 A) 应用科学的方法和工程化的规管理来指导软件开发 B) 克服软件危机 C) 作好软件开发的培训工作 D) 以较低的成本开发出高质量的软件 二、判断题 1. 软件就是程序,编写软件就是编写程序。(×) 2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。(×) 3. 结构化方法的工作模型是使用螺旋模型进行开发。(×) 4. 结构化方法和OO方法都是一种面向过程的软件开发方法。(×) 5. 原型化开发方法包括生成原型和实现原型两个步骤。(×) 6. 面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。( √) 7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。(×) 8. 软件工具的作用是为了延长软件产品的寿命。(×) 9. 软件工程过程应该以软件设计为中心,关键是编写程序。(×) 10. RCP法与RSP法的主要区别是前者采用循环渐进的开发方式,原型将成为最终的产品,而 后者原型将被废弃。(√)

软件工程考试题(带答案)..

一、选择题 1.软件开发瀑布模型中的软件定义时期各个阶段依次是:(B) A) 可行性研究,问题定义,需求分析。 B) 问题定义,可行性研究,需求分析。 C) 可行性研究,需求分析,问题定义。 D) 以上顺序都不对。 2.可行性研究主要从以下几个方面进行研究:(A) A)技术可行性,经济可行性,操作可行性。 B)技术可行性,经济可行性,系统可行性。 C)经济可行性,系统可行性,操作可行性。 D)经济可行性,系统可行性,时间可行性。 3 耦合是对软件不同模块之间互连程度的度量。各种耦合按从强到弱排列如下:(C) A) 内容耦合,控制耦合,数据耦合,公共环境耦合。 B) 内容耦合,控制耦合,公共环境耦合,数据耦合。 C) 内容耦合,公共环境耦合,控制耦合,数据耦合。 D) 控制耦合,内容耦合,数据耦合,公共环境耦合。4.在详细设计阶段所使用到的设计工具是:(A) A) 程序流程图,PAD图,N-S图,HIPO图,判定表, 判定树. B) 数据流程图,Yourdon 图,程序流程图,PAD图, N-S图,HIPO图。 C) 判定表,判定树,PDL,程序流程图,PAD图,N- S图。 D) 判定表,判定树,数据流程图,系统流程图,程序 流程图,层次图。 5 按照软件工程的原则,模块的作用域和模块的控制域之间的关系

是:(A) A)模块的作用域应在模块的控制域之内。 B)模块的控制域应在模块的作用域之内。 C)模块的控制域与模块的作用域互相独立。 D)以上说法都不对。 6在软件生命周期中,能准确确定软件系统的体系结构的功能阶段是(C) A.概要设计 B.详细设计 C.需求分析 D.可行性分析 7下面不是软件工程的3个要素的是(C) A过程 B.方法 C.环境 D.工具 8.下面不属于软件的组成的是(B) A程序 B.记录 C.文档 D.数据 9在瀑布模型中,将软件分为若干个时期,软件项目的可行性研究一般归属于(C) A.维护时期 B.运行时期 C.定义时期 D.开发时期 10.在瀑布模型中,下面(C)是其突出的缺点。 A.不适应平台的变动 B.不适应算法的变动 C.不适应用户需求的变动 D.不适应程序语言的变动 11下面不属于软件的特点的是(D)。 A软件是一种软件产品 B软件产品不会用坏,不存在磨损、消耗问题 C软件产品的生产主要是研制 D软件产品非常便宜 12 软件开发工具是协助开发人员进行软件开发活动所使用的软件或环境。下面不是软件开发工具的是(A)。

软件工程试题与答案 (11)

选择题 1、以下哪个不是详细设计中常用的图形描述工具 A 。 A、数据流图 B、程序流图 C、盒图(N-S图) D、问题分析图(PAD) 2、耦合是对软件结构中各个不同模块之间互相关联程度的度量。一个模块直接访问另一个模块的内部信息应属于 B 方式。 A、控制耦合 B、内容耦合 C、数据耦合 D、外部耦合 3、在七种内聚中属于最强的是功能内聚,最弱的是偶然内聚 4、软件工程的原则包括: 模块化 、抽象与 逐步求精 、信息隐藏与局部化、 模块独立 。 模块 D ,则说明模块的独立性越强。 A.耦合越强 B、扇入数越高 C、扇入数越低 D、耦合越弱 5、软件设计包括 D 两个阶段。 A、接口设计和结构设计 B、数据设计和概要设计 C、结构设计和过程设计 D、概要设计和详细设计 6、现有一个计算类型的程序,它的输入只有一个Y,其范围是— 50≤Y≤50。现从输入的角度考虑设计了一组测试用例:—100,100,0。设计这组测试用例的方法是 D 173页 A、条件覆盖法 B、边缘值分析法 C、错误推测法 D 、等价划分法 7、系统设计分为两个阶段分别为 设计方案 与 选择方案 92页 。 8、对于变换型的数据流图,按照软件设计思想,要将一个大型复杂的软件进行分解,要确定数据流图的输入边界,输出边界和变换中心。 9、自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先策略和 宽度优先的策略 157页。 10、在用面向对象观点建立起的3种模型中, B 231页基本、最重要、最核心的。 A、动态模型 B、对象模型 C、功能模型 D、状态模型 11、在软件结构图的有关术语中,用于表示软件结构中控制的层数的是 C 。 A、扇出 B、扇入 C、深度 D、宽度 12、指出PDL是哪种语言过程设计语言 128页 13、在进行软件测试时,首先应当进行单元测试,然后再进行组装

-软件工程习题答案参考

软件工程 绪论 1.什么是软件危机?为什么会产生软件危机? 答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。 (2).软件生产技术进步缓慢 2.什么是软件生产工程化?工程化生产方法与早期的程序设计方法 主要差别在哪里? 答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。 3.分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管 理的相互关系。 答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。新方法在推行初期,总有人不愿接受和采用。若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。所以对于一

个理想的软件工程环境,应该同时具备技术和管理两个方面。 4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。 答:用C++开发一个软件,是校园一卡通的模块。首先,要在编辑程序支持下在计算机中输入源程序。然后编译程序,把源程序翻译成目标程序。如果发现错误,就重新调入编辑程序对源程序进行修改。编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。 5.什么是软件工程环境?谈谈你对环境重要性的认识。答:方法与工具相结合,再加上配套的软、硬件支持就形成环境。例如在批处理时代,用户开发的程序是分批送入计算机中心的计算机的,有了错误,就得下机修改。程序员对自己写的程序只能继续地跟踪,思路经常被迫中断,效率难于提高。分时系统的使用,使开发人员从此能在自己的终端上跟踪程序的开发,仅此一点,就明显提高了开发的效率。 6. 何谓面向对象软件工程?简述它与传统软件工程在各型软件开发中的作用。 答:以面向对象程序设计为基础。 7. 软件按规模大小可分成哪几类?简述软件工程中各型软件开发中的作用。 答:按规模分为极小、小、中、大、甚大、极大。(1)中小型软件:

软件工程题库

软件工程题库 一单项选择 1.软件是一种逻辑产品,它的开发主要是(A )。 A研制B拷贝C再生产D复制 2.软件生命周期一般包括:软件开发期和软件运行期,下述(D )不是软件开发期所应包含的内容。 A需求分析 B 结构设计C程序编制D软件维护 3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是( C )。 A喷泉模型 B 增量模型C瀑布模型D螺旋模型 4.在软件生存周期中,(B )阶段必须要回答的问题是“要解决的问题是做什么?”。 A详细设计 B 可行性分析和项目开发计划C概要设计D软件测试 5.软件产品与物质产品有很大区别,软件产品是一种(C )产品 A有形 B 消耗C逻辑D文档 6.(C )把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。 A 原型模型 B 螺旋模型 C 基于知识的智能模型 D 喷泉模型 7.( B )阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。A概要设计 B 详细设计 C 编码 D 测试 8.下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是(A )。 A 原型模型 B 瀑布模型 C 基于知识的智能模型 D 变换模型 9.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是( C )。 A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型 10.下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是( D )。 A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型 11.软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为(C )。 A可修改性B可靠性C可适应性 D 可重用性 12.软件特性中,一个软件能再次用于其他相关应用的程度称为(B )。 A可移植性B可重用性 C 容错性 D 可适应性 13.软件特性中,(A )是指系统具有清晰的结构,能直接反映问题的需求的程度。 A可理解性B可靠性C可适应性 D 可重用性 14.软件特性中,软件产品交付使用后,在实现改正潜伏的错误、改进性能、适应环境变化等方面工作的难易程度称为( B )。 A可理解性 B 可维护性C可适应性 D 可重用性 15.软件特性中,软件从一个计算机系统或环境移植到另一个上去的难易程度指的是(C ). A可理解性B可修改性C可移植性 D 可重用性 16.软件特性中,在给定的时间间隔内,程序成功运行的概率指的是( D )。 A有效性B可适应性C正确性 D 可靠性 17.软件特性中,允许对软件进行修改而不增加其复杂性指的是(A )。 A可修改性B可适应性C可维护性 D 可移植性 18.软件特性中,多个软件元素相互通讯并协同完成任务的能力指的是(B )。 A可理解性B可互操作性C可维护性 D 可追踪性 19.软件特性中,根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行

经典软件工程习题

第六章软件工程习题解答 1.下图就是被测程序流程图,试用条件覆盖方法为它设计足够的测试用例。 答: 条件覆盖法 对第一个判断:条件X>1 取真值为T1; 取假值为~T1; X<2 取真值为T2; 取假值为~T2; 对第二个判断:条件X<3 取真值为T3; 取假值为~T3; 2、某旅馆的电话服务如下: 可以拨分机号与外线号码。分机号就是从7201 至7299 。外线号码先拨9 ,然后就是市话号码或长话号码。长话号码就是以区号与市话号码组成。区号就是从100 到300 中任意的数字串。市话号码就是以局号与分局号组成。局号可以就是455 , 466 , 888 , 552 中任意一个号码。分局号就是任意长度为4 的数字串。要求:写出在数据字典中,电话号码的数据条目的定义( 即组成) 。 答: 电话号码= 分机号|外线号码; 分机号=7201、、、7299 ;

外线号码=9+ [市话号码|长话号码] 长话号码= 区号+ 市话号码; 区号=100、、、300 ; 市话号码= 局号+ 分局号 局号= [455 |466 |888 |552 ]; 分局号=4{ 数字}4 3、某公司为本科以上学历的人重新分配工作,分配原则如下: (1)、如果年龄不满18 岁,学历就是本科,男性要求报考研究生,女性则担任行政工作; (2)、如果年龄满18 岁不满50 岁,学历本科,不分男女,任中层领导职务,学历就是硕士不分男女,任课题组组长; (3)、如果年龄满50 岁,学历本科,男性任科研人员,女性则担任资料员,学历就是硕士不分男女,任课题组组长。 要求:画出分析过程,得出判定表,并进行化简。 (2) 计算组合数2*3*2=12 ; (3) 初步判定表 (4) 简化后的判定表。

软件工程课后习题答案

软件工程课后习题答案 第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

软件工程题库及答案

一、选择题 软件(2) 1.在软件开发的各种资源中,( D )是最重要的资源。 A 开发工具 B 方法 C 硬件环境 D 人员 2.软件的复杂性是(A ),它引起人员通信困难、开发费用超支、开发时间超时等问题。 A 固有的 B 人为的 C 可消除的 D 不可降低的 3.3:软件是计算机系统中与硬件相互依存的另一部分,它的组成部分是(D )。 A.程序、数据 B.程序、文档 C.程序 D. 程序、数据、文档 4.软件是一种(B )产品。 A、有形 B、逻辑 C、物质 D、消耗 软件危机(1) 5.1:开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( C ) A.软件工程 B.软件周期 C.软件危机 D.软件产生 6.2:在软件生产的程序系统时代由于软件规模扩大和软件复杂性提高等原因导致了 ( A ) A.软件危机B.软件工程C.程序设计革命D.结构化程序设计 7.3:以下哪一项不是软件危机的表现形式( C ) (A)成本高(B)生产率低 (C) 技术发展快(D)质量得不到保证 8.4:“软件危机”产生的主要原因是( A )。 A.软件日益庞大 B.开发方法不当 C.开发人员编写程序能力差 D.没有维护好软件 9.5:软件危机是指在软件开发和( C )过程中遇到的一系列严重问题。 A 开发 B 使用C维护D更新 软件工程(2) 10.1:为了解决软件危机人们提出了用(B )的原理来设计软件,这就是软件工程诞生 的基础。 (A) 运筹学(B) 工程学(C) 软件学(D) 数学 11.2.在软件工程时期,决定软件质量的主要因素是( A )

A.管理水平 B.个人程序技术C.小组技术水平 D.硬件的发展 12. 3. 软件管理工作涉及到的直接对象不包括( B )。 A.软件开发人员 B.硬件设备 C.项目经费 D.软件项目 13. 4. 软件工程方法学有三个要素,它们是(A ) A.方法、工具和过程 B.质量、进度和成本 C.顺序、分支和循环 D.入口、过程、出口生命周期及模型(5) 14.1:软件工程中描述生命周期的瀑布模型一般包括计划、( A )、设计、编码、测试、维 护等几个阶段。 A.需求分析 B.需求调查 C.可行性分析 D.问题定义 15. 2.瀑布模型把软件生存周期划分为软件计划、软件开发与(C )三个阶段,而每一阶 段又可分为若干更小的阶段。 A. 详细设计 B. 可行性分析 C. 运行与维护 D. 测试与排错 16.3:下列哪个模型没有采用迭代的思想(A ) A.瀑布模型 B.渐增模型C.螺旋模型 D.RUP模型 17.4:下列关于瀑布模型的描述正确的是( D )。 A.利用瀑布模型,如果发现问题修改的代价很低 B.瀑布模型的核心是按照软件开发的时间顺序将问题简化 C.瀑布模型具有良好的灵活性 D.瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开 18.5:瀑布模型本质上是一种(A )模型。 A.线性顺序 B.顺序迭代 C.线性迭代 D.早期产品 19. 6. 快速原型模型的主要特点之一是( D ) A.开发完毕才见到产品 B.及早提供全部完整的软件产品 C.开发完毕后才见到工作软件 D.及早提供工作软件 20.7:瀑布模型的关键不足在于( B ) (A)过于简单(B)不能适应需求的动态变更 (C)过于灵活(D)各个阶段需要进行评审 21.8:瀑布模型存在的问题是( D )。 A.用户容易参与开发 B.缺乏灵活性C.用户与开发者易沟通 D.适用可变需求 问题定义(1)

经典软件工程习题

第六章软件工程习题解答 1.下图是被测程序流程图,试用条件覆盖方法为它设计足够的测试用例。 答:条件覆盖法 对第一个判断:条件X>1 取真值为T1; 取假值为~T1; X<2 取真值为T2; 取假值为~T2; 对第二个判断:条件X<3 取真值为T3; 取假值为~T3; 2. 某旅馆的服务如下:可以拨分机号和外线。分机号是从7201 至7299 。外线先拨9 ,然后是市话或长话。长话是以区号和市话组成。区号是从100 到300 中任意的数字串。市 . .

话是以局号和分局号组成。局号可以是455 ,466 ,888 ,552 中任意一个。分局号是任意长度为4 的数字串。要求:写出在数据字典中,的数据条目的定义( 即组成) 。答: = 分机号|外线;分机号=7201...7299 ; 外线=9+ [市话|长话] 长话= 区号+ 市话;区号=100...300 ;市话= 局号+ 分局号 局号= [455 |466 |888 |552 ];分局号=4{ 数字}4 3. 某公司为本科以上学历的人重新分配工作,分配原则如下: (1). 如果年龄不满18 岁,学历是本科,男性要求报考研究生,女性则担任行政工作;(2). 如果年龄满18 岁不满50 岁,学历本科,不分男女,任中层领导职务,学历是硕士不分男女,任课题组组长; (3). 如果年龄满50 岁,学历本科,男性任科研人员,女性则担任资料员,学历是硕士不分男女,任课题组组长。 要求:画出分析过程,得出判定表,并进行化简。 (2) 计算组合数2*3*2=12 ; (3) 初步判定表 . .

4. 某培训中心要研制一个计算机管理系统。它的业务是: 将学员发来的信件收集分类后,按几种不同的情况处理。 1) 如果是报名的,则将报名数据送给负责报名事务的职员,他们将查阅课程文件,检查 该课程是否额满,然后在学生文件、课程文件上登记,并开出报告单交财务部门,财务人员开出发票给学生。 2) 如果是想注销原来已选修的课程,则由注销人员在课程文件、学生文件和帐目文件上做相应的修改,并给学生注销单。 3) 如果是付款的,则由财务人员在帐目文件上登记,也给学生一收费收据。 要求: (1)对以上问题画出数据流程图。(5 分) (2)画出该培训管理的软件结构图的主图。(5 分) . .

相关文档
相关文档 最新文档