《软件工程》期末思考题(计算机科学与技术专业)1.什么是软件?软件的特点有哪些?概念:软件是产品,由满足一定要求的,具有可用性、可靠性的程序系统和与之相匹配的文档资料所组成。特点:不可见(难以管理、控制开发过程)、不磨损、难维护(维护即修改原有设计)、复杂(复杂性随规模指数增加)、开发而成、手工定做、成本高。2.什么是软件危机?软件危机的表现是什么?是指:软件开发、维护过程中遇到的一系列严重问题。如何开发软件,以满足对软件日益增长的需求。如何维护数量不断膨胀的已有软件。表现:估、满、靠、维、文、比、率。开发成本、进度估计不准确。用户对“已完成”的软件不满意。质量不可靠。不可维护。没有适当文档资料。软件成本在计算机系统总成本中所占的比例逐年上升。软件开发生产率提高速度跟不上计算机普及速度。3.软件危机产生的原因是什么?原因:软件自身特点:不可见(难以管理、控制开发过程)、难维护(维护即修改原有设计)、规模大(复杂性随规模指数增加)。软件开发、维护方法不正确:忽视需求分析(定义时期)、轻视软件维护。4.什么是软件工程?软件工程的基本内容有哪两个方面?概念:采用工程的概念、原理、技术和方法来开发与维护软件,把正确的管理和最好的技术结合起来,以经济地开发出高质量的软件并有效地维护它。两方面:管理(开发、经济)、技术(方法、工具、过程)5.软件工程三个要素是什么?方法:开发技术方法。工具:为运用方法提供的支撑环境。过程:任务框架、工作步骤。6.你知道的软件工程过程模型有哪些?瀑布模型原型模型螺旋模型迭代模型7.什么是软件生命周期?它有哪几个阶段?概念:软件从定义、开发、使用和维护,知道被废弃的过程。阶段:定、性、需、概、详、变蛋、综、维1)问题定义2)可行性研究3)需求分析4)总体设计5)详细设计6)编码和单元测试7)综合测试8)软件维护8.可行性研究的任务是什么?了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。9.需求包括的内容有哪些?业务功能性能环境界面用户或人的因素文档数据资源安全保密软件成本消耗与开发进度质量保证10.需求分析的步骤1)需求获取:双方确定对问题的综合需求。2)分析与综合:导出软件的逻辑模型。3)书写文档。4)需求分析评审。11.什么是业务模型定义系统的操作流程12.什么是功能模型定义系统的功能、性能、接口、界面等13.什么是DFD,它包括几种基本符号?其作用是什么?DFD:数据流图是描述数据处理的工具。从数据传输和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程是一种功能模型符号:方框:数据源/终点圆角框:数据处理双横线:数据存储有向线:数据流作用:作为交流信息、分析和设计的工具。14.画出你所做项目的0层数据流图15.画出你所做项目的1层数据流图16.说出画数据流图的原则,至少5条数据流图上所有符号只限于四种基本图形元素主图必须包括四种基本元素,缺一不可每个加工至少有一个输入数据流和一个输出数据流每个数据流都应有与相联系的加工数据文件必须既有读操作,也有写操作需按层给加工编号(但不表示先后顺序),任何一个子图必须与它上一层的一个加工对应,二者的输入数据流和输出数据流必须一致图上每个元素都必须有名字数据流图中不可夹带控制流(这与程序流程图有本质区别)17.什么是数据字典,它与DFD有什么关系是关于数据信息的集合,它对数据流图中的各个元素作完整的定义与说明,是数据流图的补充工具。18.需求分析阶段产生的主要文档?软件需求规格说明书:对已确定的需求进行清晰准确的描述的文档初步的用户手册:反映用户界面和用户使用的具体要求确认测试计划:将来验收的依据19.什么是软件概要设计,该阶段的基本任务是什么?概念:概括地回答“怎样实现目标系统”任务:1)设计软件系统结构(软件结构)2)用户界面及数据库设计3)编写概要设计文档a)《概要设计说明书》b)《数据库设计说明书》c)《用户手册》d)修订测试计划。4)评审20.概要设计包括哪些内容?体系结构设计模块设计用户界面设计数据库设计21.什么是模块独立性?衡量模块独立程度的标准是什么?概念:使每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。标准:耦合:衡量不同模块间互相依赖的紧密程度内聚:衡量一个模块内部个元素彼此结合的紧密程度22.什么是耦合,包括哪些种类?概念:衡量不同模块间互相依赖的紧密程度种类:紧密XX、松散XX、无XX23.什么是内聚,包括哪些种类?概念:衡量一个模块内部个元素彼此结合的紧密程度种类:偶然内聚逻辑内聚时间内聚过程内聚通信内聚信息内聚功能内聚24.简述软件结构优化的启发原则。提高模块独立性模块规模适中适当选择深度、宽度、扇出和扇入模块的作用域应该在控制域之内降低模块接口的复杂程度设计单入口单出口的模块模块功能可以预测25.画出你所做项目的软件结构图26.画出你所做项目的软件ER图27.用户界面设计准则有哪些?适合于功能容易理解(无误、提示信息)一致性(风格、术语、步骤、动作)减少记忆负担及时反馈出错处理适应各种用户(初学者/专家、色盲等)国际化(图标、语言、单位、日期格式等)个性化(与众不同、记忆深刻)布局合理(行列对齐、尺寸合理、缩放正常)色彩和谐28.概要设计阶段产生的主要文档?《概要设计说明书》《数据库设计说明书》《用户手册》《修订测试计划》29.什么是详细设计?内容?概念:说明“应该怎样具体地实现这个系统”内容:数据结构与算法设计30.描述算法的工具有哪些?图形工具程序流程图盒图(N_S图)PAD图HIPO图表格工具判定表语言工具过程设计语言(PDL)31.说说程序流程图的优缺点优点:对控制流程的描绘直观。缺点不是逐步求精的好工具,诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。图中的箭头代表控制流,因此程序员不受约束,可随意转移控制。不易表示数据结构32.详细设计阶段产生的主要文档?《详细设计说明书》33.你认为编码时要注意的问题有哪些?编码风格程序效率编程安全34.什么是软件测试?软件开发过程必须伴有质量保证活动。软件测试是软件质量保证的关键元素,代表了规约、设计和编码的最终检查。35.应该由谁去测试?应由独立的第三方来构造测试(开发和测试队伍分别建立)。36.软件测试的目标是什么?软件调试的目的是什么?测试目标:发现错误,证明程序有错,而不是证明程序无错。调试目的:确定错误的位置、性质并纠正。37.什么是白盒测试,设计白盒测试方案的技术是什么?概念:又称结构测试、玻璃盒测试、基于覆盖的测试。模块的内部逻辑对测试者是可见的。检查程序中的每条通路是否都能按预定要求正确工作。技术:逻辑覆盖法:有选择地执行程序中某些最有代表性的通路38.白盒测试的逻辑覆盖有几种?语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖点覆盖边覆盖路径覆盖39.什么是黑盒测试,黑盒测试的主要方法是什么?概念:又称功能测试、数据驱动测试、基于规格说明书的测试。不考虑模块内部的逻辑结构和内部特性。检查程序的功能是否符合功能说明。方法:等价类划分边界值分析错误推测40.软件测试的步骤是什么?1)单元测试2)集成测试3)确认测试4)系统测试41.什么是单元测试?测试哪些内容?概念:把一个模块作为独立的程序单元进行测试,主要测试单元是否符合“设计”。一般由开发小组采用白盒方式来测试,以路径覆盖为最佳测试准则。针对的程序规模小,易于查错,易于定位错误,易于排错,可多模块并行测试。内容:模块接口错误处理局部数据结构重要执行路径边界条件42.什么是集成测试?集成测试的目标是什么?概念:将已通过彻底测试的模块按设计要求组装起来,同时进行测试。一般由开发小组采用白盒加黑盒的方式来测试。目标:发现与接口有关的问题数据穿过接口是否可能丢失一个模块对另一个模块可能造成有害影响把子功能结合起来可能不能产生预期的主功能误差积累到不能接受的程度全程数据结构可能有问题43.什么是确认测试?概念:验证软件的功能和性能及其它特性是否与用户的需求一致(根据需求规格说明书)44.有了“黑盒”测试为什么还要“白盒”测试?黑盒测试只能观察外部表现,即使软件的输入输出正确,不能说明软件正确。因为程序可能用错误的运算方式得出正确的结果,例如“负负得正,错错得对”,只有白盒测试才能发现真正的原因。白盒测试能发现程序里的隐患,象内存泄漏、误差累计问题。在这方面,黑盒测试存在严重的不足。45.软件系统的主要测试内容有哪些?接口与路径测试功能测试健壮性测试性能测试用户界面测试信息安全测试压力测试可靠性测试安装/反安装测试46.什么是测试用例?包括什么内容?内容:应输入的测试数据预期的输出结果47.你对你所做项目作了什么测试?举例说明。白盒测试黑盒测试48.什么是对象、类、继承、封装、多态?对象:是组成客观世界的实体是由描述该对象属性的数据和对这些数据施加的所有操作封装在一起构成的统一体类:具有相同数据和相同操作的一组相似对象类是对象的定义一个对象是类的实例继承:子类自动地共享基类中定义的数据和方法封装:当一个对象执行自己的操作时,它对外界隐藏了操作细节多态:可使用一个消息引发执行不同对象的操作从而实现不同的功能49.什么是UML?统一建模语言(UnifyModeingLanguage简称UML)通常使用UML提供的类图来建立对象模型。50.软件维护的四类活动是什么?改正性维护适应性维护扩充与完善性维护预防性维护51.什么是CMMI?CMM(软件能力成熟度模型:CapabilityMaturityModelForSoftware)概念:是一套融合多学科的、可扩充的产品集合,同时也是工程实践与管理方法