软件开发工程化的个人体验

115
. . . . . . 软件开发工程化 刘鑫 <[email protected]> 软件开发过程的个人体验 March 1, 2011

Upload: march-liu

Post on 27-Jun-2015

1.490 views

Category:

Business


7 download

DESCRIPTION

软件开发工程化过程的一些个人体验总结。太平洋网络(PCOnline)入职讲座

TRANSCRIPT

Page 1: 软件开发工程化的个人体验

. . . . . .

软件开发工程化

刘鑫 <[email protected]>

软件开发过程的个人体验

March 1, 2011

Page 2: 软件开发工程化的个人体验

. . . . . .

软件项目 (?) 开发

Page 3: 软件开发工程化的个人体验

. . . . . .

工程化?

Page 4: 软件开发工程化的个人体验

. . . . . .

规范性

Page 5: 软件开发工程化的个人体验

. . . . . .

计划性

Page 6: 软件开发工程化的个人体验

. . . . . .

可重复

Page 7: 软件开发工程化的个人体验

. . . . . .

然而

时至今日

Page 8: 软件开发工程化的个人体验

. . . . . .

软件开发仍是一个缺少控制的生产领域

Page 9: 软件开发工程化的个人体验

. . . . . .

WHY?

Page 10: 软件开发工程化的个人体验

. . . . . .

软件开发的特性

▶ 高度依赖于个人才能

▶ 风险预知有一定难度▶ 创造力的价值远高于规范性▶ 充满变化,产出服务而非实物

Page 11: 软件开发工程化的个人体验

. . . . . .

软件开发的特性

▶ 高度依赖于个人才能▶ 风险预知有一定难度

▶ 创造力的价值远高于规范性▶ 充满变化,产出服务而非实物

Page 12: 软件开发工程化的个人体验

. . . . . .

软件开发的特性

▶ 高度依赖于个人才能▶ 风险预知有一定难度▶ 创造力的价值远高于规范性

▶ 充满变化,产出服务而非实物

Page 13: 软件开发工程化的个人体验

. . . . . .

软件开发的特性

▶ 高度依赖于个人才能▶ 风险预知有一定难度▶ 创造力的价值远高于规范性▶ 充满变化,产出服务而非实物

Page 14: 软件开发工程化的个人体验

. . . . . .

外部风险难以跟踪

需求随时变化

Page 15: 软件开发工程化的个人体验

. . . . . .

规范要为生产让步

创造力是最有价值的资源

Page 16: 软件开发工程化的个人体验

. . . . . .

周期延长

产业服务化

Page 17: 软件开发工程化的个人体验

. . . . . .

强调个人能力

个人能力的发挥可能决定项目

Page 18: 软件开发工程化的个人体验

. . . . . .

那么

拒绝工程化?

Page 19: 软件开发工程化的个人体验

. . . . . .

当然不是!

Page 20: 软件开发工程化的个人体验

. . . . . .

软件工程化的好处

Page 21: 软件开发工程化的个人体验

. . . . . .

减少重复,专注于创造

Page 22: 软件开发工程化的个人体验

. . . . . .

减少风险,提升劳动价值

Page 23: 软件开发工程化的个人体验

. . . . . .

提高沟通效率,降低协作成本

Page 24: 软件开发工程化的个人体验

. . . . . .

允许计划变更

明确计划和目标

Page 25: 软件开发工程化的个人体验

. . . . . .

提高协作效率

建立沟通渠道

Page 26: 软件开发工程化的个人体验

. . . . . .

可跟踪,可回溯

辅助生产管理

Page 27: 软件开发工程化的个人体验

. . . . . .

减少重复劳动

流程平台化,工具化

Page 28: 软件开发工程化的个人体验

. . . . . .

升华知识价值

文档管理

Page 29: 软件开发工程化的个人体验

. . . . . .

稳定质量

建立测试过程

Page 30: 软件开发工程化的个人体验

. . . . . .

消灭天才神话

建立可预期过程

Page 31: 软件开发工程化的个人体验

. . . . . .

工程无魔法

Page 32: 软件开发工程化的个人体验

. . . . . .

常见工程化管理方法

▶ 版本控制

▶ bug 跟踪▶ 文档管理▶ 在线协作▶ 测试驱动▶ ……

Page 33: 软件开发工程化的个人体验

