软件工程知识点汇总

目录

  • 前言
  • 第1章 绪论
    • 1.1 软件和软件危机
      • 1.1.3 软件危机
    • 1.2 软件工程学的范畴
      • 1.2.1 软件开发方法学
    • 1.3 软件工程的发展
      • 1.3.1 3种编程范型
  • 第2章 软件生存周期与软件过程
    • 2.1 软件生存周期
    • 2.2 传统的软件过程
      • 2.2.1 瀑布模型(大题常考)
        • 特点
        • 阶段
        • 缺点
        • 存在的问题
      • 2.2.2 快速原型模型
        • 原型开发的优越性
        • 原型模型的启示
    • 2.3 软件演化模型
      • 2.3.1 增量模型(incremental model)
      • 2.3.2 螺旋模型(spiral model)
      • 2.3.3 构件集成模型
    • 2.4 形式化方法模型
      • 2.4.1 转换模型(transformational model)
      • 2.4.2 净室模型(cleanroom model)
    • 2.5 统一过程和敏捷过程
      • 2.5.1 统一过程(Rational Unified Process,RUP)
      • 2.5.2 敏捷过程
      • 2.5.3 极限编程(extreme programming,XP)
    • 2.6 软件可行性研究
      • 2.6.1 可行性研究的内容与步骤
        • 1. 研究的内容
      • 2.6.2 软件风险分析
  • 第3章 结构化分析与设计
    • 3.1 概述
      • 3.1.1 结构化分析与设计的由来
        • 结构化分析(structured analysis,SA)
        • 结构化设计(structured design,SD)
      • 3.1.2 SA 模型的组成与描述
        • 1. SA 模型的组成
        • 2. SA 模型的描述工具
          • (1) 数据流图(DFD)
          • (2) 数据字典(DD)
          • (3) 加工规格说明
      • 3.1.3 SD 模型的组成与描述
        • 1. SD 模型的组成
        • 2. SD 模型的描述工具
          • (1) SC 图的组成符
          • (2) SC 图的模块调用
    • 3.3 结构化系统设计
      • 3.3.1 SD概述
      • 3.3.2 SD的步骤:从DFD图到SC图
        • 1. 数据流图的类型
          • (1) 变换型结构
          • (2) 事务型结构
      • 3.3.5 优化初始SC图的指导规则
        • 1. 对模块划分的原则
        • 2. 高扇入/低扇出的原则
    • 3.4 模块设计
      • 3.4.1 目的与任务
      • 3.4.2 模块设计的原则与方法
      • 3.4.3 常用的表达工具
  • 第4章 面向对象与UML
    • 4.2 UML简介
      • 4.2.1 UML的组成
        • 1. UML的模型元素
        • 2. UML 的元模型结构
          • (1) 元元模型
          • (2) 元模型
          • (3) 模型
          • (4) 用户模型
        • 3. 图和视图
          • (1) 图(diagram)
          • (2) 视图(view)
      • 4.2.2 UML的特点
    • 4.3 静态建模
      • 4.3.1 用例图与用例模型
        • 1. 组成符
        • 2. 建立用例图
        • 3. 用例之间的关系
          • (1) 扩展关系(extend)
          • (2) 包含关系(include)
      • 4.3.2 类图和对象图
        • 1. 类图和对象图
      • 4.3.3 包
    • 4.4 动态建模
      • 4.4.1 消息
      • 4.4.2 状态图
      • 4.4.3 时序图和协作图
        • 1. 时序/顺序图
        • 2. 协作图
      • 4.4.4 活动图
    • 4.5 物理架构建模
      • 4.5.2 构件图和部署图
    • 4.6 UML工具
  • 第5章 需求分析与建模
    • 5.1 软件需求工程
      • 5.1.1 软件需求的定义
      • 5.1.2 软件需求的特性
    • 5.2 需求分析与建模
      • 5.2.1 需求分析的步骤
    • 5.3 需求获取的常用方法
      • 5.3.1 常规的需求获取方法
      • 5.3.2 用快速原型法获取需求
    • 5.4 需求模型
      • 5.4.1 需求模型概述
        • 1. 结构化需求模型
        • 2. 面向对象需求模型
      • 5.4.2 面向对象的需求建模
    • 5.5 软件需求描述
    • 5.6 需求管理
      • 5.6.1 需求管理的内容
        • 1. 需求管理的特定实践
        • 2. 需求变更的流程
  • 第6章 面向对象分析
    • 6.1 软件分析概述
      • 6.1.1 面向对象软件分析
        • 1. OOA的主要任务
        • 2. OOA的模型
        • 3. OOA的优点
        • 4. 分析模型的一般特点
      • 6.1.2 面向对象分析模型
        • 1. 典型的五层次模型
    • 6.2 面向对象分析建模
      • 6.2.1 识别与确定分析类
        • 1. 分析类的类型
  • 第7章 面向对象设计
    • 7.1 软件设计概述
      • 7.1.1 软件设计的概念
        • 1. 模块与构件
        • 3. 信息隐藏
      • 7.1.3 模块化设计
        • 2. 模块独立性
          • (1) 内聚
          • (2) 耦合
    • 7.2 面向对象设计建模
      • 7.2.1 面向对象设计模型
      • 7.2.2 面向对象设计的任务
      • 7.2.3 模式的应用
    • 7.3 系统架构设计
    • 7.4 系统元素设计
  • 第8章 编码与测试
    • 8.4 测试的基本概念
      • 8.4.2 测试的特性
        • 1. 挑剔性
        • 2. 复杂性
        • 3. 不彻底性
        • 4. 经济性
    • 8.5 黑盒测试和白盒测试
      • 8.5.1 黑盒测试
        • 1. 等价分类法(equivalence partitioning)
        • 2. 边界值分析法(boundary value analysis)
        • 3. 错误猜测法(error guessing)
      • 8.5.2 白盒测试
        • 1. 逻辑覆盖测试法
    • 8.7 多模块程序的测试策略
      • 8.7.1 测试的层次性
      • 8.7.2 单元测试
      • 8.7.3 集成测试
      • 8.7.4 确认测试
      • 8.7.5 系统测试
  • 第9章 软件维护
    • 9.5. 软件配置管理
      • 2. 软件配置项
  • 其它

