软件工程导论简答题大全文档格式.docx
《软件工程导论简答题大全文档格式.docx》由会员分享,可在线阅读,更多相关《软件工程导论简答题大全文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
![软件工程导论简答题大全文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/9/d3b71d9d-0097-4e93-a11c-f67d1261c0dc/d3b71d9d-0097-4e93-a11c-f67d1261c0dc1.gif)
(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图;
15.数据字典包括哪些内容?
数据字典是描述数据流图中数据的信息的集合。
它对数据流图上每一个成分:
数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;
它主要由数据流描述、加工描述和文件描述三部分组成。
18.什么是软件生存周期?
把生存周期划分为阶段的目的是什么?
一个软件从开始计划起,到废弃不用止,成为软件的生存周期。
把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,能够简化每一步的工作内容,使因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理。
19.详细设计的目的?
为软件结构图(SC图或HC图)中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述.
20.详细设计的任务是什么?
为每个模块确定采用的算法;
确定每一模块使用的数据结构;
确定模块接口的细节;
编写过程设计说明书;
设计每一模块的测试用例。
21编码的任务?
使用选定的程序设计语言,把模块的过程性描述翻译为用语言书写的源程序(源代码)。
22.软件测试的基本任务?
软件测试是按照特定的规则,发现软件错误的过程;
好的测试方案是尽可能发现迄今尚未发现错误的测试;
成功的测试方案是发现迄今尚未发现错误的测试;
23.什么是黑盒测试?
黑盒测试主要采用的技术有哪些?
黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。
测试者把被测程序看成一个黑盒,不用关心程序的内部结构。
黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试主要采用的技术有:
等价分类法、边界值分析法、错误推测法和因果图等技术。
24.什么是白盒测试?
白盒测试主要采用的技术有哪些?
白盒测试是测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态和预期状态是否一致。
白盒测试主要采用的技术有:
路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。
25.路径测试技术中几种主要覆盖的含义?
举例说明?
语句覆盖:
至少执行程序中所有语句一次。
判定覆盖:
使被测程序中的每一个分支至少执行一次。
故也称为分支覆盖。
条件覆盖:
执行所有可能的穿过程序的控制路流程。
条件组合测试:
设计足够的测试用例,使每个判定中的所有可能条件取值组合至少执行一次。
(例略)
26.等价分类法的测试技术采用的一般方法?
(1)为每个等价类编号;
(2)设计一个新的测试方案,以尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类被覆盖为止。
(3)设计一个新的测试方案,使它覆盖一个尚未被覆盖的无效等价类,重复这一步骤,直到所有无效等价类被覆盖为止。
29.为什么说软件的维护是不可避免的?
因为软件的开发过程中,一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进行软件的修改或完成功能的增删等,为了提高软件的应用水平和使用寿命,软件的维护是不可避免的。
30.软件的维护一般分为哪几类?
完善性维护:
满足用户在使用过程中提出增加新的功能或修改已有功能,以满足用户日益增长的需要而进行的工作;
适应性维护:
是软件适应新的运行环境而进行的工作;
纠错性维护:
纠正开发期间未发现的遗留错误,即在程序使用期间发现的程序错误进行诊断和改正的过程;
预防性维护:
为了改善未来的可维护性或可靠性而修改软件的工作。
31.决定软件可维护性的因素?
(1)软件的可理解性、可测试性、可修改性;
(2)文档描述符合要求、用户文档简洁明确、系统文档完整并且标准。
32.分析软件危机产生的主要原因有哪些?
导致软件危机的主要原因有:
(1)软件日益复杂和庞大
(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加
1个要点1分,只要答上5个要点得5分!
33.说明结构化程序设计的主要思想是什么?
(1)自顶向下、逐步求精的程序设计方法(2分)
(2)使用3种基本控制结构、单入口、单出口来构造程序。
(3分)
34、软件测试的基本任务是什么?
测试和纠错有什么区别?
软件测试的基本任务是通过在计算机上执行程序,暴露程序中潜在的错误。
测试和纠错目的和任务都不相同,测试是为了发现程序的错误,纠错是为了定位和纠正错误,从而消除软件故障,保证程序的可靠运行。
35.软件测试包括哪些步骤?
同时说明这些步骤的测试目的是什么?
(1)单元测试,目的是代码达到模块说明书的要求
(2)集成测试,目的是将经过单元测试的模块逐步组装成具有良好一致性的完整的程序(3)确认测试,目的是确认程序系统是否满足软件需求规格说明书的要求(4)系统测试,目的是检查能否和系统的其余部分协调运行,并且完成SRS对他的要求。
36.需求分析和软件设计二个阶段任务的主要区别是什么?
需求分析定义软件的用户需求,即定义待开发软件能做什么(2.5分)
软件设计定义软件的实现细节以满足用户需求,即研究如何实现软件。
(2.5分)
37.说明软件测试和调试的目的有何区别?
测试的目的是判断和发现软件是否有错误(2。
5分)调试的目的是定位软件错误并纠
43、什么是软件复用?
简述软件复用和软件共享、软件移植的差别。
软件复用是指在构造新的软件系统的过程中,对已存在的软件人工制品的使用技术。
如果是在一个系统中多次使用一个相同的软件成分,这叫软件共享;
对一个软件进行修改,使它能运行于新的软、硬件平台这称作软件移植。
44、什么是软件再工程?
软件再工程的主要活动有哪些?
软件再工程是运用逆向工程、重构等技术,在充分理解原有软件的基础上,进行分解、综合,并重新构建软件,用以提高软件的可理解性、可维护性、可复用性或演化性。
主要活动:
信息库分析、文档重构、逆向工程、代码重构、数据重构、正向工程。
四、简答题每小题5分,共20分。
36.简述容错技术的四种主要手段,并解释。
结构冗余:
包括静态冗余、动态冗余和混合冗余。
信息冗余:
为检测或纠正信息在运算或传输中的错误,须外加一部分信息。
时间冗余:
指重复执行指令或程序来消除瞬时错误带来的影响。
冗余附加技术:
指为实现上述冗余技术所需的资源和技术。
37.以G.J.Myers的观点,简述对软件测试的目的。
软件测试是
(1)为了发现错误而执行程序的过程;
(2)一个好的用例能够发现至今尚未发现的错误的测试。
(3)一个成功的测试是发现至今尚未发现的错误的测试。
38.就程序设计语言的工程特性而言,对程序编码有哪些要求?
(1)可移植性
(2)开发工具的可利用性
(3)软件的可重用性
(4)可维护性
39.模块的内聚性包括哪些类型?
(1)偶然内聚
(2)逻辑内聚
(3)时间内聚
(4)通信内聚
(5)顺序内聚
(6)功能内聚
1、简述软件测试的任务、目的和类型。
软件测试是一个为了寻找软件错误而运行程序的过程。
目的就是为了发现软件中的错误。
一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例。
一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。
软件测试主要分为白盒测试和黑盒测试两大类。
2、简述软件工程目标和面临的主要问题。
软件工程的目标就是建造高质量的软件。
但是目前的软件开发面临着许多问题:
(1)对软件开发成本和进度的估计常常很不准确。
(2)用户常对“已完成的”软件系统不满意。
(3)软件产品的质量往往靠不住。
(4)软件常常很难维护。
(5)软件常常缺乏适当的文档资料。
(6)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
(7)软件成本在计算机系统总成本中所占的比例逐年上升。
3、简述软件开发过程、每个里程碑的提交物。
软件开发的基本过程:
(1)可行性研究,做初步的需求分析工作,决定项目可行和否
(2)软件需求分析,软件工程师必须了解软件的信息领域,以及需求的功能、行为、性能和接口。
系统需求和软件需求均需文档化,并和用户一起复审。
并提交需求分析报告。
(3)设计,包括概要设计和详细设计,软件设计是一个多步骤的过程,主要是对软件的数据结构、软件体系结构、界面表示及过程细节进行设计。
设计过程将需求转换为软件表示,在编码之前可以评估其质量,所有设计均要文档化,它是软件配置的重要组成部分,经复审后提交相应的概要设计和详细设计报告。
(4)编码,把设计转化为机器可执行的程序。
提交源程序清单。
(5)测试,提交测试报告。
(6)维护,提交维护报告。
4、简述软件工程的七条基本原理。
(1)用分阶段的生命的生命周期计划严格管理;
(2)坚持进行阶段评审;
(3)实行严格的产品控制;
(4)采用现代程序设计技术;
(5)结果应能清楚地审查;
(6)开发小组的人员应该少而精;
(7)承认不断改进软件工程实践的必要性。
四、论述题
1、试论面向对象方法较之结构化方法的先进性。
(1)面向对象方法更符合人的思维方式,更容易抓住问题的主干。
(2)所开发出的软件更符合“高内聚、松耦合”的原则。
所设计出的类模块独立性更强。
(3)更适合于开发大型的软件,更适合于快速原型法开发方法。
使软件生产率大大提高。
(4)使用面向对象技术开发出的软件的可测试性和可维护性都较强。
(5)面向对象方法和技术能够贯彻软件开发的全过程。
从分析、设计、编码到测试维护,采用面向对象的方法不存在语义断层,使人的思维连续,减少各阶段之间所采用方法的不向融性。
(6)使得软件的可重用性大幅度提高。
2、试述软件开发工具对软件开发的影响。
软件开发工具应用于软件开发可以大幅度地提高软件生产率,提高软件质量。
方便软件管理,便于软件重用,减少低级重复劳动,支持快速原型设计,便于用户和开发人员的交流。
降低大型复杂软件的开发难度。
3、试论文档在软件开发过程中的重要性。
在软件的生产过程中,总是伴随着大量的信息要记录、要使用。
因此,软件文档在软件产品的开发过程中起着举足轻重的作用。
(1)提高软件开发过程的能见度。
把开发过程中发生的事件以某种可阅读的形式记录在文档中,管理人员可把这些记录下来的材料作为检查软件开发进度和开发质量的依据,实现对软件开发的工程管理。
(2)提高开发效率。
软件文档的编制,使得开发人员对各个阶段的工作都进行周密思考、全盘权衡、从而减少返工。
并且可在开发早期发现错误和不一致性,便于及时纠正。
(3)作为软件开发人员在一定阶段的工作成果和结束标志。
(4)记录开发过程中的有关信息,便于协调以后的软件、开发、使用和维护。
(5)提供对软件的运行、维护和培训的有关信息,便于开发人员之间的协作、交流和了解,使软件开发活动更科学、更有成效。
便于潜在用户了解软件的功能、性能等各项指标。
三、简答题
1、简述软件结构设计的启发式原则。
(1)改进软件结构提高模块独立性;
(2)模块规模要适中;
(3)深度、宽度、扇出和扇入都应适当;
(4)模块的作用域应该在控制域内;
(5)力争降低模块接口的复杂度;
(6)设计单入口单出口的模块;
(8)模块功能应该可以预测。
2、简述结构化程序设计方法的基本要点
(1)采用自顶向下,逐步求精的程序设计方法。
(2)使用三种基本控制结构构造程序,分别是顺序,选择和循环
(3)采用主程序员组的组织形式。
(4)采用单入口单出口的模块形式。
3、简述需求分析的原则。
需求分析阶段的基本过程包括四个方面:
对问题的识别,分析和综合,制定规格说明以及评审。
(1)问题识别,系统分析人员要研究计划阶段产生的可行性分析报告和软件项目实施计划。
然后进行功能需求、性能需求、环境需求、可靠性需求安全保密需求、用户界面需求、资源使用需求等方面的工作。
(2)分析和综合,分析员需从数据流和数据结构出发,逐步细化所有的软件功能,找出系统各元素之间的联系、接口特性和设计上的限制,分析他们是否满足功能需求,是否合理。
(3)制定规格说明,编写需求分析的文档。
(4)需求分析评审。
为保证软件需求定义的质量,评审应以专门指定的人员负责,并按规程严格执行。
4、简述软件生命周期开发方法的基本过程及每个阶段的任务。
(1)问题定义阶段,尽可能清楚地描述问题,搞清楚要解决的问题是什么;
(2)
可行性研究阶段,主要是确定待解的问题是否有可行的解决办法。
需要做经济可行性分析、技术可行性分析、操作可行性分析和法律可行性分析;
(3)需求分析阶段,主要是确定目标系统必须具备的功能。
通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。
(4)总体设计阶段,从总体上解决问题,确定可实现的方案,并设计出软件的层次结构图;
(5)详细设计,把解法具体化,确定如何具体地实现这个系统。
针对每个模块设计相应的算法;
(6)编码和单元测试阶段,把详细设计的结果翻译成选定的语言所写的程序,并对每个模块进行单元测试。
(7)测试阶段,系统地设计测试用例,尽可能多地发现软件中的错误,并调试改正软件中的错误;
(8)软件维护阶段,主要目的是通过修改软件使所开发的软件能够持久地满足用户的需要。
1、你认为“软件就是程序”这一个观点正确吗?
如果不正确,请批驳之。
软件就是程序的观点是不正确的,因为软件等于程序加文档加数据。
(1)文档是软件的一个非常重要的组成部分,在软件的开发过程中起着非常重要的作用。
(2)在软件开发的每一个阶段都应有相应的文档。
它是开发人员和用户以及开发人员和项目管理人员之间交流的媒介
(3)文档是软件在不同阶段的表现形式。
(4)程序和文档必须一致,文档才有价值。
(5)文档质量直接决定软件质量的高低。
(6)文档也是软件测试和维护的依据。
在没有文档或文档不全的情况下对大型软件进行测试和维护是不可思议的事情。
(7)文档是软件可重用的依据。
试论软件界面友好设计的重要性。
最终用户能够看到的是软件界面,软件界面是用户和计算机交互的接口。
如果界面不友好,用户不愿意使用,那么软件的功能再强,也是没有用的。
这就要求软件界面应以用户为中心进行设计。
设计应遵循以下的原则:
(1)一致性,菜单选择、命令输入、数据显示等功能应使用一致的风格。
(2)提供有意义的反馈。
(3)允许取消大多数操作。
(4)减少在动作间必须记忆的信息量。
(5)在对话、移动和思考中提高效率。
(6)允许错误。
(7)按功能对动作分类,并据此安排屏幕布局。
(8)提供上下文相关的帮组机制。
(9)命令用简单的动词或动词短语命名。
只有用户愿意使用的软件才是好的软件,所以软件界面设计的好坏直接影响软件的质量。
试述软件开发工具对软件开发的影响。