Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

软件项目管理与团队合作

4,864 views

Published on

http://blog.splayer.org/index.php/2010/10/splayer-project-managent-and-coding-style/

Published in: Technology
  • shooter 软件项目管理与团队合作
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

软件项目管理与团队合作

  1. 1. 软件项目管理与团队合作<br />射手培训课程<br />He Shiming2010-7<br />SPlayer.org (射手科技)<br />
  2. 2. 软件项目的计划与设计<br />项目开发的方法学(Methodology)<br />项目版本管理与Subversion(SVN)<br />代码规范(Coding Style)和编程规则(Programming Rules)<br />代码度量(Code Metrics)<br />代码复查(Code Review)<br />项目开发流程<br />本课涉及…<br />SPlayer.org (射手科技)<br />
  3. 3. 软件项目的计划与设计<br />软件项目从何而来,它是如何被计划和设计的<br />SPlayer.org (射手科技)<br />
  4. 4. 来源于人的思想<br />用于解决或改进实际问题将教学上的幻灯片电子化(Microsoft PowerPoint)自由地进行照片编辑(Adobe Photoshop)改善上网经历的网页浏览器(Google Chrome)<br />在商业上有前景<br />软件项目从何而来<br />SPlayer.org (射手科技)<br />
  5. 5. 一个实际问题,可能有多种解释方法,多种实现手段<br />设计是一个确定该实际问题的最终解释方法(捕捉用户需求),最终表现形式(设定产品规格),和最终实现手段(设定开发计划)的过程<br />设计师通过自己的经验,判断用户需求的最佳捕捉方式,最佳表现形式,和制定最有效率的开发计划<br />软件项目如何被设计<br />SPlayer.org (射手科技)<br />
  6. 6. 项目开发中的方法学(Methodology)<br />方法学存在的意义<br />SPlayer.org (射手科技)<br />
  7. 7. 方法学是针对软件项目开发中所遇到问题,根据前人经验所总结形成的方法、规范和流程定义<br />方法学是团队合作的基本依据<br />方法学能在一定程度上提供对项目进度的预测,和对人力、财务需求的估计<br />方法学存在的意义<br />SPlayer.org (射手科技)<br />
  8. 8. Water-fall思想,主张将开发工作总结为这样一个,带有次序和依赖性的模式,每一步都是系统级的:需求->设计->实现->测试->发布->维护<br />Agile思想主张不以完成整体系统设计为早期目标,转而快速进行原形开发,快速提供一个缺乏功能、带有缺陷的原形,而在其上通过一次又一次的循环,逐步进行设计、实现和测试<br />常用方法学<br />SPlayer.org (射手科技)<br />
  9. 9. 项目版本管理与Subversion(SVN)<br />什么是版本管理,为何要进行版本管理<br />SPlayer.org (射手科技)<br />
  10. 10. 项目开发活动每天都在进行,由多人参与,无法保证任何时间点所有人手边的项目代码(work copy)都没有错误<br />有时一个任务在开始很久之后,才决定要修改设计,可能需要将当前项目还原(revert)到任务开始之前<br />多个功能在同时开发,没有版本管理时,必须互相拷贝各自所负责的代码文件,某个人的失误可能导致整个项目出错<br />进行版本管理能避免重大和不可逆的失误<br />SPlayer.org (射手科技)<br />
  11. 11. 每隔一个阶段,将所有工程文件和代码复制,按照时间留拷贝<br />操作繁琐<br />不解决多人协作的问题<br />不解决项目进度跟踪的问题<br />原始的版本管理<br />SPlayer.org (射手科技)<br />
  12. 12. Concurrent Version System (CVS)<br />Subversion (SVN)<br />提供一个中央数据库服务器,用于管理代码<br />通过客户端与服务器通信,实现阶段性代码副本功能<br />提供了多人协作的方便,和分支管理功能<br />现代版本管理系统<br />SPlayer.org (射手科技)<br />
  13. 13. Repository(Repo)概念一个数据库,负责存储代码副本<br />Commit概念向数据库传送一个代码副本(该副本将会被赋予一个版本号)<br />Check-out概念从数据库取得一个代码副本(work copy)<br />Update概念以本地代码副本(workcopy)为基础,下载在上次Update或Check-out之后更新的文件,并保留本地已修改文件不变<br />SVN概念<br />SPlayer.org (射手科技)<br />
  14. 14. trunk概念是Repo数据库中的一个文件夹,其中的代码副本为稳定版本,通过测试和确认可靠的<br />branch概念是Repo数据库中的一个文件夹,是项目的一个开发用分支,代码可能不稳定不可靠<br />merge概念将稳定和确认可靠的branch合并至trunk<br />SVN概念<br />SPlayer.org (射手科技)<br />
  15. 15. 代码规范与编程规则<br />使用统一格式和规则进行编码的意义<br />SPlayer.org (射手科技)<br />
  16. 16. 使用统一的编码格式有助于提高代码可读性,防止语义混淆,从一定程度上减少编码错误<br />代码规范<br />SPlayer.org (射手科技)<br />
  17. 17. <br /><br /><br />SPlayer.org (射手科技)<br />
  18. 18. <br />SPlayer.org (射手科技)<br />
  19. 19. <br /><br />SPlayer.org (射手科技)<br />
  20. 20. <br />SPlayer.org (射手科技)<br />
  21. 21. <br />SPlayer.org (射手科技)<br />
  22. 22. 编码规范是代码的具体细节,而编程规则涉及内容就是框架性和规范性的<br />譬如,现有编程规则主张采用:MVC架构进行产品设计(保证产品质量)使用STL的字符串、数组实现,而非C、Windows、MFC/ATL的实现(保证代码执行效率和可移植性)<br />编程规则,将一个问题的多种实现方案,合理精简为一个<br />编程规则<br />SPlayer.org (射手科技)<br />
  23. 23. 代码度量<br />通过数学统计确定代码的可读性<br />SPlayer.org (射手科技)<br />
  24. 24. <br /><br />SPlayer.org (射手科技)<br />
  25. 25. Kiviat Graph / Source Monitor<br />SPlayer.org (射手科技)<br />
  26. 26. 代码复查<br />通过开发成员间互相查看和评定对方代码,来学习和确保质量<br />SPlayer.org (射手科技)<br />
  27. 27. 当局者迷,旁观者清,自己犯的错误自己不容易发现<br />通过这种交流方式互相取长补短<br />在项目管理中,制定责任和权限机制<br />代码复查的意义<br />SPlayer.org (射手科技)<br />
  28. 28. 通过ReviewBoard(www.reviewboard.org)进行<br />开发人员有各自独立帐号,在工作完成时,通过该平台提交复查申请(半自动化)<br />相关人员查看并审核复查申请,决定代码是否合格<br />代码复查的形式和方法<br />SPlayer.org (射手科技)<br />
  29. 29. 项目开发流程<br />项目开发活动如何进行<br />SPlayer.org (射手科技)<br />
  30. 30. SPlayer.org (射手科技)<br />

×