软件工程复习

软件工程案例教程-软件项目开发实践复习

课后习题判断题和选择题(已换百度云盘)

🖕 上面这个,是一个,超链接

基本原理

  • 用分阶段的生命周期计划严格管理
  • 坚持进行阶段评审
  • 实行严格的产品控制
  • 采用现代程序设计技术
  • 结果应能清楚的审查
  • 开发小组人员应少而精
  • 承认不断改进软件工程实践的必要性

软件开发模型

瀑布模型

是一个经典的模型,也被称为传统模型,是一个理想化的软件开发模型,它要求项目所有的活动都严格按照顺序进行,一个阶段的输出是下一个阶段的输入。这个模型没有反馈,一个阶段完成后,一般就不返回了——尽管实际上经常要返回上一个阶段。在一些小的项目中经常用到。

V 模型

V 模型是瀑布模型的一个变种,同样需要一步一步的进行,即前一阶段的任务完成后才可以进行下一阶段的任务。这个模型强调测试的重要性,他将开发活动与测试活动紧密地联系到一起,每一步都将比前一阶段进行更加完善的测试。V 模型说明了测试的重要性,这个模型中测试与开发是并行的,体现了全过程的质量意识。

原型模型

原型模型是在需求阶段快速构建一部分系统的软件开发模型,用户可以通过试用原型提出原型的优缺点,这些反馈意见可以作为进一步修改系统的依据。开发人员对开发的产品的看法有时与客户不一致,因为开发人员更关注设计和编码实施,而客户更关注需求。因此,如果开发人员快速构造一个原型将会很快与客户的需求达成一致。

  • 定义
    • 问题定义
    • 可行性研究
    • 需求分析
  • 开发
    • 概要设计
    • 详细设计
    • 编码和单元测试
    • 综合测试
  • 运维
    • 软件维护

第一章课后题

一、填空题

  1. 软件工程是一门综合性的交叉学科,它涉及计算机科学、数学 科学、管理 学科和工程学 学科。
  2. 软件工程研究的主要内容是 方法、过程、工具 三个方面。
  3. 由于软件生产的复杂性和高成本,使大型软件生产出现了很多问题,即出现 软件危机 ,软件工程正是为了克服它而提出的一种概念及相关方法和技术。
  4. SWEBOK V3 中,软件工程知识体细分为 软件工程教育需求软件工程实践 两大类。
  5. 增量式 模型假设需求可以分段,成为一系列增量产品,每一增量可以分别开发。
  6. 喷泉模型 比较适用于面向对象的开发方法。
  7. 软件工程是用工程科学的知识和技术原理来 定义、开发、维护 软件的一门学科。

第二章课后题

一、填空题

  1. UML 的三个基本构造快是 事务关系
  2. 在软件开发的结构化方法三中,采用是的主要技术是 SA,即 结构化分析 和 SD,即 结构化编程
  3. 数据流图描述数据在软件中的流动和处理过程,是软件模型的一种图示,他一般包括 4 种图形符号:变换 / 加工、外部实体、数据流向和 数据存储
  4. 面向对象方法 是将数据和对数据的操作紧密地结合起来的方法,这是其与传统结构化方法的主要区别。
  5. 软件代理一般具有 自治性开放性反应能力 特性。

第三章课后题

一、填空题

  1. 分析模型在系统级描述和 软件设计 之间建立了桥梁。
  2. 最常见的实体关系图的表示法是 Peter Chen 表示法和 James Martin 表示法。
  3. 结构化分析方法是面向 数据流 进行需求分析的方法。结构化分析方法使用 数据流图 DFD、数据字典 DD 等来描述。
  4. 在需求分析中,可从有关问题的简述中提取组成数据流图的基本成分。通常问题简述中的动词短语将成为数据流图中的 处理 成分。
  5. 面向对象的需求分析中常用的 UML 图示有 用例图顺序图状态图协作图活动图 等。

C/S 体系结构

C/S 模式应用系统包括客户端的机器及其运行系统,服务器端的机器及其运行系统,所以是二层结构。在这个系统中,客户端机器是一台完整的计算机,可以独立地执行运算操作和磁盘存取,服务器上运行数据库和文件系统操作,客户端运行事务处理和输入 / 输出操作。

C/S 体系结构通过将任务合理分配到客户机端和服务器端,降低了系统的通信开销,需要安装客户端才可进行管理操作。客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体业务。该结构开发比较容易,操作简便,但应用程序的升级和客户端程序的维护较为困难。

