软件工程课后习题(共7页).doc
《软件工程课后习题(共7页).doc》由会员分享,可在线阅读,更多相关《软件工程课后习题(共7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1.简述软件设计阶段的任务及主要完成的工作。答:设计阶段的任务是给出系统的实现方案。工作包括概要设计和详细设计。概要设计的主要任务是确定系统的架构及模块组成、模块之间的调用关系、每个模块完成的功能及接口另外还包括测试计划及系统数据结构和数据库设计等。详细设计主要是确定每个模块内部的细节给出主要的算法及控制流程。2.什么是对象? 请举例子说明。 解:对象是系统中用来描述客观事物的一个实体是构成系统的一个基本单位由一组属性和一组对属性进行操作的服务组成。实体可以是物理的如一个桌子可以是概念上的如一个开发项目 图1 对象和属性之间有何区别? 对象是对客观世界实体的抽象,它是
2、描述实体静态属性的数据和代表实体运动状态的操作结合在一起所构成的统一体。属性只不过是对象的一种特性,它是组成对象的一种成分。3.如何理解软件维护? 解:所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。维护的类型有三种:改正性维护;适应性维护;完善性维护。此外,为提高软件产品的可维护性还需要进行预防性维护。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用应当进行的诊断和改正错误的过程就叫做改正性维护。 为使软件适应这种变化而去修改软件的过程就叫做适应性维护。在软件的使用过程中用户往往会对软件提出新的功能与性能要求。 为了满足这些要求需要修改或再
3、开发软件以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性,这种情况下进行的维护活动叫做完善性维护4以G.J.Myers的观点,简述对软件测试的目的(标/基本任务)解:( 1)为了发现错误而执行程序的过程;(2)好的测试方案极可能发现至今尚未发现的错误测试方案;(3)成功的测试是发现至今尚未发现的错误的测试。8软件工程的过程模型有几种?过程模型的特点?软件工程的过程模型有瀑布模型、快速原型模型、增量模型、螺旋模型。瀑布模型特点:(1)阶段间具有顺序性和依赖性;(2) 推迟实现的观点,划分逻辑设计与物理设计,尽可能推迟程序的物理实现;(3质量保证的观点,每个阶段必须完成规定的文档,对
4、其中问题通过复审及早发现,及早解决。快速原型模型:快速开发工具;得到良好地需求定义,可处理模糊需求;开发者和用户可充分通信;使某些类型的风险降至最低。增量模型:第一个增量往往是核心产品;每一个增量均发布一个可操作产品;早期的增量是最终产品的“可拆卸”版本。螺旋模型:风险驱动的;瀑布模型+快速原型+风险分析;主要适用于内部开发的大规模软件项目。1.什么是软件工程?它目标和内容是什么? 软件工程是:1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2)研究1)中提到的途径。软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只
5、需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程内容:包括开发技术和开发管理两个方面。2、耦合性和内聚性有几种类型? 其耦合度、内聚强度的顺序如何?答:低:非直接耦合 数据耦合标记耦合 控制耦合外部耦合 公共耦合内容耦合 :高;强:功能内聚 信息内聚 通信内聚 过程内聚 时间内聚 逻辑内聚 巧合内聚:弱 8、衡量模块独立性的两个标准是什么?各表示什么含义? 内聚和耦合。 内聚:内聚:内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏局部化概念的自然扩展;耦合:也称块间联系,耦合是对一个软件结构内不同模块之间互连程度的度量。 内聚:又称为块内联系,指模块内
6、部各成分之间相互关联的程度,以高内聚为设计目标。耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。3、简述需求分析工作可以分成哪四个方面?软件需求分析的有哪三个基本原则?答:需求分析阶段分成四个方面:对问题的识别、分析与综合、制定规格说明和评审。三个基本原则:必须能够表达和理解问题的数据域和功能域;必须按自顶向下、逐步分解的方式对问题进行分解和不断细化;要给出系统的逻辑视图和物理视图。2、软件开发中有哪几种过程模型?哪些适用于面向对象的软件开发? 软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等。其中喷泉
7、模型、统一软件过程适用于面向对象的软件开发。1、 什么是软件概要设计?该阶段的基本任务是什么?把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。基本任务:设计软件系统结构;进行数据结构及数据库的设计;编写概要设计的文档 ;评审6、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?软件测试要经过的步骤是:单元测试集成测试确认测试系统测试。 单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档;集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要
8、设计是否合理有效;确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求;系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。7、什么是软件生存周期?它有哪几个活动? 软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。14、软件设计的基本原理包括哪些内容? 模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求。抽象:认识复杂现象过程所使用权的工具,只考虑事物本质
9、的共同特性,忽略细节和其它因素。通过抽象确定组成软件的过程实体。信息隐蔽:将模块实现自身功能的细节与数据隐蔽起来。模块间仅交换为完成系统功能所必须的信息。模块独立性:每个模块只完成系统要求的独立的子功能。1.什么是需求分析?需求分析阶段的基本任务是什么? 需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。基本任务:问题识别;分析与综合,导出软件的逻辑模型;编写文档12、单元测试有哪些内容? 单元测试主要针对模块的以下五个基本特征进行测试:(1)模块接口 ;(2)局部数据结构 ;(3)重要的执行路径
10、;(4)错误处理;(5)边界条件21、说明面向对象的特征? 面向对象的特征是:1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使
11、之更适合特殊的需要。3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。4.多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。4.请简述黑盒测试和白盒测试有何区别,黑盒测试有哪些常用方法? 黑盒测试和白盒测试的区别:前者基于功能,后者基于结构;黑盒测试常用方法有:边界值、等价类、因果图、错误推测法等。4.什么是黑盒测试?黑盒测试主
12、要采用的技术有哪些? 测试也称为功能测试它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试主要采用的技术有:等价分类法、边沿值分析法、错误推测法和因果图等技术。5.什么是白盒测试?白盒测试主要采用的技术有哪些? 测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。白盒测试主要采用的技术有
13、:路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。26.CMM全称是什么?分为哪几个级别? CMM全称是软件能力成熟度模型;从无序到有序的进化分成5个级别,分别为:1 初始级;2 可重复级;3 已定义级;4 已管理级;5 优化级。28、软件生命周期划分为哪几个阶段? 软件生命周期分为三个时期八个阶段:软件定义:问题定义、可行性研究;软件开发:需求分析、概要设计、详细设计、编码、测试;软件运行:软件维护1什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面:1)用户对开发出的软件很难满意。2)软件
14、产品的质量往往靠不住。3)一般软件很难维护。4)软件生产效率很低。5)软件开发成本越来越大。6)软件成本与开发进度难以估计7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。2为什么会产生软件危机? (1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。 (2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。 (3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估
15、计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。3怎样克服软件危机? (1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。 (2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。 (3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环
16、环境。总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。1.软件生命周期划分成哪些阶段 软件生命周期(各阶段)软件生命周期由软件定义、软件开发和运行维护三个时期组成。1.软件定义时期划分为三个阶段:问题定义、可行性研究和需求分析;2.开发时期:总体设计、详细设计、编码和单元测试、综合测试;3.维护时期:主要任务是使软件持久地满足用户的需要。2.可行性研究目的? 确定在问题定义中所提出的问题是否值得去解,在限制条件下,问题能否解决。3可行性研究的任务? (1) 进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型; (2) 从系统逻辑模型中,选择问题的若
17、干种主要解法,研究每一种解法的可行性,为以后的行动提出建议; (3) 如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐一个较好的解决方案,并为工程制定一个初步的计划。5可行性研究的步骤? (1)复查系统规模和目标;(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型;(4)进一步定义问题(5)导出和评价供选择的解法 (6)推荐行动方针;(7)草拟开发计划; (8)书写文档提交审查。4可行性研究包括哪几方面的内容? (1)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;(2)经济可行性:经济效益是否超出开发成本;(3)操作可行性:系统操
18、作在用户内部行得通吗?(4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。4.构成软件项目的最终产品: 应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。6软件生存周期为什么划分成阶段? (1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。(2) 可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的组织管理,也便于采用良好的技术方法(3) 使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量,特别是提高了软件的可维护性。7应该怎样来划分阶段? (1)每一个阶段的任务尽可能独立;(2)
19、同一阶段内的任务性质尽可能相同; (3)每一个阶段任务的开始和结束有严格的标准。10什么是软件工程环境: 方法与工具的结合,加上配套的软、硬件支持称为软件工程环境。它能支持开发者按照软件工程的方法,全面完成生存周期中的各项任务。1. 问题定义的任务和主要工作? 问题定义的任务:将用户提出的要求具体化、定量化;确定研制系统的范围,明确研制的边界。问题定义阶段的工作: 1) 通过调查研究,了解系统需求; 2) 确定系统的功能需求、性能需求、可靠性需求、安全及保密性、资源、开发费用及开发进度等的需求; 3) 问题定义阶段的产品-系统目标与范围说明书。6. 可行性研究报告的主要内容? 可行性分析的结果
20、是可行性研究报告,内容包括: (1)系统概述:说明开发的系统名称,提出单位和开发单位。 (2) 可行性研究的前提:系统目标;要求;约束和限制;可行性研究的基本准则等。 (3) 对现有系统的分析:处理流程,图示说明现有系统的处理流程和数据流程;现有系统存在的问题。 (4) 系统需求:主要功能;主要性能及其要求;操作要求;信息要求;限制性要求。(5) 建议系统:系统目标;处理流程;系统结构,功能,性能;系统技术可行性;投资和效益分析;操作可行性;法律可行性。(6) 其它可选方案:与国内外同类型方案的比较;提出一两个可行性方案供论证和探讨。(7) 制定下一阶段的预算。(8) 结论性意见:由用户方、设
21、计方和投资方共同签署意见。1.需求分析的描述工具有哪些? 有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier图、IPO图和需求描述语言等。2.需求分析的基本任务是什么? 准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。4.什么是结构化分析?它的结构化体现在哪里? 结构化分析:使用数据流程图、数据字典、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档-需求规格说明书。结构化体现在将软件系统抽象为一系列的逻辑加工单元,各单元之间以数据流发生关联。5.软件需求规格说明书由哪些部分组成? 组成包括: (1) 引言:编写目的、背景说
22、明、术语定义及参考资料等。 (2) 概述主要功能、约束条件或特殊需求。 (3) 数据流图与数据字典。 (4) 用户接口、硬件接口及软件接口。 (5) 性能需求、属性等。 (6) 其它需求,如数据库、操作及故障处理等。6.为什么数据流图要分层?画分层的DFD要遵循哪些原则? 分层的目的:便于逐步细化、结构清晰。画分层的DFD要遵循哪些原则: (1)父图与子图之间数据要平衡。 (2)分解的深度和层次达到使加工足够简单、易于理解的基本加工为止。 (3)区分局部文件和局部外部项(局限于数据流中某一层或某几层的文件和外部项)。 (4)不要把控制流作为数据流。 (5)忽略琐碎的枝节。 (6)每个数据流要有
23、一个合适的名字,尽量使用现实系统中有具体意义的名字。7.系统流程图与数据流程图有什么区别? 系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具。系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况。数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况。8.数据字典包括哪些内容?它的作用是什么?数据字典是描述数据流图中数据的信息的集合。它对数据流图上每一个成分:数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成。对用户来讲,数据字典为他们提供了数据的明确定义
24、;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型。9.描述加工逻辑的工具有哪些? 有决策树(又称判定树)、决策表(又称判断表)和结构化语言等。1. 系统设计包括哪两个阶段? 系统设计包括总体设计与详细设计两个阶段。2. 总体设计的主要任务是什么?总体设计的主要任务是完成软件结构的设计,确定系统的模块及其模块之间的关系。3. 什么是模块?模块具有哪几个特征?总体设计主要考虑什么特征? 模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。模块具有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性。概要设计主
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课后 习题
限制150内