正在学习和实践敏捷开发,但遇到了一些困难,产生了一些困惑,想听听大家的意见。
1、完整团队
XP项目的所有参与者(开发人员、客户、测试人员等)一起工作在一个开放的场所中,他们是同一个团队的成员。这个场所的墙壁上随意悬挂着大幅的、显著的图表以及其他一些显示他们进度的东西。
困惑:
在小型的软件公司,一个团队的工作往往不局限于单一的项目。开发人员需要同时交叉管理3个甚至更多的软件和项目。这么说,墙上得贴好多张进度图表,更新这些图表一定得花费不少精力吧,大家都忙于自己手头的任务,谁来维护墙上这些复杂图表内容的更新呢?
2、计划游戏
计划是持续的、循序渐进的。每2周,开发人员就为下2周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。
困惑:
持续的计划非常容易被打破,比如一个紧急报告来的客户需求需要开发,或者一个刚刚发现的BUG必须马上修正----这些当然都是计划外的,于是计划被破坏了。事实上这种情况不可避免。如果每次的计划都被破坏,是不是会失去计划的效果,让成员产生挫败感呢?
3、客户测试
作为选择每个所期望的特性的一部分,客户可以根据脚本语言来定义出自动验收测试来表明该特性可以工作。
困惑:
小型的软件公司所服务的客户项目往往在100万RMB一下。与银行不同,这些项目所属的客户单位通常缺少专业的项目配合人员,他们没有(或者不愿意,不习惯)花费时间和精力去配合你的测试。他们的领导更不可能配合你去做这样的工作--这些人恰恰是验收的决定因素。即便客户的配合人员完成了测试,领导的一句话就可能改变需求。怎么解决这个矛盾呢?
5、结对编程
所有的产品软件都是由两个程序员、并排坐在一起在同一台机器上构建的。
困惑:
任何规模的软件公司都非常渴望“结对编程”可能带来的效益。但“结对编程”似乎更难在工作内容相对繁杂的任务环境中实施。而且,做为开发人员的你喜欢结队吗?我想听听你的看法。
6、测试驱动开发
编写单元测试是一个验证行为,更是一个设计行为。同样,它更是一种编写文档的行为。编写单元测试避免了相当数量的反馈循环,尤其是功功能能验证方面的反馈循环。程序员以非常短的循环周期工作,他们先增加一个失败的测试,然后使之通过。
7、改进设计
随时利用重构方法改进已经腐化的代码,保持代码尽可能的干净、具有表达力。
困惑:
TDD真的不错,改进设计和重构也相当必要。而有时改进设计和重构需要更改接口(Interface)甚至改动很多局部结构,这事测试脚本就必须重写,原来写的测试脚本全部作废了。有时完善的测试脚本比代码本身更难写。
8、持续集成
团队总是使系统完整地被集成。一个人拆入(Check in)后,其它所有人责任代码集成。
困惑:
如果一个开发人员Check in了一段可以测试通过的代码,尽管能返回正确的结果,但其内部的实现可能存在很大缺陷。这个缺陷也被“持续集成“进去了,怎么发现呢?可能过了很久才被别人偶然发现,也可能最终部署到用户那里了才被发现(比如并发上去了)。
9、集体代码所有权
任何结对的程序员都可以在任何时候改进任何代码。没有程序员对任何一个特定的模块或技术单独负责,每个人都可以参与任何其它方面的开发。
困惑:
立即接手自己没参与过模块代码,是否会遇到较陡峭的学习曲线,不得不花费一定的时间才能适应?
很想听听大家的意见。
分享到:
相关推荐
敏捷开发的实践方式中,最著名的当属Scrum和极限编程(XP)。Scrum提供了一种迭代和增量的框架,让开发团队在固定周期内完成和交付可工作的产品增量;而XP则是一系列实践的集合,比如测试驱动开发、持续集成、结对...
详解敏捷开发的困惑,深入简出的讲解软件设计原则,设计模式,并有丰富的代码案例
### 轻松Scrum之旅知识点详解 #### 一、背景与起源 - **软件危机加剧**:随着软件系统的日益复杂,...通过上述知识点的详细解释,我们可以更全面地理解《轻松Scrum之旅》一书的核心内容及其对敏捷开发实践的重要意义。
实践敏捷开发的过程可能遇到种种困难,比如来自人的阻力。因此,对敏捷的哲学思想有所理解是非常重要的。 Scrum方法在敏捷开发中占有重要地位,它通过定义角色、活动和工件来推动项目进展。在IBM中国软件开发中心的...
对于企业而言,导入敏捷方法后可能会面临一些困惑,例如如何规划敏捷导入路线,单团队与多团队敏捷的实施方法,以及如何评价组织的敏捷能力等。而APH模型恰恰能够针对这些问题提供解决方案。它不仅仅是一个框架,...
《敏捷原则、模式与实践在C#中的应用》是一本全面介绍敏捷开发方法论的书籍,它不仅适用于C#程序员,也适合那些希望了解敏捷软件开发并将其应用到自己项目中的其他编程语言使用者。通过学习本书,读者不仅可以掌握...
### IT项目管理最佳实践 #### 一、项目管理中的常见挑战与感受 ...通过采用敏捷开发方法,实现产品细分、团队管理优化、周期管理和过程改进等策略,能够更好地响应市场变化,提高团队效率,最终实现项目的成功交付。
而"YZU敏捷软体开发组别"则表明这个项目是这个特定团队对敏捷开发方法论的应用和实践。 【标签】"Java"指出了这个项目的主要关注点——Java编程语言。Java是一种广泛应用的面向对象的编程语言,尤其在企业级应用和...
随着敏捷方法在软件开发项目中的普及,许多组织开始放弃传统的以计划为驱动的开发方式,转向以敏捷原则为指导的敏捷方法。然而,在这一转变过程中,往往被遗留下来的正是项目管理者。他们接受的传统项目管理培训,...
敏捷开发的核心价值观包括个体和互动高于流程和工具、可工作的软件高于详尽的文档、客户合作高于合同谈判、响应变化高于遵循计划。 ##### 1.3 为何讨论架构? 架构设计是软件开发中的一项关键任务,它决定了系统的...
期刊指出,敏捷转型可以将产品开发速度提高5倍,决策速度提高3倍。对于银行业而言,敏捷转型不仅关乎效率,更是关乎能否在数字经济时代保持竞争力的关键。然而,许多银行高管在实践中对转型的具体策略和路径感到困惑...
综上所述,《DDD实践中的那些坑》揭示了在采用DDD方法进行软件开发时,我们需要关注并解决的诸多问题。只有充分理解这些潜在的陷阱,并采取相应的策略,才能充分发挥DDD的优势,构建出真正符合业务需求的高质量系统...
敏捷开发强调迭代和适应变化,TDD则是确保代码质量的有效手段,而代码审查可以促进团队间的知识共享和代码质量的提升。这些方法论都是从作坊式开发向专业软件工程转变的关键步骤。 书中的每个章节都可能通过实例、...
- 采用敏捷开发方法,强调迭代和增量设计。 - 制定详尽的设计规范和模板,确保所有方面都得到考虑。 - 设计评审,邀请外部专家提供反馈。 - 为关键组件进行性能预估和压力测试。 【风险4:开发阶段的代码质量问题】...
文档中可能会讨论版本控制(如Git)、敏捷开发方法、测试驱动开发(TDD)等,这些都是现代软件开发流程的关键组成部分,对提升团队协作效率和软件质量至关重要。 数据库管理是IT领域的另一个核心话题,学生需要理解...
其次,"极限编程"是一种敏捷开发方法论,强调快速反馈、团队协作以及软件质量的重要性。在Java开发中应用极限编程,意味着开发者需要频繁地进行小规模的代码发布,通过持续集成来快速发现并修复错误。XP的关键实践...
3. **企业实践与挑战**:报告可能会揭示企业在实施DevOps过程中遇到的主要挑战,如文化转变困难、技术选型困惑、人员培训需求等,并提供应对策略。 4. **DevOps工具链**:报告可能介绍了常用的DevOps工具,如...