1、软件工程期末思考题江超群2016/12/171. 什么是软件?软件的特点有哪些?国标中对软件的定义为:与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。可以认为:软件=程序+数据+ 文档特点:软件是复杂的;软件是一个逻辑产品而不是物理产品;软件是开发的,而不是制造的;软件具有柔性;软件不会“磨损” ;至今 还未完全摆脱手工开发模式,大部分产品是定制的;软件成本相当昂贵。2. 什么是软件危机?软件危机的表现是什么?软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。表现:如那件开发进度难以预测;软件开发成
2、本难以控制;用户对产品功能难以满足;软件产品质量无法保证;软件产品难以维护;软件缺少适当的文档资料。3. 软件危机产生的原因是什么?软件本身:1) 软件本身是逻辑部件,缺乏可见性,开 发过程的进展情况和质量难以预测、 难以衡量。2) 不会用坏,维护意味着修改原设计。3) 规模庞大,多人合作,难 以统一成高质量的整体。开发、维护方法不当:对用户的需求没有准确的认识, 仓促上阵,急于求成。4. 什么是软件工程?软件工程的基本内容有哪两个方面?将工程的原理应用于软件设计、开发以获得有效的和经济的软件、软件开发过程和软件系统。IEEE 定义:(1)将系统的、规范的、可度量的方法 应用于 软件的开发、运
3、行和 维护的过程;(2)上述方法的研究。基本内容有技术和管理两方面。5. 软件工程三个要素是什么?软件工程作为一种层次化的技术,有方法、工具和 过程三大要素,并由于其涉及学科内容的极为广泛,而分为三个分支:软件开发技术、软件项目管理技术、 软件质量管理技术。6. 你知道的软件工程过程模型有哪些?瀑布模型、增量模型、演化模型、喷泉模型、基于构件的开发模型、形式化方法模型。7. 什么是软件生命周期?它有哪几个阶段?软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。包括:可行性分析和项目开发计划,需求分析,概要 设计,详细设计,编码,测试, 维护 8. 从哪几方面进行可行性研究?
4、市场可行性、政策可行性技术可行性 一般要考虑的情况包括 开发的风险即设计出的系统能否达到要求的功能和性能;资源的有效性;相关技术的发展是否支持;经济可行性 进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资。社会可行性 要开发的项目是否存在任何侵权问题,运行方式在用户组织内是否可行,现有管理制度人员素质操作方式是否可行。9. 软件需求分析从哪几方面进行?可以分为:功能需求、性能需求、可靠姓需求和可用性需求、出错处理需求、接口需求等多个方面。10.进行需求分析的步骤什么?1) 确定系统的综合需求;2) 分析系统的数据需求;3) 导出逻辑模型;4) 修正系统开发计划。11.用什
5、么图可以描述系统的业务?业务流程图或 UML 活动图组织结构图12.用什么图可以描述系统的功能?数据流图或 UML 用况图13.什么是数据流图?它包括几种基本符号?其作用是什么?是描述数据处理的工具。从数据传输和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,是一种功能模型。图 1 数据流图基本符号14.画出你所做项目的 0 层(或 1 层)数据流图15.说出画数据流图的原则,至少 5 条1) 数据流图上所有符号只限于四种基本图形元素2) 主图必须包括四种基本元素,缺一不可3) 主图上的数据必须封闭在外部实体之间,外部实体可以不止一个4) 每个加工至少有一个输入数据流和一个输出数
6、据流5) 每个数据流都应有与相联系的加工6) 数据文件必须既有读操作,也有写操作7) 需按层给加工编号(但不表示先后顺序),8) 任何一个子图必须与它上一层的一个加工对应,二者的输入数据流和输出数据流必须一致9) 图上每个元素都必须有名字10) 数据流图中不可夹带控制流(这与程序流程图有本质区别)11) 初画时可忽略琐碎的细节,集中精力于主要的数据流16.什么是数据字典,它与数据流图有什么关系?是关于数据信息的集合,它对数据流图中的各个元素作完整的定义与说明,是数据流图的补充工具。数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图
7、中的各个元素做出详细的说明,使用数据字典为简单的建模项目。关系:数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用。只有数据流图和对数据流字典中每个元素的精确定义放在一起,才能共同构成系统的规格说明。17.需求分析阶段产生的主要文档?1) 软件需求规格说明书2) 初步的用户手册3) 确认测试计划18.什么是软件概要设计,该阶段的基本任务是什么?概括地回答“怎样实现目标系统”。基本任务:1) 设计软件系统结构(软件结构)2) 用户界面及数据库设计3) 编写概要设计文档a) 概要设计说明书b) 数据库设计说明书c) 用户手册d) 修订测试
8、计划4) 评审 19.什么是模块独立性?衡量模块独立程度的标准是什么?使每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。衡量模块独立性程度的度量标准a) 耦合:衡量不同模块间相互依赖的紧密程度。b) 内聚:衡量一个模块内部各元素彼此结合的紧密程度。20.什么是耦合?什么是内聚?耦合:模块间的联系的紧密程度。无耦合、松散耦合、紧密耦合。由低到高:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共环境耦合、内容耦合。内聚:模块内各个元素彼此结合的紧密程度。由低到高:偶然内聚、逻辑内聚、时间内聚、 过程内聚、通信内聚、信息内聚、功能内聚。21.画出你所做项目的软件结构图2
9、2.用户界面设计准则有哪些?1) 用户界面适合于软件的功能2) 容易理解(无误、提示信息)3) 一致性(风格、术语、步骤、动作)4) 减少用户记忆的负担5) 及时反馈信息6) 出错处理7) 适应各种用户(初学者/专家、色盲等)8) 国际化(图标、语言、单位、日期格式等)9) 个性化(与众不同、记忆深刻)10) 合理的布局(行列对齐、尺寸合理、 缩放正常)11) 和谐的色彩23.概要设计阶段产生的主要文档?a) 概要设计说明书b) 数据库设计说明书c) 用户手册d) 修订测试手册24.你在概要设计说明书中主要使用的图是什么,表达什么?25.什么是详细设计?内容?说明应该怎样具体地实现这个系统。主
10、要内容:数据结构与算法26.描述算法的工具有哪些?算法流程图;盒图(N-S 图);问题分析图(PAD 图);判定表;判定树;过程设计语言(伪代码、PDL)图 2 程序流程图和盒图图 3 PAD 和 判定表图 4 判定树27.算法流程图和系统流程图的区别是什么?系统流程图:描绘系统物理模型的传统工具。他的基本思想是用图形符号以黑盒子的形式描绘系统理念的每个部件包括程序,文件,数据库,表格,人工 过 程等,表达信息在 给个部件之间流动的情况,而不是表示对信息进行加工处理的控制过程。反映了主体框架。程序流程图:描述了程序中控制流地情况,即程序中处理的执行顺序和执行序列所依赖的条件,途中有向线段表示的
11、是控制流从一个处理走到下一个处理。28.详细设计阶段产生的主要文档?详细设计说明书29.什么是软件设计说明书?主要包括什么内容?概要设计说明书是概要设计阶段的工作成果,它应说明功能分配、模块划分、程序的 总体结构、输入输出以及接口设计、运行 设计、数据 结构设计和出错处 理设计等, 为详细设计奠定基础。详细设计说明书是详细设计阶段的主要成果,也是编码阶段主要参考的文档。主要包括引言、总体设计、程序设计说明。30.你认为编码时要注意的问题有哪些?1) 变量命名规范2) 编码格式规范3) 多加注释4) 少用或不用 goto 语句5) 使用 C/C+时,申请了内存空间就要记得释放内存空 间31.什么
12、是软件测试?应该由谁去测试?软件测试是软件开发过程中必须伴有的质量保证活动。软件测试是软件质量保证的关键元素,代表了规约、设计和编码的最终检查。通常,项目的开发人员不参与系统测试。 测试小组通常是独立于实现人员的,理想情况下,某些测试小组成员已经是有经验的测试人员。测试人员需要熟悉测试系统规格说明,而且熟悉测试方法和工具。32.软件测试的目标是什么?软件调试的目的是什么?测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。软件调试的目的是确定错误的位置、性质并纠正。33.什么是白盒测试,设计白盒测试方案的技术是什么?白盒测试是根据被测程序的逻辑结构设计测试用例;力求提高测试覆
13、盖率。设计白盒测试用例的方法:逻辑覆盖法。语句覆盖、判定覆盖、条件覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖。34.什么是黑盒测试,黑盒测试的主要方法是什么?黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只 检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要 针对软件界面和软件功能进行测试。主要测试方法:等价类划分、边界值分析法、 错误推测
14、。35.什么是测试用例?一个测试用例包括哪些内容?测试用例(Test Case )是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。一个测试用例要包括:(1) 用例 ID;(2) 用例名称;(3) 测试 目的;(4) 测试级别;(5) 参考信息;(6) 测试环境;(7) 前提条件; (8) 测试 步骤;(9) 预期结果;(10) 设计人员。36.软件测试的步骤是什么?单元测试-集成 测试- 确认测试 -系统测试。图 5 软件测试的步骤37.软件系统的主要测试内容有哪些?1) 接口与路径测试(白盒测试)2) 功能测试3) 健壮性测试4)
15、性能测试5) 用户界面测试6) 信息安全测试7) 压力测试8) 可靠性测试9) 安装/反安装测试38.你对你所做项目作了什么测试?举例说明。39.面向对象和面向过程的分析设计方法有什么异同?区别: 面向对象注重对数据的使用。试图把数据和对其的操作封装在一起(类),并且尝试去自动处理一些不同的函数的调用工作(多态,重载等),以减 轻对 函数的依赖。面向 过程则注重对函数(功能模块)的应用,这些年也有一些面向函数的语言开始复苏(如 F#)也可以看出,面向的重点不同,也各有 领域和优点。联系:联系其实在不同中就已经可以看到。面向对象只是将数据和函数“ 打包”,并记入了一些自动判断并调用“函数 ”的功
16、能。所以,面向对象也是建立在函数的基础上,只是减弱了开 发人员对函数的依赖度,将重点转向数据。面向对象=对象 +类+继承+封装 +消息40.什么是 UML?你知道的 UML 图有那些?UML 是一种定义良好,易于表达,功能 强大且普遍实用的建模 语言。UML 图有五大类,共十种模型图:1) 用例图:用来表示系统的功能,并指出各功能的操作者;2) 静态图:包括 类图、对象图和包图,表示系 统的静态结构;3) 行为图:包括 状态图、活动图,用于描述系 统的动态行为和对象之间的合作关系;4) 交互图:包括 顺序图、合作图,用于描述系 统的对象之间的动态合作关系;5) 实现图:包括 构件图和配置图,用
17、于描述系统的物理实现。41.UML 中用什么图描述功能需求比较合适?用例图42.UML 中用什么图描述业务流程比较合适?活动图。43.UML 中的类图描述什么?类图描述了系统中的类及其相互之间的各种关系,其本质反映了系统中包含的各种对象的类型以及对象间的各种静态关系(关联,子类型)。44.软件维护的四类活动是什么?1) 校正性维护:指为了识别和纠正错误,修改软件性能上的缺陷,进行确定和修改错误的过程。占整个维护工作的 21%.2) 适应性维护:为了使本软件适应硬件和软件的变化而修改软件的过程称为适应性维护。占整个维护活动的 25%。3) 完善性维护:增加软件功能、增强软件性能、提高运行效率而进
18、行的维护活动称为完善性维护。占整个维护工作的 50%.4) 预防性维护:为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。只占 4%。45.什么是 CMMI?CMMI 全称是 Capability Maturity Model Integration,即能力成熟度模型集成(也有称为:软件能力成熟度集成模型)。CMMI 主要关注点就是成本效益、明确重点、 过程集中和灵活性四个方面。46.你认为数据流图、系统流程图、软件结构图、E-R 图、算法流程图、测试用例分别用于软件开发的哪个阶段?需求分析阶段:数据流图、系统流图概要设计阶段:软件结构图、E-R 图详细设计阶段:算法流程图测试阶段:测试用例47.你们的“可行性研究报告”中用到了那些图?48.你们的“软件需求规格说明书”中用到了那些图?49.你们的“概要设计说明书”中用到了那些图?50.你们的“详细设计说明书”中用到了那些图?*关于课程学习的讨论1. 谈谈你对软件工程的理解?2. 你希望软件工程课程怎样学?3. 你在这门课上学到的印象最深的是什么?4. 学过的和正在学的其他课程中与软件工程的最大区别是什么?5. 怎样当组长?难点是什么?6. 收获最大的是什么?7. 学习中最困难的是什么?8. 能将软件工程联系起来的课程有什么?怎么联系?