软件开发工程化的个人体验
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 1,665 views

软件开发工程化过程的一些个人体验总结。

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

Statistics

Views

Total Views
1,665
Views on SlideShare
1,665
Embed Views
0

Actions

Likes
1
Downloads
14
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • 软件开发工程化刘鑫 <march.liu@gmail.com> 软件开发过程的个人体验 March 1, 2011 . . . . . .
  • 软件项目 (?) 开发 . . . . . .
  • 工程化? . . . . . .
  • 规范性 . . . . . .
  • 计划性 . . . . . .
  • 可重复 . . . . . .
  • 然而 时至今日 . . . . . .
  • 软件开发仍是一个缺少控制的生产领域 . . . . . .
  • WHY? . . . . . .
  • 软件开发的特性 ▶ 高度依赖于个人才能 . . . . . .
  • 软件开发的特性 ▶ 高度依赖于个人才能 ▶ 风险预知有一定难度 . . . . . .
  • 软件开发的特性 ▶ 高度依赖于个人才能 ▶ 风险预知有一定难度 ▶ 创造力的价值远高于规范性 . . . . . .
  • 软件开发的特性 ▶ 高度依赖于个人才能 ▶ 风险预知有一定难度 ▶ 创造力的价值远高于规范性 ▶ 充满变化,产出服务而非实物 . . . . . .
  • 外部风险难以跟踪 需求随时变化 . . . . . .
  • 规范要为生产让步 创造力是最有价值的资源 . . . . . .
  • 周期延长 产业服务化 . . . . . .
  • 强调个人能力 个人能力的发挥可能决定项目 . . . . . .
  • 那么 拒绝工程化? . . . . . .
  • 当然不是! . . . . . .
  • 软件工程化的好处 . . . . . .
  • 减少重复,专注于创造 . . . . . .
  • 减少风险,提升劳动价值 . . . . . .
  • 提高沟通效率,降低协作成本 . . . . . .
  • 允许计划变更 明确计划和目标 . . . . . .
  • 提高协作效率 建立沟通渠道 . . . . . .
  • 可跟踪,可回溯 辅助生产管理 . . . . . .
  • 减少重复劳动 流程平台化,工具化 . . . . . .
  • 升华知识价值 文档管理 . . . . . .
  • 稳定质量 建立测试过程 . . . . . .
  • 消灭天才神话 建立可预期过程 . . . . . .
  • 工程无魔法 . . . . . .
  • 常见工程化管理方法 ▶ 版本控制 . . . . . .
  • 常见工程化管理方法 ▶ 版本控制 ▶ bug 跟踪 . . . . . .
  • 常见工程化管理方法 ▶ 版本控制 ▶ bug 跟踪 ▶ 文档管理 . . . . . .
  • 常见工程化管理方法 ▶ 版本控制 ▶ bug 跟踪 ▶ 文档管理 ▶ 在线协作 . . . . . .
  • 常见工程化管理方法 ▶ 版本控制 ▶ bug 跟踪 ▶ 文档管理 ▶ 在线协作 ▶ 测试驱动 . . . . . .
  • 常见工程化管理方法 ▶ 版本控制 ▶ bug 跟踪 ▶ 文档管理 ▶ 在线协作 ▶ 测试驱动 ▶ …… . . . . . .
  • 工程化管理的一些策略和工具 . . . . . .
  • 版本管理工具 . . . . . .
  • 跟踪管理变更 . . . . . .
  • 团队协作 . . . . . .
  • 集成、测试、发布…… 为其他工程过程提供支持 . . . . . .
  • 版本管理工具的发展 从集中趋向分布 . . . . . .
  • 版本管理工具的发展 从强制趋向松散 . . . . . .
  • 版本管理工具的发展 更开放,更灵活 . . . . . .
  • 锁定式 VSS . . . . . .
  • 中心式 SVN . . . . . .
  • 分布式 GIT、Mercurial、Bazzar…… . . . . . .
  • 回家也可以加班 XD 分布式版本管理工具允许用户管理自己的个人版本历史,可以更 灵活的支持团队协作,正在受到更多的欢迎。 . . . . . .
  • 测试策略 . . . . . .
  • 测试是个无底洞 . . . . . .
  • 测试永远不嫌多 . . . . . .
  • 全程测试 . . . . . .
  • 测试方法 . . . . . .
  • 文档化测试 . . . . . .
  • 单元测试 . . . . . .
  • 运营环境镜像 集成测试 . . . . . .
  • 终端测试 . . . . . .
  • 理想的项目结构 ▶ 在开发伊始,先建立测试框架 . . . . . .
  • 理想的项目结构 ▶ 在开发伊始,先建立测试框架 ▶ 框架是其上层的模块 . . . . . .
  • 理想的项目结构 ▶ 在开发伊始,先建立测试框架 ▶ 框架是其上层的模块 ▶ 模块是其组件的框架 . . . . . .
  • 理想的开发过程 ▶ 自顶向下建立测试环境 . . . . . .
  • 理想的开发过程 ▶ 自顶向下建立测试环境 ▶ 自底向上用生产模块代替测试模块 . . . . . .
  • 常见的阻碍 . . . . . .
  • 量力而为,重视测试 时间压力 . . . . . .
  • 合理分层、积极使用工具 UI 难以测试 . . . . . .
  • 尽量选择测试友好的平台 平台和框架对测试不友好 . . . . . .
  • 鼓励测试 团队没有达成共识 . . . . . .
  • 文档 . . . . . .
  • 文档应早于编码开始 . . . . . .
  • 文档工作贯穿全程 . . . . . .
  • 文档库 文档集中管理 . . . . . .
  • 文档自然产出 . . . . . .
  • 文档从哪里来? . . . . . .
  • 工程文档 . . . . . .
  • 故事卡片 . . . . . .
  • bug 跟踪 . . . . . .
  • 统计图表 . . . . . .
  • 会议纪要 . . . . . .
  • 电子邮件 . . . . . .
  • 聊天记录 . . . . . .
  • 代码注释 . . . . . .
  • 文档管理要点 . . . . . .
  • AKA 原则 集中管理,所有人可见 . . . . . .
  • AKA 原则 全文搜索支持 . . . . . .
  • 鼓励文档化编程 . . . . . .
  • 文档 WIKI 化 . . . . . .
  • 电子邮件重于即时聊天 . . . . . .
  • 代码生成重于预定文档 . . . . . .
  • 接口注释重于逻辑注释 . . . . . .
  • 协作平台 . . . . . .
  • bug 跟踪 . . . . . .
  • 跟踪项目代码 . . . . . .
  • 搜索友好 . . . . . .
  • 在线沟通 . . . . . .
  • 灵活定制 . . . . . .
  • 常见协作平台 . . . . . .
  • TRAC . . . . . .
  • Bugzilla . . . . . .
  • 未涉及的问题 . . . . . .
  • 团队文化建设 . . . . . .
  • ” 单人团队” 的管理 个人软件开发过程 . . . . . .
  • 开发工具的选择 . . . . . .
  • 技术平台的选择 . . . . . .
  • 设计与编码风格 . . . . . .
  • 编码知识与技巧 . . . . . .
  • 工程化的意义 . . . . . .
  • 拥抱变化 . . . . . .
  • 催生创造 . . . . . .
  • 减少风险 . . . . . .
  • 促进沟通 . . . . . .
  • 提升劳动价值 . . . . . .
  • 提高工作效率 . . . . . .
  • 促进团队成长 . . . . . .
  • 再见! . . . . . .