《软件工程——理论与实践》重点问答题(共4页)_第1页
《软件工程——理论与实践》重点问答题(共4页)_第2页
《软件工程——理论与实践》重点问答题(共4页)_第3页
《软件工程——理论与实践》重点问答题(共4页)_第4页
全文预览已结束

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上 软件工程理论与实践(第2 版)习题答案 简答题 1. 什么是软件危机?其产生的原因是什么? 答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。 软件危机主要表现在两个方面: (1) 软件产品质量低劣,甚至开发过程就夭折。 (2) 软件生产率低,不能满足需要。 2. 有哪些主要的软件开发方法? 答:主要的软件开发方法有:结构化开发方法、原型化开发

2、方法和面向对象的开发方法。 3. 软件生存周期各阶段的主要任务是什么? 答:软件生存周期按瀑布模型分为 6 个阶段: 可行性研究与计划(确定系统的目标和规模,分析项目的可行性); 需求分析与规格说明(明确系统的规格和要求); 设计(包括概要设计和详细设计,将系统分解为模块); 编程(用程序语言实现每个模块,简单容易); 测试(发现并改正错误,分为模块测试、集成测试和系统联调三级); 运行维护(扩充功能、纠错等)。 4. 原型化方法的核心是什么?它具有哪些特点? 答:原型化方法的核心是,花费少量代价建立一个可运行的系统,使用户及早获得学习的机会。 强调软件开发人员与用户的不断交互,通过原型的演进

3、不断适应用户任务改变的需求。它是一个循环的模型。速成原型法按以下步骤循环执行: 快速分析。 构造原型。 运行和评价原型。 修改与改进。 5简述抽取需求的主要方法,并比较它们的特点。 面谈法。这是一种重要而直接简单,随时可使用的发现和获取需求的方法。面谈的对象主要有用户和领域专家:与用户面谈主要了解和提取需求,与领域专家面谈,是一个对领域知识的学习和转换过程。使用该方法时应注意面谈前要充分准备,面谈后认真分析总结,同时注意掌握面谈的人际交流技巧,才能取得好的效果。 问卷法调查法。通过采用向用户发问卷调查表的方式,达到彻底弄清项目需求的一种需求获取方法。这是一种从多个用户处收集需求信息的有效方式,

4、是对面谈法的补充。 会议讨论法。所谓会议讨论法,是指开发方和用户方召开若干次需求讨论会议,达到彻底弄清项目需求的一种需求获取方法。这种方法适合于开发方不清楚项目需求的情况。 原型法。对于某些试验性、探索性的项目,更是难于得到一个准确、无二义性的需求。而原型化方法 (Prototyping Method)是获取这一类项目需求的有效方法。 面向用例的方法。分析建立“用例”的过程,也就是提取需求的过程。 在实际应用中,常常将以上方法进行综合应用。 6. 如何画分层数据流图?有哪些基本原则? 答:总的原则是:至顶而下,逐层分解(画分层数据流图)。逐层分解的画法可以控制每一层的复杂度。 顶层:将整个系统

5、作为一个加工,描述系统边界(输入与输出)。 中间层:将某个加工分解为一组子加工,其中的子加工还需进一步分解。 底层:由不再进行分解的基本加工组成。画分层数据流图的基本原则有: 数据守恒与数据封闭原则。 加工分解的原则。 子图与父图“平衡”的原则。 合理使用文件的原则。 7. 胖客户模型和瘦客户模型的区别是什么?它们分别被应用在什么样的场合? 答:在胖客户模型中,客户端应用负责用户界面和应用逻辑部分,因此它的工作比较繁重。一般的数据库应用都是属于这种结构。而与此相反,在瘦客户模型中,服务器负责了更多的工作,而客户端的工作就变得非常单纯。浏览器/Web服务器结构就属于瘦客户结构,而且常被称为B/S

6、 (Browser/Server)结构。 8.模块分解的最终目的是什么? 答:模块分解的目的是将系统“分而治之”,以降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。 9. 模块分解应该遵循什么样的标准? 答:按照“降低块间联系,提高块内联系”的设计总则对模块进行分解。具体从以下方面考虑: (1) 尽可能建立功能模块; (2) 消除重复功能; (3) 模块的作用范围与控制范围,即当作用范围为控制范围的子集时,才能获得较低的块间联系; (4) 模块的大小适当; (5) 模块的扇入/扇出数不宜太多。 也可以用软件独立性的两个定性指标来度量模块分解的标准

