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

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (18)

El Amor Nunca Deja De Ser
El Amor Nunca Deja De SerEl Amor Nunca Deja De Ser
El Amor Nunca Deja De Ser
 
Digitalisation@Massey: Understanding the Real Drivers
Digitalisation@Massey: Understanding the Real DriversDigitalisation@Massey: Understanding the Real Drivers
Digitalisation@Massey: Understanding the Real Drivers
 
Business Card Designer
Business Card DesignerBusiness Card Designer
Business Card Designer
 
Kit comunicación-entrada-3-oralidad
Kit comunicación-entrada-3-oralidadKit comunicación-entrada-3-oralidad
Kit comunicación-entrada-3-oralidad
 
expression in cpp
expression in cppexpression in cpp
expression in cpp
 
Uni papua fc kuta gle aceh held exhibition match with putra seulawah fc.
Uni papua fc kuta gle aceh held exhibition match with putra seulawah fc.Uni papua fc kuta gle aceh held exhibition match with putra seulawah fc.
Uni papua fc kuta gle aceh held exhibition match with putra seulawah fc.
 
Canal de distribuição
Canal de distribuiçãoCanal de distribuição
Canal de distribuição
 
exception handling in cpp
exception handling in cppexception handling in cpp
exception handling in cpp
 
LEGADO UNIVERSAL DEL SHABBAT
LEGADO UNIVERSAL DEL SHABBATLEGADO UNIVERSAL DEL SHABBAT
LEGADO UNIVERSAL DEL SHABBAT
 
Bautismo verdadero
Bautismo verdaderoBautismo verdadero
Bautismo verdadero
 
8 Pointers
8 Pointers8 Pointers
8 Pointers
 
Lavori Elisabetta Frameglia per corso graphic design
Lavori Elisabetta Frameglia per corso graphic designLavori Elisabetta Frameglia per corso graphic design
Lavori Elisabetta Frameglia per corso graphic design
 
Basics of oops concept
Basics of oops conceptBasics of oops concept
Basics of oops concept
 
[OOP - Lec 02] Why do we need OOP
[OOP - Lec 02] Why do we need OOP[OOP - Lec 02] Why do we need OOP
[OOP - Lec 02] Why do we need OOP
 
Sesion 7
Sesion 7Sesion 7
Sesion 7
 
Kit de Evaluación Secundaria.
Kit de Evaluación Secundaria.Kit de Evaluación Secundaria.
Kit de Evaluación Secundaria.
 
Ppt kit 2do y 4to 2016 primer bimestre [reparado]
Ppt kit 2do y 4to 2016 primer bimestre [reparado]Ppt kit 2do y 4to 2016 primer bimestre [reparado]
Ppt kit 2do y 4to 2016 primer bimestre [reparado]
 
Legno - 1
Legno - 1Legno - 1
Legno - 1
 

Ähnlich wie 软件项目管理与团队合作

Scea su chengwu_pmroi_traditional
Scea su chengwu_pmroi_traditionalScea su chengwu_pmroi_traditional
Scea su chengwu_pmroi_traditionalxtiandlr
 
[DDD] 快快樂樂學DDD
[DDD] 快快樂樂學DDD[DDD] 快快樂樂學DDD
[DDD] 快快樂樂學DDDClark
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)Duran Hsieh
 
Software Development via A.I.
Software Development via A.I.Software Development via A.I.
Software Development via A.I.f62vj7ctgx
 
1 spmc introduction
1 spmc introduction1 spmc introduction
1 spmc introductionhuanglab
 
面向数据流的软件设计方法
面向数据流的软件设计方法面向数据流的软件设计方法
面向数据流的软件设计方法happyjin2010
 
移动开发敏捷实践
移动开发敏捷实践移动开发敏捷实践
移动开发敏捷实践Yuan Mai
 
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)Gelis Wu
 
A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018Juggernaut Liu
 
前端开发的那些事儿
前端开发的那些事儿前端开发的那些事儿
前端开发的那些事儿jndream
 
歡迎加入軟體構築行列
歡迎加入軟體構築行列歡迎加入軟體構築行列
歡迎加入軟體構築行列Chris Wang
 
篱笆网结婚频道项目制产品开发经验分享-PMCamp2
篱笆网结婚频道项目制产品开发经验分享-PMCamp2篱笆网结婚频道项目制产品开发经验分享-PMCamp2
篱笆网结婚频道项目制产品开发经验分享-PMCamp2PMCamp
 
20130112用原型驅動設計@webconf
20130112用原型驅動設計@webconf20130112用原型驅動設計@webconf
20130112用原型驅動設計@webconfJustin Lee
 
在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生Rick Hwang
 
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)LetAgileFly
 
2023 08 - SRE 實踐與開發平台指南 - 書友見面會
2023 08 - SRE 實踐與開發平台指南 - 書友見面會2023 08 - SRE 實踐與開發平台指南 - 書友見面會
2023 08 - SRE 實踐與開發平台指南 - 書友見面會Rick Hwang
 
面對移動化App挑戰的架構設計
面對移動化App挑戰的架構設計面對移動化App挑戰的架構設計
面對移動化App挑戰的架構設計Clark
 
程序员与技术
程序员与技术程序员与技术
程序员与技术ligaoren
 
網路、行銷、使用者經驗設計
網路、行銷、使用者經驗設計網路、行銷、使用者經驗設計
網路、行銷、使用者經驗設計Charles (XXC) Chen
 

