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