7、: 一是耦合性。用于描述模块之间联系的紧密程度。从三个方面衡量块间联系大小:方式 (直接或间接)类型(数据型、控制型、混合型)数量(数量越大,块间联系越紧密。 二是内聚性。用于描述模块内部联系的紧密程度。它是从功能的角度来度量模块内的联系。 显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。功能型模块独立性最好。 10比较面向对象方法与结构化方法的特点,说明为什么面向对象方法比结构化方法更加优越。 答:结构化方法是以数据流和数据封闭性为基础的,由 SA、SD 和 SP 三部分构成。该方法: 无法实现从问题空间到解空间的直接映射。开发方法求解过程是先对应用领域(问题空间)进行分析,建立起问题空间

8、的逻辑模型,再通过一系列复杂的转换和算法,构造计算机系统,获得解空间。 无法实现高效的软件复用。结构化方法是面向过程的,将数据和处理过程(操作)分离,不仅增加了软件开发的难度,也难于支持软件复用。 开发方法难以实现从分析到设计的直接过渡,从 SA 到SD 要经过一系列复杂的变换。 而面向对象的方法以对象为核心,强调模拟现实世界中的概念而不是算法,尽量用符合人类认识世界的思维方式来渐进地分析、解决问题。 使问题空间与解空间具有一致性,便于对软件开发过程所有阶段进行综合考虑,能有效地降低软件开发的复杂度,提高软件质量。 软件开发各个阶段有机集成,有利于系统的稳定性。 具有良好的重用性。面向对象的技

9、术在利用可重用的软件成分构造新软件系统上具有很大的灵活性,由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性。继承性本身就是一种重用机制。 综上,显然面向对象方法比结构化方法更加优越。 11 OOA 概念模型由 5 个层次组成,请简述这 5 个层次。 答:OOA 概念模型的 5 个层次分别是: (1) 发现类及对象。描述如何发现类及对象。从应用领域开始识别类及对象,形成整 个应用的基础,然后,据此分析系统的责任。 (2) 识别结构。该阶段分为两个步骤。第一,识别“一般特殊”结构,该结构捕获了识别出的类的层次结构;第二,识别“整体部分”结构,该结构用来表示一个对象如

10、何成为另一个对象的一部分,以及多个对象如何组装成更大的对象。 (3) 定义属性。其中包括定义类的实例(对象)之间的实例连接。 (4) 定义服务。其中包括定义对象之间的消息连接。 (5) 定义主题。主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,以便于理解。 12面向对象设计的主要任务是什么? 答:面向对象的设计(Object-Oriented Design,OOD)是面向对象开发方法(OOSD)的核心阶段。是在OOA 的基础上解决系统“如何做”的问题。主要任务包括: 系统设计 系统设计的任务包括:将分析模型中紧密相关的类划分为若干子系统(也称为主题),子系统应该具有良好的接口,子系

11、统中的类相互协作;标识问题本身的并发性,将各子系统分配给处理器,建立子系统之间的通信。 对象设计,通过对象的认定和对象层次结构的组织,确定解空间中应存在的对象和对象层次结构,并确定外部接口和主要的数据结构。 设计优化 对设计进行优化,主要涉及提高效率的技术和建立良好的继承结构的方法。 13. 在分析和设计阶段都需要建立类图,试说明分析类图与设计类图的主要区别是什么。 答:在软件开发的不同阶段都使用类图,但这些类图表示了不同层次的抽象。在需求分析阶段,类图是研究领域的概念;在设计阶段,类图重点描述类与类之间的接口。 由于分析类图主要描述应用领域中的概念,它们的类可以从这些概念中得出,或者说分析类

12、图中的类是从需求中获取的。 设计类图描述软件的接口部分,而不是软件的实现部分。面向对象开发方法非常重视区别接口与实现之间的差异,可以用一个类型(Type)描述一个接口,这个接口可能因为实现环境、运行特性或者用户的不同而具有多种实现方式。设计类图更易于开发者之间的相互理解和交流。设计类图通常是在分析类图的基础上进行细化和改进的。 14.软件测试与其他软件开发活动相比具有什么样的特点? 答:软件测试的目标在于,以最小的工作量和成本,尽可能多地发现软件系统中存在的各种错误和缺陷,以确保软件系统的正确性和可靠性。其主要特点是: 软件测试的开销大。按照Boehm 的统计,软件测试的开销大约占总成本的30

13、%50%。 不能进行“穷举”测试。只有将所有可能的情况都测试到,才有可能检查出所有的错误,但这是不可能的。 软件测试难度大。既然不能进行 “穷举”测试,又要查出尽可能多的错误,随着软件的规模和复杂度不断增加,软件测试工作的难度越来越大。 测试也是一种开发活动,但鉴于软件测试的以上特点,它比其他软件开发活动更加复杂、困难和重要,且无论怎样强调它的重要性都不过分。 15.软件测试通常包含哪几个基本步骤? 答:软件测试通常应该对需求、总体设计、详细设计、编码实现各个阶段所获得的开发产品进行测试,软件测试应该贯穿于整个软件开发的全过程。 软件测试过程按测试的先后次序可分为以下步骤进行:单元测试、集成测试、确认测试和系统测试,最后进行验收测试。 单元测试。完成每个模块的测试,尽可能发现模块内部的错误。单元测试主要采用白盒测试法。 集成测试。把已测试过的模块按照一定顺序组装起来,构成软件系统。主要采用黑盒测试法。但对发现

温馨提示

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

评论

0/150

提交评论