软件开发工程师笔试主观题15例

小编:艳芬 1144阅读 2020.03.17

1. 什么是软件工程?软件工程的目标是什么? 
答:软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,②对①中所选方法的研究。
目标:1合理预算开发成本,付出较低的开发费用。2实现预期的软件功能,达到较好的软件性能,满足用户的需求。3 提高软件的可维护性,降低维护费用。4 提高软件开发生产率,及时交付使用 
2. 指出瀑布模型中下列任务的顺序:验收测试,项目计划,单元测试,需求评审,成本估计,概要设计,详细设计,系统测试,设计评审,编码,需求规格说明书。
答:项目计划,成本估计,需求规格说明书,需求评审,概要设计,详细设计,设计评审,编码,单元测试,系统测试,验收测试 
3. 可行性研究报告的主要内容是什么? 
答:可行性研究主要包括以下几个部分: 
   (1)概述(2)技术可行性(3)项目成熟程度(4)市场需求情况和风险分析(5)投资估算及资金筹措(6)经济与社会效益(7)综合实力和产业基础(8)项目实施进度计划(9)其它尚需要说明的必要的方面(10)结论 
4. 什么是需求分析?需求分析阶段的基本任务是什么? 
答:所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说,“需求分析”就是确定要计算机“做什么”。
任务:确定软件项目的目标和范围。调查使用者的要求,分析软件必须做什么,编写需求规格说明书等它相关文档,并进行必要的需求审查。除此之外,还包括需求变更控制,需求风险控制,需求版本控制等对需求的管理工作 
5. 什么是结构化分析方法?该方法使用什么描述工具? 
答:结构化的分析方法是面向数据流的方法,因此,此方法研究的核心是数据的组成和数据流向和对数据的加工处理。
结构化分析方法用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直至找到满足功能要求的所有可实现的软件元素为止 
描述工具:1系统流程图 2 数据流程图3数据字典4 IPO图 5层次方框图6实体—关系图 7状态—变迁图 
6. 结构化分析方法通过哪些步骤来实现? 
答:1)确定系统的功能要求 2)确定系统的数据要求  3)确定系统的操作要求和界面要求  4) 确定系统的性能要求  
5)确定系统的运行要求   6)获得当前系统的物理模型  7)抽象出当前系统的逻辑模型   8)建立目标系统的逻辑模型。9)修正开发计划  10)如果需要则开发系统原型  
7. 什么是数据流图?其作用是什么?其中的基本符号各表示什么含义? 
答:数据流图:简称DFD,就是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,
是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
数据流图的基本符号的意思: 1.矩形表示数据的外部实体;2.圆角的矩形表示变换数据的处理逻辑; 3.少右面的边
矩形表示数据的存储; 4.箭头表示数据流。
8. 什么是数据字典?其作用是什么?它有哪些条目? 
答:数据字典,主要用来描述数据流程图中的数据流、数据存储、处理过程和和数据源点/终点。
作用:数据流程图描述了系统的逻辑结构,其中的四个基本图形元素的含义无法在数据流程图中详细说明,因此数据流程图需要与其他工具配合使用,数据字典就是这样的工具之一。
包括的条目:数据流词条  数据元素词条   数据存储词条  数据加工处理词条 数据源点及终点词条 
9. 什么是概要设计?有哪些基本任务? 
答:概要设计:根据用户的需求先确定软件系统的总体结构和总的设计原则 
基本的任务:设想供选择的方案。推荐最佳方案。功能分解,确定软件结构。设计软件结构。制定测试计划。数据设计。书写文档。包括总体设计规格说明书。用户手册。测试计划。设计审查和复审。
10. 详细设计的基本任务是什么?有那几种描述方法? 
答:详细设计阶段的任务是要为编写程序代码设计“图纸”,由程序员按“图纸”用某种高级程序设计语言编写程序代码。主要方法有设计程序流程图,表格设计符号以及过程设计语言。
11. 什么是变换流?什么是事物流? 
答:变换型数据流可以划分为明显的三部分:逻辑输入,中心变换,逻辑输出。事务流的特点是数据沿某个输入路径
流动,该路径将外部信息转换成事务,其中发射出多条事务处理路径的中心处理被称为中心事务 
12. 模块的内聚有哪几种?模块间的耦合有哪几种? 
答:内聚分为七种类型:巧合内聚:一个模块执行多个完全互不相关的动作,那么这个模块就有巧合内聚     
逻辑内聚:当一个模块执行一系列相关的动作时,称其有逻辑内聚。
时间性内聚:当一个模块内的多个任务是与时间有关时,这个模块具有时间性内聚。
过程内聚:模块执行的若干动作之间有顺序关系。
通信内聚:模块执行的若干动作之间有顺序关系,并且所有动作是在相同的数据上执行。
信息内聚:一个模块中执行一系列动作,每个动作都有自己的入口点和处理代码,所有的动作都作用在相同的数据结构上,这样的模块叫做信息内聚。
功能性内聚:一个模块中各个部分都是完成某一具体功能必不可少的组成部分 
耦合分为七类:内容耦合:如果一个模块直接参考另一个模块的内容,则这两个模块是内容耦合。公共耦合:如果多个模块都访问同一个公共数据环境,则称它们是公共耦合。外部耦合:如果两个模块都访问同一个全局简单变量而不是同一全局数据结构,而且,不是通过参数表传递该全局变量的信息,则这两个模块属于外部耦合。控制耦合:如果模块A向模块B传递一个控制信息,则称这两个模块是控制耦合的。
  数据结构耦合:当一个模块调用另一个模块时传递了整个数据结构,这两个模块之间具有数据结构耦合。数据耦合:如果两个模块传递的是数据项,则这两个模块是数据耦合。非直接耦合:如果两个模块之间没有直接关系,它们之间的联系完全通过主模块的控制和调用来实现的,这就是非直接耦合。
