软件工程简答题20分.doc

上传人:xin****828 文档编号:6565473 上传时间:2020-02-29 格式:DOC 页数:10 大小:43.50KB
返回 下载 相关 举报
软件工程简答题20分.doc_第1页
第1页 / 共10页
软件工程简答题20分.doc_第2页
第2页 / 共10页
软件工程简答题20分.doc_第3页
第3页 / 共10页
点击查看更多>>
资源描述
1、软件设计的基本原理包括哪些内容?软件设计的基本原理:(1)模块化(四个属性:接口、功能、逻辑、状态)(2)抽象(3)信息隐蔽(4)模块独立性(两个定性的度量标准:耦合性与内聚性)2、需求分析应遵循的原则是什么?所有这些分析方法都遵守下述准则:(1) 必须理解并描述问题的信息域,根据这条准则应该建立数据模型。(2) 必须定义软件应完成的功能,这条准则要求建立功能模型。(3) 必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。(4) 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。3、为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网? 软件测试是软件开发中不可缺少的重要一环,原因是:A、测试的工作量约占整个项目开发工作量的40%左右,几乎一半。如果是关系到人的生命安全的软件,测试的工作量还要成倍增加。B、软件测试代表了需求分析、设计、编码的最终复审。 软件测试不是软件质量保证的安全网,因为软件测试只能发现错误,不能保证没有错误。4、软件测试的目的是什么?为什么把软件测试的目标定义为只是发现错误?软件测试的目的有: 软件测试是为了发现错误而执行程序的过程。 一个好的测试用例能够发现至今尚未发现的错误。 一个成功的测试是发现了至今尚未发现的错误。软件测试的目标定义为只是发现错误,原因是软件测试可以有两个目标,一个是预防错误,另一个是发现错误。由于软件开发是人的创造性劳动,人的活动不可能完美无缺,错误可能发生在任何一个阶段,因此预防错误这一目标几乎是不可实现的,所以软件测试的目标定义为只是发现错误。5、增量开发和原型开发有什么相同和不同的地方? 增量模型和原型模型都是从概要的需求出发进行开发的,但两者有明显的不同。增量模型是从一些不完整的系统需求出发开始开发,在开发过程中逐渐发现新的需求规格说明,并进一步充实完善该系统,使之成为实际可用的系统。原型开发的目的是为了发现并建立一个完整的经过证实的需求规格说明,并以此作为正式系统的开发基础。因此,原型开发阶段的输出是需求的规格说明,是为了降低整个软件生成期的费用而拉大需求分析阶段的一种方法,大部分原型是“用完就扔”的类型。7、说明动态建模的过程。(1)编写典型交互的脚本;(2)找出对象之间的事件;(3)为每个脚本准备一个事件轨迹图(跟踪图);(4)创建一个状态图;(5)为确保一致性,匹配对象之间的事件。10、简述结构化程序设计方法的基本要点。(1)采用自顶向下,逐步求精的程序设计方法。(2)使用三种基本控制结构构造程序,分别是顺序,选择和循环(3)采用主程序员组的组织形式。11、简述文档在软件工程中的作用。(1)提高软件开发过程的能见度(2)提高开发效率(3)作为开发人员阶段工作成果和结束标志(4)记录开发过程的有关信息便于使用与维护;(5)提供软件运行、维护和培训有关资料;(6)便于用户了解软件功能、性能。12、简述提高可维护性的方法。(1)建立明确的软件质量目标(2)利用先进的软件开发技术和工具(3)建立明确的质量保证工作(4)选择可维护的程序设计语言(5)改进程序文档13、什么是模块的影响范围?什么是模块的控制范围?他们之间应该建立什么关系?模块的影响范围:受该模块内的一个判定影响的所有模块的集合。模块的控制范围:模块本身及其所有下属模块(直接或间接从属于它的模块)的集合。一个模块的影响范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。1. 软件生命期各阶段的任务是什么?答:软件生命期分为7个阶段:1、问题定义:要解决的问题是什么2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性3、需求分析:系统必须做什么4、总体设计:系统如何实现,包括系统设计和结构设计5、详细设计:具体实现设计的系统6、实现:编码和测试7、运行维护:保证软件正常运行。2、软件重用的效益是什么?答:1、软件重用可以显著地改善软件的质量和可靠性。2、软件重用可以极大地提高软件开发的效率。3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费。3、 自顶而下渐增测试与自底而上渐增测试各有何优、缺点?答:自顶而下渐增测试优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能够尽早发现上层模块的接口错误。缺点:需要存根程序,底层错误发现较晚。自底而上渐增测试优点与缺点和自顶而下渐增测试相反。4 、 提高可维护性的方法有哪些?答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审。 在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明。在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面。 在软件设计的复审中,因从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示。在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审。为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件 ,同时也在大力发展软件重用技术。5、简述软件测试要经过哪几个步骤,每个步骤与什么文档有关。【解答】测试过程按 4 个步骤进行,即单元测试(模块测试)、集成测试(子系统测试和系统测试)、确认测试(验收测试)和平行运行。单元测试集中对用源代码实现的每一个程序单元进行测试,与其相关的文档是单元测试计划和详细设计说明书。集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。与其相关的文档是集成测试计划和软件需求说明书。确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。与其相关的文档是确认测试计划和软件需求说明书。平行运行把已经经过确认的软件纳入实际运行环境中,与其他系统成份组合在一起进行测试。与其相关的文档:用户指南、使用手册等。1、什么是软件工程?它目标和内容是什么? 软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科。软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程内容:包括开发技术和开发管理两个方面。2、软件开发中有哪几种过程模型?哪些适用于面向对象的软件开发?软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等。其中喷泉模型、统一软件过程适用于面向对象的软件开发。4、什么是软件概要设计?该阶段的基本任务是什么?把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。基本任务:1) 设计软件系统结构2) 进行数据结构及数据库的设计3) 编写概要设计的文档 4) 评审7、什么是软件生存周期?它有哪几个活动? 软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。8、衡量模块独立性的两个标准是什么?各表示什么含义? 内聚和耦合。 内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。10、什么是需求分析?需求分析阶段的基本任务是什么?需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。基本任务:问题识别分析与综合,导出软件的逻辑模型编写文档12、单元测试有哪些内容?单元测试主要针对模块的以下五个基本特征进行测试:(1)模块接口 (2)局部数据结构 (3)重要的执行路径(4)错误处理(5)边界条件14、软件设计的基本原理包括哪些内容?模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求。抽象:认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素。通过抽象确定组成软件的过程实体。 信息隐蔽:将模块实现自身功能的细节与数据隐蔽起来。模块间仅交换为完成系统功能所必须的信息。模块独立性:每个模块只完成系统要求的独立的子功能。21、说明面向对象的特征? 面向对象的特征是:(1)抽象性。抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。 (2)封装性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。(3)继承性。是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。 (4)多态性。是指相同的操作或函数过程可以作用于多种类型的对象上并获得不同的结果。24、请简述黑盒测试和白盒测试有何区别,黑盒测试有哪些常用方法? 黑盒测试和白盒测试的区别:前者基于功能,后者基于结构;黑盒测试常用方法有:边界值、等价类、因果图、错误推测法等。26、CMM全称是什么?分为哪几个级别? CMM全称是软件能力成熟度模型;从无序到有序的进化分成5个级别,分别为:1 初始级;2 可重复级;3 已定义级;4 已管理级;5 优化级。28、软件生命周期划分为哪几个阶段? 软件生命周期分为三个时期八个阶段:软件定义:问题定义、可行性研究;软件开发:需求分析、概要设计、详细设计、编码、测试;软件运行:软件维护1.软件产品的特性? 软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。2.如何检查数据流图的正确性和提高它的易理解性?可从以下几个角度来检查数据流图的正确性:数据守恒、文件的使用;父图和子图的平衡等;提高数据流图的易理解性可从以下几方面进行:简化加工间的联系、注意分解的均匀、适当地命名等。3BROOKS定律?定义:向一个已经延期的项目增加人力,只会使得它更加延期。原因:1)当小组变得更大时,每个人需要用更多时间与组内其他成员讨论问题、协调工作,因此增加了通信开销。2)如果在开发过程中增加小组人员,则最初一段时间内项目组总生产率不仅不会提高反而会下降。这是因为新成员在开始时不仅不是生产力,而且在他们学习期间还需要花费小组其他成员的时间。4.软件生命周期可分为哪三个时期?GB 8567中规定可分为哪几个阶段? 定义时期:问题的定义(客户需求)、可行性研究(为什么做);开发时期:需求分析(做什么)、总体设计(怎么做抽象)、详细设计(怎样实现具体)、编码(程序设计语实现)测试;运行时期:软件维护。5、衡量模块独立性的两个标准是什么?它们各表示什么?答案:模块独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此间结合的紧密程度。在设计时应尽量做到高内聚低耦合,从而获得较高的模块独立性6.为什么软件测试不应该由程序的编写人员来做?软件测试的目的是为了发现程序中的错误而执行程序的过程。正确认识测试的目标是十分重要的,测试目标决定了测试方案的设计。如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。7.可行性分析的任务是什么?可行性分析的任务至少应该从以下三方面的可行性进行研究。技术上可行性:研究现有技术、资源及限制能否支持和实现系统的功能、性能,主要是技术风险问题。经济上的可行性:进行成本估算及效益评估,确定项目是否值得开发。操作可行性:系统的操作方式在这个用户组织内行得通么?必要时还应该从法律、社会效益等更广泛的方面研究各种解法的可行性。得分评分人8. 什么是软件工程? 概括的说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够做到的最好的技术方法结合起来。以经济地开发出高质量的软件并有效地维护它,这就是软件工程。9.什么是编码风格?为什么要强调编码风格?编码风格又称程序设计风格或编程风格。编码的目标从强调效率转变为强调清晰。良好的编码风格能在一定程度上弥补语言存在的缺陷,而如果不注意风格就很难写出高质量的程序。尤其当多个程序员合作编写一个很大的程序时,需要强凋良好而一致的编码风格,以便相互通讯,减少因不协调而引起的问题。总之,良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量。10、详细设计的基本任务?有哪几种描述方法答:详细设计即过程设计,通过对结构表示进行细化,得到软件详细的数据结构和算法,其基本目就是回答“详尽、精确地描述系统个模块的具体实现方法”。描述方法有:程序流程图、盒图、PAD图、判定表、判定树、jackson图、warnier图。11、软件测试的两种基本测试方法答:基本测试方法有黑盒试和白盒测试。黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试;白盒测试法把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试12、生命周期各阶段的基本任务是及描述方法1)问题描述:问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”2)可行性研究:这个阶段要回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?”3)需求分析:准确确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。描述方法:数据流图、数据字典4)总体设计:这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统?”描述方法:系统流程图、层次图5)详细设计:也称为模块设计,在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。描述方法:程序流程图、盒图6)编码和单元测试:这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。7)综合测试:这个阶段的关键任务是通过各种类型的测试使软件达到预定的要求。1 简述软件工程方法学所包含的内容。软件工程方法学包括三个要素, 这就是方法、工具和过程。其中,方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑,过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 2.什么是软件过程?它与软件工程方法学有何关系? (1)软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。(2) 软件过程是软件工程方法学的3个重要组成部分之一。(3) 软件工程方法学包含三个要素:方法、工具和过程。 3.分析软件危机产生的主要原因有哪些? 答:导致软件危机的主要原因有: (1)软件日益复杂和庞大(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加4、说明结构化程序设计的主要思想是什么? 答:(1)自顶向下、逐步求精的程序设计方法(2)使用3种基本控制结构、单入口、单出口来构造程序。5、软件测试包括哪些步骤?说明这些步骤的测试对象是什么? 答:(1)单元测试:测试对象为单元模块(2)集成测试:测试对象为组装后的程序模块(3)确认测试:测试对象为可运行的目标软件系统(4)系统测试:测试对象为计算机系统的各组成部分6、需求分析与软件设计二个阶段任务的主要区别是什么? 答:需求分析定义软件的用户需求,即定义待开发软件能做什么 软件设计定义软件的实现细节以满足用户需求,即研究如何实现软件。 7、说明软件测试和调试的目的有何区别? 答:测试的目的是判断和发现软件是否有错误调试的目的是定位软件错误并纠正错误。 4、好的编程风格应遵循哪四条规则?1)节简化 2)模块化3)简单化 4)文档化2、需求分析的任务是什么?需求分析的任务是确定待开发的软件系统“做什么”。具体任务包括确定软件系统的功能需求、性能需求和运行环境约束,编制软件需求规格说明书、软件系统的验收测试准则和初步的用户手册。4、快速原型技术的基本思想是什么?在软件开发的早期,快速开发一个目标软件系统的原型,让用户对其进行评价并提出修改意见,然后开发人员根据用户的意见对原型进行改进。5、瀑布模型一般适应哪些场合?瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。应用有一定的局限性。1、螺旋模型的适应场合有哪些?适应场合:支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!