软件工程期末笔记整理

分享一下软件工程期末复习的笔记,不过没有画图的内容,这篇笔记我也会同步更新到我的个人博客网站上

第一章软件工程学概述

  1. 软件是程序数据相关文档的完整集合

  2. 软件工程的定义

    1. 软件工程正是从管理和技术两方面研究如何更好地开发和维护软甲的一门新兴学科
    2. 软件工程是(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件
    3. (2)研究(1)中提到的途径
  3. 软件工程的基本原理

    1. 用分阶段的生命周期严格管理
    2. 坚持进行阶段审查
    3. 实行严格的产品控制
    4. 采用现代化程序设计技术
    5. 结果能清楚地审查
    6. 开发人员的小组应该少而精
    7. 承认不断改进软件工程实践的必要性
  4. 目前使用最广泛的软件工程方法学,分别是是传统方法学面向对象方法学

  5. 软件生命周期由软件定义软件开发运行维护3个时期组成

    1. 软件定义
      • 问题定义
      • 可行性研究
      • 需求分析
    2. 软件开发
      1. 总体设计
      2. 详细设计
      3. 编码和单元测试
      4. 综合测试
    3. 运行维护
  6. 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的步骤

  7. 一个任务集合包括一组软件工程任务里程碑应该交付的软件

  8. 八个模型

    1. 瀑布模型

      1. 特点
        • 阶段间具有顺序性和依赖性
        • 推迟实现的观点
        • 质量保证的观点
      2. 文档驱动
    2. 快速原型模型

    3. 增量模型

    4. 螺旋模型

      1. 风险驱动
    5. 喷泉模型

    6. Rational统一过程

    7. 敏捷过程和极限编程

    8. 微软过程

      1. 微软生命周期
        1. 规划阶段
        2. 设计阶段
        3. 开发阶段
        4. 稳定阶段
        5. 发布阶段

第二章可行性分析

  1. 可行性分析的内容
    1. 技术可行性
    2. 操作可行性
    3. 经济可行性
  2. 可行性分析研究过程
    1. 复查系统规模和目标
    2. 研究目前正在使用的系统
    3. 导出新系统的高层逻辑模型
    4. 重新定义问题
    5. 导出并评价供选择的解法
    6. 推荐行动方针
    7. 草拟开发计划
    8. 书写文档提交审查
  3. 系统流程图是概括地描述物理系统的传统工具。它的基本思想是用图形符号以黑盒子的形式描绘组成系统的每个部件
  4. ==数据流图(DFD)==是一种图形化技术,它描述信息流和数据从输入移动到输出所经受的变化
  5. 数据流图的组成
    1. 源点/终点
    2. 数据流
    3. 数据存储
    4. 处理
  6. 数据字典是关于数据的信息的集合,也就是数据流图中包含的所有的元素的定义的集合
  7. 数据字典的组成
    1. 数据流

    2. 数据元素(数据流分量)

    3. 数据存储

    4. 处理

    5. 成本估计的三个技术

      1. 代码行技术
      2. 任务分解技术
      3. 自动估计成本技术

第三章需求分析

  1. 结构化分析方法需要遵守的准则

  2. 必须理解并描述问题的信息域,根据这条准则应该建立数据模型

  3. 必须定义软件应完成的功能,根据这条准则应该建立功能模型

  4. 必须描述作为外部事件结果的软件行为,根据这条准则应该建立行为模型

  5. 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节

  6. 需求分析的任务

    1. 确定对系统的综合要求
    2. 分析系统的数据要求
    3. 导出系统的逻辑模型
    4. 修正系统开发计划
  7. 系统的综合要求

    1. 功能需求
    2. 性能需求
    3. 可靠性和可用性需求
    4. 出错处理需求
    5. 接口需求
      1. 用户接口需求
      2. 硬件接口需求
      3. 软件接口需求
      4. 通信接口需求
    6. 约束
      1. 精度
      2. 工具和语言约束
      3. 设计约束
      4. 应该使用的标准
      5. 应该使用的硬件平台
    7. 逆向需求
    8. 将来可能提出的需求
  8. 快速构建和修改原型,通常使用下属三种方法和工具

    1. 第四代技术
    2. 可重用的软件构建
    3. 形式化规格说明和原型环境
  9. 与用户沟通获取需求的方法

    1. 访谈
    2. 面向数据流自顶向下求精
    3. 简单的用户规格说明技术
    4. 快速建立软件原型
  10. 实体-联系图(数据模型)
    1. 数据对象
    2. 属性:属性定义了数据对象的性质
    3. 联系

         1. 一对一联系
         2. 一对多联系
         3. 多对多联系
    
    1. 数据模型中包含3中相互关联的信息:数据对象数据对象的属性数据对象彼此间相互连接的关系
  11. 数据规范化

    1. 第一范式
    2. 第二范式
    3. 第三范式
    4. 范式:定义消除数据冗余的程度
    5. 状态转换图通过描述系统的状态以及引起系统状态转换的事件,来表示系统的行为
    6. 状态是任何可以被观察到的系统行为模型
    7. 事件是在某个特定时刻发生的事情,它是对引起系统做动作或从一个状态转换到另一个状态的外界时间的抽象
    8. 层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构
    9. Warnier图也用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段
    10. IPO图是输入、处理、输出图的简称
  12. 从那些方面验证软件需求的正确性

    1. 一致性
    2. 完整性
    3. 现实性
    4. 有效性
  13. 验证软件需求的方法

    1. 验证需求的一致性
    2. 验证需求的现实性
    3. 验证需求的完整性和有效性
  14. 在需求分析阶段结果是交出的文档中被应该包括 详细的数据流图数据字典一组简明的算法描述

  15. 概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,它反映了用户的现实环境,而且与在软件系统中的实现方法无关


第四章形式化说明技术

  1. 按照形式化的程度划分

    1. 非形式化:自然语言描述
    2. 半形式化:数据流图或实体-联系图
    3. 形式化:基于数学技术描述
  2. 形式化方法,是描述系统性质的基于数学的技术

  3. 非形式化方法的缺点

    1. 矛盾
    2. 二义性
    3. 含糊性
    4. 不完整性
    5. 抽象层次混乱
  4. 应用形式化方法的准则

    1. 选择合适的形式化方法
    2. 应该形式化,但不要过分形式
    3. 应该估量成本
    4. 应该有形式化方法咨询顾问随时提供咨询
    5. 不应该放弃传统的开发方法
    6. 应该建立详细的文档
    7. 不应该放弃质量标准
    8. 不应该过分依赖形式化方法
    9. 应该测试、测试再测试
    10. 应该重用
  5. 有穷状态机

    1. 状态集
    2. 输入集
    3. 转换函数
    4. 初始态
    5. 终态集
  6. Petri网:解决定时问题

    1. 一组位置
    2. 一组转换
    3. 输入函数
    4. 输出函数
  7. Z语言

    1. 给定的集合、数据类型及常数
    2. 状态定义
    3. 初始状态
    4. 操作

第五章总体设计

总体设计的基本目的就是回答“概要地说,系统应该如何实现”,这个问题

  1. 总体设计又称概要设计或初步设计

  2. 总体设计阶段的任务:

    1. 通过这个阶段的工作将划分出组成系统的物理元素–程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内若将再以后仔细设计
    2. 另一个重要任务是设计软件的结构,也就是要确定系统每个程序是由哪些模块组成的,以及这些模块之间的关系
  3. 总体设计的必要性:

    1. 可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统
  4. 总体设计过程通过由两个阶段组成

    1. 系统设计阶段:确定系统的具体实现方案
    2. 结构设计阶段:确定软件结构
  5. 总体设计过程的九个步骤

    1. 设想供选择的方案
    2. 选取合理的方案
    3. 推荐最佳方案
    4. 功能分解
    5. 设计软件结构
    6. 设计数据库
    7. 制定测试方案
    8. 书写文档
    9. 审查和复审
  6. 程序的设计分为两个阶段

    1. 结构设计:结构设计是总体设计阶段的任务。结构设计确定程序由哪些模块组成,以及这些模块之间的关系
    2. 过程设计:过程设计是详细设计阶段的任务。过程设计确定每个模块的处理过程
  7. 设计原理

    1. 模块化
    2. 抽象
    3. 逐步求精
    4. 信息隐蔽和局部化
    5. 模块独立
  8. 模块化

    1. 模块是由边界元素限定的相邻程序元素的序列,且有一个总体标识符代表它
    2. 模块化就是把程序划分称若干模块,每个模块完成一个子功能,把这些模块集中起来完成组成一个整体,可以完成指定功能,满足问题的要求
  9. 抽象就是抽出事务的本质特性而暂时不考虑它们的细节

  10. 模块独立

    1. 模块独立的概念是模块化、抽象、信息屏蔽和局部化概念的直接结果
    2. 模块独立性的重要性
      1. 有效的模块化的软件容易开发出来
      2. 独立的模块比较容易测试和维护
    3. 模块的独立程度可以由两个定性标准度量,这两个标准分别称为耦合内聚耦合用来衡量不同模块彼此间互相依赖的紧密程度;内聚用来衡量一个模块内部各个元素间彼此结合的紧密程度
  11. 耦合是对一个软件结构内不同模块之间的互连程度的度量

    1. 耦合的七种类型
      1. 非直接耦合
      2. 数据耦合
      3. 标记耦合
      4. 控制耦合
      5. 外部耦合
      6. 公共耦合
      7. 内容耦合
    2. 1-7,耦合性不断增强,模块独立性不断减弱
  12. 内聚标志着一个模块内各个元素彼此结合的紧密程度

    1. 七种内聚
      1. 巧合内聚
      2. 逻辑内聚
      3. 时间内聚
      4. 过程内聚
      5. 通信内聚
      6. 信息内聚
      7. 功能内聚
    2. 1-7内聚性从低到高,独立性从低到高
    3. 低内聚:巧合内聚、逻辑内聚、时间内聚
    4. 中内聚:过程内聚、通信内聚
    5. 高内聚:信息内聚、功能内聚
  13. 启发规则

    1. 改进软件结构提高模块独立性
    2. 模块规模应该适中
    3. 深度、宽度、扇入和扇出都应适当
    4. 模块的作用域应该在控制域之内
    5. 力争降低模块接口的复杂程度
    6. 设计单入口单出口模块
    7. 模块功能应该可以预测
  14. 深度代表软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度

  15. 宽度是软件结构内同一个层次上的模块总数的最大值

  16. 对宽度影响最大的因素是模块的扇出

  17. 扇出是一个模块直接控制(调用)的模块数量

  18. 扇入表明有多少个模块调用它

  19. 描绘软件结构的工具

    1. 层次图:用来描绘软件的层次结构
    2. HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”的英文缩写
    3. 结构图:Yourdon提出的结构图是进行软件结构设计的另一个有力工具
  20. 面向数据流的设计方法

    1. 结构化设计方法(简称SD方法),也就是基于数据流的设计方法
    2. 面向数据流的设计方法的目标是给出设计软件结构的一个系统化途径
  21. 信息流

    1. 变换流:信息沿输入通路进入系统,同时由外部形式转换为内部形式,进入系统的信息通过变换中心,经加工处理之后沿输出通路转换为外部形式离开软件系统,当数据流图的数据流具有这些特性时,这种信息流就叫做变换流
    2. 事务流:当数据流图的数据流是“以事务为中心的”,也就是说,数据沿输入通路到达一个处理T,这个处理根据数据的类型在若干动作序列中选出一个来执行,这类数据流就被称为事务流

第六章详细设计

详细设计阶段的根本目标是确定怎样具体地实现所要求的系统

  1. 基本的控制结构
    1. 顺序
    2. 选择
    3. 循环
  2. 结构程序设计的定义:如果一个程序的代码块仅仅通过顺序、选择、循环这3中基本控制结构进行连接,并且每个代码块只有一个入口和一个出口则称这个程序是结构化的
  3. 三种结构程序设计
    1. 经典的结构程序设计:顺序、IF-THEN-ELSE和DO-WHILE
    2. 扩展的结构程序设计:经典+DO-CASE+DO-UNTIL
    3. 修正的结构程序设计:扩展+LEAVE
  4. 人机界面设计问题
    1. 系统响应时间
      1. 两个重要属性:长度和易变性
    2. 用户帮助设施
    3. 出错信息处理
    4. 命令交互
  5. 人机界面设计指南
    1. 一般交互指南
    2. 信息显示指南
    3. 数据输入指南
  6. 过程设计的工具
    1. 程序流程图
    2. 盒图
    3. PAD图
    4. 判定表
    5. 判定树
    6. 过程设计语言
  7. 面向数据结构的设计方法
    1. Jackson图
      1. 顺序结构
      2. 选择结构
      3. 重复结构
  8. 程序复杂程度的度量方法
    1. McCabe方法
    2. Halstead方法

第七章实现

  1. 通常把编码测试统称为实现
  2. 编码就是把软件设计结果翻译成用某种程序设计语言书写的程序
  3. 测试:为了发现程序中的错误而执行程序的过程
  4. 软件测试准则
    1. 所有测试都应该能追溯到用户需求
    2. 应该远在测试开始之前就制定好测试计划
    3. 把Pareto原因应用到软件测试当中
    4. 应该从“小规模”测试开始,并逐步进行“大规模”测试
    5. 穷举测试是不可能的
    6. 为了达到最佳的测试效果,应该由独立的第三方从事测试工作
  5. 测试步骤
    1. 模块测试
    2. 子系统测试
    3. 系统测试
    4. 验收测试
    5. 平行运行
  6. 单元测试重点
    1. 模块接口
    2. 局部数据结构
    3. 重要的执行通路
    4. 出错处理通路
    5. 边界条件
  7. 驱动程序就是一个子程序,它接收数据,把这些数据传送给被测试的模块,并且印出有关的结果
  8. 存根程序代替被测试的模块所调用的模块,因此存根程序也可以称为“虚拟子程序”
  9. 集成测试是测试和组装软件的系统化技术
  10. 集成测试的两种方法:
    1. 非渐增式测试方法
    2. 渐增式测试方法
  11. 渐增方式的集成策略
    1. 自顶向下
    2. 自底向上(不需要存根程序)
  12. 确认测试也称为验收测试,它的目标是验证软件的有效性
  13. 白盒测试技术
    1. 它的前提可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试
    2. 逻辑覆盖
      1. 语句覆盖
      2. 判定覆盖
      3. 条件覆盖
      4. 判定/条件覆盖
      5. 条件组合覆盖
      6. 点覆盖
      7. 边覆盖
      8. 路径覆盖
    3. 控制结构测试
      1. 基本路径测试
      2. 条件测试
      3. 循环测试
  14. 黑盒测试技术
    1. 对于软件测试而言,黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检测程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息地完整性,黑盒测试又称为功能测试
    2. 黑盒测试力图发现下述类型的错误
      1. 功能不正确或遗漏了功能
      2. 界面错误
      3. 数据结构错误或外部数据库访问错误
      4. 性能错误
      5. 初始化和终止错误
    3. 等价划分
    4. 边界值分析
    5. 错误推测
  15. 调试途径
    1. 蛮干法:最低效
    2. 回溯法
    3. 原因排除法
      1. 对分查找法
      2. 归纳法
      3. 演绎法
  16. 软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定完成地运行地概率
  17. 软件可用性是程序在给定的时间点,按照规格说明书的规定,成功地运行地概率
  18. 调试是在测试发现错误之后排查错误的过程

第八章维护

这个阶段是软件生命周期的最后一个阶段。,其基本任务是保证软件在一个相当长的时期能够正常运行

  1. 软件维护的类型
    1. 改正性维护
    2. 适应性维护
    3. 完善性维护
    4. 预防性维护
  2. 软件维护的特点
    1. 非结构化维护
    2. 结构化维护
  3. 软件维护的代价
    1. 有形代价
    2. 无形代价
  4. 维护组织
    1. 维护管理员
    2. 系统管理员
    3. 变化授权人
  5. 维护报告
    1. 满足维护要求表中提出的要求所需要的工作量
    2. 维护要求的性质
    3. 这项要求的优先次序
    4. 与修改有关的事后数据
  6. 软件可维护性:维护人员理解、改正、改动或改进这个软件的难易程度
  7. 决定软件可维护性的因素
    1. 可理解性
    2. 可测试性
    3. 可修改性
    4. 可移植性
    5. 可重用性

第九章面向对象方法学引论

  1. 面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程
  2. 面向对象的四个要点
    1. 认为客观世界是由各种对象组成
    2. 把所有对象都划分成各种对象类
    3. 按照子类与父类的关系,把若干个对象类组成一个层次结构的系统
    4. 对象彼此之间仅能通过传递消息互相联系
  3. 面向对象方法学的优点
    1. 与人类习惯的思维方法一致
    2. 稳定性好
    3. 可重用性好
    4. 轻易开发大型软件产品
    5. 可维护性
  4. 对象的定义:对象是具有相同状态的一组操作的集合
  5. 对象的特点
    1. 以数据为中心
    2. 对象是主动的
    3. 实现了数据封装
    4. 本质上具有并行性
    5. 模块独立性好
  6. 就是对具有相同数据和相同操作的一组相似对象的定义
  7. 实例就是由某个特定的类所描述的一个具体的对象
  8. 消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明
    1. 接收消息的对象
    2. 消息选择符
    3. 零个或多个变元
  9. 方法就是对象所能执行的操作,也就是类中所定义的服务
  10. 属性就是类中所定义的数据
  11. 封装就是把某个事物包起来,使外界不知道该事物的具体内容
  12. 继承是指能够直接获取已有的性质和特征
  13. 多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象
  14. 重载
    1. 函数重载是指在同一个作用域内的若干个参数特征不同的函数可以使用相同的函数名称
    2. 运算符重载是指同一个运算符可以是施加于不同类型的操作数上面
  15. 面向对象建模
    1. 对象模型
    2. 动态模型
    3. 功能模型
  16. 对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构
  17. 类与类之间的关系
    1. 关联
    2. 泛化
    3. 依赖
    4. 细化
  18. 聚集:也称为聚合,是关联的特例
    1. 共享聚集
    2. 组合聚集
  19. 泛化
    1. 普通泛化
    2. 受限泛化
  20. 动态模型
    1. 事件
    2. 状态
    3. 行为
  21. 功能模型
    1. 用例图
      1. 系统
      2. 行为者
      3. 用例
      4. 用例之间的关系
  22. 三种模型之间的关系
    1. 针对每个类建立的动态模型,描绘了类实例的生命周期或运行周期
    2. 状态转换驱使行为发生,这些行为在数据流图中被映射成处理,在用例图中被映射成用例,它们同时与类图中的服务相对应
    3. 功能模型中的处理对应于对象模型中提供的服务
    4. 数据流图中的数据存储,以及数据的源点/终点,通常是对象模型中的对象
    5. 数据流图中的数据流,往往是对象模型中对象的属性值,也可能是整个对象
    6. 用例图的行为者,可能是对象模型中的对象
    7. 功能模型中的处理可能产生动态模型中的事件
    8. 对象模型描述了数据流图中的数据流、数据存储以及数据源点/终点的结构

第十章面向对象分析

  1. 分析工作主要包括3项内容

    1. 理解
    2. 表达
    3. 验证
  2. 分析过程得出的最重要的文档资料是软件需求规格说明

  3. 三个子模型

    1. 对象模型(静态结构)
    2. 动态模型(交互次序)
    3. 功能模型(数据变换)
  4. 五个层次

    1. 主题层
    2. 类与对象层
    3. 结构层
    4. 属性层
    5. 服务层
  5. 上述五个层次对应着面向对象分析过程中建立对象模型的5项主要活动

    1. 找出类与对象
    2. 识别结构
    3. 识别主题
    4. 定义属性
    5. 定义服务
  6. 面向对象分析步骤

    1. 寻找类与对象
    2. 识别结构
    3. 识别主题
    4. 定义属性
    5. 建立动态模型
    6. 建立功能模型
    7. 定义服务
  7. 面向对象分析首要的工作,是建立问题域的对象模型

  8. 确定类与对象

    1. 找出候选的类与对象
      1. 可感知的物理实体
      2. 人或组织的角色
      3. 应该记忆的事件
      4. 两个或多个对象的相互作用
      5. 需要说明的概念
    2. 筛选出正确的类与对象
      1. 冗余
      2. 无关
      3. 笼统
      4. 属性
      5. 操作
      6. 实现
  9. 初步确定关联

    1. 直接提取动词短语得出的关联
    2. 需求陈述中隐含的关联
    3. 根据问题域知识得出的关联
  10. 确定属性

  11. 分析

  12. 选择:认证考察经初步分析而确定下来的那些属性,从中删掉不正确的或不重要的属性

    1. 误把对象当作属性
    2. 误把关联类的属性当作一般对象的属性
    3. 把限定误当成属性
    4. 误把内部状态当成了属性
    5. 归于细化
    6. 存在不一致的属性
  13. 建立动态模型

    1. 第一步,编写典型交互行为的脚本
    2. 第二步,从脚本中提取出事件,确定触发每个事件的动作对象以及接受对象的目标对象
    3. 第三步,排列事件发生的次序,确定每个对象可能有的状态及状态间的转换关系,并用状态图描绘它们
    4. 最后,比较各个对象的状态图,检查它们之间的一致性,确保事件之间的匹配
  14. 脚本是指系统在某一执行期间内出现的一系列事件

  15. 编写脚本的目的,是保证不遗漏重要的交互步骤

  16. 脚本描写的范围主要由编写脚本的具体目的决定

  17. 功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一组数据流图组成

  18. 建立功能模型

    1. 画出基本系统模型图
    2. 画出功能级数据流图
    3. 描述处理框功能
  19. 建立对象模型

    1. 确定类与对象
    2. 确定关联
    3. 划分主题
    4. 确定属性
    5. 识别继承关系
    6. 反复修改
  20. 定义服务

    1. 常规行为
    2. 从事件导出的操作
    3. 与数据流图中处理框对应的操作
    4. 利用继承减少冗余操作

第十一章面向对象设计

  1. 面向对象设计的准则
    1. 模块化
    2. 抽象
    3. 信息隐蔽
    4. 弱耦合
    5. 强内聚
    6. 可重用
  2. 启发规则
    1. 设计结果应该清晰易懂
    2. 一般-特殊结构的深度应适当
    3. 设计简单的类
    4. 使用简单的协议
    5. 使用简单的服务
    6. 把设计变动减至最小
  3. 重用是指同一事物不作修改或稍加改动就多次重复使用
  4. 软件重用的三个层次
    1. 知识重用
    2. 方法和标准的重用
    3. 软件成分的重用
  5. 软件成分的重用级别
    1. 代码重用
      1. 源代码剪贴
      2. 源代码包含
      3. 继承
    2. 设计结果重用
    3. 分析结果重用
  6. 软件重用的效益
    1. 质量
    2. 生产率
    3. 成本
  7. 系统分解
    1. 人机交互子系统
    2. 问题域子系统
    3. 任务管理子系统
    4. 数据管理子系统
  8. 设计任务管理子系统
    1. 确定事件驱动型任务
    2. 确定时钟驱动型任务
    3. 确定优先任务
    4. 确定关键任务
    5. 确定协调任务
    6. 尽量减少任务数
    7. 确定资源需求
  9. 选择数据存储管理模式
    1. 文件管理系统
    2. 关系数据库管理系统
    3. 面向对象数据库管理系统

第十二章面向对象实现

  1. 面向对象语言的技术特点

    1. 支持类与对象概念的机制
    2. 实现整体-部分结构(即聚集)的机制
    3. 实现一般-特殊(即泛化)结构的机制
    4. 实现属性和服务的机制
    5. 类型检查
    6. 类库
    7. 效率
    8. 持久保存对象
    9. 参数化类
    10. 开发环境
  2. 选择面向对象语言要考虑的因素

    1. 将来能否占主导地位
    2. 可重用性
    3. 类库和开发环境
    4. 其他因素
  3. 程序设计风格

    1. 提高可重用性
    2. 提高可扩充性
    3. 提高健壮性
  4. 提高可重用性的准则

    1. 提高方法的内聚
    2. 减小方法的规模
    3. 保持方法的一致性
    4. 把策略和实现分开
    5. 全面覆盖
    6. 尽量不使用全局信息
    7. 利用继承机制
  5. 提升可扩充性的准则

    1. 封装实现策略
    2. 不要用一个方法便利多条关联链
    3. 避免使用多分支语句
    4. 精心确定公有方法
  6. 提高健壮性的准则

    1. 预防用户的操作错误
    2. 检查参数的合法性
    3. 不要预先确定限制条件
    4. 先测试后优化
  7. 测试软件的经典策略是,从“小型测试”开始,逐步过渡到“大型测试”

  8. 面向对象的集成测试

    1. 基于线程的测试
    2. 基于使用的测试
  9. 测试类的方法

    1. 随机测试
    2. 划分测试
      1. 基于状态的划分
      2. 基于属性的划分
      3. 基于功能的划分
    3. 基于故障的测试
  10. 集成测试方法

  11. 多类测试

  12. 从动态模型导出测试用例


第十三章软件项目管理

  1. 估算软件规模
    1. 代码行技术
    2. 功能点技术
      1. 信息域特性
      2. 估算功能点的步骤
        1. 计算未调整的功能点数UFP
        2. 计算技术复杂性因子TCF
        3. 计算功能点数FP
  2. 工作量估算
    1. 工作量单位通常是人月(pm)
    2. 静态单变量模型
    3. 动态多变量模型
    4. COCOMO2模型
  3. Gantt图是历史悠久、应用广泛的制定进度计划的工具
  4. 人员组织
    1. 民主制程序员组
    2. 主程序员组
    3. 现代程序员组
  5. 软件质量保证的措施
    1. 基于非执行的测试(也称为复审或评审)
    2. 基于执行的测试(即软件测试)
  6. 软件配置管理是在软件的整个生命期内管理变化的一组活动
    1. 标识变化
    2. 控制变化
    3. 确保适当地实现了变化
    4. 向需要知道这类信息的人报告变化
  7. 软件配置管理五项任务
    1. 标识
    2. 版本控制
    3. 变化控制
    4. 配置审计
    5. 报告
  8. 软件过程的输出信息可以分为3类:
    1. 计算机程序
    2. 描述计算机程序的文档
    3. 数据
  9. 能力成熟度
    1. 初始级
    2. 可重复级
    3. 已定义级
    4. 已管理级
    5. 优化级
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值