要点:
概念以及软件工程的基本要素。
软件工程基本过程中典型活动以及主要任务。
理解软件开发中典型的软件开发模型,比如,瀑布模型,演化模型,螺旋模型,增量模型,喷泉模型等。
软件设计过程中设计的各种技术,例如,数据流图, UML 中的五种基本图 ( 类图,用例图,状态图等 ) , PAD 图, N-S 图,流程图及其他们之间的转换。
软件测试技术中的黑盒和白盒测试及其具体内容。
CMM
的基本概念,等级框架,每一等级包含的关键过程域和基本特征等等。
一.基本概念
软件工程:软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足用户要求的软件产品的工程,或以此为研究对象的学科
原则:
选取良好的开发范型
采用良好的设计方法
提供高质量的支持
实施有效的管理
目标:可用性 正确性 合算性
活动:需求 设计 实现 确认 支持
三要素:目标 原则 活动
二.软件工程
生存周期过程:
基本过程:获取过程 供应过程 开发过程 运行过程 维护过程
- -开发过程(过程实现 系统需求分析 体系结构设计 软件需求分析 软件体系结构设计 软件详细设计 软件编码和测试 软件集成 软件合格性测试 系统集成 系统合格性测试 软件安装 软件验收支持)
支持过程:文档过程 配置管理过程 质量保证过程 验证过程 确认过程
组织过程:管理过程 基础设施过程 改进过程 人力资源过程
软件生存周期模型:
瀑布模型 成熟功能
增量模型 已有旧版
演化模型 没有完整需求
螺旋模型 精细规划
喷泉模型 迭代回归
生存周期过程的规划与监控:
软件项目生存周期过程定义—在一个项目的生存周期中,每一个任务都通过一个或多个过程的方式来完成的,所有这些相关过程的组合,称为软件项目生存周期过程
软件项目生存周期过程的规划:选型 精细化 实现 | 监控:软件生命周期+必要调整
能力成熟度模型
基本概念:在制造及传递某种合乎特定质量标准的产品时,必须配合适当的管理及技术作业程序,这些程序所组成的结构,称为质量体系
关系:过程能力和过程性能成正比
等级框架:初始级(混乱) 可重复级(复制) 已定义级(文档) 可管理级(量化) 持续优化级(吸收新技术)
关键过程:
1+2需求规约 项目规划 跟踪和监督 合同管理 质量保证 配置管理
2+3组织过程 焦点 定义 培训大纲 综合软件管理 产品工程 组间协调 同行评审
3+4定量过程管理 软件质量管理
4+5缺陷预防 技术更新管理 过程变更管理
基本特征:
组织+项目+过程能力 | 输入输出 阶段化 精细化 阶段细化 流程重组
CMM等级的内部结构
成熟度等级 指示过程能力 包含关键过程域(18个)
关键过程域 达到目标 组织共同特征(5个)
共同特征 解决实现或制度化 包含关键实践(316个)
关键实践 描述基础设施或活动
PST/TSP 个人和小组软件过程
CMMI 软件SW 系统工程SE 集成产品管理IPD
三.软件需求与软件需求规约
定义:一个需求是一个“要予构造”的陈述,描述了待开发产品功能上的能力、性能参数或者其他性质
分类:功能需求 | 性能需求 外部接口需求 设计约束 质量属性
需求发现技术:自悟 交谈 观察 小组会 提炼
需求规约 作用(受控和管理起始点)及格式(非形式化 半形式化 形式化)
四.系统规约及软件设计
结构化方法学
DFD Page76
基本术语:数据流 加工 数据存储 数据源和数据潭
建模过程:系统环境图 | 自顶向下,逐步求精 | 定义数据字典(顺序 选择 重复) | 描述加工(结构化语言,判定表,判定数)
总体设计:模块结构图 层次图 HIPO图
设计原则:
--耦合(内容 公共 控制 标记 数据) 内聚(偶然内聚 逻辑内聚 时间内聚 过程内聚 通信内聚 顺序内聚 功能内聚)
--提高独立性 模块规模适中 深度宽度 扇入扇出 模块控制在范围内 降低接口复杂度 模块功能可预测
数据流图(变换型数据流图-获取数据+变换数据+输出数据 事务型数据流图-集中发散式不同路径)
--变换设计:输入和输出模块分解
--事务设计:路径模块分解
【输入+输出+变换 Page105】
DFD==>MSD
伪码 PAD N-S互转
详细设计:顺序 选择 循环 | if...else... switch case do while until
程序流程图
盒图N-S图
PAD图
类程序语言
设计规约
面向对象方法学
1.类与对象
UML:类的属性(名称 属性 操作)
属性:可见性 属性名 类型 多重性 初始值 性质串
操作:可见性 操作名 参数表 返回类型 性质串
更多表示:职责 注解 前置或是后置条件 类的状态机 类的内部结构 体现类的协作
建模中用途:模型化概念 职责分布模型 模型化建模中使用的基本类型
2.接口:接口 实现类 和调用类
3.协作:交互各方 交互方式 交互内容 虚线椭圆
4.用况:动作描述 椭圆
5.主动类:与普通类相比,多了两条实线
6.构件:嵌套关系,包括更小的构件
7.制品:物理信息
8.节点:计算机资源
表达关系的术语:
关联:关联名 导航 角色 可见性 多重性 限定符 聚合 组合 关联类 约束
泛华:基类==>派生类 完整 不完整 互斥 重叠
细化:接口实现
依赖:结构关系 继承关系 精化关系 依赖关系
RUP
用况:分析—>设计—>实现—>测试—>用况
体系:用况 分析 设计 实现 部署
迭代:需求获取 需求分析 设计 实现 测试 | 初始 细化 构造 移交
核心工作流:
需求获取 :特征表 领域模型 用况模型 补充需求
需求分析 :分析包(依赖机制) 分析类(边界类 实体类 控制类) 用况细化(分析类之间作用)
设计:设计机制(特定应用层) 设计机制(一般应用层) 中间层 系统软件层
实现和测试 :构件 单元测试 集成和连接 映射部署模型 | 测试模型 输入输出和条件 缺陷模式
TOOL
—类图:类 接口 关联 泛化 依赖
—用例图:主题 用例 参与者 关联 泛化 依赖
--状态图 :
1.状态:名字(标识状态文本串) 进入/退出效应(entry/exit) 状态内部转移(动作标号’/‘动作表达式) 组合状态(正交包含子状态 非正交是用虚线隔开) 被延迟事件 | 状态 初始状态 终止状态 嵌套状态 转移 事件 事件类型 动作 触发器 事件参数
2.事件:信号 调用 时间变化和变化事件 发送事件和接收事件
3.状态转移:源状态 转移触发器 监护状态 效应 目标状态(事件触发器 监护条件 动作表达式)
4.建立状态机模型:方框 箭头 说明
--顺序图
1.术语(消息 对象生命线 聚焦控制)
2.控制操作子(选择 条件 并发 迭代)
五.软件测试
概念:按照特定规程发现软件错误的过程
任务:检验系统是否满足规定的需求,或是清楚了解预期结果与实际结果之间的差异
步骤:单元测试(模块接口 数据结构 路径选择) 集成测试(自顶向下 自底向上) 有效性测试(黑盒 配置复审) 系统测试
过程模型:环境(开发软硬件环境) 对象模型(程序的简化抽象) 错误模型(错误级别)
白盒:
路径测试技术(控制流图 测试策略-语句覆盖 分支覆盖 条件组合覆盖 路径覆盖 路径选取-单循环 嵌套循环 级联循环)
黑盒:
事务处理流程技术(事务与事务流程图判定包括 并生 丝分裂 吸收 结合 | 步骤 获取流程图 浏览复审 用例设计 测试执行)
等价类划分(输入条件 有效等价类 无效等价类 ==> 为有效等价类 和 无效等价类 分别建立测试用例,包括测试用例 期望结果和覆盖范围)
边界值分析(等于 大于 小于)
因果图(图形符号包括 恒等 非 或 与 | 约束符号 互斥 包含 唯一 要求 屏蔽)
六.软件工程管理
软件质量的概念及质量模型
经典管理模型: 规划(资源计划 资金和物理风险评估) 组织(人员和任务分配) 领导(开发团队专心致志工作) 控制(人员安排和配置管理) 人员安排
PDCA:规划 实施 状态信息监测 实施调整
配置管理:
—配置项:代码 文档 数据
—基线:正式复审的软件配置项
—管理过程:标识软件配置对象 版本控制 变化控制 配置审计 状态报告
软件质量保证活动
软件度量学:代码行 功能点方法 对象点方法
成本估算度量学:静态单变量模型 动态多变量模型 COCOMO2模型
进展评估:开发时间 gantt图 工程网络 工程进度 关键路径 机动时间
七.软件质量、质量特征以及软件质量保证
前提:由于受限的资源 效能的冲突导致质量特征无法全部实现,与客户交流是关键,使用原型构造是基本方法,
概念:软件与明确地和隐含地定义的需求相一致的程度
质量模型:CMM ISO9000
八.CASE工具与环境
CASE分类:
一般性使用工具
支持特定技术和方法的工具:
—需求分析:数据流程图 实体-关系模型 状态转换图 数据字典 面向对象建模
—概要设计:分析、验证需求定义 程序结构图 面向对象建模
—详细设计:HIPO图 PDL PAD 代码转换工具
—编码工具:正文编辑 连接 调试
—测试:静态测试 动态测试 测试结果/报告/用例生成
—维护与理解:文档分析 程序理解 程序结构分析 源程序-PAD转换工具 源程序—流程图转换工具
--配置管理:版本管理工具 变化管理工具
支持管理活动的工具:配置管理工具 成本估算工具 进度控制工具 文档工具
支持过程活动的工具:设计工具(快速原型工具 模型化 和 模拟工具等)和 程序设计辅助工具(排错工具 代码生成器) 测试工具和维护工具
CASE工作台:程序设计+分析设计+测试+交叉开发+配置管理+文档工作台+项目管理工作台
--分析与设计工作台(数据字典 代码生成器 图表创建工具 结构化图标制作工具 报告生成设施 查询语言设施 移入移出设施 设计分析和检查工具 中央信息仓库)
--程序设计工作台(程序库 连接器 可执行程序 加载器 可执行程序 执行报告 动态分析器 动态分析器 静态分析器 程序报告 结构化编辑器 交叉引用 按格式打印 语法树 符号表 已编译代码)
--软件测试工作台(动态分析器 源代码 执行报告|被测试的程序 测试管理器 模拟器 | 预测期 测试预估 测试数据 测试结果 规约 测试数据生成器 | 文件比较器 报告生成器 测试结果报告)
集成化CASE环境概念:
Wasserman 五级模型—平台 数据 控制 过程 表示集成
APSE模型—MAPSE 配置管理 外壳 编译器 测试器 连接加载器 KAPSE
环境层次模型—平台 框架 工具应用
PCTE—事务执行 数据通信 ERA模型 安全模型