第一篇:软件工程答案
第一次作业
1.什么是软件?
答:计算机程序和相关文档。
2.什么是软件危机?
答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
3.什么是软件工程?
答:软件工程是关于软件生产的各个方面的工程学科。或者说:采用工程的概念、原理、技术和方法来开发与维护软件,或者说把经过时间考验而证明是正确的管理技术和当前能够得到的合适的开发工具结合起来开发与维护软件,这就是“软件工程”。
第二次作业
说明:以下题目在考试时,可能变成填空题、也可能变成选择题、还有可能变成名词解释。
1.软件工程方法学包括了几个关键要素?
答:包括了3个关键要素,即方法、工具和过程。
2.软件过程包含了那几项基本活动?
答:软件过程包含了4项基本活动:(1)软件描述;(2)软件开发;(3)软件有效性验证;
例如:填空题
软件过程包含了4项基本活动:(1)软件描述;(2)软件开发;(3)软件有效性验证;
(4)软件维护或进化。
例如:选择题
软件过程包含了4项基本活动:(1)软件描述;(2)软件开发;(3)软件有效性验证;
(4)软件维护或进化。
A.验证B.检查C.软件有效性验证D.软件有效性检查
3.什么是模型?
答:模型是人们认识客观事物时,用文字、符号或者图表等进行简化问题描述的一种方式。
第三次作业
1.可行性研究包含哪几个方面?
答:(1)技术可行性、(2)经济可行性、(3)操作可行性。
2.软件维护分为哪几类?
答:根据软件维护的任务与性质不同,通常可将软件维护分为纠错性维护、适应性维护、完善性维护、预防性维护四类活动。
3.软件可维护性的定义是什么?
答:指维护人员理解、改正软件的难易程度。决定软件可维护性的因素有:指整个软件文档和程序的可理解性、可测试性、可修改性。
第四次作业
1.原型法的基本概念是什么?
答:原型法的基本概念有如下三点:(1)原型法不仅可以帮助系统分析员尽早获得更完整更准确的需求,还可以帮助设计人员验证设计方案或演进目标系统。(2)原型法适用于需求非常不明确的系统开发。(3)快速原型法如果使用得当,可以减少软件的总成本。
2.快速原型模型的主要优点是什么?
答:快速原型的本质是用原型系统获取用户的真正需求,开发人员便可依据原型系统书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。
3.什么是面向数据结构方法?
答:面向数据结构方法是结构化方法的变形,它着重数据结构而不是数据流。根据需求基本上都采用顺序、选择和重复构造成分表示数据结构。
第五次作业
1.面向对象分析模型的五个层次是什么?
答:面向对象分析模型的五个层次是主题层、类及对象层、结构层、属性层和服务层,因此其分析步骤也是按五个层次逐步展开。
2.对象的五个特点是什么?
答:对象的五个特点是:自治性;封装性;通信性;被动性(除主动对象外);暂存性。
3.为什么说对象是动态的?
答:面向对象的程序由一组相关类组成,所以类是静态的,程序的执行体现为一组相互通信的对象的活动,所以对象是动态的。
第六次作业
1.需求分析阶段的工作成果是产生大量的系统文档,那么文档的作用有哪些? 答:文档的作用有(1)提高软件的可理解性,便于开发人员之间的沟通与交流;(2)变可见性的软件为部分可见性的文档资料,阶段性的工作成果,便于实施工程管理;(3)阶段性的审查依据;(4)便于用户或其他非开发人员熟悉该软件。
2.需求分析有哪三种方法?
答:需求分析有面向功能分析、面向数据分析、面向对象分析方法。
3.需求分析阶段主要综合考虑的因素有哪些?
答:需求分析阶段主要综合考虑的因素有(1)功能、(2)性能、(3)运行、(4)将来可能提出的要求。
第七次作业
1.软件系统的非功能需求是什么?
答:非功能需求是指那些不直接与系统具体业务功能相关的一类需求。它们与系统的总体特性相关,如可靠性、信息安全性、响应时间和存储空间等。
2.为什么对系统来说非功能需求比功能需求更关键?
答:许多非功能需求关心的是系统整体特性而不是个别的系统特性,因此,非功能需求比功能需求对系统来说更关键。一个功能需求没有满足可能降低系统的能力,而一个非功能系统需求没有满足则可能使整个系统无法使用或者说系统的灵活性、应变能力达不到要求。
3.数据流图的作用是什么?
答:数据流图的作用是用来描述系统的逻辑模型,表示信息在系统中的流动和处理情况。
4.画数据流图可采用的步骤是什么?
答:画数据流图时:首先考虑数据的源点和终点(人或者作为输入/输出对象);接下来考虑处理(动词);最后考虑数据流和数据存储(名词)。
第八次作业
1.什么是执行者?
答:执行者是与系统交互的人或物,它代表外部实体,是一个群体概念,代表的是一类能够使用某个功能的人或物,而不是某个个体。
2.数据字典的定义是什么?
答:数据字典的定义是指对数据流、数据流分量即数据元素、数据存储和处理四类元素进行定义。
3.数据字典的作用是什么?
答:数据字典的作用是:(1)与数据流图配合、描述软件系统的逻辑模型;(2)阶段性文档;(3)对数据流图中除源、终点外的其余成分均进行严格的无二义的、详尽的定义。
第九次作业
1.软件设计阶段的任务是什么?
答:软件设计阶段的任务是对软件需求有了完整、准确、具体的理解之后,接下来的工作任务就是用软件正确地实现这些需求。这个阶段的工作目标是产生概要设计和详细设计文档。
2.结构程序设计常见的三种结构是什么?
答:结构程序设计常见的三种基本结构:顺序、循环、选择。
3.面向对象建模有哪几种?
答:面向对象建模有3种:(1)描述系统功能的功能模型;(2)描述系统数据结构的对象模型;(3)描述系统控制结构的动态模型。即功能模型;对象模型、动态模型。
第十次作业
1.对象的定义是什么?
答:对象的定义是(1)从面向对象程序设计角度看对象定义:对象是具有相同状态的一组操作的集合;(2)从信息的模拟角度看对象定义:对象是对问题域某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。也就是说,对象是对属性值和操作的封装。(3)形式化定义:对象::=
2.面向对象方法学的主要优点是什么?
答:1.与人类习惯的思维方法一致;2.稳定性好;3.可重用性好;4.较易开发大型软件产品;5.可维护性好。
3.什么是类(Class)?
答: 类就是对相同数据和相同操作的一组相似对象的定义,或者说,类是对具有相同属性和行为的一个或多个相似对象的描述。
第十一次作业
1.提高软件可重用性的主要准则是什么?
答:提高软件可重用性的主要准则是:(1)提高方法内聚;(2)减小方法的规模;(3)保持方法的一致性;(4)把策略与实现分开;(5)全面覆盖;(6)尽量不使用全局信息;(7)利用继承机制
2.为什么说在软件开发工作临近结束时才补写有关的一系列文档是不符合软件工程思想的?
答:文档作为软件产品的有形部分,既可作为各开发阶段的成果,又可作为评价、审查工作的主要对象,还可作为前后阶段交接的重要文字资料,这样有助于软件工程管理工作的开展,对于规范化的工作有助于保证软件各阶段的工作质量。若最后才补文档就失去了上述的价值。
3.假设你的任务是对一个已有的软件做重大修改,而且只允许你从下述文档中选取两份:(a)程序的规格说明;(b)程序的详细设计结果(自然语言描述加上某种设计工具表示);(c)源程序清单(其中有适当数量的注释)。你将选取哪两份文档?为什么这样选取?
答:选择(a)和(b)重大修改可能追加到改动系统的需求约定和设计方案,而源程序的改动,甚至程序编制,在详细设计完成后才可进行,比起修改需求或设计方案而言要容易得多。
第十二次作业
1.测试的正确定义是什么?
答:测试的正确定义是“为了发现程序中的错误而执行程序的过程”。这和某些人通常想象的“测试是为了表明程序是正确的”,“成功的测试是没有发现错误的测试’等是完全相反的。
2.什么是黑盒测试?
答:黑盒测试把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。即只测试程序的接口信息。适用于黑盒测试方法有:边界值分析、等价划分、错误推理。
3.计算环形复杂度。
答:流图中的区域数等于环形复杂度;流图G的环形复杂度V(G)=E-N+2,其中E是流图中边的条数,N是流图中节点数;流图G的环形复杂度V(G)=P + 1,其中P是流图中判定节点的数目。
4.调试的目标是什么?它有几种途径?
答:无论采用什么方法,调试的根本目标都是寻找软件错误的原因并改正之。这个目标是通过把系统地评估、直觉和运气组合起来实现的。一般来说,有下列三种调试途径可以采用:·蛮干法;·回溯法;·原因排除法。
第十三次
1.主程序员组的核心有几个人?其角色名称与分工是什么?
答:主程序员:全面负责系统定义、设计、编码、调试、安装。辅助程序员:协助主程序员,必要时替代主程序员(平时侧重于测试方案,分析测试结果)。程序管理员:全部事务性工作(提交上机程序、保存运行语言、进行软件配置)。
2.什么是基线?
答:在软件工程范围内,基线是软件开发的里程碑,它的标志是交付一个或多个软件配置项,这些软件配置项已经通过正式的技术复审而获得认可。或者说,基线是软件生存期中各开发阶段的一个特定点,它标志着一个阶段的结束。
3.能力成熟度模型的组成成分是什么?
答:能力成熟度模型的组成包括以下成分。·成熟度等级(Maturity levels);·过程能力(Process Capability);·关键过程域(Key Process Areas,KPA);·目标(Goals);·公共特性(Common Features);·关键实践(Key Practices)。
4.能力成熟度的五个等级是什么?
答:能力成熟度的五个等级从低到高是:初始级、可重复级、已定义级、已管理级和优化级。
第十四次
1.软件重用的基本要求是什么?
答:为使软构件也像硬件集成电路那样,能在构造各种各样的软件系统时方便地重复使用,就必须使它们满足下列要求。(l)模块独立性强;(2)具有高度可塑性;(3)接口清晰、简明、可靠。
2.类构件的重用方式有哪些?
答:类构件的重用方式有:(1)实例重用;(2)继承重用;(3)多态重用。
3.什么是3C模型?
答:描述可重用的软件构件一种理想的方式是3C模型——概念(concept)、内容(content)和语境(context)。
第二篇:软件工程试题及答案
1、瀑布模型把软件生命周期划分为8个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和(运行阶段)。
2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,(需求分析阶段)出错,对软件的影响最大。
3、在结构化的瀑布模型中,(需求分析阶段)定义的标准将成为软件测试中的系统测试阶段的目标。
4、软件工程的出现主要是由于(软件危机的出现)。
5软件工程方法学的目的:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是软件开发工具和软件开发的环境。
6、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为相互补充。
7、UML是软件开发中的一个重要工具,它主要应用于基于对象的(面向对象)的方法。
8、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(原型化方法)。
9、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的(数据流)。
10、软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是(编码阶
段)。
11、软件开发模型是指软件开发的全部过程、活动和任务的结构框架。主要的开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型和智能模型。螺旋模型将瀑布模型和演化模型相结合,并增加了(风险分析),它建立在()的基础上,沿着螺线自内向外每旋转一圈,就得到(原型)的一个新版本。喷泉模型描述了(面向对象)的开发模型,它体现了这种开发方法创建软件的过程所固有的(递归)和(开发各阶段之间无“间隙”)的特征。
12、以下不属于白盒测试技术的是(等价类划分)。
13、为改正软件系统中潜藏的错误而进行的维护活动称为(纠错性维护)。
14、保证软件质量的手段有复审、复查、管理复审和测试等。其中复审发生在软件生命周期的(每个阶段结束之前)。
15、完整的系统设计应包括(计算机系统设计、应用软件设计、数据库设计和网络设计)。
16、在信息系统的物理模型中,表示系统各个物理组成部分之间的数据流动情况的工具是(系统流程图)。
二、填空题(每题1分,共10分)
1、系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素表达了系统中各种元素之间的(信息流动)情况。
2、成本效益分析的目的是从(经济)角度评价开发一个项目是否可行。
3、自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度
优先策略和(宽度优先策略)。
4、在JSP方法中解决结构冲突的具体办法是(中间数据结构或中间文件)。
5、详细设计的任务是确定每个模块的内部特性,即模块的算法、(使用的数据)。
6、所有软件维护申请报告要按规定方式提出,该报告也称(软件问题)报告。
7、独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图来看,一条独立路径是至少包含有一条(在其他独立路径中未有过)的边的路径。
8、设计任何一个人机界面,一般必须考虑(系统响应时间)、用户帮助机制、错误信息处理和命令方式四个方面。
9、在软件测试中,已知产品内部工作过程,通过测试检验产品内部动作是否按照产品规格说明的规定正常进行的方法称为(白盒)测试法。
10、(耦合度)是对软件结构中模快间关联程度的一种度量。
三、判断题(每题1分,共10分)
1.缺乏有力的方法学的指导和有效的开发工具的支持,这往往是产生软件危机的原因之一。(T)
2.一个好的开发人员应具备的素质和能力不包括具有良好的书面和口头表达能力。(F)
3.在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获取第一手资料,并从中提取出有价值的需求。(F)4.快速原型技术的适用于软件产品要求大量的用户交互、或产生大量的
可视输出、或设计一些复杂的算法等场合。(T)5.流程图也称为程序框图是最常用的一种表示法。(T)6.面向数据设计方法一般都包括下列任务: 确定数据结构特征;用顺序、选择和重复三种基本形式表示数据等步骤。(T)
7.理想的人机界面应针对具有典型个性的特定的一类用户设计。(T)
8.数据输入的一般准则中包括尽量增加用户输入的动作。(F)9.用穷举测试是较现实的测试方法。(F)
10、在软件维护过程中改善性维护是为适应环境的变化而修改软件的活动。(T)
四、论述题
1、软件维护是软件生命周期的重要组成,而影响维护的因素较多,除了人员因素、技术因素和管理因素外,还有程序自身的因素,具体影响因素可归纳为:a)软件系统的规模; b)软件系统的年龄;c)软件系统的结构。试回答以下问题:
1)给出上述三项因素的解释,阐述“规模”、“年龄”和“结构”的具体含义。(5分)
答:系统的规模。指软件系统规模的大小,系统规模越大,维护困难越大。
系统的年龄。系统运行时间越长,可能经过多次修改,从而造成维护的困难。
系统的结构。系统结构合理与否,会给维护带来困难。2)扼要分析影响维护工作量的因素,即分析可能增加维护工作量的因素和可能减少维护工作量的因素。(5分)
答:(1)增加维护工作量的因素有:软件系统的年龄和规模、结构合理性、程序复杂性、用户的数量、应用的变化和文档的质量。(2)减少维护工作量的因素有:结构化技术的使用、自动化工具的使用、数据库技术应用、高性能软件使用、新的软件技术的应用。3)简单传述软件可维护性度量的含义。(5分)
答:可维护性度量表示软件系统维护工作的强度或维护工作量的大小。人们为了度量可维护性,常将可维护性度量问题分解为对:可测试性、可理解性、可修改性、可移植性、可靠性、有效性和可用性的度量。
2、可行性研究报告的主要内容有哪些?(5分)
3、系统设计的内容是什么?(10分)
五、综合题(10分)某电器集团公司下属的厂包括技术科、生产科等基层单位。现在想建立一个计算机辅助企业管理系统,其中:
生产科的任务是:
(1)根据销售公司转来的内部合同(产品型号、规格、数量、交获日期)制定车间月生产计划。
(2)根据车间实际生产日报表、周报表调整月生产计划
(3)以月生产计划为以及,制定产品设计(结构、工艺)及产品组装月计划。
(4)将产品的组装计划传达到各科,将组装月计划分解为周计划,下
达给车间
技术科的任务是:
(1)根据生产科转来的组装计划进行产品结构设计,产生产品装配图给生产科,产生外购需求计划给供应科,并产生产品自制物料清单。
(2)根据组装计划进行产品工艺设计,根据产品自制物料清单产生工艺流程图给零件厂。
试写出以上系统中生产科和技术科处理的软件结构图。
软件工程试题A答案
一、选择题
1.C 2.C 3.A 4.C 5.C 6.B 7.C 8.B 9.B 10.C 11.⑴B⑵D⑶A⑷D⑸A
12、D
13、A
14、A
15、C
16、D
二、填空题
1、信息流动
2、经济
3、宽度优先策略
4、中间数据结构或中间文件
5、使用的数据
6、软件问题
7、在其他独立路径中未有过
8、系统响应时间
9、白盒测试法
10、耦合度
三、判断题
1、√
2、X
3、√
4、√
5、√
6、√
7、√
8、X
9、X
10、X
四、论述题
1、系统的规模。指软件系统规模的大小,系统规模越大,维护困难越大。
系统的年龄。系统运行时间越长,可能经过多次修改,从而造成维护的困难。
系统的结构。系统结构合理与否,会给维护带来困难。
2、增加维护工作量的因素有:
软件系统的年龄和规模、结构合理性、程序复杂性、用户的数量、应用的变化和文档的质量。减少维护工作量的因素有:
结构化技术的使用、自动化工具的使用、数据库技术应用、高性能软件使用、新的软件技术的应用。
3、可维护性度量表示软件系统维护工作的强度或维护工作量的大
小。人们为了度量可维护性,常将可维护性度量问题分解为对:可测试性、可理解性、可修改性、可移植性、可靠性、有效性和可用性的度量。
2、个可行性研究报告的主要内容如下:
(1)引言:说明编写本文档的目的;项目的名称、背景;本文档用到的专门术语和参考资料。
(2)可行性研究前提:可行性研究前提。说明开发项目的功能、性能和基本要求;达到的目标;各种限制条件;可行性研究方法和决定可行性的主要因素。
(3)对现有系统的分析:说明现有系统的处理流程和数据流程;工作负荷;各项费用支出;所需要各类专业技术人员的数量;所需要各种设备;现有系统存在什么问题。
(4)所建议系统的技术可行性分析:所建议系统的简要说明;处理流程和数据流程;与现有的系统比较的优越性;采用所建议系统对用户的影响;对各种设备、现有软件、开发环境、运行环境的影响;对经费支出的影响;对技术可行性的评价。
(5)所建议系统的经济可行性分析:说明所建议系统的各种支出,各种效益;收益投资比;投资回收周期。
(6)社会因素可行性分析:说明法律因素,对合同责任、侵犯专利权、侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理、工作制度、人员素质的要求。
(7)其他可供选择方案:逐一说明其他可供选择的方案,并说明未被推荐的理由。
(8)结论意见:说明项目是否能开发;还需要什么条件才能开发;对项目目标有什么变动等。
3、系统设计阶段先从高层入手,然后细化。系统设计要决定整个结构及风格,这种结构为后面设计阶段的更详细策略的设计提供了基础。
(1)系统分解。系统中主要的组成部分称为子系统,子系统既不是一个对象也不是一个功能,而是类、关联、操作、时间和约束的集合。每次分解的各子系统数目不能太多,最底层子系统称为模块。
(2)确定并发性。分析模型、现实世界及硬件中不少对象均是并发的。系统设计的一个重要目标就是确定哪些是必须同时动作的对象,哪些不是同时动作的对象。后者可以放在一起,而综合成单个控制线或任务。
(3)处理器及任务分配。各并发子系统必须分配给单个硬件单元,要么是一个一般的处理器,要么是一个具体的功能单元,必须 9
完成下面的工作:估计性能要求和资源需求,选择实现子系统的硬软件,将软件子系统分配给各处理器以满足性能要求和极小化处理器之间的通信,决定实现各子系统的各物理单元的连接。
(4)数据存储管理。系统中的内部数据和外部数据的存储管理是一项重要的任务。通常各数据存储可以将数据结构、文件、数据库组合在一起,不同数据存储要在费用、访问时间、容量以及可靠性之间做折中考虑。
(5)全局资源的处理。必须确定全局资源,并且制定访问全局资源的策略。全局资源包括:物理资源,如处理器、驱动器等;空间,如盘空间、工作站屏等;逻辑名字,如对象标识符、类名、文件名等。
如果资源是物理对象,则可以通过建立协议实现对并发系统的访问,以达到自身控制;如果资源是逻辑实体,如对象标识符,那么在共享环境中有冲突访问的可能,如独立的事务可能同时使用同一个对象标识符,则各个全局资源都必须有一个保护对象,由保护对象来控制对该资源的访问。
(6)选择软件控制机制。分析模型中所有交互行为都表示为对象之间的事件。系统设计必须从多种方法中选择某种方法来实现软件的控制。
(7)人机交互接口设计。设计中的大部分工作都与稳定的状态行为有关,但必须考虑用户使用系统的交互接口。
五、综合题
第三篇:软件工程试题及答案
软件工程试题及解答
一,单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的横线上。
1.可行性研究要进行一次_____需求分析。
参考答案为:C
A.详细的B.全面的
C.简化的、压缩的D.彻底的
[解析]软件的可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。其实质是要进行一次简化、压缩了的需求分析、设计过程,要在较高层次上以较抽象的方式进行需求分析和设计过程。因此答案为C。
2.系统流程图用于可行性分析中的_____的描述。
参考答案为:A
A.当前运行系统
B.当前逻辑模型
C.目标系统
D.新系统
[解析]可行性研究首先要确定项目的规模和目标,然后就需要对当前运行的系统进行研究了,在考察系统的基础上,通过描绘现有系统的高层系统流程图,与有关人员一起审查该系统流程图是否正确。描述的对象是当前正在运行的系统,因此选择A。
3.系统流程图是描述_____的工具。
参考答案为:C
A.逻辑系统
B.程序系统
C.体系结构
D.物理系统
[解析]系统流程图是用图形符号来表示系统中的各个元素,例如人工处理、数据库、设备等,流程图表达了系统中各个元素之间的信息流动情况。是描绘物理系统的传统工具。
4._______工具在软件详细设计过程中不采用。
参考答案为:D
A.判定表
B.IPO图
C.PDL
D.DFD图
[解析]详细描述处理过程常用三种工具:图形、表格和语言。其中图形工具有结构化流程图、盒图和问题分析图三种,答案中的判定表是用来表示复杂的条件组合与应做的动作之间的对应关系。IPO图用来描述每个模块输入/输出数据、处理功能及模块调用的详细情况。PDL是过程设计语言的缩写,也称程序描述语言,用于描述模块算法设计和处理细节的语言,这三种都可以在软件详细设计过程中使用,而DFD图则是数据流图,是以图形的方式描绘数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,所以它只是一种功能模型,不能在详细设计过程中使用。
5.程序的三种基本控制结构是
参考答案为:B
A.过程、子程序和分程序
B.顺序、选择和重复
C.递归、堆栈和队列
D.调用、返回和转移
[解析]程序的三种基本控制结构是顺序、选择和循环(重复)。子程序只是程序设计一种方法,递归则是一种算法,都算不上是控制结构。
6.程序的三种基本控制结构的共同特点是
参考答案为:D
A.不能嵌套使用
B.只能用来写简单程序
C.已经用硬件实现
D.只有一个入口和一个出口
[解析]程序的特点就是从一个入口开始,最终以一个出口结束,其间可以用顺序,选择和循环方式对程序的流向进行控制。三种结构可以写出非常复杂的程序,而且选择和循环都可以嵌套设计。
7.产生软件维护的副作用,是指
参考答案为:C
A.开发时的错误
B.隐含的错误
C.因修改软件而造成的错误
D.运行时误操作
[解析]因修改软件而造成的错误或其他不希望出现的情况称为维护的副作用,包括编码副作用、数据副作用、文档副作用三种。只有答案C是正确的表述。
8.维护中,因误删除一个标识符而引起的错误是_________副作用。
参考答案为:C
A.文档
B.数据
C.编码
D.设计
[解析]编码副作用指的是在使用程序设计语言修改源代码时可能引入错误,比如删除或修改一个子程序、一个标号、一个标识符,改变程序代码的时序关系,修改文件的打开或关闭等。因此本题答案为C。
9.可维护性的特性中相互促进的是
参考答案为:A
A.可理解性和可测试性
B.效率和可移植性
C.效率和可修改性
D.效率和结构好
[解析]软件的可维护性可用七个质量特性来衡量,分别是:可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。对于不同类型的维护,这些特性的侧重点也不相同,有一些可维护特性是可以相互促进的,比如可理解性和可测试性,可理解性和可修改性,另外一些则是相互矛盾的,如答案中的B效率和可移植性、C中的效率和可修改性。至于D中的结构好则不属于可维护性的特征。
10.汽车有一个发动机。汽车和发动机之间的关系是_____关系。
参考答案为:B
A.一般具体
B.整体部分
C.分类关系
D.主从关系
[解析]类有两种主要的结构关系,即一般——具体结构关系和整体——部分结构关系。前者称为分类结构,用来描述现实世界中的一般化的抽象关系。后者称为组装结构,用来描述现实世界中的类的组成的抽象关系。汽车和发动机的关系很明显,应该属于整体——部分关系。
11.在变更控制中,______可以用来确保由不同用户所执行的并发变更。
参考答案为:B
A.异步控制
B.同步控制
C.存取控制
D.基线控制
[解析]变更控制包括建立控制点和建立报告与审查制度,其过程中的“检出”和“登入”处理实现了存取控制和同步控制,存取控制管理各个用户存取和修改一个特定软件配置对象的权限,同步控制可用来确保由不同用户所执行任务的并发变更。
12.变更控制是一项最重要的软件配置任务,其中“检出”和______处理实现了两个重要的变更控制要素,即存取控制和同步控制。
参考答案为:A
A.登入
B.管理
C.填写变更要求
D.审查
[解析]“检出”和“登入”处理实现了两个重要的变更控制要素。具体说明见上题。
13.提高软件质量和可靠的技术大致可分为两大类:其中一类就是避开错误技术,但避开错误技术无法做到完美无缺和绝无错误,这就需要
参考答案为:D
A.消除错误
B.检测错误
C.避开错误
D.容错
[解析]提高软件质量和可靠性的技术大致可分为两类,一类是避开错误技术,即在开发的过程中不让差错潜入软件的技术,另一类是容错技术,即对某些无法避开的差错,使其影响减至最小的技术。
14._____是以提高软件质量为目的的技术活动。
参考答案为:D
A.技术创新
B.测试
C.技术创造
D.技术评审
[解析]技术评审是以提高软件质量为目的的技术活动,是对软件本身的结构、与运行环境的接口、变更带来的影响等方面进行的评审活动。
15.面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,分析、设计和实现一个软件系统的方法和过程,尽可能接近于人类认识世界解决问题的方法和过程。因此面向对象方法有许多特征,如软件系统是由对象组成的;________;对象彼此之间仅能通过传递消息互相联系;层次结构的继承。
参考答案为:C
A.开发过程基于功能分析和功能分解
B.强调需求分析重要性
C.把对象划分成类,每个对象类都定义一组数据和方法
D.对既存类进行调整
[解析]面向对象方法有四个特征,分别是对象唯一性、分类性、继承性和多态性。其中分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类,每个类是具有相同性质的个体集合,而每个对象相关类的实例,对象彼此之间通过传递消息互相联系。
16.软件开发过程中,抽取和整理用户需求并建立问题域精确模型的过程叫
参考答案为:D
A.生存期
B.面向对象设计
C.面向对象程序设计
D.面向对象分析
[解析]面向对象的分析的过程就是认识客观世界的过程,其目的就是建立对客观世界的精确、简洁、可理解的正确模型,也就是所谓的建模。因此本题答案为D。
17.原型化方法是用户和设计者之间执行的一种交互构成,适用于______系统。
参考答案为:A
A.需求不确定性高的 B.需求确定的 C.管理信息
D.实时
[解析]原型不同于最终系统,它只实现所选择的部分功能,仅是为了试验或是演示而用,部分功能需求可以忽略或者模拟实现,因此适用于需求不确定性高的系统。
18.原型化方法是一种_______型的设计过程。
参考答案为:A
A.自外向内
B.自顶向下
C.自内向外
D.自底向上
[解析]原型化方法的基本思想是根据用户给出的基本需求,通过快速实现构造出一个小型的、可执行的模型,用户在计算机上实际运行这个用户界面原型,在试用过程中提出意见或建议,然后开发者再对原型进行改进。如此周而复始,逐步弥补不足之处,从而提高了最终产品的质量。它是一种自外向内的设计过程。
19.为了提高测试的效率,应该
参考答案为:D
A.随机地选取测试数据
B.取一切可能的输入数据作为测试数据
C.在完成编码以后制定软件的测试计划
D.选择发现错误可能性大的数据作为测试数据
[解析]软件测试是为了尽可能多的发现程序中的错误,尤其是发现至今尚未发现的错误。在选取测试用例时,不可能进行穷举测试,在每一个细节进行测试,也不能无目的地随机选取测试数据,为了提高测试的效率,测试用例应该选择发现错误可能性大的部分,这样的测试结果才符合软件测试的目的。
20.使用白盒测试方法时,确定测试数据应根据_______和指定的覆盖标准。
参考答案为:A
A.程序的内部逻辑
B.程序的复杂结构
C.使用说明书
D.程序的功能
[解析]白盒测试是把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,由于白盒测试是一种结构测试,所以被测对象基本上是源程序,以程序的内部逻辑和指定的覆盖标准确定测试数据。
二,填空题(本大题共10小题,每小题2分,共20分)
21.系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素表达了系统中各种元素之间的()情况。
解:信息流动
[解析]系统流程图是描述物理系统的传统工具,用图形符号表示系统中的各个元素,如人工处理、数据处理、数据库、文件、设备等,表达了元素之间的信息流动的情况。
22.成本效益分析的目的是从()角度评价开发一个项目是否可行。
解:经济
[解析]成本效益分析首先是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡,其目的是从经济角度评价开发一个新的软件项目是否可行。
23.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先策略和()。
解:宽度优先策略
[解析]渐增式测试法有自顶向下结合和自底向上结合两种组装模块的方法,其中自顶向下集成是构造程序结构的一种增量式方式,不需要编写驱动模块,只需要编写桩模块。它从主控模块开始,按照软件的控制层次结构,以深度优先或宽度优先的策略,逐步把各个模块集成在一起。
24.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图来看,一条独立路径是至少包含有一条()的边的路径。
解:在其他独立路径中未有过
[解析]在基本路径测试中,以详细设计或源程序为基础,导出控制流程图的拓扑结构——程序图,在计算了程序图的环路复杂性之后,确定只包含独立路径的基本路径图,其中独立路径是包括一组以前没有处理的语句或条件的一条路径。从程序图来看,一条独立路径是至少包含有一条在其他独立路径中未有过的边的路径。
25.汇编语言是面向()的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。
解:机器
[解析]汇编语言属于低级语言,是一种面向机器的语言,它与高级语言相比有许多优越性:如操作灵活,可以直接作用到硬件的最下层,完成与外部设备的接口工作等,是能够利用计算机硬件特性直接控制硬件设备的唯一语言。
26.在JSP方法中解决结构冲突的具体办法是()。
解:中间数据结构或中间文件
[解析]JSP方法是面向数据结构的设计方法。它定义了一组以数据结构为指导的映射过程,根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,在JSP方法中解决结构冲突的具体办法是引入中间数据结构或中间文件,将冲突部分分隔开来,建立多个程序结构,再利用中间文件把它们联系起来,构成一个系统的整体。
27.详细设计的任务是确定每个模块的内部特性,即模块的算法、()。
解:使用的数据
[解析]详细设计的基本任务是为每个模块进行详细的算法设计,为模块内的数据结构进行设计,确定每个模块的内部特性,包括模块的算法和使用的数据。对数据库进行物理设计等。
28.所有软件维护申请报告要按规定方式提出,该报告也称()报告。
解:软件问题
[解析]在软件维护的流程中,第一步就是制定维护申请报告,也称为软件问题报告,它是维护阶段的一种文档,由申请维护的用户填写。
29.有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向维护的技术;在维护阶段用来提高维护的效率和质量的()技术。
解:维护支援
[解析]面向维护的技术涉及软件开发的所有阶段,能够减少软件错误,提高软件的可维护性。而维护支援技术则包含信息收集,错误原因分析,维护方案评价等项,是在软件维护阶段用来提高维护效率和质量的技术。
30.科学工程计算需要大量的标准库函数,以便处理复杂的数值计算,可供选择的语言有:()、PASCAL语言、C语言和PL/1语言。
解:FORTRAN语言
[解析]计算机语言根据不同行业的需求,使用的侧重点也不尽相同,在办公管理方面,一些数据库语言如FOXPRO、ORICAL有很多的应用,在工程行业,计算机语言的科学计算能力就显得格外重要,如MATLAB、PL/
1、FORTRAN语言都是工程计算中常用的语言。
三,名词解释(本大题共5小题,每小题3分,共15分)
31.经济可行性
解:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
[解析]对于一个系统所必须要衡量的是经济上是否合算,经济可行性的范围很广,包括效益分析、潜在市场前景等。
32.社会可行性
解:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
[解析]社会可行性包括合同、责任、侵权等技术人员不甚了解的诸多问题。
33.投资回收期
解:投资回收期就是使累计的经济效益等于最初的投资费用所需的时间。
[解析]通常我们用投资回收期来衡量一个开发项目的价值,投资回收期越短,就越快获得利润。
34.对应关系
解:即有直接因果关系在程序中可以同时处理。
[解析]对应关系是指数据单元在数据内容上、数量上和顺序上有直接的因果关系,对于重复的数据单元,重复的次序和次数都相同才有对应关系。
35.结构冲突
解:输入数据与输出数据结构找不到对应关系的情况,称为结构冲突。
[解析]使用JSP方法时会遇到此类结构冲突问题,对此,Jackson提出了引入中间数据结构或中间文件的办法,将冲突部分分隔开来,建立多个程序结构,再利用中间文件把它们联系起来,构成一个系统的整体。
第四篇:软件工程课后答案
第七章价类, 重复这一步骤,直到所第十三章
1.软件测试的方法:黑盒测试,白盒测试
(1)黑盒测试:如果已经知道了产品应具有的功能,可以通过测试来检验是否每个功能
都能正常使用,这就是黑盒测试:
(2)白盒测试:如果知道产品的内部工作过
程,可以通过测试来检验产品内部动作是否
按照规格说明书的规定正常进行。
2.测试步骤;(1)模块测试(2)子系统测试(3)
系统测试(4)验收测试(5)平行运行
3.测试重点:(1)模块接口(2)局部数据结
构(3)重要的执行通路(4)出错处理通路
(5)边界条件
4.(1)主程序:驱动程序也就是一个主程序,他接受测试数据,把这些数据传送给
被测试的模块,并且印出有关的结
果,(2)虚拟子程序:存根程序也可以称为
虚拟子程序,他使用被他代替的模
块的接口,可能做最少量的数据操
作,印出对入口的检验或操作结
果,并且把控制归还给调用它的模
块。
5.模块组装成程序时有两种方法:(1)非渐
增式(2)渐增式{自顶向下集成,自底向上
集成}
6.混合法:对软件结构中较上层使用的自顶
向下方法与软件结构中较下层使用的自底向
上方法相结合。
7.回归测试:在集成测试的范畴中,所谓的回
归测试是指重新执行已经做过的测试的某个
子集,以保证上述的这些变化没有带来非预
期的副作用。
8.确认测试:也称为验收测试,他的目标是
验证软件的有效性。
验证:指的是保证软件正确的实现了
某个特定要求的一系列活动。
确认:指的是为了保证软件确实满足
了用户需求而进行的一系列活动。
9.确认测试的范围:确认测试必须由用户积
极参与,或者以用户为主进行。确认测试通
常使用黑盒测试法
10.Alpha和Beta测试
(1)Alpha:有用户在开发者的场所进行,并且在开发者对用户的指导下进行测试。开
发者负责记录发现的错误和使用中遇到的问
题。Alpha测试是在受控的环境中进行的。
(2)Beta:油软件的最终用户们在一个
或多个客户场所进行,开发者通常不在测试的现场用户记录在测试过程中遇到的问题,并定期把这些问题报告给开发者。
11.什么是白盒测试?
测试者了解被测程序的内部结构和
处理过程,对程序的所有逻辑路径进
行测试,在不同点检查程序状态,确
定实际状态与预期状态是否一致。白盒测试主要采用的技术有:路径测试技术
和事务处理流程技术,对包含有大量逻辑判
断或条件组合的程序采用基于逻辑的测试技
术。逻辑覆盖:所谓的逻辑覆盖是对一系列测试
过程的总称,这组测试过程逐渐进行越来越
完整的通路测试。
12.黑盒测试:也称为功能测试,它着眼于程
序的外部特征,而不考虑程序的内部逻辑结
构。测试者把被测程序看成一个黑盒,不用关
心程序的内部结构。黑盒测试是在程序接口
处进行测试,它只检查程序功能是否能按照
规格说明书的规定正常使用,程序是否能适
当地接收输入数据产生正确的输出信息,并
且保持外部信息(如数据库或文件)的完整
性。黑盒测试主要采用的技术有:等价分类
法、边沿值分析法、错误推测法和因果图等
技术。
13.等价划分:是一种黑盒测试技术,这种技
术把程序的输入域划分成若干个数据类,据
此导出数据用例。
等价分类法的测试技术采用的一般方法?
(1)为每个等价类编号;
(2)设计一个新的测试方案,以尽
可能多的覆盖尚未被覆盖的有
效等价类,重复这一步骤,直到
所有有效等价类被覆
(3)设计一个新的测试方案,使它
覆盖一个尚未被覆盖的无效等有无效等价类被覆盖为止。1.管理:就是通过计划、组织和控制等 14.边界值分析: 一系列活动,合理的配置和使用各种15.调试:也称为纠错,作为成功测试的后果资源,以达到既定目标的过程 出现,调试是在测试发现错误之后排除2.软件的质量:就是软件与明确地和隐错误的过程。调试就是把症状和原因联含地定义的需求相一致的程度,软件系起来的尚未被人认识的智力过程。的质量是软件与明确的叙述的开发标16.软件测试的一般步骤:单元测试、子系准以及任何专业开发的软件产品都应统测试、系统测试、验收测试、平行测试。该具有的隐含特征相一致的程度。调试途径:(1)蛮干法(2)回溯法(3)3.工作量估算:(1)静态单变量模型(2)原因排除法 动太多变量模型(3)COCOMO2模型回溯法:从发现症状的地方开始,人工4.软件配置管理主要有五项任务:标示,沿程序的控制流往回追踪分版本控制,变化控制,配置审计,报析源程序代码,直到找到错误告 原因为止。5.能力成熟度的五个等级:初始级,可原因排除法:(1)对分查找法(2)归重复级,已定义级,已管理级,优化纳法(3)演绎法 级 17.软件可靠性的定义:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率软件可用性的一个定义: 软件可用性是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。18.选择程序设计语言:(主要的实用标准)(1)系统用户要求(2)可以使用的编译程序(3)可以得到的软件工具(4)工程规模(5)程序员的知识(6)软件可移植性要求(7)软件的应用领域 19.编码风格(1)程序内部的文档(2)数据说明,应易于理解便于查阅(3)语句结构,尽可能简单直观(4)输入输出,遵守人机界面准则(5)效率,能妈祖用户要求即可 19.软件测试目标:为了发现程序中的错误代码审查:人工测试源程序可以由审查小组正式进行,即称为审查。审查小组组成:组长,程序的设计者,程序的编写者,程序的测试者 第八章 1.四种软件维护类型:(1)改正性维护:满足用户对已开发产品的性能与运行环境不断提高的要求,进而达到延长软件寿命的目的。(2)适应性维护:对程序使用期间发现的程序错误进行诊断和改正的过程,配合变化了的环境进行修改软件的活动;(3)完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的工作;(4)预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。2.决定软件可维护性的因素:可理解性,可测试性,可修改性,可移植性,可重用性 3.软件系统的文档:可以分为用户文档和系统文档用户文档:主要描述系统功能和使用方法,并不关心这些功能怎样实现 用户文档包括:功能描述,安装文档,使用手册,参考手册,操作员指南 系统文档:描述系统设计、实现和测试等各方面的内容。4.软件维护:所谓的软件维护就是在软件已经交付使用之后,为了改正错误而满足心得需要而修改软件的过程。1.面向对象方法学的优点:(1)与人类的思维方法一致(2)稳定性好(3)可重用性好(4)较易开发大型软件产品(5)可维护性好 2.对象的特点:以数据为中心;对象时主动的;实现了数据封装;实质上具有并行性;模块独立性好 3.其他概念:(1)类:具有相同数据相同操作的一组相似对象的定义(2)实例(3)消息:就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明(4)方法(5)属性(6)封装(7)继承:是指能够直接获得已有的性质和特征,而不必重复定义他们
第五篇:软件工程课后习题答案
第一章习题参考答案
1﹑软件产品的特性是什么? 答:软件产品特性:
⑴是一种逻辑产品,与物质产品有很大的区别。
⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。⑶软件产品不会用坏,不存在磨损,消耗。
⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是“定做”的⑸开发软件的费用不断增加,致使生产成本相当昂贵。2﹑软件生产有几个阶段?各有何特征?
答:⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。
⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。
⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。
3﹑什么是软件危机?产生原因是什么?答:软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。产生原因:⑴ 软件规模越来越大,结构越来越复杂。⑵ 软件开发管理困难而复杂。⑶ 软件包开发费用不断增加。⑷ 软件开发技术落后。⑸ 生产方式落后,仍采用手工方式。⑹ 开发工具落后,生产率提高缓慢。
4﹑什么是软件工程?它目标和内容是什么?
答:软件工程就是用科学的知识程和技术原理来定义,开发,维护软件的一门学科。软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程内容:研究内容包括开发技术和开发管理两个方面。开发技术主要研究:软件开发方法,开发过程,开发工具和环境。开发管理主要研究:软件管理学,软件经济学,软件心理学。
5﹑软件工程面临的问题是什么?
答:软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。
6﹑什么是软件生存周期?它有哪几个活动?
答:软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。7﹑什么是软件生存周期模型?有哪些主要模型?
答:生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。
8﹑什么是软件开发方法?有哪些主要方法?
答:使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。通过使用成功的软件开发方法,在规定的投资和时间内,开发出符合用户需求的高质量的软件。软件开发方法是克服软件危机的重要方面之一,对软件工程及软件包产业的发展起了不可估量的作用。
主要有:结构化方法,JACKSON方法,维也纳开发方法﹙VDM﹚,面向对象开发方法。第二章习题参考答案
1.可行性研究的任务是什么?
答:可行研究的任务:首先需要进行概要的分析研究,初步确定项目的规模,目标,约束和限制。分析员再进行简要的需求分析,抽象出项目的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的解决方法,对每种解决方法都要研究它的可行性。
主要从三个方面考虑:⑴技术可行性:一般要考虑的情况包括 开发的风险即设计出的系统能否达到要求的功能和性能;资源的有效性;相关技术的发展是否支持;⑵经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资。⑶社会可行性:要开发的项目是否存在任何侵权问题,运行方式在用户组织内是否可行,现有管理制度﹑人员素质﹑操作方式是否可行。2.可行性研究有哪些步骤?
答:⑴确定项目规模和目标;⑵研究正在运行的系统;收集﹑研究﹑分析现有系统的文档资料,实地考察系统访问有关人员,然后描绘现有系统的高层系统流程图。⑶建立新系统的高层逻辑模型;使用数据流图和数据字典描述数据在系统中的流动和处理情况。⑷导出和评价各种方案;导出若干较高层次的物理解决方法,根据技术可行性﹑经济可行性﹑社会可行性进行评估,得到可行的解决方法。⑸推荐可行方案;进行成本~效益分析,决定该项目是否值得开发,若值得开发那么解决方案是什么,并且说明该方案可行的原因和理由。⑹编写可行性研究报告;将上述可行性过程的结果写成相应文档,即可行性研究报告。
3.可行性研究报告有哪些主要内容?
答:⑴引言:编写本文档的目的;项目名称﹑背景;本文档用到的专门术语和参考资料。⑵可行性研究前提:说明开发项目的功能﹑性能和基本要求;达到的目标;各种限制条件;可行性研究方法和决定可行性的主要因素。⑶对现有系统的分析:说明现有系统的处理流程和数据流程;工作负荷;各项费用支出;所需各类专业技术人吧和数量;所需各种设备;向有系统存在什么问题。⑷所建议的技术可行性分析:所建议系统的简要说明;处理流程和数据流程;与现有系统比较的优越性;采用所建议系统对用户的影响;对各种设备﹑现有软件﹑开发环境﹑运行环境的影响;对经费支出的影响;对技术可行性的评价。⑸所建议系统的经济可行性分析:说明建议系统的确良各种支出,各种效益;收益投资比;投资顺收周期。⑹社会因素可行性分析:说明法律因素,对合同责任﹑侵犯专利权﹑侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理﹑工作制度﹑人吧素质的要求。⑺其它可供选择方案:逐一说明其他可供选择的方案,并说明未被推荐的理由。⑻结论意见:说明项目是否能开发;还需什么条件才能开发;对项目目标有何变动等。
4.成本--效益分析可用哪些指标进行度量?
答:⑴投资回收率:通常把建立系统若干年后能取得的收益折算成现在的价值和开发系统所需的费用进行比较得出投资回收率。⑵投资回收期:就是使累计的经济效益等于最初的投资费用所需的时间。⑶纯收入:整个生存周期之内的累计经济效益(折成现在值)与投资之差。5.项目开发计划有哪些内容?
答:⑴项目概述:说明项目的各项主要工作;说明软件的功能﹑性能;为完成项目应具有的条件;用户及合同承包者承担的工作完成的期限及其他条件限制;应交付的程序名称;所使用的语言及程储形式;应交付的文档。⑵实施计划:说明任务的划分,各任务责任人,项目开发进度,项目的预算,各阶段的费用支出,各阶段应完成的任务,用图表说明每项任务的开始和完成时间。⑶人员组织及分工:所需人员类型﹑数量﹑组成结构。⑷交付期限:最后完工日期。
第三章习题参考答案
⒈什么是需求分析?需求分析阶段的基本任务是什么?
答:需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。
基本任务:⑴问题识别:双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求。⑵分析与综合,导出软件的逻辑模型⑶编写文档:包括编写“需求规格说明书”,“初步用户使用手册”,“确认测试计划”,“修改完善软件开发计划”
⒉什么是结构分析方法?该方法使用什么描述工具?
答:结构化分析:简称SA,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑。⒊结构化分析方法通过哪些步骤来实现? 答:⑴了解当前系统的工作流程,获得当前系统的物理模型。⑵抽象出当前系统的逻辑模型。⑶建立目标系统的逻辑模型。⑷作进一步补充和优化。
⒌画数据流图应注意什么事项?
答:命名: 不能使用缺乏具体含义的名字,加工名应能反映出处理的功能。1.画数据流而不是控制流。数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。
一般不画物质流。2.每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。
编号: 某个加工分解成加一张数据流图时,上层图为父图,下
层图为子图。子图应编号子图上的所有加工也应编号,子图的编号应与父图的编号相对应。3.父图与子图的平衡:子图的输入输出 数据流同父图相应加工的输入输出数据流必须一致⑵抽象:认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素。通过抽象确定组成软件的过程实体。⑶信息隐蔽:将模块实现自身功能的细节与数据“局部数据存储:当某慨数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。注意数据流图的易理解性。
⒍什么是数据字典?其作用是什么?共有哪些条目?
答:数据字典(DD)用来定义数据库流图中的各个成分的具体含义。有以下四类条目:数据流,数据项,数据存储,基本加工。
⒎描述加工逻辑有哪些工具?
答:加工逻辑的描述:一般用结构化语言,判定表,判定树 结构化语言是介于自然语言和形式语言之间的一种半形式化语言。它的结构可分里层和内层
⑴外层:用来描述控制结构,采用顺序,选择,重复三种基本结构。
顺序结构:是一组祈使语句,选择语句,重复语句的顺序排列 ②选择结构:一般用IF-THEN-ELASE-ENDIF,CASE-OF-ENDCASE等关键词。
③重复结构:一般用DO-WHILE-ENDDO,REPEAT-UNTIL等关键词。⑵内层:一般采用祈使语句的自然语言短语,使用数据字典中的名词和有限的自定义词,其 动词含义要具体,尽量不使用形容词和副词来修饰。
⒏什么是IDEF方法?IDEF0方法有哪些特点?答:IDEF方法是美国空军针对计算机辅助制造工程项目中用于进行复杂系统分析和设计的方法,是在结构化分析方法基础上提出来的。
包括: IDEF0描述系统的功能活动及联系,建立系统的功能模型。即反映系统”做什么“折功能。IDEF1描述系统的信息及联系,建立系统的信息模型。IDEF2进行系统模拟,建立系统的动态模型。IDEF0特点:
⑴采用方框和箭头等简单图形符号描述系统的活动和数据流,描述活动所受的约束条件及实现机制。
如下图描述,其中输入为完成某活动时所需的数据,输出指执行活动产生时的数据,控制活动指所受到的约束条件,机制是指活动由谁来完成。⑵采用严格的自顶向下﹑逐层分解的方式建立系统功能模型。
⒐简述SA方法的优缺点。答:SA方法是软件需求分析中公认的,有成效的,技术成熟,使用广泛的一种结构化分析方法。较适用于开发数据处理类型软件的需求分析。利用图形等半形式化工具表达需求,简明,易读,也易于使用。但也存在一些弱点,表现如下:⑴SA方法仅是一个静态模型,没有反映处理的顺序,即控制流程。⑵SA方法使用DFD在分析与描述”数据要求“方面是有局限的,只有与数据库技术中的实体联系图(ER图)结合起来,才能较完整地描述用户对系统的需求。⑶DFD不适合描述人机界面系统的要求,一些人机交互较频繁的软件系统。⑷SA方法要与形式化方法结合起来,才能更精确地描述软件需求。⑸要借助需求分析工具,提高需求分析的质量及效率。
第四章习题参考答案
1、什么是软件概要设计?该阶段的基本任务是什么?
答:把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。基本任务:⑴设计软件系统结构,具体为:1.采用某种设计方法,将一个复杂的系统按功能划分为模块。2.确定每个模块的功能。3.确定模块之间的调用关系。4.确定模块之间的接口(模块之间传递的信息)评价模块的结构质量⑵进行数据结构及数据库的设计⑶编写概要设计的文档 主要内容有:概要设计说明书,数据库说明书(DBMS的简介,概念模型,逻辑设计,结果)用户手册,修订测试计划(测试的策略﹑方法﹑步骤)⑷评审:是否完整地实现了规定的功能﹑性能要求。设计方案是否可行。关键的处理及内部接口定义的正确性,有效性,各部分的一致性。
2、软件设计的基本原理包括哪些内容?
答:⑴模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求。模块化即按照一定的原则,将软件划分成若干个模块,每个模块完成一个特定的功能,然后把这些模块按照某种方法组装成一个软件系统。(可降低复杂度、减少工作量)
模块具有以下几种特性:接口:模块的输入输出。功能:指模块实现什么功能。逻辑:描述模块内部如何实现要求及所需的数据。状态:该模块的运行环境,模块间调用与被调用关系。
隐蔽”起来。模块间仅交换为完成系统功能所必须的信息。⑷模块独立性:每个模块只完成系统要求的独立的子功能。
3、衡量模块独立性的两个标准是什么?各表示什么含义? 答:内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。
4、模块的耦合性有哪几种?各表示什么含义?
答:⑴内容耦合:一个模块直接操作或修改另一模块的数据,或者不通过正常入口直接转入另一模块⑵公共耦合:两个或多个模块通过共同引用一个全局数据环境相互作用⑶控制耦合:模块之间通过传递控制信息相互作用⑷标记耦合:两个模块之间通过传递公共指针或地址相互作用的耦合⑸数据耦合:模块之间通过传递数据交换信息⑹无耦合:模块间无任何关系,独立工作
5、模块的内聚性有哪几种?各表示什么含义?答:⑴偶然内聚:一个模块各个成分之间毫无关系⑵逻辑内聚:将几个逻辑上相关的功能放在同一个模块中⑶时间内聚:一个模块完成的功能在同一时间执行⑷过程内聚:一个模块内部的处理成分是相关的,而且必须以特定的次序执行⑸通信内聚:一个模块的所有成分都集中在同一个数据结构上⑹顺序内聚:一个模块的各个成分同一个功能密切相关,而且一个成分的输出,作为另外一个成分的输入⑺功能内聚:模块内的所有成分属于一个整体,完成单一的功能。(内聚最高)
6、什么是软件结构?简述软件结构设计的优化准则。
答:⑴改进软件结构,提高模块独立性 首先设计出软件初始结构,评价该结构,通过模块分解或合并,力求降低耦合提高内聚。⑵模块的规模应该适中⑶模块结构的深度、宽度、扇出和扇入应适中。深度:软件结构中控制的层数 宽度:软件结构中同一层次上最大模块总数 扇入:某一模块有多少直接调用它的上级模块数目(越大越好)扇出:一个模块直接控制(调用)下级模块的数目。(越少越好,3,4个为宜,不超过9个,“顶层扇出较高,中间扇出较少,底层模块高扇入多”⑷一个模块的作用域(范围),应处在这个模块的控制域(范围)之内 模块的作用域:受该模块内一个判定影响的所有模块的集合模块的控制域:这个模块本身以及所有直接或间接从属于它的模块的集合一个模块的影响范围(作用域),应处在这个模块的模块的控制范围(控制域)内。
8、什么样是“事物流”?什么是“变换流”?试将相应形式的数据流图转换为软件结构图
答:数据流图(DFD)一般可分为“变换流”,“事物流”两种。“变换流”:由输入﹑输出﹑变换(或称处理)三部分组成,是一顺序结构。“事物流”:它的某个加工,分离成许多发散的数据流,形成许多加工路径,并且根据输入值选择其中一个路径来执行。(这人加工称为事务处理中心)
9.试述“变换分析”﹑“事务分析”设计步骤。
答:变换分析设计步骤:⑴确定变换中心,逻辑输入和输出。⑵设计软件结构的顶层和第一层--变换结构:顶层的功能是完成所有模块的控制(名称应是系统名,以体现完成整个系统功能)第一层至少有三种功能模块:输入﹑输出和变换模块⑶设计中﹑下层模块,对第一层的模块自顶向下分解。输入模块由两部分组成:接收数据﹑转换成调用模块所需信息。输出模块由两部分组成:将数据转换成下属模块所需的形式﹑ 发送数据 变换模块:对每个基本加工建立一功能模块、⑷设计的优化 :输入部分求精,每个物理输入设置专门模块,以体现系统的外部接口。其它输入模块与转换数据模块都很简单时,可将它们合并。输出部分求精:每个物理输出设置专门模块,其它也可适当合并。变换部分求精:根据设计准则,对模块适当合并。事务分析的设计步骤:⑴确定事务中心和加工路径⑵设计顶层(事务机构)和第一层 顶层模块有两个功能:接收数据和根据事务类型调动相应处理模块。⑶中下层模块的设计﹑优化工作与变换结构相同。事务型软件结构包括两部分: 接收分支 发送分支出 通常包括一调度模块,当事务类型不多时,可与主模块合并。
第五章习题参考答案
1、详细设计的基本任务是什么,有哪几种描述方法?答:详细设计的基本任务包括:(1)为每个模块进行详细的算法设计(2)为模块内的数据结构进行设计(3)对数据库进行物理设计(4)其他设计(5)编写详细设计说明书(6)评审 详细设计的描述
方法有图形、表格和语言,其中图形常用结构化程序流程图、盒图和PAD(问题分析图)为描述工具,语言常用过程设计语言(PDL)来作为工具。
2、结构化程序设计的基本要点是什么?答:主要有三个:(1)采用自顶向下、逐步求精的程序设计方法(2)使用三种基本控制结构构造程序。任何程序都可以由顺序、选择、重复(循环)三种基本控制结构构造,这三种基本结构的共同点是单入口、单出口。(3)主程序员组的组织形式。
3、简述Jackson方法的设计步骤。答:Jackson方法的设计步骤如下:1.分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图表示这些数据结构。(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。3.按一定的规则由输入、输出的数据结构导出程序结构。4.列出基本操作与条件,并把它们分配到程序结构图的适当位置。(5)用伪码写出程序。比较?
答:白盒法测试法把测试对象看作一个打开的盒子,测试人员须了解程序内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
白盒法有下列几种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖
从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准。在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准。
什么是黑盒测试法?采用黑盒技术测试用例有哪几种方法?这些第六章习题参考答案
程序语言有哪些共同特征?
答:程序语言的共同特征(似为特性更符合题意)是指程序设计语言的语言特性,包括心理特性、工程特性和技术特性三个方面。语言的心理特性对人机通信的质量有主要的影响;语言的工程特性对软件开发成功一否有重要的影响,此外,语言的技术特性也会影响软件设计的质量。
在项目开发时选择程序设计语言通常考虑哪些因素?
答:通常要考虑的因素有:项目的应用领域、软件开发的方法、软件执行的环境、算法和数据结构的复杂性以及软件开发人员的知识等。
第4代语言(4GL)有哪些主要特征?答:4GL的主要特征是:1.友好的用户界面2.兼有过程性和非过程性双重特性3.高效的程序代码4.完备的数据库(5)应用程序生成器举例说明各种程序设计语言的特点及适用范围?
答:以常见的一些编程语言为例:FORTRAN语言,它不仅面向科学计算,数据处理能力也极强。适用于科学工程计算;Pascal语言,具有很强的数据和过程结构化能力,它语言简明,数据类型丰富,程序结构严谨。它是第一个体现结构化编程思想的语言。用于描述结构化算法和科学计算,操作系统的编写 ;C语言:功能强大,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符,它还具有汇编语言的某些特征,使程序运行效率高。可用于许多领域,特别是在操作系统等方面有较大优势。Coble语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开、数据描述与算法描述分开。结构严谨层次分明,广泛用于商业数据处理。SQL:结构化查询语言,用于对数据库进行存取管理。
汇编语言和Ada语言,主要用于实时处理和编写系统软件。Prolog、Lisp语言。Lisp是一种函数型语言,特别适用于组合问题中符号运算和表处理,用于定理证明、树的搜索和其他问题的求解。Prolog是一种逻辑型语言,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的句子组成,比较接近与自然语言。这两种语言主要用于人工智能系统开发。C++、Java语言,是面向对象的设计语言,用于面向对象的方开发软件。
什么是程序设计风格?为了具有良好的设计风格,应注意哪些方面的问题?
答:程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。
要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意。第七章习题参考答案
软件测试的目的是什么?软件测试中,应注意哪些原则?
答:软件测试的目的是为了发现软件的错误。软件测试中应注意的原则有:
测试用例应由输入数据和预期的输出数据两部分组成。这样便 于对照检查,做到有的放矢。测试且例不仅选用合理输入数据,还要选择不合理的输入数据。这样能更多地发现错误,提高程序的可靠性。对于不合理的输入数据,程序应拒绝接受,并给出相应的提示。
除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。
应制定测试计划并严格执行,排除随意性。长期保留测试用例。
对发现错误较多的程序段,应进行更深入的测试。(7)程序员应避免测试自己的程序。测试是一种“挑剔性”的行为,心理状态是测试自己程序的障碍。
什么是白盒测试法?有哪些覆盖标准?试对他们的检错能力进行
方法各有什么特点?
答:黑盒测试法把被测试对象看成是一相黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。
采用黑盒技术测试用例的方法有:等价类的划分、边界值分析、错误推测和因果图。
软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?
答:软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。
单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。
集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。
确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。
系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。
单元测试有哪些内容?测试中采用什么方法?答:单元测试主要针对模块的以下五个基本特征进行测试:1.模块接口 2.局部数据结构 3.重要的执行路径4.错误处理 5.边界条件6.测试的方法是为被测试模块编写驱动模块和桩模块来实现被测试单元的可运行。通过驱动模块来模拟被测试模块的上级调用模块,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结构并输出。桩模块则用来代替被测试模块所调用的模块。它的作用是返回被测模块所需的信息。
什么是集成测试?非渐增式测试与渐增式测试有什么区别? 渐增式测试如何组装模块?
答:集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。
非渐增式测试是指首先对每个模块分别进行单元测试,再把所有模块组装成一个完整的系统进行的测试。而渐增式测试就是逐个把未经测试的模块组装到已经过测试的模块上去进行集成测试,每加入一个新模块进行一次集成测试,重复此过程直到程序组装完毕。渐增式测试有两种不同的组装方法:自顶向下和自底向上结合。两者区别是:(1)非渐增式方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。而渐增式测试往往把单元测试和集成测试合在一起,同时完成。(2)非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量少。渐增式可以较早地发现接口之间的错误,非渐增式最后组装时才发现。(3)渐增式有利于排错,发生错误往往和最近新加入的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。(4)渐增式比较彻底,已测试的模块和新的模块再测试。(5)渐增式点用时间较多,但非渐增式所需更多的驱动模块和桩模块也占用一些时间。(6)非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。什么是确认测试?该阶段有哪些工作?
答:确认测试又称有效性测试。它的任务是检查软件的功能与性能是否与需求规格说明书中确定的指标相符合。因而需求说明是确认测试的基础。确认测试阶段有两项工作:进行确认测试与软件配置审查。
调试的目的是什么?调试有哪些技术手段?
答:调试则是在进行了成功的测试之后才开始的工作。调试的目的是确定错误的原因和位置,并改正错误,因此调试也称为
纠错(Debug)。调试的技术手段有简单的调试方法、归纳法、演绎法和回溯法等。第八章习题参考答案 软件维护有哪些内容? 答:(1)校正性维护。在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴露出来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。
(2)适应性维护。为了使应用软件适应计算机硬件、软件环境及数据环境的不断发生的变化而修改软件的过程称为适应性维护。
(3)完善性维护。为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。
(4)预防性维护。为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。软件维护的特点是什么? 答:主要体现在三个方面:
(1)非结构化维护和结构化维护。软件的开发过程对软件的维护有很大的影响。若不采用软件工程的方法开发软件,则软件只有程序而无文档,维护工作非常困难,这是一种非结构化的维护。若采用软件工程的方法开发软件,则各阶段都有相应的文档,容易进行维护工作,这是一种结构化的维护。
(2)维护的困难性。软件维护的困难性是由于软件需求分析和开发方法的缺陷。软件生存周期中的开发阶段没有严格而又科学的管理和规划,就会引起软件运行时的维护困难。
(3)软件维护的费用。软件维护的费用在总费用中的比重是在不断增加的,这是软件维护有形的代价。另外还有无形的代价,即要占有更多的资源。软件维护费用增加的占有原因是软件维护的生产率非常低。软件维护的流程是什么?
答:软件维护的流程如下:知道维护申请报告、审查申请报告并批准、运行维护并做详细记录、复审。软件维护的副作用有哪些? 答:维护的副作用有以下三种:
(1)编码副作用。在使用程序设计语言修改源代码时可能引入的错误。
(2)数据副作用。在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件错误。数据副作用是修改软件信息结构导致的结果。但它可以通过详细的设计文档加以控制。(3)文档副作用。如果对可执行软件的修改没有反映在文档中,就会产生文档副作用。
什么是软件可维护性?可维护性度量的特性是什么?
答:软件可维护性的定义:软件能够被理解、校正、适应及增强功能的容易程度。软件的可维护性可用以下七个质量特性来衡量,即可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。
提高可维护性的方法有哪些? 答:(1)建立明确的软件质量目标。(2)使用先进的软件开发技术和工具。(3)建立明确的质量保证。(4)选择可维护性的程序设计语言。(5)改进程序的文档。第九章习题参考答案
渐增模型有几种?各有何特点?
答:渐增模型有两种类型,一是增量构造模型,二是演化提交模型。增量构造模型是在瀑布模型基础上,对一些阶段进行整体开发,对另一些阶段进行增量开发。演化提交模型则是在瀑布模型的基础上,所有阶段都进行增量开发,不仅是增量开发,也是增量提交。
2、快速原型模型有几种,各有什么特点?
答:快速原形模型根据原型的不同作用,有三类原型模型: 探索型原型:把原型用于开发的需求分析阶段,目的是要弄清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发者对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求。
实验型原型:主要用于设计阶段,考核实现方安是否合适,能否实现。对于一个大型系统,若对设计方案心中没有把握时,可通过这种原型的开发来证实设计方案的正确性。
(3)演化型原型:它将原型思想扩展到软件开发的全过程,就是及早向用户提交一个原型系统,在得到用户认可后,将原型系统不断扩充演化为最终的软件系统。快速原型的开发步骤是什么? 答:快速原型的开发步骤是:(1)快速分析:在分析人员与用户的配合下,迅速确定系统基本需求并开始构造原型。(2)构
造原型:在快速分析的基础上,根据基本需求说明尽快实现一
个可运行的系统。(3)运行原型:通过运行快速原型,发现问题,消除误解,达到开发者也用户的充分协调。(4)评价原型:在运行的基础上,评价原型的特性,分析运行效果是否满足用户的需求,提出全面的修改意见。(5)修改:根据评价原型的活动结果进行修改,修改过程代替初始的快速分析,从而实现原型开发的循环过程。用户与开发者在这种循环过程中不断接近系统的最终要求。上述步骤在软件工具的支持下往往是互相交融在一起的,而不再象瀑布模型那样严格的阶段划分,线性推进。
评价快速原型模型的优缺点。答:快速原型的优点是:(1)可及早为用户提供有用的产品。(2)可及早发现问题,随时纠正错误。(3)减少技术、应用风险,缩短开发时间,减少费用、提高生产率。(4)通过实际运行原型,提供直接评价系统的方法,促使用户主动参与开发活动,加强了信息反馈,促进各类人员的协调,减少误解,适应需求变化,能有效提高系统质量。快速原型的缺点是:1.缺乏丰富而强有力的软件工具和开发环境。2.缺乏有效的管理机制,还未建立起自己的开发标准。3.对设计开发环境要求较高。(4)在多次重复改变原型的过程中,程序员会感到厌倦。(5)系统的易变性对测试有一定影响,难于做到彻底测试,更新文档较为困难。
4、比瀑布模型与增量模型,指出增量模型的新思路。答:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。瀑布模型很难适应需求可变、模糊不定的软件系统的开发,而且在开发过程中用户很难参与进去,只有到开发结束才能看到整个软件系统。这种理想的、线性的开发过程缺乏灵活性,不适应实际的开发过程。增量模型是在瀑布模型的基础上加以修改而形成的。属于非整体开发模型。
它的基本思路是为了使开发过程具有一定的灵活性和可修改性,在开发过程中推迟某些阶段或所有阶段中的细节,从而较早的产生工作软件。第十章习题参考答案
说明对象、类、类结构、消息的基本概念。
答:(1)对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象包括有形实体、作用、事件、性能说明等类型。对象具有状态和行为。一个对象用数据值来描述它的状态,对象的操作则用于改变状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。对象内的数据具有自己的操作,从而可灵活地专门描述对象的独特行为,具有较强的独立性和自治性,其内部状态不受或很少受外界的影响,具有很好的模块化特点。为软件重用奠定了坚实的基础。(2)类:具有相同或相似性质的对象的抽象就是类。因此,对象的抽象就是类,类的具体化就是对象,也可以说类的实例是对象。(3)类结构:类与类之间的结构关系,包括一般-具体结构关系和整体-部分结构关系。一般-具体关系结构称为分类结构,也可以说是“或”关系或“is a”关系,类的这种层次结构可用来描述现实世界中的一般化的抽象关系,通常越在上层的类越具有一般性和共性,越在下层的类越具体、越细化。整体-部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。类的这种层次关系可用来描述现实世界中的类的组成的抽象关系。上层的类具有整体性,下层的类具有成员性。在类的层次结构中,通常上层的类称为父类或超类,下层类称为子类。(4)消息:对象之间进行通信的构造叫做消息。在对旬的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。接收消息的对象经过解释,然后给予响应。这种通信机制称为消息传递。发送一条消息的格式是“对象名.方法名(参数)”。
说明面向对象的特征和要素。答:面向对象的特征是:(1)对象唯一性。每个对象都有自身唯一的标识,在对象生存期中,其标识不变,不同的对象不能有不同的标识。(2)分类性。是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类(3)继承性。是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。(4)多态性。是指相同的操作或函数过程可以作用于多种类型的对象上并获得不同的结果。面向对象的要素是:1.抽象。2.封装性(信息隐蔽)(3)共享性。说明动态模型的特征,说明事件,脚本、状态的含义。
答:动态模型是与时间和变化有关的系统性质,该模型描述了系统的控制结构,它表示了瞬时的、行为化的系统控制性质,它关心的是系统的控制,操作的执行顺序,它从对象的事件和状态的角度出发,表现了相互行为。事件是指特定时刻发生的某件事情,它是某事情发生的信号,它没有持续时间,它是一种相对性的快速事件。脚本是完成系统某个功能事件序列,侧重于表达说明发生于系统执行过程中的一个特定场景,用事件跟踪图表达。状态是对象属性值的抽象。状态指明了对象对输入事件的响应。
说明功能模型的特征,比较功能模型的DFD和结构化方法的DFD异同。
答:功能模型描述了系统的所有计算。功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。功能模型表明一个计算如何从输入值得到输出值,它不考虑所计算的次序。功能模型由多张数据流图组成。数据流图说明数据流是如何从外部输入、经过操作和内部存储输出到外部的。功能模型也包括对象模型中值的约束条件。
说明三种分析模型的关系。答:三种分析模型之间关系是这样的:功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。说明对象建模的过程。
答:对象建模的过程如下:首先标识类和关联,因为它们影响了整体结构和解决问题的方法,其次是增加属性,进一步描述类和关联的基本网络,使用继承合并和组织类,最后将操作增加到类中去作为构造动态模型和功能模型的副产品。(1)确定类。构造对象模型的第一步是标出来自问题域的相关对象类,包括物理实体和概念。所有类在应用中都必须有意义。检查问题陈述中的所有名词,产生暂定类。然后去掉不必要的类和不正确的类。(2)准备数据字典。为所有建模实体准备一个数据词典。准确描述各个类的精确含义,描述当前问题中的类的范围,包括对类的成员、用法方面的假设或限制。1.确定关联。两个或多个类之间的相互依赖就是关联。从问题中抽取所有可能的关联表示,把它们记下来,但不要过早去细化这些表述。2.确定属性。属性是个体对象的性质,通常用修饰性的名词词组来表示。只考虑与具体应用直接相关的属性,不考虑那些超出问题范围的属性,首先找出重要属性,避免那些只用于实现的属性,要为各个属性取有意义的名字。3使用继承来细化类。4.完善对象模型。
说明功能建模的过程。答:功能建模的过程如下:(1)确定输入、输出值(2)建立数据流图
10、说明对象设计的步骤。
答:对象设计要确定实现用到的类、关联的完整定义,接口的形式以及实现操作方法的算法,可以增加实现必须的内部对象,对数据结构和算法进行优化。1.获得操作 2确定操作的目标对象 3.算法设计 4.优化设计 5.控制的实现 6调整继承(7)关联的设计
第十一章习题参考答案
软件质量与软件质量保证的含义是什么?
答:从实际应用来说,软件质量定义包括三个一致性:1.与所确定的功能和性能需求的一致性;(2)与所成文的开发标准的一致性; 3.与所有专业开发的软件所期望的隐含特性的一致性。4.软件质量保证是指确定、达到和维护所需要的软件质量而进行的所有有计划、有系统的管理活动。影响软件质量的因素有哪些? 答:影响软件质量的因素分为可以直接度量的因素(如单位时间内千行代码中所产生的错误)和只能间接度量的因素(如可用性和可维护性)。
什么是软件质量保证策略?软件质量保证的主要任务是什么? 答:软件质量保证策略是指软件质量保证工作的过程和侧重点。质量保证的主要任务包括以下几点:1.正确定义用户的要求。2.技术方法的应用。3.提高软件开发的工程能力。4.软件的复用。5.发挥每个开发者的能力。6.组织外部力量协作。7.排除无效劳动。(8)提高计划和管理质量。程序复杂性的度量方法有哪些?
答:软件复杂性的度量方法有:1.代码行度量法:以源代码行数作为程序复杂性的度量。
2、McCabe度量法:一种基于程序控制流的复杂性度量方法。
什么是软件的可靠性?它们能否定量计算?
答:软件可靠性是指在给定的时间内,在规定的环境条件下系统完成所指定功能的概率。衡量软件可靠性的两个常用指标是平均失效等待时间MTTF和平均失效间隔时间MTBF。就是说可以定量计算。
7、说明容错软件的定义与容错的一般方法。
答:容错软件的定义有四种,指规定功能的软件,(1)在一定程度上对自身错误的作用具有屏蔽能力的软件。(2)在一定程度上能从错误状态自动恢复到正常状态的软件。(3)在因错误而发生错误时,仍然能在一定程度上完成预期的功能的软件。(4)在一定程度上具有容错能力的软件。
实现容错技术的主要手段是冗余。冗余通常分为四类:1.结构冗余,又分为静态、动态和混合冗余三种。2.信息冗余 3.时间冗余(4)冗余附加技术第十二章习题参考答案
软件工程管理包括哪些内容?
答:软件工程管理的具体内容包括对开发人员、组织机构、用户、文档资料等方面的管理。
2、软件项目计划中包括哪些内容?
答:软件项目计划内容包括:1.范围 2.资源 3.进度安排 4成本估算(5)培训计划
3、软件开发成本估算方法有哪几种? 答:软件开发成本估算的方法主要有:(1)自顶向下估算方法(2)自底向上估算方法(3)差别估算方法
以及专家估算法、类推估算法、算式估算法等几类方法。
4、什么是软件配置管理?什么是基线?
答:软件配置管理,简称SCM(Software Configuration Management),是指一组管理整个软件生存期各阶段中变更的活动。软件配置管理技术可以使软件变更所产生的错误达到最小并最有效地提高生产率。
基线:是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果。
5、软件工程标准化的意义是什么?都有哪些软件工程标准? 答:软件工程标准化可以为软件工程各个阶段的活动提供统一的行动规范和衡量准则,使得各种工作都能有章可循。软件工程标准根据其制定机构与适用范围,可分为:1.国际标准2.国家标准 3.行业标准 4.企业规范
5、项目(课题)规范
6、请说明软件文档的作用?
答:软件文档的作用是:1.提高软件开发过程的能见度;2.提高开发效率;3.作为开发人员阶段工作成果和结束标志;4.记录开发过程的有关信息便于使用与维护;5.提供软件运行、维护和培训有关资料;6.便于用户了解软件功能、性能。第十三章习题参考答案
1、什么是软件开发环境?请列出其发展情况。
答:软件开发环境是指在计算机的基本软件的基础上,为支持软件的开发而提供的一组工具软件系统。具体地说,软件开发环境是一组相关工具的集合。这些相关工具按一定的开发方法或一定开发处理模型组织起来的,这些相关工具支持整个软件生存期的各阶段或部分阶段。软件开发环境的发展阶段:
(1)70年代,软件开发与设计方法出现了结构化分析技术的一整套相互衔接的SA-SD的方法学。与此相适应的计算机辅助软件工程技术则主要由开发孤立的软件工具而逐步向程序设计环境的开发和使用方向发展,出现了第一代的基于正文的CASE工具。
(2)80年代中期与后期,主要是实时系统设计方法,以及面向对象的分析和设计方法的发展,它克服了结构化技术的缺点。在这期间开发了第二代的CASE工具,其特点是支持使用图形表示的结构化方法,如数据流图与结构图。其开发环境表现在提高环境中工具的集成性方面,如“集成的项目支持环境”。(3)80年代后期和90年代初期出现了“基于信息工程CASE”技术,这种环境集成了用于项目计划、分析、设计、编程、测试和维护的一个工具箱的集合。
(4)90年代出现一系列集成的CASE软件产品,用以实现需求管理、应用程序分析设计和建模、编码、软件质量保证和测试、过程和项目管理及文档生成管理等软件开发工作的规范化、工程化和自动化。
2、请叙述软件开发环境的分类。答:软件开发环境可按解决的问题、软件开发环境的演变趋向和集成化程度进行分类:(1)按解决的问题可分为:程序设计环境、系统合成环境、项目管理环境三类。(2)按软件开发环境的演变趋向可分为:以语言为中心的环境、工具箱环境和基于方法的环境三类。(3)按集成化程度有第一代、第二代、第三代的开发环境。
3、何谓软件工具?通常包含哪几部分?答:软件工具的定义是:可用来帮助和支持软件需求分析、软件开发、测试、维护、模拟、移植或管理而编制的计算机程序或软件。软件工具是一个程序系统。软件工具通常由工具、工具接口和工具用户接口三
部分构成。
4、当今软件工具发展有何特点?
答:软件工具的发展有以下特点:(1)软件工具由单个工具向多个工具集成化方向发展。(2)重视用户界面设计。(3)不断地采用新理论和新技术。(4)软件工具的商品化与软件产业的发展形成良性互动。
5、什么是CASE?CASE工具有哪些分类?答:CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。CASE把软件开发技术、软件工具和软件开发方法集成到一个统一而一致的架中,并且吸收了CAD(计算机辅助设计)、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。因而,CASE领域是一个应用、集成和综合的领域。根据CASE系统对软件过程的支持范围,CASE可分为三类:(1)支持单个过程任务的工具。(2)支持某一过程所有活动或某些活动的工作台。(3)环境支持软件过程大部分乃至所有活动,一般包括几个不同工作台的集合。
6、请叙述集成化CASE的五级模型。答:集成化CASE的五级模型包括(1)平台集成:工具运行在相同的硬件/操作系统平台上(2)数据集成:工具使用共享数据模型来操作(3)表示集成:工具使用相同的用户界面(4)控制集成:工具激活后能控制其他操作(5)过程集成:工具在一个过程模型和“过程机”的指导下使用
7、CASE工作台有哪些分类?
答:CASE工具台是一组工具集,支持像设计、实现或测试等特定的软件开发阶段。CASE工具组装成一个工具台后工具能协同工作,可提供比单一工具更好的支持。CASE工作台包括:(1)程序设计工作台。由支持程序设计的一组工具组成。(2)分析和设计工作台。支持软件过程的分析和设计阶段。(3)测试工作台。(4)交叉开发工作台。这些工作台支持在一种机器上开发软件,而在其他的系统上运行所开发的软件。(5)配置管理(CM)工作台。这些工作台支持配置管理。(6)文档工作台。这些工具支持高质量文档的制作。(7)项目管理工作台。支持项目管理活动。