系统架构师---开发方法---敏捷开发

目录

前言

极限编程

四大价值观

沟通

简单

反馈

勇气

尊重:

十二个最佳实践

计划游戏

小型发布

隐喻

简单设计

测试先行

重构

结对编程

集体代码所所有制

持续集成

每周工作40小时

现场客户

编码标准


前言

2001年2月,在美国的犹他州,17位"无政府主义者"共同发表了《敏捷软件开发宣言》,在宣言中指出:

  1. 尽早地、持续地向客户交付有价值的软件对软件开发人员来说是最重要的。
  2. 拥抱变化,即使在开发的后期。敏捷过程能够驾驭变化,保持客户的竞争力。
  3. 经常交付可工作的软件,从几周到几个月,时间范围越小越好
  4. 在整个项目中,业务人员和开发者紧密合作
  5. 围绕士气高昂的团队进行开发,为团队成员提供适宜的环境,满足他们的需要,并给予足够的信任
  6. 在团队中,最有效率的、也是效果最好的沟通方式是面对面地交流
  7. 可以工作的软件是进度首要的度量方式
  8. 可持续地开发,投资人、开发团队和用户应该保持固定的节奏
  9. 不追求优秀的技术和良好的设计有助于提高敏捷性
  10. 要简单,尽可能减少工作量。减少工作量的艺术是非常重要的
  11. 最好的架构、需求和设计都来自于一个自我组织的团队
  12. 团队要定期地总结如何能够更有效率,然后相应的自我 调整

极限编程

XP方法可以说是敏捷联盟中最鲜艳的一面旗帜,也是相对来说最成熟的一种。XP方法的雏形最初形成于1996-1999年。

XP是一种轻量、敏捷、高效、低风险、柔性、可预测、可行而且充满乐趣的软件开发方式。与其他方法论相比,其最大的不同在于:

  1. 在更短的周期内,更早地提供具体、持续的反馈信息
  2. 迭代地进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程中不断地发展它。
  3. 依赖于自动测试程序来监控开发进度,并及早地捕获缺陷
  4. 依赖于口头交流,测试和源程序进行沟通
  5. 倡导持续的,演化式的设计
  6. 依赖于开发团队内部的紧密协作
  7. 尽可能达到程序员短期利益和项目长期利益的平衡

XP由价值观、原则、实践和行为四个部分组成,他们彼此相互依赖,关联,并通过行为贯穿整个生命周期

四大价值观

XP的核心是其总结的沟通、简单、反馈、勇气四大价值观,它们是XP的基础,也是XP的灵魂。

沟通

通常,程序员给人留下的印象就是内向、不善言辞,项目中的许多问题就出在这些缺乏沟通的开发人员身上。由于某个程序员做出了一个设计决定,但是却不能够及时沟通团队中的其他成员,结果使得团队在协作与配合上出现很多麻烦。而在传统的开发方法中,并不在意这种口头沟通不畅的问题,而是希望借助于完善的流程和面面俱到的文档、报表、计划来替代,但是,这又引入了效率不高的新问题。

XP方法认为,如果小组成员之间无法做到持续的,无间断的交流,那么协作就无从谈起。从这个角度来看,通过文档、报表等人工 制品进行交流,具有很大的局限性。因此,XP组合了诸如结对编程这样的最佳实践,鼓励大家进行口头交流,通过交流解决问题,提供效率。

简单

XP方法在工作中秉承"够用即好"的思路,也就是尽量的简单化,只要今天够用就行,不考虑明天会出现的新问题。这一点看上去十分容易,但是要真正做到保持简单的工作其实是很难的,因为在传统的开发方法中,都要求开发人员对未来做一些预先规划,以便对今后可能发生的变化预留一些扩展空间。

沟通和简单之后还有一种相当微秒的互相支持的关系。一方面,团队成员之间的沟通得越多,就越容易明白那些工作需要做,那些工作不需要做;另一方面,系统越简单,需要沟通的内容也就越少,沟通也将更加全面。

反馈

是什么原因使得客户、管理层这么不理解开发团队?究其原因,就是开发的过程中缺乏必要的反馈。在很多项目中,当开发团队经历过需求分析之后,在一个相当长的时间段中,是没有任何反馈信息的。整个开发过程对于客户和管理层而言就像一个黑盒子,进度完全看不到。而且,在项目开发过程中,这样的现象不仅出现在开发团队与客户、管理层之间,还包括在开发团队内部。因此,开发团队需要更加注重反馈。反馈对应任何软件项目的成功都是至关重要的,而在XP方法论中则更进一步,通过持续、明确的反馈来暴露软件状态的问题。

反馈与沟通有着良好的配合,及时和良好的反馈有助于沟通。而简单的系统,更有利于测试和反馈。

勇气

在应用XP方法时,每时每刻都在应对变化;由于沟通良好,会有更多需求变更的机会;由于时刻保持系统的简单,新的变化会带来一些重新开发的需要;由于反馈及时,会有更多中间打断思路的新需求。总之,这一切使得开发团队处于变化之中,因此,这时就需要有勇气来面对快速开发,面对可能的重新开发。勇气可以来源与沟通,因为它使得高风险,高回报的试验称为可能;勇气可以来源于简单,因为面对简单的系统,更容易鼓起勇气;勇气可以来源与反馈,因为可以及时获得每一步前进的状态(自动测试),会让人更勇于重构代码。

尊重:

在XP的四大价值之下,隐藏着一种更加深刻的东西,就是尊重。因为这一切的准则都建立在团队成员之间相互关心,相互理解的基础之上。

十二个最佳实践

在XP中,集成了12个最佳实践,大多数概念和编程一样老。主要的创新点在于提供一种良好的思路将这些最佳实践结合在一起,并且确保尽可能彻底地执行,使得他们能够在最大程度上相互支持。