前言

参考教材:《软件工程——原理、方法与应用》(第3版)

第1章 绪论

1.1 软件和软件危机

1.1.3 软件危机

软件危机指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件工程方法的产生源于软件危机,软件的复杂性是产生软件危机的内在原因。

产生软件危机的原因:

  • 软件维护费用急剧上升,直接威胁计算机应用的扩大。
  • 软件生产技术进步缓慢,是加剧软件危机的重要原因。

Q:什么是软件危机什么会产生软件危机br> A:软件危机是指落后的软件生产方式无法满足迅速增长的软件需求,从而导致软件开发与维护过程中出现一系列问题现象。原因主要有:一,软件维护费用急剧上升,直接威胁计算机应用的扩大;二,软件生产技术进步缓慢。

1.2 软件工程学的范畴

缺点

由于用户不可能一次性的提出所有的需求,而瀑布模型是属于“线性”的开发模型,因而瀑布模型不能适应用户在开发后期提出的需求变更。

存在的问题

按照瀑布模型来开发软件,只有当分析员能够做出准确的需求分析时,才能够得到预期的结果。不幸的是,由于多数用户不熟悉计算机,系统分析员对用户的专业也往往了解不深,因而很难在开发的初始阶段彻底弄清软件需求。为了解决这一问题,人们提出了“快速原型模型”。

2.2.2 快速原型模型

原型化方法是用户和设计者之间执行的一种交互构成,适用于需求不确定性高的情况。