Ähnlich wie 软件项目管理与团队合作 (20)

UiGathering 2012.07 Slide (Derek Liu)
UiGathering 2012.07 Slide (Derek Liu)UiGathering 2012.07 Slide (Derek Liu)
UiGathering 2012.07 Slide (Derek Liu)
 
Scea su chengwu_pmroi_traditional
Scea su chengwu_pmroi_traditionalScea su chengwu_pmroi_traditional
Scea su chengwu_pmroi_traditional
 
[DDD] 快快樂樂學DDD
[DDD] 快快樂樂學DDD[DDD] 快快樂樂學DDD
[DDD] 快快樂樂學DDD
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
 
Software Development via A.I.
Software Development via A.I.Software Development via A.I.
Software Development via A.I.
 
1 spmc introduction
1 spmc introduction1 spmc introduction
1 spmc introduction
 
面向数据流的软件设计方法
面向数据流的软件设计方法面向数据流的软件设计方法
面向数据流的软件设计方法
 
移动开发敏捷实践
移动开发敏捷实践移动开发敏捷实践
移动开发敏捷实践
 
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)
 
A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018
 
前端开发的那些事儿
前端开发的那些事儿前端开发的那些事儿
前端开发的那些事儿
 
歡迎加入軟體構築行列
歡迎加入軟體構築行列歡迎加入軟體構築行列
歡迎加入軟體構築行列
 
篱笆网结婚频道项目制产品开发经验分享-PMCamp2
篱笆网结婚频道项目制产品开发经验分享-PMCamp2篱笆网结婚频道项目制产品开发经验分享-PMCamp2
篱笆网结婚频道项目制产品开发经验分享-PMCamp2
 
20130112用原型驅動設計@webconf
20130112用原型驅動設計@webconf20130112用原型驅動設計@webconf
20130112用原型驅動設計@webconf
 
在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生在生命轉彎的地方 - 從軟體開發職涯,探索人生
在生命轉彎的地方 - 從軟體開發職涯,探索人生
 
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
 
2023 08 - SRE 實踐與開發平台指南 - 書友見面會
2023 08 - SRE 實踐與開發平台指南 - 書友見面會2023 08 - SRE 實踐與開發平台指南 - 書友見面會
2023 08 - SRE 實踐與開發平台指南 - 書友見面會
 
面對移動化App挑戰的架構設計
面對移動化App挑戰的架構設計面對移動化App挑戰的架構設計
面對移動化App挑戰的架構設計
 
程序员与技术
程序员与技术程序员与技术
程序员与技术
 
網路、行銷、使用者經驗設計
網路、行銷、使用者經驗設計網路、行銷、使用者經驗設計
網路、行銷、使用者經驗設計
 

Mehr von 晟 沈

MVC for Desktop Application - Part 4
MVC for Desktop Application - Part 4MVC for Desktop Application - Part 4
MVC for Desktop Application - Part 4晟 沈
 
MVC for Desktop Application - Part 3
MVC for Desktop Application - Part 3MVC for Desktop Application - Part 3
MVC for Desktop Application - Part 3晟 沈
 
MVC for Desktop Application - Part 2
MVC for Desktop Application - Part  2MVC for Desktop Application - Part  2
MVC for Desktop Application - Part 2晟 沈
 
Mercurial Quick Tutorial
Mercurial Quick TutorialMercurial Quick Tutorial
Mercurial Quick Tutorial晟 沈
 
MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1晟 沈
 
Learning Method
Learning MethodLearning Method
Learning Method晟 沈
 
C_CPP 初级实物
C_CPP 初级实物C_CPP 初级实物
C_CPP 初级实物晟 沈
 

Mehr von 晟 沈 (7)

MVC for Desktop Application - Part 4
MVC for Desktop Application - Part 4MVC for Desktop Application - Part 4
MVC for Desktop Application - Part 4
 
MVC for Desktop Application - Part 3
MVC for Desktop Application - Part 3MVC for Desktop Application - Part 3
MVC for Desktop Application - Part 3
 
MVC for Desktop Application - Part 2
MVC for Desktop Application - Part  2MVC for Desktop Application - Part  2
MVC for Desktop Application - Part 2
 
Mercurial Quick Tutorial
Mercurial Quick TutorialMercurial Quick Tutorial
Mercurial Quick Tutorial
 
MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1
 
Learning Method
Learning MethodLearning Method
Learning Method
 
C_CPP 初级实物
C_CPP 初级实物C_CPP 初级实物
C_CPP 初级实物
 

软件项目管理与团队合作

Hinweis der Redaktion

  1. 偏重实务,而非课本知识
  2. 项目管理的宗旨是提高项目质量,确保项目按时完成因此本课涉及内容都是质量控制和进度控制的一环
  3. 范例:开发一个博客系统
  4. 版本管理与软件发行版本是不同的
  5. 按照今天的日期,开设文件夹,保存当日的开发版本
  6. SVN的基本理念来自CVS
  7. 空格和换行的规定
  8. 降低代码复杂度,条件嵌套是增加代码复杂度的重要因素
  9. 制定编码格式规范是一个商业需求,有助于将开发者锁定于某个平台
  10. 员工互相查看对方代码,即便是在不同模块,也能发现对同一个问题的不同理解和不同实现方式。普通开发人员没有版本管理的commit权限,因此不对主项目的代码承担责任,他仅对自己的工作单元部分承担责任,在代码复查不合格时,需要自行修改。