. . . . . .

常见工程化管理方法

▶ 版本控制▶ bug 跟踪

▶ 文档管理▶ 在线协作▶ 测试驱动▶ ……

Page 34: 软件开发工程化的个人体验

. . . . . .

常见工程化管理方法

▶ 版本控制▶ bug 跟踪▶ 文档管理

▶ 在线协作▶ 测试驱动▶ ……

Page 35: 软件开发工程化的个人体验

. . . . . .

常见工程化管理方法

▶ 版本控制▶ bug 跟踪▶ 文档管理▶ 在线协作

▶ 测试驱动▶ ……

Page 36: 软件开发工程化的个人体验

. . . . . .

常见工程化管理方法

▶ 版本控制▶ bug 跟踪▶ 文档管理▶ 在线协作▶ 测试驱动

▶ ……

Page 37: 软件开发工程化的个人体验

. . . . . .

常见工程化管理方法

▶ 版本控制▶ bug 跟踪▶ 文档管理▶ 在线协作▶ 测试驱动▶ ……

Page 38: 软件开发工程化的个人体验

. . . . . .

工程化管理的一些策略和工具

Page 39: 软件开发工程化的个人体验

. . . . . .

版本管理工具

Page 40: 软件开发工程化的个人体验

. . . . . .

跟踪管理变更

Page 41: 软件开发工程化的个人体验

. . . . . .

团队协作

Page 42: 软件开发工程化的个人体验

. . . . . .

集成、测试、发布……

为其他工程过程提供支持

Page 43: 软件开发工程化的个人体验

. . . . . .

版本管理工具的发展

从集中趋向分布

Page 44: 软件开发工程化的个人体验

. . . . . .

版本管理工具的发展

从强制趋向松散

Page 45: 软件开发工程化的个人体验

. . . . . .

版本管理工具的发展

更开放,更灵活

Page 46: 软件开发工程化的个人体验

. . . . . .

锁定式

VSS

Page 47: 软件开发工程化的个人体验

. . . . . .

中心式

SVN

Page 48: 软件开发工程化的个人体验

. . . . . .

分布式

GIT、Mercurial、Bazzar……

Page 49: 软件开发工程化的个人体验

. . . . . .

回家也可以加班 XD

分布式版本管理工具允许用户管理自己的个人版本历史,可以更灵活的支持团队协作,正在受到更多的欢迎。

Page 50: 软件开发工程化的个人体验

. . . . . .

测试策略

Page 51: 软件开发工程化的个人体验

. . . . . .

测试是个无底洞

Page 52: 软件开发工程化的个人体验

. . . . . .

测试永远不嫌多

Page 53: 软件开发工程化的个人体验

. . . . . .

全程测试

Page 54: 软件开发工程化的个人体验

. . . . . .

测试方法

Page 55: 软件开发工程化的个人体验

. . . . . .

文档化测试

Page 56: 软件开发工程化的个人体验

. . . . . .

单元测试

Page 57: 软件开发工程化的个人体验

. . . . . .

运营环境镜像

集成测试

Page 58: 软件开发工程化的个人体验

. . . . . .

终端测试

Page 59: 软件开发工程化的个人体验

. . . . . .

理想的项目结构

▶ 在开发伊始,先建立测试框架

▶ 框架是其上层的模块▶ 模块是其组件的框架

Page 60: 软件开发工程化的个人体验

. . . . . .

理想的项目结构

▶ 在开发伊始,先建立测试框架▶ 框架是其上层的模块

▶ 模块是其组件的框架

Page 61: 软件开发工程化的个人体验

. . . . . .

理想的项目结构

▶ 在开发伊始,先建立测试框架▶ 框架是其上层的模块▶ 模块是其组件的框架

Page 62: 软件开发工程化的个人体验

. . . . . .

理想的开发过程

▶ 自顶向下建立测试环境

▶ 自底向上用生产模块代替测试模块

Page 63: 软件开发工程化的个人体验

. . . . . .

理想的开发过程

▶ 自顶向下建立测试环境▶ 自底向上用生产模块代替测试模块

Page 64: 软件开发工程化的个人体验

. . . . . .

常见的阻碍

Page 65: 软件开发工程化的个人体验

. . . . . .

量力而为,重视测试

时间压力

Page 66: 软件开发工程化的个人体验

. . . . . .

