敏捷开发与 XP 的实践方法
頻出约 37 分钟7 个术语过去问 6 题
本单元目标
- 能够说明敏捷是一种以短周期反复、逐步积累可运行的成果,并吸收中途需求变化的开发理念。
- 能够把 XP 定位为将敏捷理念落实为一组具体习惯的方法之一。
- 能够根据先做什么、是否改变外部可见的行为,区分测试驱动开发和重构。
术语总表(7 个)
术语
敏捷(アジャイル)是一种开发理念:以较短的周期反复进行从计划到确认的过程,一点点增加可运行的软件。
这个短周期称为迭代(イテレーション),每次都从当时优先级高的功能做起。不是一开始就定死全部规格,而是边与用户沟通边调整要做的范围。比起把文档整理得细致周全,更看重尽早展示能运行的东西并获取意见。
类比就像旅行时不在出发前把行程精确到分钟,而是每天看天气和身体状况,重新安排第二天的计划。
记法英语 agile 意为“灵活、敏捷”。想象不背沉重的计划书、能随时转向的轻快身手。
考点
- 常考敏捷(アジャイル)的优点是,即使中途规格或需求发生变化,也能纳入下一次迭代的计划。比按顺序逐一完成各工序的瀑布模型(ウォーターフォール型)更能应对变化。
- 常考敏捷重视可运行的软件胜过详细的文档,并把客户的新需求尽早反映到产品中。
用户故事(ユーザーストーリー)是敏捷中描述需求的一种方式,从使用者的立场用简短的句子写出“作为谁、想做什么、为什么”。
一个故事要短到能写在一张卡片上,细节条件在动手制作前再与用户商量决定。连理由也写下来,制作方就不容易忽略这个功能要为谁解决什么困扰。故事会标上优先级,每次迭代按从高到低的顺序制作。
类比就像餐馆里客人点餐时说“我不太能吃辣,想要孩子也能吃的菜”。菜谱的细节由后厨和客人商量着定。
记法story 就是“故事”。故事的主角永远是用户,制作方或系统不会成为主语。
考点
- 易混用户故事(ユーザーストーリー)是用用户自己的话传达目的的简短需求,与把界面和处理细节都定死的详细规格书作用不同。
该术语的过去问 1 题 ユーザーストーリー →
XP 是一种开发方法,它把敏捷理念整理成日常开发中要遵守的一组具体习惯(实践,プラクティス)。
它面向规模较小的团队,以短周期反复发布,在跟上不断变化的需求的同时保持软件质量。实践包括测试驱动开发和结对编程等,都是把公认有益的习惯每次都不落下地执行。
类比就像运动队每次都坚持热身、互相喊话、赛后复盘这些基本功,从而变强。
记法这个两字母缩写取自 Extreme 的 X 和 Programming 的 P。
考点
- 常考XP 是敏捷(アジャイル)的开发方法之一,通过短周期多次发布,在跟上不断变化的需求的同时追求高质量的软件。
- 易混敏捷是泛指一种开发理念的名称,XP 则是实践这种理念的具体方法之一。
该术语的过去问 2 题 XP →
极限编程(エクストリームプログラミング)是 XP 的正式名称,两者指同一种开发方法。
英语写作 Extreme Programming,含有把公认良好的开发习惯贯彻到极致的意思。内容与缩写 XP 完全相同,无论以哪种叫法出现,都当作同一种方法来理解。
记法extreme 意为“极端的”。名字体现的是毫不打折地把基本习惯做到底的态度。
考点
- 常考极限编程(エクストリームプログラミング)与 XP 是正式名称与缩写的关系,表示同一种敏捷(アジャイル)开发方法。
该术语的过去问 1 题 エクストリームプログラミング →
测试驱动开发(テスト駆動開発)是一种开发方式:先写要做的功能的测试,再写能通过该测试的代码。
先写好的测试表明了“做到什么才算完成”,因此在动手之前规格就已清晰。写测试、让它通过、整理代码,这个小循环反复进行,每次都用测试确认行为。英文缩写为 TDD,是 XP 的代表性实践。
类比就像组装家具之前,先定下“这个书架放 30 本书也不会歪”这一合格标准,再开始动手。
记法“驱动”就是“推动的力量”。从字面就能读出:由测试打头阵,带动整个开发。
考点
- 易混在测试驱动开发(テスト駆動開発)中,写测试是第一项工作,与全部做完之后再集中测试的方式顺序相反。
该术语的过去问 1 题 テスト駆動開発 →
结对编程(ペアプログラミング)是两个人并排坐在同一屏幕前,一边商量一边编写同一段代码的开发方式。
握键盘输入的人称为驾驶员(ドライバー),在旁边一边确认一边考虑方针的人称为领航员(ナビゲーター),两人不时互换角色。编写过程中另一人同步查看,因此能尽早发现错误,知识和写法也能在团队中传开。这是 XP 的实践之一。
类比就像汽车拉力赛中,车手握方向盘,副驾驶座上的搭档看着地图报出路线。
记法pair 和鞋子、手套一样,是“两个一组”。用“一张桌子前并排放两把椅子”的画面来记。
考点
- 易混代码评审(コードレビュー)是写完之后由别人再读代码的检查,而结对编程(ペアプログラミング)的不同之处在于,旁边的人在编写的当下就进行确认。
该术语的过去问 2 题 ペアプログラミング →
重构(リファクタリング)是在不改变程序外部可见行为的前提下,把命名、结构等内部构造整理得更易读、更易修改的工作。
这里所说的外部可见行为,是指给出相同输入时返回的结果以及用户能看到的表现。即使表面上的动作不变,减少重复或重新划分处理,也能让之后的修改和功能追加更容易。整理之后行为是否保持不变,要通过运行测试来确认。
类比就像整理房间时一件东西都不扔,只是重新给抽屉分隔,让东西更好找。
记法re-factor 可以想成把数学里的因式分解重新做一遍:值保持不变,只重组式子的形式。
考点
- 常考重构(リファクタリング)只改动内部结构,用户看到的功能和行为保持不变。
- 易混逆向工程(リバースエンジニアリング)是分析已有程序、从中读出规格的活动,与改写代码进行整理的重构方向不同。
- 易混测试驱动开发(テスト駆動開発)是从测试开始推进开发的方式,重构则是在保持行为不变的前提下整理已有代码的工作。
该术语的过去问 2 题 リファクタリング →
要点
- 敏捷是一种开发理念:每个短周期都展示可运行的成果,把用户的意见和需求变化带入下一轮。
- 用户故事用用户的话简短写出“作为谁、做什么、为什么”,细节在动手前再商量决定。
- XP 与极限编程是同一种方法,重视每次都把良好的开发习惯做到底。
- 结对编程中输入的人和确认的人并排工作,编写过程中就能发现错误。
- 重构的关键在于保持外部可见的行为不变,只整理内部结构。
查看这个领域的全部过去问 →