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

1,828 views

Published on

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

Published in: Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,828
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
20
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. 软件开发工程化刘鑫 <march.liu@gmail.com> 软件开发过程的个人体验 March 1, 2011 . . . . . .
  2. 2. 软件项目 (?) 开发 . . . . . .
  3. 3. 工程化? . . . . . .
  4. 4. 规范性 . . . . . .
  5. 5. 计划性 . . . . . .
  6. 6. 可重复 . . . . . .
  7. 7. 然而 时至今日 . . . . . .
  8. 8. 软件开发仍是一个缺少控制的生产领域 . . . . . .
  9. 9. WHY? . . . . . .
  10. 10. 软件开发的特性 ▶ 高度依赖于个人才能 . . . . . .
  11. 11. 软件开发的特性 ▶ 高度依赖于个人才能 ▶ 风险预知有一定难度 . . . . . .
  12. 12. 软件开发的特性 ▶ 高度依赖于个人才能 ▶ 风险预知有一定难度 ▶ 创造力的价值远高于规范性 . . . . . .
  13. 13. 软件开发的特性 ▶ 高度依赖于个人才能 ▶ 风险预知有一定难度 ▶ 创造力的价值远高于规范性 ▶ 充满变化,产出服务而非实物 . . . . . .
  14. 14. 外部风险难以跟踪 需求随时变化 . . . . . .
  15. 15. 规范要为生产让步 创造力是最有价值的资源 . . . . . .
  16. 16. 周期延长 产业服务化 . . . . . .
  17. 17. 强调个人能力 个人能力的发挥可能决定项目 . . . . . .
  18. 18. 那么 拒绝工程化? . . . . . .
  19. 19. 当然不是! . . . . . .
  20. 20. 软件工程化的好处 . . . . . .
  21. 21. 减少重复,专注于创造 . . . . . .
  22. 22. 减少风险,提升劳动价值 . . . . . .
  23. 23. 提高沟通效率,降低协作成本 . . . . . .
  24. 24. 允许计划变更 明确计划和目标 . . . . . .
  25. 25. 提高协作效率 建立沟通渠道 . . . . . .
  26. 26. 可跟踪,可回溯 辅助生产管理 . . . . . .
  27. 27. 减少重复劳动 流程平台化,工具化 . . . . . .
  28. 28. 升华知识价值 文档管理 . . . . . .
  29. 29. 稳定质量 建立测试过程 . . . . . .
  30. 30. 消灭天才神话 建立可预期过程 . . . . . .
  31. 31. 工程无魔法 . . . . . .
  32. 32. 常见工程化管理方法 ▶ 版本控制 . . . . . .
  33. 33. 常见工程化管理方法 ▶ 版本控制 ▶ bug 跟踪 . . . . . .
  34. 34. 常见工程化管理方法 ▶ 版本控制 ▶ bug 跟踪 ▶ 文档管理 . . . . . .
  35. 35. 常见工程化管理方法 ▶ 版本控制 ▶ bug 跟踪 ▶ 文档管理 ▶ 在线协作 . . . . . .
  36. 36. 常见工程化管理方法 ▶ 版本控制 ▶ bug 跟踪 ▶ 文档管理 ▶ 在线协作 ▶ 测试驱动 . . . . . .
  37. 37. 常见工程化管理方法 ▶ 版本控制 ▶ bug 跟踪 ▶ 文档管理 ▶ 在线协作 ▶ 测试驱动 ▶ …… . . . . . .
  38. 38. 工程化管理的一些策略和工具 . . . . . .
  39. 39. 版本管理工具 . . . . . .
  40. 40. 跟踪管理变更 . . . . . .
  41. 41. 团队协作 . . . . . .
  42. 42. 集成、测试、发布…… 为其他工程过程提供支持 . . . . . .
  43. 43. 版本管理工具的发展 从集中趋向分布 . . . . . .
  44. 44. 版本管理工具的发展 从强制趋向松散 . . . . . .
  45. 45. 版本管理工具的发展 更开放,更灵活 . . . . . .
  46. 46. 锁定式 VSS . . . . . .
  47. 47. 中心式 SVN . . . . . .
  48. 48. 分布式 GIT、Mercurial、Bazzar…… . . . . . .
  49. 49. 回家也可以加班 XD 分布式版本管理工具允许用户管理自己的个人版本历史,可以更 灵活的支持团队协作,正在受到更多的欢迎。 . . . . . .
  50. 50. 测试策略 . . . . . .
  51. 51. 测试是个无底洞 . . . . . .
  52. 52. 测试永远不嫌多 . . . . . .
  53. 53. 全程测试 . . . . . .
  54. 54. 测试方法 . . . . . .
  55. 55. 文档化测试 . . . . . .
  56. 56. 单元测试 . . . . . .
  57. 57. 运营环境镜像 集成测试 . . . . . .
  58. 58. 终端测试 . . . . . .
  59. 59. 理想的项目结构 ▶ 在开发伊始,先建立测试框架 . . . . . .
  60. 60. 理想的项目结构 ▶ 在开发伊始,先建立测试框架 ▶ 框架是其上层的模块 . . . . . .
  61. 61. 理想的项目结构 ▶ 在开发伊始,先建立测试框架 ▶ 框架是其上层的模块 ▶ 模块是其组件的框架 . . . . . .
  62. 62. 理想的开发过程 ▶ 自顶向下建立测试环境 . . . . . .
  63. 63. 理想的开发过程 ▶ 自顶向下建立测试环境 ▶ 自底向上用生产模块代替测试模块 . . . . . .
  64. 64. 常见的阻碍 . . . . . .
  65. 65. 量力而为,重视测试 时间压力 . . . . . .
  66. 66. 合理分层、积极使用工具 UI 难以测试 . . . . . .
  67. 67. 尽量选择测试友好的平台 平台和框架对测试不友好 . . . . . .
  68. 68. 鼓励测试 团队没有达成共识 . . . . . .
  69. 69. 文档 . . . . . .
  70. 70. 文档应早于编码开始 . . . . . .
  71. 71. 文档工作贯穿全程 . . . . . .
  72. 72. 文档库 文档集中管理 . . . . . .
  73. 73. 文档自然产出 . . . . . .
  74. 74. 文档从哪里来? . . . . . .
  75. 75. 工程文档 . . . . . .
  76. 76. 故事卡片 . . . . . .
  77. 77. bug 跟踪 . . . . . .
  78. 78. 统计图表 . . . . . .
  79. 79. 会议纪要 . . . . . .
  80. 80. 电子邮件 . . . . . .
  81. 81. 聊天记录 . . . . . .
  82. 82. 代码注释 . . . . . .
  83. 83. 文档管理要点 . . . . . .
  84. 84. AKA 原则 集中管理,所有人可见 . . . . . .
  85. 85. AKA 原则 全文搜索支持 . . . . . .
  86. 86. 鼓励文档化编程 . . . . . .
  87. 87. 文档 WIKI 化 . . . . . .
  88. 88. 电子邮件重于即时聊天 . . . . . .
  89. 89. 代码生成重于预定文档 . . . . . .
  90. 90. 接口注释重于逻辑注释 . . . . . .
  91. 91. 协作平台 . . . . . .
  92. 92. bug 跟踪 . . . . . .
  93. 93. 跟踪项目代码 . . . . . .
  94. 94. 搜索友好 . . . . . .
  95. 95. 在线沟通 . . . . . .
  96. 96. 灵活定制 . . . . . .
  97. 97. 常见协作平台 . . . . . .
  98. 98. TRAC . . . . . .
  99. 99. Bugzilla . . . . . .
  100. 100. 未涉及的问题 . . . . . .
  101. 101. 团队文化建设 . . . . . .
  102. 102. ” 单人团队” 的管理 个人软件开发过程 . . . . . .
  103. 103. 开发工具的选择 . . . . . .
  104. 104. 技术平台的选择 . . . . . .
  105. 105. 设计与编码风格 . . . . . .
  106. 106. 编码知识与技巧 . . . . . .
  107. 107. 工程化的意义 . . . . . .
  108. 108. 拥抱变化 . . . . . .
  109. 109. 催生创造 . . . . . .
  110. 110. 减少风险 . . . . . .
  111. 111. 促进沟通 . . . . . .
  112. 112. 提升劳动价值 . . . . . .
  113. 113. 提高工作效率 . . . . . .
  114. 114. 促进团队成长 . . . . . .
  115. 115. 再见! . . . . . .

×