第七
SYSTEM ARCHITECT EXAM · HOUR 07

软件工程
基础知识

对应教程第 5 章 · 系统架构设计师备考精要

题型 单选题
分值占比 8 – 15 分
章节数 7 大模块
01

软件工程

SOFTWARE ENGINEERING · 过程模型与成熟度

软件危机

软件危机的六大表现 高频考点
  • 软件开发进度难以预测
  • 软件开发成本难以控制
  • 软件功能难以满足用户期望
  • 软件质量无法保证
  • 软件维护困难
  • 软件文档资料缺少或不规范

软件过程模型

软件过程模型也称为软件生命周期模型,用于描述软件开发各阶段的活动安排。

(1) 瀑布模型

缺点 必考
  • 需求难以一次确定
  • 变更的代价高
  • 结果难以预见
  • 各阶段工作不能并行

(2) 原型模型

  • 解决了需求难以一次确定结果难以预见的问题
  • 分为原型开发目标软件开发两部分

(3) 螺旋模型

  • 快速原型的基础上结合瀑布模型扩展而成
  • 四大活动:目标设定风险分析开发和有效性验证评审
  • 适用于面向规格说明、面向过程和面向对象的开发方法
  • 强调风险分析(核心特征,送分点)

(4) 敏捷模型

  1. 极限编程 XP:高效、低风险、测试先行(先写测试代码,再编写程序)
  2. 水晶系列方法:不同的项目,采取不同的策略
  3. 并列争球法 Scrum:侧重于项目管理
    • 包括一系列实践和预定义决策的过程骨架
    • 产品 Backlog 管理产品的需求
    • 开发过程分为若干个短的迭代周期 Sprint
    • 在 Sprint 中,从产品 Backlog 中挑选最高优先级的需求组成 Sprint Backlog
  4. 特征驱动开发方法

(5) 软件统一过程模型 RUP

RUP 三大特点 高频
  • 用例驱动
  • 以架构为中心
  • 迭代和增量

RUP 是一种重量级过程模型,包含 9 个核心工作流:

业务建模 需求 分析与设计 实现 测试 部署 配置与变更管理 项目管理 环境
4+1 视图模型:RUP 用于描述架构的视图,后被 UML 吸收采纳。包含 逻辑视图、实现视图、进程视图、部署视图、用例视图

软件能力成熟度模型

CMM

软件能力成熟度模型,是一个概念模型,模型框架和表示是刚性的,不能随意改变。

CMMI

软件能力成熟度模型集成

CMMI 的 5 个成熟度等级

① 初始级 ② 已管理级 ③ 已定义级 ④ 量化管理级 ⑤ 优化级
02

需求工程

REQUIREMENTS ENGINEERING · 需求的获取与管理

软件需求的层次

三个层次 必考
  1. 业务需求:组织机构或客户对系统、产品高层次的目标要求
  2. 用户需求:用户使用产品必须要完成的任务,是用户对该软件产品的期望
    • 业务需求 + 用户需求 = 用户原始需求文档
  3. 功能需求:从系统操作角度定义了开发人员必须实现的软件功能,用以满足业务需求和用户需求

需求工程定义

  • 定义:应用已证实有效的原理、方法,通过合适的工具和记号,系统地描述待开发系统及其行为特征和相关约束
  • 5 个阶段:
    需求获取 需求分析 形成需求规格 需求确认与验证 需求管理
  • 软件需求规格说明书 SRS 包括:功能需求非功能需求设计约束过程约束

需求获取

步骤(6 步)

  1. 开发高层的业务模型
  2. 定义项目范围和高层需求
  3. 识别用户角色和用户代表
  4. 获取具体的需求
  5. 确定目标系统的业务工作流
  6. 需求整理与总结

常用方法

用户面谈 需求专题讨论会 问卷调查 现场观察 原型化方法 头脑风暴法

需求变更与 CCB

需求变更过程

问题分析和变更描述 变更分析和成本计算 变更实现

变更控制委员会 CCB 过程

制定决策 交流情况 重新协商约定

需求跟踪

  • 两种方式:正向跟踪逆向跟踪
  • 工具:需求跟踪矩阵
03

系统分析与设计

SYSTEM ANALYSIS & DESIGN · 结构化与面向对象

结构化方法 SASD

① 结构化分析 SA

利用图形表达用户需求中的功能需求,常用工具:

数据流图 数据字典 结构化语言 判定表 判定树

② 结构化设计 SD

一种面向数据流的设计方法,以数据流图和数据字典等文档为基础,自顶向下、逐步求精、模块化的过程。

  • 分为概要设计详细设计两个阶段
  • 模块是实现功能的基本单位,具有 功能、逻辑、状态 三个基本属性
  • 模块分解应遵循 高内聚、低耦合 的设计原则
  • 概要设计使用 系统结构图 SC
