1、1. 如何做好软件质量保证工作? 答案:软件质量保证工作是软件工程管理的重要内容,软件质量保证应做好以下几个方面的工作:(1)采用技术手段和工具。质量保证活动要贯彻开发过程始终,必须从采用技术手段和工具,尤 其是使用软件开发环境来进行软件开发。(2)组织正式技术评审。在软件开发的第一个阶段结束时,都要组织正式的技术评审。国家标准 要求单位必须采用审查、文档评审、设计评审、审计和测试等具体手段来保证质量。(3)加强软件测试。软件测试是质量保证的重要手段,因为测试可发现软件中大多数潜在错误。(4)推选软件工程规范 (标准 )。用户可以自己制定软件工程规范 (标准 ),但标准一旦确认就应贯 彻执行。
2、(5)对软件的变更进行控制。软件的修改和变更常常会引起潜伏的错误,因此必须严格控制软件 的修改和变更。(6)对软件质量进行度量。即对软件质量进行跟踪,及时记录和报告软件质量情况。2. 如何控制因修改而引起的副作用? 答案:为了控制因修改而引起的副作用,要做到: (1)按模块把修改分组; (2)自顶向下地安排被 修改模块的顺序; (3)每次修改一个模块; (4)对每个修改了的模块,在安排修改下一个模块之前 要确定这个修改的副作用,可使用交叉引用表、存储映像表、执行流程跟踪等。3. 渐增模型有几种?各有何特点? 答案:渐增模型是瀑布模型的变种,它有两类: (1)增量构造模型。它在瀑布模型基础上,对
3、一些阶段进行整体开发,对另一些阶段进行增量开 发。也就是说在前面的开发阶段按瀑布模型进行整体开发,后面的开发阶段按增量方式开发。 (2)演化提交模型。它在瀑布模型基础上,所有阶段都进行增量开发,也就是说不仅是增量开发 ,也是增量提交。4. 对软件开发环境的基本要求有那些? 答案: (1)软件开发环境应是高度集成的一体化的系统。 (2)软件开发环境应具有高度的通用性。 (3)软件开发环境应易于定制、裁剪或扩充以符合用户要求,即软件开发环境应具有高度的适应 性和灵活性。(4)软件开发环境不但可应用性要好,而且是易使用的、经济高效的系统。(5)软件开发环境应有辅助开发向半自动开发和自动开发逐步过渡的
4、系统。一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。(2) 用户对已完成的软件不满意的现象时有发生。(3) 软件产品的质量往往是靠不住的。(4) 软件常常是不可
5、维护的。(5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。二瀑布模型优点与缺点:瀑布模型优点:它提供了一个模板,这个模板使得分析、设计
6、、编码、测试和支持的方法可以在该模板下有一个共同的指导。虽然有不少缺陷但比在软件开发中随意的状态要好得多。瀑布模型缺点:(1) 实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。(2) 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。(3) 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。(4) 会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。称之为“
7、堵塞状态” 。它是软件工程中应用最广泛的过程模型,在软件工程中占有肯定和重要的位置。31简述需求的基本性质。1.必要的:该要求是用户所要求的。2.无歧义的:该需求只能以一种方式解析。3.可测的:该需求可进行测试的。4.可跟踪的:该需求 可从一个开发阶段跟踪到另一个阶段。5.可测量的:该需求 是可测量的。32简述在进行软件系统产品的需求工作中所面临的挑战和应对方法。面临的挑战:1.问题空间的理解;2.人与人之间的通信;3.需求的变化性对应方法:提出了系列软件开发方法:结构化方法、面向对象的方法、面向数据结构的方法33什么是类?什么是对象?什么是类的构成成分?类是一组具有相同属性、操作、关系和语义
8、对象的描述;对象是类的一个实例;类的构成包括:类名、属性、操作34什么是 RUP?它有什么特点?定义:RUP 即通一软就开发过程,它是一种基于 UML 的一种过程框架,为软件的开发,即为进行不同抽象层之间的“映射”安排其开发活动的次序,指定任务和需要开发的制品,提供了指导;并为对项目中的制品和活动进行监控和度量,提供了相应的准则。特点:以用况为驱动,以体系结构为中心的迭代、增量式开发方法。35简述人们关于软件测试目的的认识所经历的几个阶段。1.第一阶段认为软件测试和调试没有任何区别;2.第二阶段认为测试是为了表明软件能正常工作;3.第三阶段认为测试是为了表明软件不能正常工作;4.第四阶段认为测
9、试仅是为了将已察觉的错误风险降低到一个可接受的层程 ;5.第五阶段认为测试不仅是一种行为而且是一种理念,即测试是产生低风险软件的一种训练36.简述喷泉模型以及可适应的情况。1.喷泉模型体现了软件创建所固有的跌代和无间隙的特征。2.喷泉模型说明了软件 活动需要多次重复3. 喷泉模型还说明了软件 活动之间没有明显的间隙4.该模型主要用于面向对象技术的 软件开发方法37一个简化的机票销售系统需求描述如下:售票员根据旅客需要的航班,首先查询有无该航班机票。若有,则负责录入旅客的基本信息,并将指定的机票标志设置为售出;售票部经理可随时查询每一个航班的售票情况,并在当日结算时能计算出日营业额。请画出该系统
10、的 0 层 DFD 图和 1 层 DFD 图(注:1 层分解为查询和录入、统计和计算两个处理)。38设被测试的程序段为:begin s1;if(x=1)and(y3)then s2;if(x2)or(y=2)then s3;s4;end可供选择的测试用例为:编号 x yA l 4B 2 3C 0 3D 4 2请分别找出实现语句覆盖、条件覆盖、分支覆盖最少所需的测试用例及其对应的编号。语句覆盖:A条件覆盖:A、D(依次为:真真真假和假假假真)分支覆盖:A、B31.什么是需求规约?简述需求规约的作用。P31需求规约是一个软件项/产品/系统所有需求陈述的正式文档,是一个软件产品系统的概念模型。1)需
11、求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求规约是一个管理控制点。3)对于产品系统的设计,需求规约是一个正式的、受控的起始点。4)需求规约是创建产品验收测试计划和用户指南的基础。32.通过长期的软件开发实践,人们总结出了哪些模块设计的启发式规则?不论是变换设计还是事务设计,都会涉及到一个公用的目标既“基于一个高内聚低耦合”的原理 改进软件结构,提高模块独立性 力求模块规模适中 力求深度。宽度、扇出和扇入适中 尽量使模块的作用域在其控制之内 尽力降低模块接口的复杂性 力求模块功能可以预测33.什么是类?什么是对象?简述类在建模
12、中的主要用途。类是一组具有相同属性,操作,关系和语义的对象的描述,对象是类的实例,类在建模中的主要 模型化待建系统中的概念形成类图的基本元素。 模型化待建系统中的各种关系,形成 系统的初始类图。 模型化系统中的协作,给出该系统的最终类图。 模型化逻辑数据库的模式34.为什么 RUP 要与 UML 一起才称得上是一种面向对象开发的方法学?RUP 与 UML 是一对“姐妹” ,它们构成了一种特定的软件开发方法学。其中,UML 作为一种可视化建模语言,给出了表达事物和事物之间关系的基本术语,给出了多种模型的表达工具;而 RUP 利用这些术语定义了需求获取层、系统分析层、设计层、实现层,并给出了实现各
13、层模型之间映射的基本活动以及相关指导35.简述软件测试和软件调试之间的区别。1)测试从一侧面证明程序员的“失败” 。调度为了证明程序员是正确的2).测试以已知条件开始,使用预告定义的程序且有预知的结果,不可预见的仅是程序是否通过测试3).测试是有计划的,并要进行测试设计。高度是不受时间约束的4).测试是发现错误、改正错误、重新测试的过程。调试是一个推理过程5).的执行是有规程的。调试的执行往往要求程序员进行必要推理6).测试经常由独立的测试组在不了解软件技术的条件下完成的。高度必须由了解详细设计的程序员完成7)大多数测试的执行和设计可由工具支持。调试时,程序员能利用的工具主要是调试器程序流程图
14、的作用及构成36.简述演化模型以及可适应的情况。答 : 表 达 了 一 种 弹 性 的 过 程 模 式 , 由 一 些 小 的 开 发 步 组 成 , 每 一 步 历 经 需 求 分 析 、设 计 、 实现和验证,产生软件产品的一个增量,通过这些迭代,最终完成软件产品的开发主要针对事先不能完整定义需求的软件开发37.题 37 图是银行活期存取款业务处理系统的数据流图,请根据图示完成以下填空:(1)数据源或数据潭包括:_储户_;(2)加工包括:审查单据,业务分类,修改 1A,修改 1B,修改 2A,修改2B_;(3)数据存储包括:_储户_;(4)“业务分类”的输入流是:_合格存取单存折_;(5)
15、“业务分类”的输出流是:_合格存折存款单,合格存折取款单_。38.有一个程序:输入 3 个整数 ABC,把这 3 个数看成是一个三角形的 3 条边。这个程序要输出信息,来说明这个三角形的几种情况:是三边不等的、是等腰的、还是等边的。请根据给出的说明,用等价类划分法设计该问题的测试用例(要求写出设计过程)。解:等价类测试方法(1) 建立等价类表:输入数据 有效等价类 无效等价类3 个数 A、B、C (1)三边不等三角形(2)等腰三角形(3)等边三角形(4)不能构成三角形A、B、C 数值的范围 (5)A、B、C 都大于 0 (6)A 小于等于 0(7)B 小于等于 0(8)C 小于等于 0(2)
16、为有效等价类设计测试用例测试数据 期望结果 覆盖范围A=3、B=4、C=5 输入有效 (1) , (5)A=3、B=3、C=4 输入有效 (2) , (5)A=4、B=4、C=4 输入有效 (3) , (5)(3) 为无效等价类设计测试用例测试数据 期望结果 覆盖范围A=1、B=1、C=4 输入无效 (4)A=0、B=1、C=4 输入无效 (6)A=1、B=0、C=4 输入无效 (7)A=4、B=1、C=0 输入无效 (8)31简述软件需求的分类及其关系。P23-24;答:软件需求可以分为功能需求和非功能需求 2 大类;功能需求规定了系统及构件必须执行的功能;非功能需求又可以分为性能需求、外部
17、接口需求、设计约束和质量属性需求。功能需求是整个软件需求的主体,没有功能需求就没有性能、外部接口、设计约束和质量的需求;一个非功能需求可以作用于 1个或多个功能需求。32什么是模块?什么是模块内聚?请列出从低到高的常见内聚类型。P56、57、58、59答:模块是执行一个特殊任务的过程以及相关的数据结构。内聚是指一个模块内部各个成分之间相互关联程度的度量。从低到高的内聚类型:偶然内聚;逻辑内聚;时间内聚;过程内聚;通信内聚;顺序内聚;功能内聚。33什么是状态?什么是状态图?简述实际应用中使用状态图的作用。107、108、113答:状态是类目的一个实例在其生存中的一种条件或情况;期间该实例满足这一
18、条件,就执行某一活动或等待一个消息。状态图是现实状态机的图,强调从一个状态到另一个状态的控制流。在实际使用中状态图的作用:创建一个系统的动态图和创建一个场景的模型。34简述 RUP 中需求获取的基本步骤和相关制品。P132答:需求获取的步骤和相关制品:第 1 步是列出候选的特征,相关制品是特征表;第 2 步是理解系统语境,相关制品是领域模型或业务模型;第 3 步是捕获系统功能需求,相关制品是用况模型(use case 模型) ;第 4 步是捕获非功能需求,相关制品是补充的需求或针对特殊需求的用况。35简述黑盒测试技术的要点。P186答:黑盒测试技术的要点:(1)支持测试工程模型的中间部分;(2
19、)事务流测试技术是将路径测试技术用于功能测试的产物,是一种实用的功能测试技术,通过事务的操作逻辑发现软件中的错误;(3)事务流测试技术是基于软件规约的,对错误的假定是软件通过了与预想不同的事务路径;(4)基于事务的基本操作;事务流测试技术的最大问题和最大代价是获取事务流程图及用例设计;(5)事务处理流程测试要达到基本的测试覆盖。36简述增量模型以及可适应的情况。P224答:增量模型意指需求可以结构化分组,形成一个个增量,并形成一个结构,之后对每一个增量进行瀑布开发。用增量模型开发的前提是需求的结构化,模型适合“技术驱动”的软件产品开发。36简述容错技术的四种主要手段,并解释。结构冗余:包括静态
20、冗余、动态冗余和混合冗余。信息冗余:为检测或纠正信息在运算或传输中的错误,须外加一部分信息。时间冗余:指重复执行指令或程序来消除瞬时错误带来的影响。冗余附加技术:指为实现上述冗余技术所需的资源和技术。37以 G.J.Myers 的观点,简述对软件测试的目的。软件测试是(1)为了发现错误而执行程序的过程;(2)一个好的用例能够发现至今尚未发现的错误的测试。 (3)一个成功的测试是发现至今尚未发现的错误的测试。38就程序设计语言的工程特性而言,对程序编码有哪些要求?就程序设计语言的工程特性而言,对程序编码有如下要求:(1)可移植性 (2)开发工具的可利用性 (3)软件的可重用性 (4)可维护性39
21、模块的内聚性包括哪些类型?模块的内聚性包括:(1)偶然内聚(2)逻辑内聚(3)时间内聚(4)通信内聚(5)顺序内聚(6)功能内聚36可行性研究报告的主要内容有哪些?解:一个可行性研究报告的主要内容如下:(1)引言:说明编写本文档的目的;项目的名称、背景;本文档用到的专门术语和参考资料。(2)可行性研究前提:说明开发项目的功能、性能和基本要求;达到的目标;各种限制条件;可行性研究方法和决定可行性的主要因素。(3)对现有系统的分析:说明现有系统的处理流程和数据流程;工作负荷;各项费用支出;所需要各类专业技术人员的数量;所需要各种设备;现有系统存在什么问题。(4)所建议系统的技术可行性分析:所建议系
22、统的简要说明;处理流程和数据流程;与现有的系统比较的优越性;采用所建议系统对用户的影响;对各种设备、现有软件、开发环境、运行环境的影响;对经费支出的影响;对技术可行性的评价。(5)所建议系统的经济可行性分析:说明所建议系统的各种支出,各种效益;收益投资比;投资回收周期。(6)社会因素可行性分析:说明法律因素,对合同责任、侵犯专利权、侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理、工作制度、人员素质的要求。(7)其他可供选择方案:逐一说明其他可供选择的方案,并说明未被推荐的理由。(8)结论意见:说明项目是否能开发;还需要什么条件才能开发;对项目目标有什么变动等。解析做软件的可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发,其中的问题能否解决,报告共分为八个基本内容。