软件工程简答题.pdf_第1页
软件工程简答题.pdf_第2页
软件工程简答题.pdf_第3页
软件工程简答题.pdf_第4页
软件工程简答题.pdf_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论