C/S 体系结构将复杂网络应用的用户交互界面(GUI)和业务应用处理与数据库访问处理相分离,服务器与客户端之间通过消息传递机制进行对话,由客户端向服务器发出请求,服务器进行相应的处理后经传递机制送回客户端。这使得在处理复杂应用时,客户端应用程序显得“臃肿”,限制了对业务处理逻辑变化的适应和扩展能力,当访问量增大、业务处理复杂时,客户端与后台数据库服务器数据交换频繁,易造成网络瓶颈。为解决这类问题,出现了采用三层式程序结构的趋势。

B/S 体系结构

基于 Web 的 B/S 方式其实也是一种 C/S 方式,只不过他的客户端是浏览器,对 C/S 体系结构的一种变化或者改进。

在 B/S 体系结构下,用户界面完全通过 WWW 浏览器实现,一部分事务逻辑在前段实现,但是主要事务逻辑在服务器端实现。B/S 体系结构主要体用不断成熟的 WWW 浏览器技术,结合浏览器的多种脚本语言,用通用浏览器实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。基于 B/S 体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”,容易在运行时自动升级。B/S 体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的开放性基础。

软件采用该结构的优势在于:无需开发客户端软件,维护和升级方便;可跨平台操作,任何一台机器只要装有 WWW 浏览器软件,均可作为客户机来访问系统;具有良好的开放性和可扩充性;可采用防火墙技术来保证系统的安全性,有效地适应了当前用户对管理信息系统的新需求。

第四章课后题

一、填空题

  1. C/S、B/S、SOA、BMP 等都是不同的 软件体系结构
  2. 数据字典包括 数据项数据流、数据存储和基本加工。
  3. 高内聚、松耦合是 模块层次图 的基本原则。
  4. 软件设计 把已确定的软件需求转换成特定形式的设计表示,使其得以实现。
  5. 设计模型是从分析模型转化而来的,主要包括四类模型:体系结构设计模型、数据设计模型、接口设计模型、构件设计模型。
  6. 面向对象设计的主要特点是建立了四个非常重要的软件设计概念:抽象性、信息隐藏性、功能独立性和模块化。
  7. 模块层次图和模块结构图是 模块划分 的重要方法。
  8. UML 设计中主要采用的图示有 类图对象图包图 等。
  9. 软件模块设计,包括模块划分、模块之间的接口、模块的调用关系、每个模块的功能等。
  10. 数据库的设计一般要进行三个方面的设计:概念结构设计、逻辑结构设计和物理结构设计。
  11. 结构化程序设计方法的主要原则可以概括为 自上而下,逐步求精

决策表

决策表提供了将条件极其相关的任务组合成表格的一种表达方式。决策表左上区域列出了所有的条件,左下区域列出了基于这些条件组合对应的任务,右边区域是根据条件组合而对应的任务矩阵表,矩阵的每一列可以对应于应用系统中的一个处理规则。

编制一个决策表的步骤如下:

  • 列出与一个特定的模块相关的所有任务
  • 列出这个模块执行过程的所有条件(或者决策)
  • 将特定的条件组合与相应的任务组合在一起,删除不必要的条件组合,或者编制可行的条件组合。
  • 定义规则,即一组条件组合对象完成什么任务。

第五章课后题

一、填空题

  1. PDL 又称 过程设计语言,它是一种非形式化的比较灵活的语言。
  2. 软件的详细设计可采用图形、表格 和过程设计语言等形式的描述工具表示模块的处理过程。
  3. 软件详细设计需要设计人员对每个设计模块进行描述,确定所使用的 算法、接口细节和输入、输出数据等。
  4. 结构化设计方法与结构化分析方法一样,采用 数据结构 技术。结构化设计方法与结构化分析方法相结合,依数据流图设计程序的结构。
  5. 软件中详细设计一般在 概要设计 基础上才能实施,他们一起构成了软件设计的全部内容。
  6. 在 Warnier 方法中,采用 Warnier 表示数据结构和程序结构。
  7. 面向数据结构的设计方法主要包括 JSD 算法Warnier 方法
  8. 在详细设计阶段,出了对模块内的算法进行设计,还应对模块内的 数据结构 进行设计。

编码是软件设计的自然结果,因此,程序的质量主要取决于软件设计质量。但是所选用的程序设计语言的特点、编程风格、编程方法等,也会对程序的可靠性、可读性、可测试性和可维护性产生深远影响。

第六章课后题

一、填空题

  1. 在软件编码过程中,可以采用自顶向下、自底向上、自顶向下和自底向上相结合以及 线程模式 等几种编码策略。
  2. 可以将程序设计语言分为第一代语言、第二代语言、第三代语言、第四代语言和 第五代语言 五类。
  3. 任何程序都可由 顺序选择循环 三种基本控制结构构造。这三种基本控制结构的共同点是