13. 什么是软件测试? 
答:软件测试从广义上讲,是指软件产品生存周期内所有的检查、评审和确认活动。从狭义上讲,软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各个阶段的规格说明和程序内部结构而精心设计一批测试用例,用这些测试用例运行程序,以发现程序错误的过程。
14. 软件测试的原则是什么? 
答:软件测试的原则有: 
1) 应该把测试贯穿在整个开发过程之中。事实上,从需求分析阶段开始,每个阶段结束之前都要进 行阶段审查,目的是尽早发现和纠正错误。
2) 每个测试用例都应该包括测试输入数据和这组数据输入作用下的预期输出结果。在实际操作中可以列出一张表格,包括每个测试用例的编号、类型、输入数据、预期输出结果、实际输出结果、出错原因分析。
3) 要对每个测试结果进行全面检查,不要漏掉已经出现的错误迹象。
4) 程序员应该尽量避免检查自己编写的代码。测试工作需要严格的工作作风,程序员在测试自己编写的代码时往往会带有一些倾向性,使得他们工作中常常出现一些疏漏。而且,程序员对设计规格说明书的理解错误而引入的错误更是难于发现。
5) 在设计测试用例时,应该包括有效的、期望的输入情况,也要包括无效的和不期望的输入情况。既能够验证程序正常运行的合理输入,也能够验证对异常情况处理的不合理输入数据以及临界数据。在测试程序时,人们常常过多地考虑合法的和期望的输入条件,以检查程序是否做了它应该做的事情,而忽视了不合法的和预想不到的输入条件。事实上,用户在使用系统时,输入一些错误指令和参数是经常发生的,如果软件遇到这种情况不能做出适当的反应,给出相应的提示信息,就可能会误导用户,甚至造成严重损失。
6) 软件中遗留的错误数量与已经发现的错误数量成正比。根据这个规律,对测试中发现错误成堆的模块更要仔细测试。例如,在某个著名的操作系统中,44%的错误仅与4%的模块有关。
7) 回归测试的关联性要特别引起注意,修改一个错误而引起更多错误的现象并不少见。
8) 测试程序时不仅要检查程序是否做了它应该做的事情,还要检查它是否做了不该做的事情。例如,工资软件中,软件只完成在编职工的工资计算和输出,不在编人员的工资是不进行计算和输出的。如果软件将不在编人员的工资信息也输出显然是不合适的。
9) 严格执行测试计划。在测试之前应该有明确的测试计划,内容包括:要测试的软件功能和内容、测试用例和预期结果、测试的进度安排、需要的工具和资源、测试控制方式和过程等。
10)做好测试记录,为统计和维护提供基础数据。
15. 请说明集成测试、系统测试和验收测试有什么不同? 
答:集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既验证“设计”,又验证“需求”。
系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。
验收测试与系统测试相似,主要区别是测试人员不同,验收测试由用户执行。
关联标签:

相关推荐