为你推荐
内容简介
推荐序1
推荐序2
推荐语
前言
第1部分 个人软件工程
1 软件开发的比喻
1.1 什么是软件
1.1.1 软件不是被制造出来的
1.1.2 软件不会磨损
1.1.3 大多数软件都是定制化的
1.1.4 软件可以很容易升级
1.1.5 软件不是一个独立的实体
1.2 与其他领域的相似性
1.2.1 程序员像艺术家一样
1.2.2 程序员像建筑师一样
1.2.3 程序员像工程师一样
1.2.4 程序员像工匠一样
1.2.5 究竟是艺术家、建筑师、工程师还是工匠
1.3 软件工程
1.3.1 一个正式的定义
1.3.2 项目规模
1.3.3 软件工程的问题
1.4 软件匠艺
1.4.1 教育
1.4.2 学徒阶段
1.4.3 软件熟练工
1.4.4 大师级工匠
1.4.5 软件匠艺的不足
1.5 通往卓越编程的道路
1.6 获取更多信息
2 生产力
2.1 什么是生产力
2.2 程序员生产力与团队生产力的比较
2.3 工时和实际时间
2.4 概念复杂性和范围复杂性
2.5 预测生产力
2.6 度量指标,以及我们为什么需要它们
2.6.1 可执行文件大小度量指标
2.6.2 机器指令度量指标
2.6.3 代码行数度量指标
2.6.4 语句数量度量指标
2.6.5 功能点分析
2.6.6 McCabe圈复杂度度量指标
2.6.7 其他度量指标
2.6.8 度量指标的问题
2.7 我们怎样才能每天写出10行代码
2.8 估计开发时间
2.8.1 估计小型项目的开发时间
2.8.2 估计中型项目和大型项目的开发时间
2.8.3 估计开发时间的问题
2.9 危机模式项目管理
2.10 如何提高工作效率
2.10.1 合理选择软件开发工具
2.10.2 管理开销
2.10.3 设置明确的目标和里程碑
2.10.4 练习自我激励
2.10.5 集中注意力,消除干扰
2.10.6 如果你觉得无聊,那么就做点别的事情
2.10.7 尽可能自立
2.10.8 识别何时需要帮助
2.10.9 克服士气低落
2.11 获取更多信息
3 软件开发模型
3.1 软件开发生命周期
3.2 软件开发模型
3.2.1 非正式模型
3.2.2 瀑布模型
3.2.3 V模型
3.2.4 迭代模型
3.2.5 螺旋模型
3.2.6 快速应用程序开发模型
3.2.7 增量模型
3.3 软件开发方法论
3.3.1 传统的(预测型)方法论
3.3.2 自适应型方法论
3.3.3 敏捷开发
3.3.4 极限编程
3.3.5 Scrum
3.3.6 功能驱动开发
3.4 卓越程序员的模型和方法论
3.5 获取更多信息
第2部分 UML
4 UML和用例介绍
4.1 UML标准
4.2 UML用例模型
4.2.1 用例图的元素
4.2.2 用例包
4.2.3 用例包含
4.2.4 用例泛化
4.2.5 用例扩展
4.2.6 用例故事
4.2.7 用例场景
4.3 UML系统边界图
4.4 除用例以外
4.5 获取更多信息
5 UML活动图
5.1 UML活动状态符号
5.1.1 开始和结束状态
5.1.2 活动
5.1.3 状态
5.1.4 转移
5.1.5 条件
5.1.6 合并点
5.1.7 事件和触发器
5.1.8 分叉和合并(同步)
5.1.9 调用符号
5.1.10 分区
5.1.11 注释和注解
5.1.12 连接器
5.1.13 其他活动图符号
5.2 扩展UML活动图
5.3 获取更多信息
6 UML类图
6.1 UML中的面向对象分析与设计
6.2 类图中的可见性
6.2.1 公共的类可见性
6.2.2 私有的类可见性
6.2.3 受保护的类可见性
6.2.4 包级别的类可见性
6.2.5 不支持的可见性类型
6.3 类属性
6.3.1 属性可见性
6.3.2 属性派生值
6.3.3 属性名称
6.3.4 属性数据类型
6.3.5 操作数据类型(返回值)
6.3.6 属性多重性
6.3.7 属性初始值
6.3.8 属性字符串
6.3.9 属性语法
6.4 类操作
6.5 UML的类关系
6.5.1 类的依赖关系
6.5.2 类的关联关系
6.5.3 类的聚合关系
6.5.4 类的组合关系
6.5.5 关系特性
6.5.6 类的继承关系
6.6 对象
6.7 获取更多信息
7 UML交互图
7.1 时序图
7.1.1 生命线
7.1.2 消息类型
7.1.3 消息标签
7.1.4 消息序号
7.1.5 守卫条件
7.1.6 迭代
7.1.7 长延迟和时间约束
7.1.8 外部对象
7.1.9 激活条
7.1.10 分支
7.1.11 可选流
7.1.12 对象的创建和销毁
7.1.13 时序片段
7.2 协作图
7.3 获取更多信息
8 其他UML图
8.1 组件图
8.2 包图
8.3 部署图
8.4 合成结构图
8.5 状态图
8.6 关于UML的更多信息
8.7 获取更多信息
第3部分 文档
9 系统文档
9.1 系统文档类型
9.2 可追溯性
9.2.1 建立文档可追溯性的方法
9.2.2 标签格式
9.2.3 需求/反向可追溯性矩阵
9.3 确认、验证和审查
9.4 通过文档降低开发成本
9.4.1 通过确认降低成本
9.4.2 通过验证降低成本
9.5 获取更多信息
10 需求文档
10.1 需求的来源和可追溯性
10.1.1 建议的需求格式
10.1.2 好需求的特点
10.2 设计目标
10.3 系统需求规范文档
10.4 软件需求规范文档
10.4.1 介绍
10.4.2 总体描述
10.4.3 具体需求
10.4.4 支持信息
10.4.5 软件需求规范示例
10.5 创建需求
10.6 用例
10.6.1 启用/禁用调试模式
10.6.2 启用/禁用以太网
10.6.3 启用/禁用RS-232
10.6.4 启用/禁用测试模式
10.6.5 启用/禁用USB
10.6.6 读取拨码开关
10.7 根据用例创建DAQ软件需求
10.8 (从SRS中选择的)DAQ软件需求
10.9 用需求信息更新可追溯性矩阵
10.9.1 通过审查验证的需求
10.9.2 通过测试验证的需求
10.10 获取更多信息
11 软件设计描述文档
11.1 IEEE Std 1016-1998和IEEE Std 1016-2009
11.2 IEEE 1016-2009的概念模型
11.2.1 设计关注点和设计利益相关方
11.2.2 设计观点和设计元素
11.2.3 设计视图、设计覆盖和设计原理
11.2.4 IEEE Std 1016-2009的概念模型
11.3 SDD所需内容
11.3.1 SDD标识
11.3.2 设计利益相关方和设计关注点
11.3.3 设计视图、设计观点、设计覆盖和设计原理
11.4 SDD的可追溯性和标签
11.5 建议的SDD大纲
11.6 SDD文档示例
11.7 用设计信息更新可追溯性矩阵
11.8 创建软件设计
11.9 获取更多信息
12 软件测试文档
12.1 Std 829中的软件测试文档
12.1.1 流程支持
12.1.2 完整性级别和风险评估
12.1.3 软件开发测试级别
12.2 测试计划
12.2.1 主测试计划
12.2.2 级别测试计划
12.2.3 级别测试设计文档
12.3 软件审查列表文档
12.3.1 SRL大纲示例
12.3.2 SRL文档示例
12.3.3 将SRL项添加到可追溯性矩阵中
12.4 软件测试用例文档
12.4.1 STC文档中的介绍
12.4.2 详细说明
12.4.3 其他
12.4.4 软件测试用例文档示例
12.4.5 用STC信息更新RTM文档
12.5 软件测试过程文档
12.5.1 IEEE Std 829-2009软件测试过程
12.5.2 软件测试过程的大纲扩展
12.5.3 STP文档中的介绍
12.5.4 测试过程
12.5.5 其他
12.5.6 索引
12.5.7 STP文档示例
12.5.8 用STP信息更新RTM文档
12.6 级别测试日志
12.6.1 级别测试日志文档中的介绍
12.6.2 详细说明
12.6.3 术语表
12.6.4 关于测试日志的一些注释
12.7 异常报告
12.7.1 异常报告文档中的介绍
12.7.2 详细说明
12.7.3 对异常报告的几点建议
12.8 测试报告
12.8.1 主测试报告的简要介绍
12.8.2 级别测试报告
12.9 你真的需要这些吗
12.10 获取更多信息
后记:如何设计卓越的代码
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