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

下载本文档

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

文档简介

第1章 习题与思考题参考答案第1章 软件与软件工程的概念1.1 举出你所知道的应用软件的例子。办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。1.2 认为“软件就是程序,软件开发就是编程序。”这种观点是否正确?为什么?认为“软件就是程序,软件开发就是编程序。”这种观点是错误的。首先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程的一个阶段。1.3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么?可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。典型表现:(1) 对软件开发成本和进度的估计常常很不准确。(2) 用户对“已完成的”软件系统不满意的现象经常发生。(3) 软件产品的质量往往靠不住。(4) 软件常常是不可维护的。(5) 软件通常没有适当的文档资料。(6) 软件成本在计算机系统总成本中所占的比例逐年上升。(7) 软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。 产生软件危机的原因: 除了软件本身的特点,其原因主要有以下几个方面: (1) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定。(2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。(3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。(4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。1.5 什么是软件工程?软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。1.6 简述软件生存期由哪些主要的阶段组成,每一阶段的主要任务是什么?(1) 问题定义与可行性研究:问题定义必须回答的关键问题是:“要解决的问题是什么”。可行性研究要回答的关键问题是:“在成本和时间的限制条件下能否解决问题?是否值得做?”。(2) 需求分析:这个阶段的任务仍然不是具体地解决客户的问题,而是准确地回答“目标系统必须做什么”这个问题。(3) 软件设计:本阶段要回答的关键问题是“目标系统如何做?”为此,必须在设计阶段中制定设计方案,把已确定的各项需求转换成相应的软件体系结构。结构中的每一组成部分都是意义明确的构件,此即所谓概要设计。进而具体描述每个构件所要完成的工作,为源程序编写打下基础,此即所谓详细设计。(4) 程序编码和单元测试:本阶段要解决的问题是“正确地实现已做的设计”,为此,需要选择合适的编程语言,把软件设计转换成计算机可以接受的程序代码,并对程序结构中的各个模块进行单元测试,然后运用调试的手段排除测试中发现的错误。要求编写出的程序应当是结构良好、清晰易读的,且与设计相一致的。(5) 集成测试和系统测试:集成测试的任务是将已测试过的模块按设计规定的顺序组装起来,在组装的过程中检查程序连接的问题。系统测试的任务是根据需求规格说明的要求,对必须实现的各项需求,逐项进行确认,判定已开发的软件是否符合用户需求,能否交付用户使用。为了更有效地发现系统中的问题,通常这个阶段的工作由开发人员、用户之外的第三者承担。(6) 运行维护:已交付的软件投入正式使用,便进入运行维护阶段。这一阶段可能持续若干年。软件在运行中可能由于多方面的原因,需要对它进行维护。通常有四种类型的维护:改正性维护、适应性维护、完善性维护和预防性维护。1.7 常见的软件生存期模型主要有哪些?每种模型的优缺点是什么?常见的软件生存期模型主要有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型和统一过程。(1) 瀑布模型优点:可强迫开发人员采用规范化的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。缺点:由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要;用户往往需要等待很长时间才能看到可以运行的程序;适应需求变更的能力比较差。 适用范围:瀑布模型只适用于项目开始时需求已确定的情况。(2) 快速原型模型优点:有助于满足用户的真实需求;原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。缺点:要求开发人员快速建立原型。适用范围:适用于需求不明确的软件项目。(3) 增量模型优点: l 能在较短时间内向用户提交可完成一些基本功能的产品,即从第一个构件交付之日起,用户就能做一些有用的工作。l 逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户组织带来的冲击。l 项目失败的风险较低,虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交付给客户。l 优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。因此,最重要的系统服务将接受最多的测试。缺点:l 在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。l 软件体系结构必须是开放的,即向现有产品中加入新构件的过程必须简单、方便。适用范围:适用于工期紧张、功能可以划分、比较复杂的软件项目。软件工程师必须有较高的技术水平,能够设计出开放的软件体系结构。(4) 螺旋模型优点: l 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;l 减少了过多测试或测试不足所带来的风险;l 在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。缺点:螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。适用范围:适用于内部开发的大型软件(开发周期长、比较容易受到社会因素影响的软件项目),软件开发人员具有丰富的风险评估知识和经验。(5) 喷泉模型优点:在开发过程中使用统一的概念和方法,各阶段之间没有明显的界限,容易实现各个开发过程的多次反复迭代,达到了认识的逐步深化,降低了出错的可能性。缺点:由于各个阶段之间的界线不明确,容易造成软件开发过程的无序。适用范围:适用于面向对象的软件开发。(6) 统一过程优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供了较大的通用性。缺点:RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容;此外,它没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。1.8 区分单元测试、集成测试和系统测试。l 单元测试是针对程序模块所进行的测试,一般由编码人员完成,主要检查程序是否与详细设计相符。l 集成测试的任务是将已测试过的模块按设计规定的顺序组装起来,在组装的过程中检查程序连接中的问题,主要检查是否与概要设计相符。l 系统测试的任务是根据需求规格说明的要求,对必须实现的各项需求,逐项进行确认,判定已开发的软件是否符合用户需求,能否交付用户使用。为了更有效地发现系统中的问题,通常这个阶段的工作由开发人员、用户之外的第三者承担。1.9 统一过程的6个核心工作流是什么?在统一过程中,有5个核心工作流,即需求工作流、分析工作流、设计工作流、实现工作流和测试工作流。1) 需求工作流需求工作流的目标是确保开发人员构建正确的系统。这是通过足够清晰、准确地描述目标信息系统来达到的,以使两个主要的风险承担者(客户和开发人员)可以对信息系统应该做什么和不应该做什么达成一致的意见。2) 分析工作流分析工作流的目标是分析和细化需求。通过执行该任务,能够对我们必须正确开发信息系统并轻松维护它的这种需求具有更详细的理解。3) 设计工作流设计工作流是对分析工作流的细化,直到设计模型可以被程序员实现为止。4) 实现工作流实现工作流的目标是:用选择的实现语言实现目标系统。5) 测试工作流测试工作流是质量保证组的职责。每个构件一旦实现,就由质量保证组对其进行测试,这称为单元测试。在每次迭代的末尾,会执行集成测试。6) 部署工作流制作软件的外部版本、软件打包、分发、为用户提供帮助和支持。1.10 给出两个不是核心过程工作流的工作流。“配置与变更管理”和“项目管理”不是核心过程工作流。1.11 统一过程的4个阶段是什么?统一过程的4个阶段是初始阶段、细化阶段、构造阶段和移交阶段。(1) 初始阶段主要关注项目计划和风险评估,其目的是确定是否值得开发目标信息系统。(2) 细化阶段关心定义系统的总体框架,其目标是:细化初始需求(用例)、细化体系结构、监控风险并细化它们的优先级、细化业务案例以及制定项目管理计划。(3) 构造阶段是建立系统,构造信息系统的第一个具有操作质量的版本,以能够交付给客户进行测试的版本结束,有时称为测试版本。(4) 移交阶段包含测试时期,以发布完整的系统而终止,其目标是确保信息系统真正满足客户的需求。1.12 在软件工程知识体中,将软件工程划分为哪些知识域?SWEBOK指南将软件工程知识体系划分为10个知识域(Knowledge Areas,KA),分为两类过程。一类是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;另一类是支持和组织过程,包括软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法、软件质量。6.6 比较a测试与b测试,说明其异同。a测试与b测试都是集成测试之后所进行的测试,都属于系统测试。所不同的是,a测试是在开发环境中所做的测试,主要由开发方人员进行。而b测试则是在用户实际工作环境中所做的测试,不受开发人员的干预。6.4 简要说明白盒测试和黑盒测试的区别。如果认真做了两者之一,还需要再做另一种测试吗?软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:(1) 对程序模块的所有独立的执行路径至少测试一遍。(2) 对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。(3) 在循环的边界和运行的界限内执行循环体。(4) 测试内部数据结构的有效性,等等。软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:(1) 是否有不正确或遗漏的功能?(2) 在接口上,输入是否能正确的接受?能否输出正确的结果?(3) 是否有数据结构错误或外部信息(例如数据文件)访问错误?(4) 性能上是否能够满足要求?(5) 是否有初始化或终止性错误?6.3 说明验证和确认的区别。验证(Verification)是指提供客观证据对规定要求已得到满足的认定。确认(Validation)是指通过提供客观证据对特定的语气用途或应用要求已得到满足的认定。验证和确认之间的区别是:验证表明的是满足规定要求,而确认表明的是满足预期用途或应用要求,简单地说,确认就是检查最终产品是否达到顾客使用要求。验证要保证“做得正确”,而确认则要保证“做的东西正确”。6.1 有一种观点认为,软件测试的目的在于证明开发出的软件没有缺陷。这种观点能够接受吗?为什么? 这种观点是不对的。软件测试的目的是想以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。测试只能证明软件中存在缺陷,如果在测试中没有发现缺陷,并不能证明开发的软件没有缺陷。6.2 通过测试活动能够把软件中含有的缺陷全部找到吗?为什么? 测试活动不能将软件中含有的缺陷全部找到。因为,无论使用黑盒测试还是百盒测试,穷举测试都是不可能的。4.1 当你“编写”程序时你设计软件吗?软件设计和编码有什么不同吗?在“编写”程序时并没有设计软件。软件设计包括概要设计和详细设计,编码是将详细设计中的过程描述转换成用程序设计语言来描述。4.2 举出3个数据抽象的例子和可以用来操作这些数据抽象的过程抽象的一个例子。抽象是忽略事物的细节,获取其本质特征的过程。抽象是一种重要的机制,使人们能够对复杂系统能够很好地理解、交流和推理。在软件领域,可以将抽象分为两类,即数据抽象和过程抽象。在传统的结构化程序设计语言中,就提供了这两种抽象机制。(1) 数据抽象:在所有的结构化程序设计语言中,用户都可以自定义抽象数据类型。如定义抽象数据类型Student(学生)、Course(课程)、ClassScoreList(班级成绩单)。(2) 过程抽象:过程抽象也称为是基于方法的抽象。过程抽象使我们关心处理过程的名字和它能做什么,而无需知道如何完成所有实现细节。如求班级总平均分average(ClassScoreList)就是一个过程抽象。在面向对象的程序设计语言中,抽象与封装的概念密切相关,数据抽象和相关的过程抽象被封装在类中,不同类中相似的过程抽象(方法)又可以进一步抽象,放在接口中。封装是保证事物有明确内外界限的机制。内部是受保护的,与外部事物相隔离。4.6 一些设计人员认为所有的数据流都可以当做是变换流。试讨论当事务流被当成变换流时,会对导出的软件体系结构有什么影响。请使用例子来说明要点。当事务流被当成变换流时,首先按变换流导出软件结构,之后再将位于中间的“变换模块”替换成事物中心。所不同的是,其输入数据不是来自下属的输入模块,而是从最顶层的主控模块传入的,输出数据也是传给主控模块,之后再由主控模块传给输出模块。这样会增加模块层次及数据的传送次数4.7 什么是持久的数据源?对于应用系统来说,持久的数据源是指应用系统关闭再重新启动后,关闭之前的数据依然存在。这些数据一般要存储在文件或数据库中。4.12 对于给定的算法,如何判断它是否是结构化的? 对于给定的算法,如果符合以下三条原则,就可以判断它是结构化的。 (1) 使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。 (2) 选用的控制结构只准许有一个入口和一个出口。 (3) 程序语句组成容易识别的块(Block),每块只有一个入口和一个出口。4.9 将大的软件划分成模块有什么好处?是不是模块划分得越小越好?划分模块的依据是什么?将大的软件划分成独立命名且可独立访问的模块,不同的模块通常具有不同的功能或职责。这种方法有利于将复杂的问题简单化,是分而治之策略的具体表现。尽管模块分解可以简化要解决的问题,但模块分解并不是越小越好。当模块数目增加时,每个模块的规模将减小,开发单个模块的成本确实减少了;但是,随着模块数目增加,模块之间关系的复杂程度也会增加,设计模块间接口所需要的工作量也将增加。 划分模块的依据是,模块只具有单一的功能且与其他模块没有太多的联系。3.11 用自己的语言描述XP的重构和结对编程的概念 重构:以不改变代码外部行为而改进其内部结构的方式来修改软件系统的过程。它是一种修改或简化内部设计,净化代码的方法,目的是尽可能减少错误、优化系统。 结对编程:两个人面对同一台计算机共同为一个故事开发代码。它提供了一种实时解决问题和实时质量保证机制,同时也使得开发者能集中精力于手头的问题。5.3 域分析的目的是什么?如何将域分析与需求模式概念相联系?域分析识别、分析和详细说明某个特定应用领域的公共需求,特别是在该应用领域内被多个项目重复使用的需求。其目的是查找或创建那些广泛应用的分析类和分析模式,使其能够复用。 软件需求模式是对软件项目中经常遇到情形的抽象描述,一个需求模式是一组相关的通用对象,描述了本质的属性、行为和交互等。域分析正是关注了特定应用领域内的需求模式,以支持软件复用。6.1 对于需求分析,结构分析与面向对象策略有何本质区别? 结构化分析主要考虑数据加工过程,把软件看成信息转换器,识别数据对象、对象间的关系以及数据对象所经历的加工。 面向对象的建模主要考虑用例所处的问题域,识别定义问题的类(不仅识别其属性集,还要定义对属性的操作集),并进一步描述类之间的关系,面向对象的分析常用UML来建模6.6 PSPEC和用例是同一事物吗?如果不是,请解释区别。不是。用例是从使用者角度描述特定的使用场景。PSPEC则是在系统流程模型的精化过程中引入的,描述了最终层次的所有流程模型的处理。5.6 路面坑洼跟踪和修补系统3.10 什么是XP的“Spike解决方案”?在某个故事设计中碰到困难时,立即建立此部分设计的可执行原型,实现并评估设计原型。从而在真正的实现开始前降低风险,并对可能存在设计问题的故事确认其最初的估计。5.说明软件测试和调试的目的有何区别? 答:测试的目的是判断和发现软件是否有错误(2。5分)调试的目的是定位软件错误并纠正错误。(2.5分) 软件生命期各阶段的任务是什么? 答:软件生命期分为7个阶段: 1、问题定义:要解决的问题是什么2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性3、需求分析:系统必须做什么4、总体设计:系统如何实现,包括系统设计和结构设计5、详细设计:具体实现设计的系统6、实现:编码和测试7、运行维护:保证软件正常运行软件测试是(1)为了发现错误而执行程序的过程;(2)一个好的用例能够发现至今尚未发现的错误的测试。(3)一个成功的测试是发现至今尚未发现的错误的测试。

温馨提示

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

评论

0/150

提交评论