合理分层、积极使用工具

UI 难以测试

Page 67: 软件开发工程化的个人体验

. . . . . .

尽量选择测试友好的平台

平台和框架对测试不友好

Page 68: 软件开发工程化的个人体验

. . . . . .

鼓励测试

团队没有达成共识

Page 69: 软件开发工程化的个人体验

. . . . . .

文档

Page 70: 软件开发工程化的个人体验

. . . . . .

文档应早于编码开始

Page 71: 软件开发工程化的个人体验

. . . . . .

文档工作贯穿全程

Page 72: 软件开发工程化的个人体验

. . . . . .

文档库

文档集中管理

Page 73: 软件开发工程化的个人体验

. . . . . .

文档自然产出

Page 74: 软件开发工程化的个人体验

. . . . . .

文档从哪里来?

Page 75: 软件开发工程化的个人体验

. . . . . .

工程文档

Page 76: 软件开发工程化的个人体验

. . . . . .

故事卡片

Page 77: 软件开发工程化的个人体验

. . . . . .

bug 跟踪

Page 78: 软件开发工程化的个人体验

. . . . . .

统计图表

Page 79: 软件开发工程化的个人体验

. . . . . .

会议纪要

Page 80: 软件开发工程化的个人体验

. . . . . .

电子邮件

Page 81: 软件开发工程化的个人体验

. . . . . .

聊天记录

Page 82: 软件开发工程化的个人体验

. . . . . .

代码注释

Page 83: 软件开发工程化的个人体验

. . . . . .

文档管理要点

Page 84: 软件开发工程化的个人体验

. . . . . .

AKA 原则

集中管理,所有人可见

Page 85: 软件开发工程化的个人体验

. . . . . .

AKA 原则

全文搜索支持

Page 86: 软件开发工程化的个人体验

. . . . . .

鼓励文档化编程

Page 87: 软件开发工程化的个人体验

. . . . . .

文档 WIKI 化

Page 88: 软件开发工程化的个人体验

. . . . . .

电子邮件重于即时聊天

Page 89: 软件开发工程化的个人体验

. . . . . .

代码生成重于预定文档

Page 90: 软件开发工程化的个人体验

. . . . . .

接口注释重于逻辑注释

Page 91: 软件开发工程化的个人体验

. . . . . .

协作平台

Page 92: 软件开发工程化的个人体验

. . . . . .

bug 跟踪

Page 93: 软件开发工程化的个人体验

. . . . . .

跟踪项目代码

Page 94: 软件开发工程化的个人体验

. . . . . .

搜索友好

Page 95: 软件开发工程化的个人体验

. . . . . .

在线沟通

Page 96: 软件开发工程化的个人体验

. . . . . .

灵活定制

Page 97: 软件开发工程化的个人体验

. . . . . .

常见协作平台

Page 98: 软件开发工程化的个人体验

. . . . . .

TRAC

Page 99: 软件开发工程化的个人体验

. . . . . .

Bugzilla

Page 100: 软件开发工程化的个人体验

. . . . . .

未涉及的问题

Page 101: 软件开发工程化的个人体验

. . . . . .

团队文化建设

Page 102: 软件开发工程化的个人体验

. . . . . .

” 单人团队” 的管理

个人软件开发过程

Page 103: 软件开发工程化的个人体验

. . . . . .

开发工具的选择

Page 104: 软件开发工程化的个人体验

. . . . . .

技术平台的选择

Page 105: 软件开发工程化的个人体验

. . . . . .

设计与编码风格

Page 106: 软件开发工程化的个人体验

. . . . . .

编码知识与技巧

Page 107: 软件开发工程化的个人体验

. . . . . .

工程化的意义

Page 108: 软件开发工程化的个人体验

. . . . . .

拥抱变化

Page 109: 软件开发工程化的个人体验

. . . . . .

催生创造

Page 110: 软件开发工程化的个人体验

. . . . . .

减少风险

Page 111: 软件开发工程化的个人体验

. . . . . .

促进沟通

Page 112: 软件开发工程化的个人体验

. . . . . .

提升劳动价值

Page 113: 软件开发工程化的个人体验

. . . . . .

提高工作效率

Page 114: 软件开发工程化的个人体验

. . . . . .

促进团队成长

Page 115: 软件开发工程化的个人体验

. . . . . .

再见!