第六章选择题非常重要

白盒测试方法

又称结构测试、基于程序的测试、玻璃盒测试等,它是一种逻辑测试。

测试用例需要满足:

  • 保证模块中的独立路径至少被执行一次。
  • 保证所有的逻辑值(True、False)均被测试。
  • 在上、下边界和可操作范围内运行所有的循环。
  • 检查内部数据结构的有效性。

白盒测试方法需全面了解程序内部逻辑结构,对所有逻辑路径进行测试。测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据,不过即使每条路径都测试了仍然可能有错误。

  1. 穷举路径测试决不能查出程序违反了设计规范,程序本身是一个错误的程序
  2. 穷举路径测试不可能查出程序中因遗漏路径而出错
  3. 穷举路径测试可能发现不了一些与数据相关的错误。

白盒测试作为结构测试方法,按照程序内部的结构测试程序,检查程序中的每条通路是否能够按照预定要求工作,因此其最主要的技术是逻辑覆盖技术。逻辑覆盖包括

  • 语句覆盖
  • 判定覆盖
  • 条件覆盖
  • 判定 / 条件覆盖
  • 条件组合覆盖
  • 路径覆盖

第七章课后题

一、填空题

  1. 从是否需要执行被测软件的角度,软件测试方法一般可分为两大类,即 静态测试 方法和 动态测试 方法。
  2. 在白盒测试方法中,对程序的语句逻辑有 6 中覆盖技术,其中发现错误能力最强的技术是 路径覆盖
  3. 若有一个计算类程序,它的输入量只有一个 X ,其范围是[-1.0,1.0]。现在设计一组测试用例,X 输入为 -1.001、-1.0、1.0、1.001,则设计这组测试用例的方法是 边界值分析
  4. 单元测试主要测试模块的 5 个基本特征是: 模块接口局部数据结构、重要的执行路径、错误处理和边界条件。
  5. 黑盒测试主要针对功能进行的测试,等价类划分、规范导出、错误猜测和因果图法等都是采用黑盒技术设计测试用例的方法。
  6. 边界值分析是将测试边界情况作为重要目标,选取正好等于、刚刚大于或刚刚小于边界值的测试数据。如果输入 / 输出域是一个有序集合,则集合的第一个元素和 最后一个 元素应该作为测试用例的数据元素。
  7. 集成测试的策略主要有 大爆炸集成测试自顶向下集成测试自底向上集成测试三明治集成测试冒烟集成测试
  8. 逻辑覆盖包括 语句覆盖判定覆盖条件覆盖判定/条件覆盖、条件组合覆盖和路径覆盖等。

当项目通过验收后,项目团队将项目成果的所有权交给项目接收方,这个过程就是项目的交付。

产品交付需要完成的任务

  • 安装部署
  • 验收测试
  • 交付产品
  • 培训

交付产品的同时需要交付相应的手册

  • 用户手册
  • 系统管理员手册

第八章课后题

一、填空题

  1. 产品交付需要完成的主要任务是 验收测试安装部署
  2. 项目验收 是项目移交的前提,移交时,项目移交方和项目接收方将在项目移交报告上签字,形成项目移交报告。
  3. 验收测试 是交付使用前的最后一次检查,也是软件投入运行之前保证可维护性的最后机会。
  4. 第三方验收测试 是由独立于软件开发者和用户的第三方所进行的测试,旨在对被测软件进行质量认证。
  5. 一个产品的使用者有两种类型:一种是用户,另一种是 系统管理员
  6. 系统管理员手册 是为系统管理员准备的文档资料。

第九章课后题

一、填空题

  1. 当一个系统已经在实际环境中投入使用了,可以进行正常的操作,我们就说系统开发完成了,而以后对系统变更所做的任何工作,被称为 软件维护
  2. 软件的可维护性是指纠正软件系统出现的 错误或缺陷 以满足新的要求而进行修改、扩充或压缩的容易程度。
  3. 一个可移植的程序应该具有结构良好、灵活、不依赖于某一具体计算机或操作系统 的性能。
  4. 软件维护的类型主要包括 纠错性维护、适应性维护、完善性维护和预防性维护等。
  5. 预防性维护也被称为 软件再工程
  6. 软件的逆向工程是一个恢复 设计结果 的过程。
  7. 如果软件是可测试的、可理解的、可修改的、可移植的、可靠的、有效的、可用的,则软件一定是可 使用 的。