简答题1.软件工程的七条基本原理是什么?答:软件工程的七条基本原理是:(1)用分阶段的是的生存周期计划严格管理(2)坚持进行阶段评审;(3)严格实施的产品控制(4)采用现代程序技术(5)结果应能清楚地审查;(6)开发小组的成员应该少而精(7)承认不断改进软件工程的必要性。2.良好的编码风格应具备哪些条件?答:应具备以下条件:(1)使用标准的控制结构(2)有限制地使用GOTO语句(3)源程序的文档化(应具备以下内容)①有意义的变量名称——“匈牙利命名规则”②适当的注释——“注释规范”③标准的书写格式:——用分层缩进的写法显示嵌套结构的层次(锯齿形风格)——在注释段的周围加上边框——在注释段与程序段、以及不同程序段之间插入空行——每行只写一条语句——书写表达式时,适当使用空格或圆括号等作隔离符(4)满足运行工程学的输入输出风格3.简述文档在软件工程中的作用答:(1)提高软件开发过程的能见度(2)提高开发效率(3)作为开发人员阶段工作成果和结束标志(4)记录开发过程的有关信息便于使用与维护(5)提供软件运行、维护和培训有关资料(6)便于用户了解软件功能、性能4.可行性研究包括哪几方面的内容? 答(1)经济可行性:是否有经济效益,多长时间可以收回成本 (2)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足 (3)运行可行性:系统操作在用户内部行得通吗? (4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律5.结构化的需求分析描述工具有哪些?答:有数据流图(DFD)、数据字典(DD)、判定表、判定树、结构化语言(PDL)、层次方框图、Warnier图、IPO图、控制流图(CFD)、控制说明(CSPEC)、状态转换图(STD)和实体—关系图(E—R)等6.一般面向对象分析建模的工具(图形)有哪些?答:用例图、类/对象图、对象关系图、实体—关系图(E—R)、事件轨迹图(时序图)和状态转换图(STD)等7.UML统一建模语言有哪几种图形?用例图、类图、对象图、构件(组件)图、部署(配置)图、状态图、活动图、顺序(时序)图、合作(协作)图等九种图8.在面向对象分析时类和对象的静态关系主要有哪几种?答:类和对象的静态关系主要有关联、聚集、泛化、依赖等四种关系9.什么是模块化?模块设计的准则? 模块化是按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块 模块设计的准则: (1)改进软件结构,提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合 (2)模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中 (3)软件结构图的深度、宽度、扇入和扇出要适当一般模块的调用个数不要超过5个 (4)尽量降低模块接口的复杂程度 (5)设计单入口、单出口的模块 (6)模块的作用域应在控制域之内10.什么是模块独立性?用什么度量?答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准。独立性可以从两个方面来度量:即模块本身的内聚和模块之间的耦合。11.变换型数据流由哪几部分组成?变换型结构由三部分组成:传入路径、变换(加工)中心和传出路径12.变换分析设计的步骤? (1)区分传入、传出和变换中心三部分,划分DFD图的分界线 (2)完成第一级分解:建立初始SC图的框架 (3)完成第二级分解:分解SC图的各个分支 (4)对初始结构图按照设计准则进行精化与改进13.事务型数据流由哪几部分组成? 事务型结构由至少一条接受路径、一个事务中心与若干条动作路径组成14.事务分析设计的步骤? (1)在DFD图中确定事务中心、接收部分(包含全部接收路径)和发送部分(包含全部动作路径) (2)画出SC图框架,把DFD图的三部分,分别映射为事务控制模块,接收模块和动作发送模块.一般得到SC图的顶层和第一层(如果第一层简单可以并入顶层) (3)分解和细化接收分支和动作分支,完成初始的SC图 (4)对初始结构图按照设计准则进行精化与改进15.数据字典包括哪些内容?数据字典是描述数据流图中数据的信息的集合。它对数据流图上每一个成分:数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成16.给出一组数从小到大的排序算法,分别用下列工具描述其详细过程: (1)流程图;(2)N-S图;(3)PDL语言17.欲开发一个银行的活期存取款业务的处理系统:储户将填好的存/取款单和存折交给银行工作人员,然后由系统作以下处理 (1)业务分类处理:系统首先根据储户所填的存/取款单,确定本次业务的性质,并将存/取款单和存折交下一步处理 (2)存款处理:系统将存款单上的存款金额分别记录在存折和帐目文件中,并将现金存入现金库;最后将存折还给储户 (3)取款处理:系统将取款单上的取款金额分别记录在存折和帐目文件中,并从现金库提取现金;最后将现金和存折还给储户 绘制该系统的数据流图和软件结构图18.什么是软件生存周期?把生存周期划分为阶段的目的是什么?答:一个软件从开始计划起,到废弃不用止,成为软件的生存周期。把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,能够简化每一步的工作内容,使因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理19.详细设计的目的?为软件结构图(SC图或HC图)中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述.20.详细设计的任务是什么?(1)为每个模块确定采用的算法(2)确定每一模块使用的数据结构(3)确定模块接口的细节(4)编写过程设计说明书(5)设计每一模块的测试用例21.编码的任务?使用选定的程序设计语言,把模块的过程性描述翻译为用语言书写的源程序(源代码)22.软件测试的基本任务?软件测试是按照特定的规则,发现软件错误的过程;好的测试方案是尽可能发现迄今尚未发现错误的测试;成功的测试方案是发现迄今尚未发现错误的测试;23.什么是黑盒测试?黑盒测试主要采用的技术有哪些?黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试主要采用技术有:等价分类法、边界值分析法、错误推测法和因果图等技术24.什么是白盒测试?白盒测试主要采用的技术有哪些?测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致白盒测试主要采用的技术有:路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术25.路径测试技术中几种主要覆盖的含义?举例说明?语句覆盖:至少执行程序中所有语句一次判定覆盖:使被测程序中的每一个分支至少执行一次。故也称为分支覆盖条件覆盖:执行所有可能的穿过程序的控制路流程条件组合测试:设计足够的测试用例,使每个判定中的所有可能条件取值组合至少执行一次(例略)26.等价分类法的测试技术采用的一般方法?举例说明?(1)为每个等价类编号(2)设计一个新的测试方案,以尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类被覆盖为止(3)设计一个新的测试方案,使它覆盖一个尚未被覆盖的无效等价类,重复这一步骤,直到所有无效等价类被覆盖为止(例略)27.如图显示某程序的逻辑结构试为它设计足够的测试用例,分别实现对程序的判定覆概、条件覆概和条件组合覆概。NYN设计测试方案覆盖种类需满足的条件测试数据期望结果判定覆盖A1,B=0A=2,B=0执行S1A1,B0或A1,B=0或A1,B0A=2,B=1或A=1,B=0或A=1,B=1执行S2条件覆盖以下四种情况各出现一次A1B=0A=2,B=0执行S1A1B0A=1,B=1执行S2条件组合覆盖A1,B=0A=2,B=0执行S1A1,B0A=2,B=1执行S2A1,B=0A=1,B=0执行S2A1,B0A=1,B=1执行S228.某城市电话号码由三部分组成。它们的名称和内容分别是:地区码:空白或三位数字前缀:非‘0’或‘1’的三位数字后缀:4位数字假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。划分等价类输入条件有效等价类无效等价类地区码1.空白;2.三位数;1.有非数字字符;2.少于三位数字;3.多于三位数字。前缀3.从200到999之间的三位4.有非数字字符;5.起始位为‘0’;6.起始位为‘1’;7.少于三位数字;8.多于三位数字。后缀4.四位数字。9.有非数字字符;10.少于四位数字;11.多于四位数字。设计测试方案方案内容输入预期输出地区码前缀后缀1空白200~999之间的三位数字四位数字()276-2345有效2三位数字四位数字(635)805-9321有效3有非数字字符(20A)723-4567无效4少于三位数字(33)234-5678无效5多于三位数字(5555)345-6789无效6有非数字字符(345)5A2-3456无效7起始位为‘0’(345)012-3456无效8起始位为‘1’(345)132-3456无效9少于三位数字(345)92-3456无效10多于三位数字(345)4562-3456无效11有非数字字符(345)342-3A56无效12少于四位数字(345)342-356无效13多于四位数字(345)562-34567无效29.为什么说软件的维护是不可避免的?因为软件的开发过程中,一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进行软件的修改或完成功能的增删等,为了提高软件的应用水平和使用寿命,软件的维护是不可避免的。22.试由程序流程图导出程序图1入口F2A1TT38B=0X=X/AF4A=2T5FX1T96X=X+1F7出口(a)程序流程图(b)导出程序图30.软件的维护一般分为哪几类?完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能,以满足用户日益增长的需要而进行的工作适应性维护:是软件适应新的运行环境而进行的工作纠错性维护:纠正开发期间未发现的遗留错误,即在程序使用期间发现的程序错误进行诊断和改正的过程预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作31.决定软件可维护性的因素? (1)软件的可理解性、可测试性、可修改性; (2)文档描述符合要求、用户文档简洁明确、系统文档完整并且标准32.分析软件危机产生的主要原因有哪些?答:导致软件危机的主要原因有:(1)软件日益复杂和庞大(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加33.说明结构化程序设计的主要思想是什么?答(1)自顶向下、逐步求精的程序设计方法(2)使用3种基本控制结构、单入口、单出口来构造程序34、软件测试的基本任务是什么?测试与纠错有什么区别?答:软件测试的基本任务是通过在计算机上执行程序,暴露程序中潜在的错误。测试和纠错目的和任务都不相同,测试是为了发现程序的错误,纠错是为了定位和纠正错误,从而消除软件故障,保证程序的可靠运行。35.软件测试包括哪些步骤?同时说明这些步骤的测试目的是什么?答(1)单元测试,目的是代码达到模块说明书的要求(2)集成测试,目的是将经过单元测试的模块逐步组装成具有良好一致性的完整的程序(3)确认测试,目的是确认程序系统是否满足软件需求规格说明书的要求(4)系统测试,目的是检查能否与系统的其余部分协调运行,并且完成SRS对他的要求36.需求分析与软件设计二个阶段任务的主要区别是什