计划游戏

计划游戏的主要思想就是先快速地制定一份概要计划,然后,随着项目细节的不断清晰,再逐步完善这份计划。计划游戏产生的结果是一套用户故事及后续的一两次迭代的概要计划。

小型发布

XP方法秉承的是"持续集成,小步快走"的哲学思维,也就是说每一次发布的版本应该尽可能地小,当然前提条件是每个版本有足够的商业价值,值得发布。由于小型发布可以使的集成更频繁,客户获得的中间结果越频繁,反馈也就越频繁,客户就能够实时地了解项目的进展情况,从而提出更多的意见,以便在下一次迭代中计划进去,以实现更高的客户满意度。

隐喻

相对而言,隐喻比较令人费解。根据词典中的解释是,"一种语言的表达手段,它用来暗示字面意义不相似的事物之间的相似之处"。隐喻常用的四个方面,寻求共识,发明共享词汇、创新的武器、描述架构。

简单设计

强调简单的价值观,引出了简单性的假设原则,落实实处就是"简单设计"实践。这个实践看上哪去似乎很容易理解,但是却又经常被误解,许多批评者就指责XP忽略设计是不正确的。其实,XP的简单设计实践并不是要忽略设计,而是认为设计不应该在编码之前一次性完成,因为那样只能建立在"情况不会发生变化"或者,"我们可以预见所有的变化"之类的谎言的基础上。

测试先行

对于有些团队而言,有时候程序员会以"开发工作太紧张"为理由,继而忽略测试工作。这样,就导致了一个恶性循环,越是没空编写测试程序,代码的效率与质量越差,花在找缺陷,解决缺陷的时间也就越来越多,实际产能大大 降低。由于产能降低,因此时间更紧张,压力就更大。

重构

重构是一种对代码进行改进而不影响功能实现的技术,XP需要开发人员在"闻到代码的坏味道"时,就有重构代码的勇气。重构的目的是降低变化引发的风险、使得代码优化更加容易。

结对编程

从20世纪60年代开始,就有类似的 实践在进行,长年以来的研究结果给出的结论是,结对编程的效率反而比单独编程更高。一开始虽然会牺牲一些速度,但是慢慢的,开发的速度会逐渐加快。究其原因,主要是结对编程大大降低了沟通的成本,提供了工作的质量。结对编程技术被誉为XP保证工作质量、强调人文主义的一个最典型的 实践,应用得当还能够使开发团队协作更加顺畅、知识交流与共享更加频繁、团队稳定性也会更加牢固。

集体代码所所有制

由于XP方法鼓励团队进行结对编程,而且认为结对编程的组合应该动态地搭配,根据任务的不同、专业技能的不同进行更优组合。因此,每一个人都会遇到不同的代码,代码的所有制就不再适合于私有,因为那样会给修改工作带来巨大的不便。所谓集体代码所有制,就是团队中每个成员都拥有对代码进行改进的权利,每个人都拥有全部代码,也都需要对全部代码负责。同时,XP强调代码是谁破坏的(修改后出现问题),就应该谁来进行修复处理。

集体代码所所有制是XP与其他敏捷方法的一个较大的不同,也是从另一个侧面体现了XP中蕴含的很深厚的编码情节。

持续集成

在前面谈到小型发布、重构、结对编程、集体代码所所有制等最佳的实践,多次提到持续集成,可以说持续集成是这些最佳实践的基本支撑的条件。

每周工作40小时

这是最让开发人员开心,管理者反对的一个最佳实践了,加班,再加班早已经成为开发人员的家常便饭,也是管理者最常使用的一种策略。而XP方法认为,加班最终会扼杀团队的积极性,最终导致项目的失败,这也充分体现了XP方法关注人的因素比关注过程的因素多一些。

现场客户

为了保证开发出来的结果与客户的预想接近,XP方法认为最重要的是需要将客户请到开发现场。就像计划游戏中提到一样,在XP项目中,应该时刻保证客户负责业务决策,开发团队负责技术决策。因此,在项目中有客户在现场明确用户故事,并作出相应的业务决策,对于XP项目而言有着十分重要的意义。

编码标准

拥有编码标准可以避免团队在一些与开发进度无关的细枝末节的问题上发生争论,而且会给重构,结对编程带来很大的麻烦。不过,XP方法的编码标准的目的不是创建一个事无巨细的规则列表,而是要能够提供一个明确代码清晰,便于交流的指导方针。

最后,有句话,1+1>2最适合表达XP的观点,XP方法的最大价值在于,在项目中融会贯通地运用这12个最佳实践,而非单独的使用。当然,可以使用其中的一些实践,但是这并不意味着就应用了XP方法。XP方法真正能够发挥其效能,就必须完整地运用12个实践。

相关推荐
算法小白(真小白)3 小时前
低代码软件搭建自学第二天——构建拖拽功能
python·低代码·pyqt
码农君莫笑3 小时前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
低代码布道师8 小时前
从用户视角出发:用例图分析家政预约小程序
低代码·小程序
GitCode官方12 小时前
GitCode 光引计划投稿|智能制造一体化低代码平台 Skyeye云
低代码·制造·gitcode
轻流Qingflow4 天前
数字化制造新生态:共话无代码+AI落地实践
人工智能·低代码·ai·轻流
Nodejs_home4 天前
创建学员信息列表页面
低代码
夏子曦4 天前
低代码开发
低代码
万维——组态4 天前
web组态可视化编辑器
前端·物联网·低代码·编辑器·流程图·组态
BY-组态5 天前
BY组态-低代码web可视化组件
前端·物联网·低代码·web组态·组态·组态软件