在快速原型模型的开发过程中,用原型过程来代替全部开发阶段所用模型是演化型原型模型。

原型开发的优越性

  • 逼真
  • 快速

软件开发人员向用户提供一个“样品”,用户向开发人员迅速作出反馈。

原型模型的启示

下图显示了快速原型软件开发的过程模型。

2.3.2 螺旋模型(spiral model)

适用于大型软件的开发。

项目按照顺时针方向沿螺旋线移动时,每轮螺旋包含以下四种活动:

  1. 计划
  2. 风险分析
  3. 建立原型
  4. 用户评审

按此顺序周而复始,直到实现最终产品。

2.4 形式化方法模型

软件开发方法可分为:

  • 形式化方法——学术界流行
  • 非形式化方法——工业界流行

2.4.1 转换模型(transformational model)

转换模型是将形式化软件开发和程序自动生成技术相结合的一种软件开发模型。

2.5.2 敏捷过程

敏捷开发(agile development)是一种以人为核心、以迭代方式循序渐进开发的方法,其软件开发的过程称为“敏捷过程”。

下图为 4 个简单的价值观以及敏捷开发方法应遵循的 12 条原则:

  • DFD 图:Data Flow Diagram,数据流图
  • PSPEC:加工规格说明
  • CSPEC:控制规格说明
  • SRS:Software Requirements Specification,需求规格说明书
  • SC 图:Structure Chart,结构图

结构化分析(structured analysis,SA)

任务:

  • 建立系统分析模型(analysis model)
  • 编写软件需求规格说明书

步骤:

  • 自顶向下对系统进行功能分解,画出分层 DFD 图
  • 由后向前定义系统的数据和加工,编写 DD 和 PSPEC
  • 最终写出 SRS

数据流图和数据字典共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。

结构化设计(structured design,SD)

SD 阶段先把分析模型中的 DFD 图转换为最终 SC 图。

软件设计 = 概要/总体设计 + 详细设计/模块设计

  • DD:Data Dictionary,数据字典
  • E-R 图:Entity-Relation Diagram,实体联系图
  • STD 图:Status Transform Diagram,状态变换图

2. SA 模型的描述工具

(1) 数据流图(DFD)

高度抽象的软件系统功能模型:

(2) 数据字典(DD)
  • 数据流

  • 数据项

  • 判定表或判定树
    某公司为推销人员制定了奖励办法,把奖金与推销金额及预收贷款的数额挂钩。凡每周推销金额不超过 10000 元的,按预收贷款是否超过 50%,分别奖励推销额的 6% 或 4%。若推销金额超过 10000 元,则按预收贷款是否超过 50% ,分别奖励推销额的 8% 或 5%。对于月薪低于 1000 元的推销员,分别另发鼓励奖 300、200 和 500、300 元。试分别采用判定表和判定树为 DFD 图中用来“计算奖金”的加工写出 PSPEC。
    下图分别显示了用判定表和判定树描述的 PSPEC,二者的含义相同。

3.1.3 SD 模型的组成与描述

1. SD 模型的组成

SD 模型是由 SA 模型映射而来的。

(2) SC 图的模块调用

1. 数据流图的类型

(1) 变换型结构

由传入路径、变换中心和传出路径 3 部分组成。

下图显示了该型结构的基本模型和数据流:

3.3.5 优化初始SC图的指导规则

1. 对模块划分的原则

一般来说,模块的总行数应该控制在 10-100 行的范围内,最好为 30-60 行,能容纳在一张打印纸内。

2. 高扇入/低扇出的原则

扇入高则上级模块多,能够增加模块的利用率;扇出低则表示下级模块少,可以减少模块调用和控制的复杂度。

设计良好的软件通常具有瓮型(oval-shaped)结构,两头小,中间大,如图所示。这类软件在下部收拢,表明它在低层模块中使用了较多高扇入的共享模块。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月7日
下一篇 2020年11月7日

相关推荐