本文寫于2013/8/24国撵,謝絕無授權(quán)轉(zhuǎn)載
本文是第四部分躯畴,主要討論方法論和方法設(shè)計的一些基本規(guī)則,已經(jīng)如何清晰地定制和應(yīng)用這些規(guī)則仅讽。
構(gòu)建發(fā)布軟件的生態(tài)系統(tǒng)
方法論的目的在于使用所有可行的手段來保證我們可以發(fā)布預期的軟件钢悲,并且這樣的方法是可以確定持續(xù)進行的点额。方法學本身即使社交行為的創(chuàng)建過程。方法本身是一個關(guān)于職位描述莺琳,過程还棱,團隊中每個人需要遵守的傳統(tǒng)的集合。
每一個組織都有自己的方法論惭等,這些方法就是他們怎樣做商業(yè)的方式珍手。一種方法論可以說是你的組織同意采取的一種傳統(tǒng);這些過程可能在大部分公司并沒有很正式的打印出來或者寫下來辞做。這種一致同意的傳統(tǒng)需要我們不時得重新審視琳要,持續(xù)的構(gòu)建。
方法論概念
方法論是關(guān)于一些方法的固化和規(guī)則定義秤茅,其對過程的約束是它不同于方法本身的地方 - 你可以在不同的時候采用不同的方法稚补;然而在一系列開發(fā)過程中,方法論代表著一直認可的基本規(guī)則和約定框喳。
集合一群聰明人又想獲得成功课幕,我們就必須做好協(xié)調(diào)/合作和協(xié)調(diào),離開這些手段帖努,最聰明的人組合的團隊也會變得雜亂無章,從而很難取得成功粪般。
結(jié)構(gòu)性術(shù)語
方法學有如下幾個結(jié)構(gòu)性要素
- 角色:明確的角色分工至關(guān)重要拼余,什么樣的角色需要什么樣的職責和技能等
- 技能:角色需要的技能和專長
- 團隊:不同的情況之下工作于一起的一種集體角色
- 技術(shù):賴以完成具體工作的技術(shù)技能,關(guān)于怎樣完成某種特定工作的一些知識
- 活動:人們怎樣完成某些特定工作的過程亩歹,譬如計劃匙监,編碼,測試等
- 過程:各種各樣的活動如何連接在一起
- 工作產(chǎn)品: 可以是中間過程的產(chǎn)出小作,如CRC卡或者故事卡片等
- 里程碑:一些關(guān)鍵的時間節(jié)點亭姥,往往是關(guān)于整體進度的一個節(jié)點
- 標準:關(guān)于一些工具/類庫/方法的一些傳統(tǒng)/約束等
- 質(zhì)量:關(guān)于活動和工作產(chǎn)物的質(zhì)量屬性
- 團隊價值:什么樣的價值被大家普遍認可
不同的方法論在上述的要素上有很多各不相同之處。
依據(jù)上述的結(jié)構(gòu)性要素顾稀,常見的方法類可以劃分為以下類型:
- Normative方法达罗,強調(diào)采用的步驟或者解決方案是完全遵守已有的工作記錄。
- Rational方法,基于工具和方法來構(gòu)建
- Participative方法粮揉,基于利益相關(guān)方和客戶參與的方面
- Heuristic方法巡李,基于已經(jīng)學習得到的經(jīng)驗,啟發(fā)式進行
很多情況下扶认,隨著人們經(jīng)驗的基積累侨拦,方法論可能沿著Heuristics的方法慢慢固化下來,慢慢演進到Normative方法辐宾;譬如在計算機編程領(lǐng)域狱从,算法設(shè)計方面就達到了標準化的地步;而關(guān)于將人們放在開放的辦公區(qū)還是私有的辦公室的方面卻沒有叠纹。
大部分的軟件開發(fā)貨活動還處于Heuristic方法就足夠適用的階段季研。
范圍
一種方法論的范圍涵蓋了關(guān)于它要關(guān)注的角色范圍和相關(guān)的一些活動。早期的面向?qū)ο蠓椒ㄕ摫徽J為是設(shè)計師作為核心的角色吊洼,活動主要是討論技術(shù)工具和描述對應(yīng)標準圖形的活動训貌;然而這樣的描述不夠?qū)挿?/em>的同時,又顯得限制太多冒窍。
方法論的范圍可以被概括為如下幾個方面:
- 生命周期的覆蓋递沪,什么時間開始,什么時候結(jié)束
- 角色覆蓋综液,什么樣的角色參與什么樣的活動
- 活動覆蓋款慨,什么樣的活動在什么樣的情況下開展
從這樣的角度看,早起的面向?qū)ο蠓椒▋H僅局限于討論一個很狹窄的領(lǐng)域谬莹,只有設(shè)計師參與檩奠,僅僅關(guān)系到項目設(shè)計階段,從而導致經(jīng)驗豐富的面相對象設(shè)計師認為他們不適合參與項目的整個生命周期附帽。從這些因素來考慮埠戳,有助于我們更好的理解怎樣的方法論在怎樣的場景下是更合適的。
概念性要素
為了更好的設(shè)計和定制方法論蕉扮,我們需得考慮如下一些要素:
- 方法論本身的規(guī)模大小整胃,有多少標準,活動喳钟,質(zhì)量度量物屁使,技術(shù)描述等
- 正規(guī)性,多大的精度控制和什么程度的過程控制是需要的奔则,是否需要更嚴格的控制和錯誤容忍率
- 方法論的重度蛮寂,控制元素的個數(shù),流程/活動的數(shù)目
- 問題域大小易茬,需要多少問題去解決酬蹋,內(nèi)部復雜性如何
- 項目本身的大小,多少個人需要協(xié)調(diào)
- 系統(tǒng)重要性,如果發(fā)生了錯誤除嘹,造成的損害如何写半,是僅僅損失錢財還是造成人命有關(guān)的災難
- 精確度如何,譬如設(shè)計的粒度如何尉咕,高層設(shè)計到什么樣的程度為好
- 準確度叠蝇,怎樣更接近真是精確度,如何算好
- 相關(guān)性年缎,什么樣的討論是不相關(guān)的
- 錯誤容忍度
- 可見行 - 外部怎么知道某種方法論是否被很好遵循悔捶,是否需要審計等
- 擴展性
- 穩(wěn)定性 - 多大程度上它可能發(fā)生變化
發(fā)布一種方法論
發(fā)布方法論需要發(fā)布兩種組件,一時可視的形象化視圖单芜,一是文本本身蜕该。形象化的視圖可能無法顯示實踐/標準和其它一些對組織很重要的協(xié)作方式描述。這些信息很難作出一個形象化的視圖來呈現(xiàn)洲鸠,這時候我們必須用文本來列出來堂淡。
發(fā)布出來的方法論文本需要描述技術(shù)/活動/會議/質(zhì)量度量/工作角色的指責標準這樣的東西。方法論的文本可能變得異常龐大扒腕,即使一個很細微的方法論绢淀,譬如只有4種角色,每種角色只有4種產(chǎn)出瘾腰,每個產(chǎn)出只有4個里程碑皆的,最終也會產(chǎn)生出68=4+16+48個互鎖的子部分需要描述清楚。即使是以輕量級著稱的XP方法論蹋盆,最初只有200頁那么多费薄,現(xiàn)在已經(jīng)達到了1000頁才可以描述清楚。
但是很多時候栖雾,公司組織并不會將這些東西打印出來楞抡,因為
- 理解這些比文檔本身重要 - Jim Highsmith
- 組織的需求總是在變化的,固定下來的文本很容易過時也沒有實用性
組織需要不斷的演進既有的方法論析藕,變更不合適的部分召廷,在組織內(nèi)部的不同團隊之間傳遞好的習慣和實踐。有很多中方法來減少這些方法論文本的厚度:
- 提供工作產(chǎn)出物的范本
- 移除技術(shù)操作指南噪径,讓人們用更自然的方式協(xié)作
- 根據(jù)角色來組織方法論文本柱恤,某種產(chǎn)出物按照不同的角色給出簡單的描述
- 做些關(guān)于流程的小實踐数初,通過小的練習實踐這些方法找爱,然后再用于具體的工作