The Planning Game: Business and development cooperate to produce the maximum business value as rapidly as possible. The planning game happens at various scales, but the basic rules are always the same:
游戲策劃:結(jié)合業(yè)務(wù)和開發(fā)以盡可能快地產(chǎn)生商業(yè)效益。游戲策劃的范圍各有不同,但基本原則都是一樣的:
Business comes up with a list of desired features for the system. Each feature is written out as a User Story, which gives the feature a name, and describes in broad strokes what is required. User stories are typically written on 4x6 cards.
業(yè)務(wù)提供了一張系統(tǒng)的期望特征表,把每個(gè)特征作為一個(gè)用戶需求(User Story)記錄下來,其中包括特征名和需求的各種提法。用戶需求典型地是寫在4x6的卡片上。
Development estimates how much effort each story will take, and how much effort the team can produce in a given time interval (the iteration).
開發(fā)工作要估計(jì)每條需求所需要的工作量,以及開發(fā)團(tuán)隊(duì)在一個(gè)時(shí)間段(一次迭代)里能完成的工作量。
Business then decides which stories to implement in what order, as well as when and how often to produce a production releases of the system.
然后企業(yè)就確定用何種順序?qū)崿F(xiàn)哪些用戶需求,同時(shí)確定可發(fā)布的產(chǎn)品以的發(fā)布頻度。
Small Releases: Start with the smallest useful feature set. Release early and often, adding a few features each time.
短時(shí)發(fā)布:以實(shí)現(xiàn)最小的可用特征集開始。盡早發(fā)布和更新,每次只增加少數(shù)幾個(gè)新特征。
System Metaphor: Each project has an organizing metaphor, which provides an easy to remember naming convention.
系統(tǒng)綽號(hào):每個(gè)項(xiàng)目有一個(gè)有規(guī)律的綽號(hào),提供容易記住的命名規(guī)則。
Simple Design: Always use the simplest possible design that gets the job done. The requirements will change tomorrow, so only do what's needed to meet today's requirements.
簡(jiǎn)要設(shè)計(jì):使用盡可能最簡(jiǎn)單的設(shè)計(jì)來完成工作。需求也許明天就會(huì)改變,因此我們所需的只是完成今天所遇到的需求。
Continuous Testing: Before programmers add a feature, they write a test for it. When the suite runs, the job is done. Tests in XP come in two basic flavors.
連續(xù)測(cè)試:在程序員增加一項(xiàng)特征前就完成測(cè)試程序。當(dāng)整個(gè)系統(tǒng)能運(yùn)行時(shí),測(cè)試任務(wù)也就結(jié)束了。XP中的測(cè)試包括兩種類型:
Unit Tests are written by the developers to test functionality as they write it. Each unit test typically tests only a single class, or a small cluster of classes.
單元測(cè)試(Unit Tests)(代碼)是開發(fā)者編寫用來對(duì)他們所做的程序進(jìn)行功能測(cè)試的。每個(gè)單元測(cè)試典型地只測(cè)試單個(gè)的類或很少幾個(gè)類的組合。
Acceptance Tests (also known as Functional Tests) are specified by the customer to test that the overall system is functioning as specified. Acceptance tests typically test the entire system, or some large chunk of it. When all the acceptance tests pass for a given user story, that story is considered complete.
驗(yàn)收測(cè)試(也被稱為功能測(cè)試)是由客戶指定來測(cè)試整個(gè)系統(tǒng)是否完成既定功能。驗(yàn)收測(cè)試通常測(cè)試整個(gè)系統(tǒng),或系統(tǒng)中一些大的模塊。當(dāng)驗(yàn)收測(cè)試達(dá)到某條給定需求后,此需求就認(rèn)為已經(jīng)完成了。
Refactoring: Refactor out any duplicate code generated in a coding session. You can do this with confidence that you didn't break anything because you have the tests.
求精(Refactoring):去掉在編碼過程中產(chǎn)生的任何重復(fù)代碼,你可以自信地認(rèn)為這么做不會(huì)破壞任何東西,因?yàn)槟氵€有測(cè)試作為后盾。
Pair Programming: All production code is written by two programmers sitting at one machine. Essentially, all code is reviewed as it is written.
編程對(duì)子:所有代碼都是坐在同一臺(tái)機(jī)器前的兩個(gè)程序員共同編寫的,因此所有代碼在編寫的同時(shí)就完成了復(fù)查工作。
Collective Code Ownership: No single person "owns" a module. Any developer is expect to be able to work on any part of the codebase at any time.
集體代碼所有權(quán):沒有單獨(dú)的一個(gè)人能“擁有”一個(gè)模塊,所有開發(fā)者都能在任何時(shí)候針對(duì)代碼庫的任何部分進(jìn)行工作。
Continuous Integration: All changes are integrated into the codebase at least daily. The tests have to run 100% both before and after integration.
連續(xù)整合:至少每天都將所有的改變整合到代碼庫中,在整合前后都要進(jìn)行100%的測(cè)試。
40-Hour Work Week: Programmers go home on time. In crunch mode, up to one week of overtime is allowed. But multiple consecutive weeks of overtime are treated as a sign that something is very wrong with the process.
每周4干40小時(shí):讓開發(fā)人員按時(shí)回家。在特殊情況下,最多也只允許加班一周,但連續(xù)加班幾周就是工作過程出了問題的跡象。
On-site Customer: Development team has continuous access to a real live customer, that is, someone who will actually be using the system. For commercial software with lots of customers, a customer proxy (usually the product manager) is used instead.
在位(on-site)客戶:開發(fā)團(tuán)隊(duì)要經(jīng)常和活生生的客戶接觸,即系統(tǒng)的實(shí)際用戶。對(duì)于有很多客戶的商業(yè)軟件,可以用客戶代理(經(jīng)常就是產(chǎn)品經(jīng)理)來代替。
Coding Standards: Everyone codes to the same standards. Ideally, you shouldn't be able to tell by looking at it who on the team has touched a specific piece of code.
編碼標(biāo)準(zhǔn):每個(gè)人都按相同的標(biāo)準(zhǔn)編寫代碼。理想情況下,你無法通過看代碼的形式來說出是團(tuán)隊(duì)中的誰編寫的。
聯(lián)系客服