模块耦合程度(由低到高,送分题): 非直接耦合 → 数据耦合 → 标记耦合 → 控制耦合 → 通信耦合 → 公共耦合 → 内容耦合

内聚表示模块内部代码联系的紧密程度。

③ 结构化编程 SP

  • SP 通过顺序、分支、循环三种基本的控制结构
  • SP 强调:自顶向下、逐步细化;清晰第一、效率第二;基本结构,组合而成

④ 数据库设计

通常采用 ER 图 来表示。

面向对象方法

① 面向对象分析 OOA

5 个层次
  • 主题层
  • 对象类层
  • 结构层
  • 属性层
  • 服务层
5 个活动
  • 标识对象类
  • 标识结构
  • 定义主题
  • 定义属性
  • 定义服务
9 大基本原则
抽象 封装 继承 分类 聚合 关联 消息通信 粒度控制 行为分析

② 面向对象设计 OOD

  • 数据结构和在数据结构上定义的操作算法封装在一个对象之中
  • 类的分类:实体类控制类边界类

③ 面向对象编程 OOP

④ 数据持久化和数据库

  • 把对象持久化到关系数据库中
  • 常见框架:HibernateiBatisMybatisJDO (Java Data Object)
04

软件测试

SOFTWARE TESTING · 测试目的与分类
测试目的

保证软件的质量、确认软件以正确的方式做了用户所期望的事情。

测试分类

按程序执行状态 分类1
  • 静态测试
  • 动态测试
按是否关注实现 分类2
  • 黑盒测试
  • 白盒测试
  • 灰盒测试
按程序执行方式 分类3
  • 人工测试
  • 自动化测试
按阶段 分类4
  • 单元测试
  • 集成测试
  • 系统测试
  • 性能测试
  • 验收测试
05

净室软件工程 CSE

CLEAN-ROOM SOFTWARE ENGINEERING

净室软件工程(CSE) 是一种在软件开发过程中强调在软件中建立正确性的需要的方法。

理论基础

函数理论 抽样理论

技术手段(4 项)

  1. 统计过程控制下的增量式开发
  2. 基于函数的规范和设计
  3. 正确性验证
  4. 统计测试和软件认证
    核心要点:强调将正确性验证作为发现和消除错误的主要机制
06

基于构件的软件工程 CBSE

COMPONENT-BASED SOFTWARE ENGINEERING

CBSE:一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。

5 大特征

可组装性 可部署性 文档化 独立性 标准化

构件模型

主流模型 必考
  • Web Services 模型
  • Sun 公司的 EJB 模型
  • 微软的 .Net 模型
模型要素
  • 接口
  • 使用信息
  • 部署信息
通用服务
  • 平台服务
  • 支持服务

CBSE 过程

  1. 系统需求概览
  2. 识别候选构件
  3. 根据发现的构件修改需求
  4. 体系结构设计
  5. 构件定制与适配
  6. 组装构件,创建系统

CBSE 与传统软件开发的区别

  1. 早期需要完整的需求,以便尽可能多地识别出可复用的构件
  2. 早期阶段根据可利用的构件来细化和修改需求以匹配 CBSE
  3. 架构设计完成后,可能需要修改构件以适合功能和架构的需求
  4. 开发过程就是组装构件的过程,有时需要开发适配器
  5. CBSE 中的架构设计阶段特别重要,决定和限制了可选构件的范围

构件组装方式

顺序组装 · 层次组装 · 叠加组装
07

软件项目管理

SOFTWARE PROJECT MANAGEMENT · 进度·配置·质量·风险

软件进度管理

六大活动
活动定义 活动排序 活动资源估计 活动历时估计 制定进度计划 进度控制
  • 工作分解结构(WBS 树):用于任务的拆解
  • 任务活动图:项目进度管理、项目成本管理等一系列项目管理活动的基础,通常采用甘特图等方式展示和管理项目活动

软件配置管理

版本控制

对软件开发过程中各种文件变更的管理。

变更控制

对变更进行管理,确保变更有序进行。

  • 来自外部的变更需求
  • 来自内部的变更需求

软件质量管理

软件质量保证 SQA

主要目标 高频

建立一套有计划、有系统的方法,向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。

  • 事前预防工作
  • 尽量在刚刚引入缺陷时将其捕获
  • 作用于过程而不是最终产品
  • 贯穿于所有活动中
主要任务
  • SQA 审计与评审
  • SQA 报告
  • 处理不符合问题

软件质量认证

ISO 9000 ISO 9001 CMM

软件风险管理

软件项目风险:指在软件开发过程中遇到的预算和进度等方面的问题,以及这些问题对软件项目的影响。

风险管理的主要目标是预防风险,及应对发生的风险

Boehm 风险管理体系 人名
  • 风险估计
  • 风险控制
Charette 风险管理体系 人名
  • 风险分成分析
  • 风险管理