http://hi.baidu.com/xingweilu/blog/item/4e50cbc46f822ac939db49fd.html
按照大家的要求进行了整理,内容如下,但是建议大家还是看看讨论内容,那样更容易理解。
***************************************************
通常程序员给人留下的印象就是机械,内向,不善言谈。
其实一个好的程序员最需要具备的能力就是沟通的能力。
只有良好的沟通才能知道客户需要什么,也只有良好的沟通,才能与团队成员合作无间
本次讨论希望带领大家进入一个以沟通为基本原则的软件开发领域,它就是——敏捷开发
一、敏捷开发简介
1、敏捷开发与传统软件工程的比较
传统软件工程:规范化的文档,持续改进的软件过程
敏捷开发:密切的交流与合作,逐步细化的开发过程
两者的区别好比重型武装部队与特种部队的区别
人员变更大,人数较多,成员分数,模块通信量大,耦合性强,维护时间长,开发过程有长期性,社会性的项目不益采取敏捷开发方法
2、4条核心价值观
(1)个体和交互胜过过程和工具
敏捷开发很强调个人能力
它以沟通和个人能力代替了定义死了的过程
(2)可以工作的软件胜过面面俱到的文档
它强调迭代式的开发,以开发的一个个版本形象的说明了需求,便于客户联想,也便于团队沟通演示
(3)客户合作胜过合同谈判
这条有过项目经验的人都能理解,与客户成为朋友比固定死的合同有用得多
(4)响应变化胜过遵循计划
它强调沟通,从而更积极的拥抱变化,并随时调整
3、敏捷开发的基本原则
(1)尽早、持续交付有价值的中间软件
(2)响应变化创造竞争优势
(3)业务人员与开发人员一起工作
它的目的是强调大家建立频繁密切的交流
这是一种帮助大家沟通的方法
这里的业务人员是指需求人员,开发的时候当然需要了
但是肯定不直接参与软件编写过程
(4)团队内部面对面的沟通
(5)根据完成了的功能调整工作进度
这是一种帮助大家沟通的方法
这里的业务人员是指需求人员,开发的时候当然需要了
但是肯定不直接参与软件编写过程
业务人员指的是了解客户需求的人员
熟悉业务的人
(6)重构代码,保持代码健壮
(7)尽快完成目前已知的需求
强调把不了解的需求放到以后,不考虑太多可能性
不考虑太多可能性是指不考虑变化的可能性
先做好已知的,定义好的,持续形成新版本,客户可能会想到需要什么
很多客户并不是一开始就知道自己要什么
你给他一个东西用用,他会觉得好,还需要什么
或者哪里不好,需要改动
很多时候客户有很多需求,我们需要做的是帮他找到重点,理清流程,帮助客户提高主要的工作的效率才是目的
大家要始终知道,敏捷开发是一种开发方法,遵照执行可以对你的工作提供效率,而不是必须遵守的。
4、主要的敏捷方法
(1)极限编程(XP)-后面介绍
(2)水晶方法(Crystal)-个人觉得是XP的复杂版
重点;一种方法学,根据不同类型的项目确定不同的开发方法
(3)动态系统开发方法(DSDM)
重点:迭代式开发,及时并持续获得客户反馈,并对主要功能不断精化
敏捷开发是一种原则,实际的方法很多
是一种哲学的价值观
(4)特征驱动的软件开发(FDD)
自适应软件开发(ASD)
SCRUM方法……
二、极限编程简介
个人觉得极限编程是一系列方法的组合
1、特点:轻量、柔性、充满乐趣
2、XP的价值观
(1)沟通
(2)简单
(3)反馈
(4)勇气
其实前三点刚才敏捷开发方法已经讲了,重点就是勇气
不是重点,是我要讲的重点
勇气其实和拥抱变化是一个意思
勇气还指不断的重构代码
勇气就是甚至引导客户去变化
使之成为一种竞争优势
3、基本原则
(1)快速反馈
(2)简单性假设
(3)逐步修改
(4)提倡更改
(5)优质工作
第(5)点是很多优秀的程序员容易犯的错误
很多优秀的程序员喜欢设计,觉得思路是最重要的,很多时候把思路理顺了,不愿意把问题完全解决好,总是留些小尾巴。但是后面又更不愿意回有修补好
比如很多人写TRY加个CATCH,然后就不写出错处理,想等最后一起写,实际上再不会回头看了
三、重要概念解释
这里的概念实际上很多就是一些小方法,我重点讲解一下,希望能引起大家的兴趣,使大家更详细的研究XP方法
用户故事:
就是面对面的请用户描叙自己工作的步骤,可以用UML,也可一用小卡片
也可以用最平实的语言描叙,当然你一定要记录下来,这个是需求分析的依据
迭代式开发:
迭代方法有没有人不懂?
迭代式开发就是不断的交付新版本,但是不是修改性质的,而是不段精化的
隐喻:
我觉得就是对事物的约定俗成的叫法
比如很多人把DOTNET高手叫大内高手(DOTNET读音和大内读音很近似)
这里的约定俗成是为了更方便的交流,更愉快的沟通,大家把平时这些比喻收集起来,和客户交流,和团队成员交流的时候就可以这样说
就象现在把女朋友叫老婆,难道你会不懂吗?
简单设计:
粗略的设计,不考虑各种可能情况,只设计主要类
测试先行:
测试先行是现在很提倡的开发方法,是很值得研究的
好比砌砖头,先拉一个水平线,每砌一快砖都对比一下
如果你全部砌完了再看对得齐不齐是不是有点晚了
测试先行的方法之一就是写每个模块之前先写测试代码,并且在每次改动之前测试一次
这样是很正确的思路,其实一点也不复杂,就象在学校写程序的时候,要也MIAN()方法测试一下结果,你写好了以后,再测试就很方便了。而且不用进行很复杂的测试
重构:
我用三个词解释,就是重思考,重设计,重编码。
不断的找时间重构自己的代码是提高自己能力的很重要的方式
结对编程:
结对编程不是结队编程,是2个人,不是更多
有谁亲自试过
我个人不喜欢结对编程,但是建议大家工作不忙的时候可以试试,至少可以提高大家的交流度
结对编程主要目的是让大家更好的交流
敏捷开发的基本原则就是沟通
持续集成:
将所有模块经常性的整合,以及时发现与系统有冲突的问题
典型的就是微软团队的:每日构造
微软的每日构造甚至到了变态的地步,要求每天集成测试,发现问题,就算是凌晨也会找到你,要你立即修改
现场客户:
这是一种夸张的说法,其实就是经常和客户面对面的交流,演示,和现场开发差不多
编码标准:
团队采取统一的编码标准,避免就个人习惯,个人爱好等细节问题产生争论。
总之极限编程就是要求团队与客户密切的沟通,团队最好是长期合作,和客户交朋友。
希望本次讨论能让大家更加热爱编程,更积极的于他人沟通,更热情的拥抱变化。
并预祝大家能利用此方法更充分的发挥自己的潜力,在职业道路上一帆风顺。
分享到:
相关推荐
### 极限编程与敏捷开发:深度解析与实践探索 #### 一、极限编程(XP)的起源与理念 极限编程(Extreme Programming,简称XP),作为敏捷开发的一种具体实现方式,自诞生以来便以其独特的实践策略和核心价值,吸引...
极限编程(XP)是一种敏捷软件开发方法,由Kent Beck在1990年代末期创立,他在克莱斯勒综合薪酬(C3)项目中担任项目经理时首次实施这一方法,并于2000年出版了《极限编程探索:拥抱变化》一书。在2001年,他也是...
《重构极限编程XP的实践与反思》是一本深入探讨软件开发方法论的书籍,主要针对的是极限编程(Extreme Programming, XP)这一敏捷开发框架。XP作为一种以客户需求为中心、强调快速反馈和持续改进的开发方式,曾经在...
敏捷开发有多种实现框架,如Scrum、Kanban、XP(极限编程)和Crystal等。Scrum是最为广泛应用的一种,它通过短期的工作周期(Sprint)和跨职能的自我组织团队来管理项目。Kanban则关注可视化工作流和限制在制品(WIP...
极限编程(Extreme Programming,简称XP)是一种敏捷软件开发方法,由肯特·贝克(Kent Beck)在1990年代中期提出。它强调快速反馈、团队协作、简单设计以及持续改进,旨在提高软件开发效率并减少风险。XP的核心原则...
敏捷开发的主要思想来源于极限编程(Extreme Programming, XP),它强调灵活应对需求变更,重视团队协作,以及快速交付有价值的软件。 1. **瀑布模型与敏捷开发的区别** - **瀑布模型** 是一种线性的开发方法,每...
**XP极限编程** XP(Extreme Programming)是一种敏捷开发方法论,由肯特·贝克(Kent Beck)在1990年代末提出。它强调快速响应变化,通过一系列实践来提高软件开发的质量和效率。本套课程围绕XP的核心原则和实践,...
《Java极限编程》这本书主要探讨的是在Java开发中采用极限编程(Extreme Programming,简称XP)这一敏捷开发方法论。极限编程是一种强调快速响应变化、提高软件质量并增强团队协作的软件开发方法。以下是对该书内容...
Martin(也被称为“鲍勃叔叔”),作为软件开发和工程领域的大师,阐述了敏捷开发中的核心原则、设计模式和实践,尤其是在极限编程(Extreme Programming, 简称XP)方面的应用。XP是一种敏捷软件开发方法,它在预算...
《Java 极限编程》是一本深入探讨Java开发实践与技术优化的专业书籍,其英文版为程序员提供了关于极限编程(XP)理念在Java环境中的应用。极限编程是一种敏捷开发方法论,强调快速反馈、团队协作以及对变化的适应性。...
极限编程(Extreme Programming,简称XP)与统一过程(Unified Process,UP)是两种在软件开发领域广泛应用的方法论,它们都致力于提高开发效率、确保产品质量和增强团队协作。在这本名为“建模-极限编程和统一过程...
极限编程(Extreme Programming,简称XP)是一种用于软件开发的敏捷方法论,强调的是软件开发过程的可适应性和快速响应变化。XP中规划工作是至关重要的环节,它的目的是为了应对需求的变化和项目开发的不确定性。...
敏捷开发方法包括极限编程(XP)和Scrum等,它们强调适应变化和持续改进,自90年代起逐渐受到广泛关注。 ### 敏捷宣言 敏捷宣言是敏捷开发运动中的核心价值体现,它强调了四个基本原则: 1. 个体和交互胜过过程和...
XP(极限编程)和Scrum是两种常见的敏捷方法。XP的迭代通常为1-2周,重视TDD(测试驱动开发)、自动测试、结对编程和简单设计,而Scrum的迭代长度通常为2-4周,注重Sprint计划会议、每日Scrum站会、Sprint评审会议和...
这可能包括敏捷的四个核心价值观和十二个原则,以及敏捷开发的几种代表性框架,如Scrum、Kanban和XP(极限编程)。这些框架各有特点,例如Scrum强调迭代和增量开发,Kanban注重流程可视化和限制工作在制品(WIP),...
极限编程(Extreme Programming,简称XP)是一种敏捷软件开发方法,由肯特·贝克(Kent Beck)在1997年提出。它强调快速响应变化,通过密切协作、简化的流程和持续反馈来提高开发效率和软件质量。XP的核心原则包括...
在敏捷开发中,XP(极限编程)是一种轻量级的敏捷方法,它强调沟通、简单、反馈和勇气这四大价值观。XP通过持续集成、结对编程、单元测试等实践来确保软件质量,并且鼓励客户参与开发过程,以便及时调整需求。 PSP...
3. **极限编程(XP)**:XP是一种强调团队协作、持续集成和测试驱动开发的敏捷方法,书中可能涵盖其核心实践,如结对编程、持续集成、用户故事等。 4. **看板系统**:看板作为一种可视化工具,帮助团队管理工作流程...
极限编程(XP)是敏捷开发的一种具体实践,它包含一系列规则和实践,如频繁集成、测试驱动开发、结对编程等。统一过程(UP)则是一种更为传统的软件开发过程,但可以通过裁剪以适应敏捷环境。此文档可能讨论如何将...