本文寫于2013/8/24,謝絕無授權轉載
本文是第四部分,主要討論方法論和方法設計的一些基本規則,已經如何清晰地定制和應用這些規則。
構建發布軟件的生態系統
方法論的目的在于使用所有可行的手段來保證我們可以發布預期的軟件,并且這樣的方法是可以確定持續進行的。方法學本身即使社交行為的創建過程。方法本身是一個關于職位描述,過程,團隊中每個人需要遵守的傳統的集合。
每一個組織都有自己的方法論,這些方法就是他們怎樣做商業的方式。一種方法論可以說是你的組織同意采取的一種傳統;這些過程可能在大部分公司并沒有很正式的打印出來或者寫下來。這種一致同意的傳統需要我們不時得重新審視,持續的構建。
方法論概念
方法論是關于一些方法的固化和規則定義,其對過程的約束是它不同于方法本身的地方 - 你可以在不同的時候采用不同的方法;然而在一系列開發過程中,方法論代表著一直認可的基本規則和約定。
集合一群聰明人又想獲得成功,我們就必須做好協調/合作和協調,離開這些手段,最聰明的人組合的團隊也會變得雜亂無章,從而很難取得成功。
結構性術語
方法學有如下幾個結構性要素
- 角色:明確的角色分工至關重要,什么樣的角色需要什么樣的職責和技能等
- 技能:角色需要的技能和專長
- 團隊:不同的情況之下工作于一起的一種集體角色
- 技術:賴以完成具體工作的技術技能,關于怎樣完成某種特定工作的一些知識
- 活動:人們怎樣完成某些特定工作的過程,譬如計劃,編碼,測試等
- 過程:各種各樣的活動如何連接在一起
- 工作產品: 可以是中間過程的產出,如CRC卡或者故事卡片等
- 里程碑:一些關鍵的時間節點,往往是關于整體進度的一個節點
- 標準:關于一些工具/類庫/方法的一些傳統/約束等
- 質量:關于活動和工作產物的質量屬性
- 團隊價值:什么樣的價值被大家普遍認可
不同的方法論在上述的要素上有很多各不相同之處。
依據上述的結構性要素,常見的方法類可以劃分為以下類型:
- Normative方法,強調采用的步驟或者解決方案是完全遵守已有的工作記錄。
- Rational方法,基于工具和方法來構建
- Participative方法,基于利益相關方和客戶參與的方面
- Heuristic方法,基于已經學習得到的經驗,啟發式進行
很多情況下,隨著人們經驗的基積累,方法論可能沿著Heuristics的方法慢慢固化下來,慢慢演進到Normative方法;譬如在計算機編程領域,算法設計方面就達到了標準化的地步;而關于將人們放在開放的辦公區還是私有的辦公室的方面卻沒有。
大部分的軟件開發貨活動還處于Heuristic方法就足夠適用的階段。
范圍
一種方法論的范圍涵蓋了關于它要關注的角色范圍和相關的一些活動。早期的面向對象方法論被認為是設計師作為核心的角色,活動主要是討論技術工具和描述對應標準圖形的活動;然而這樣的描述不夠寬泛的同時,又顯得限制太多。
方法論的范圍可以被概括為如下幾個方面:
- 生命周期的覆蓋,什么時間開始,什么時候結束
- 角色覆蓋,什么樣的角色參與什么樣的活動
- 活動覆蓋,什么樣的活動在什么樣的情況下開展
從這樣的角度看,早起的面向對象方法僅僅局限于討論一個很狹窄的領域,只有設計師參與,僅僅關系到項目設計階段,從而導致經驗豐富的面相對象設計師認為他們不適合參與項目的整個生命周期。從這些因素來考慮,有助于我們更好的理解怎樣的方法論在怎樣的場景下是更合適的。
概念性要素
為了更好的設計和定制方法論,我們需得考慮如下一些要素:
- 方法論本身的規模大小,有多少標準,活動,質量度量物,技術描述等
- 正規性,多大的精度控制和什么程度的過程控制是需要的,是否需要更嚴格的控制和錯誤容忍率
- 方法論的重度,控制元素的個數,流程/活動的數目
- 問題域大小,需要多少問題去解決,內部復雜性如何
- 項目本身的大小,多少個人需要協調
- 系統重要性,如果發生了錯誤,造成的損害如何,是僅僅損失錢財還是造成人命有關的災難
- 精確度如何,譬如設計的粒度如何,高層設計到什么樣的程度為好
- 準確度,怎樣更接近真是精確度,如何算好
- 相關性,什么樣的討論是不相關的
- 錯誤容忍度
- 可見行 - 外部怎么知道某種方法論是否被很好遵循,是否需要審計等
- 擴展性
- 穩定性 - 多大程度上它可能發生變化
發布一種方法論
發布方法論需要發布兩種組件,一時可視的形象化視圖,一是文本本身。形象化的視圖可能無法顯示實踐/標準和其它一些對組織很重要的協作方式描述。這些信息很難作出一個形象化的視圖來呈現,這時候我們必須用文本來列出來。
發布出來的方法論文本需要描述技術/活動/會議/質量度量/工作角色的指責標準這樣的東西。方法論的文本可能變得異常龐大,即使一個很細微的方法論,譬如只有4種角色,每種角色只有4種產出,每個產出只有4個里程碑,最終也會產生出68=4+16+48個互鎖的子部分需要描述清楚。即使是以輕量級著稱的XP方法論,最初只有200頁那么多,現在已經達到了1000頁才可以描述清楚。
但是很多時候,公司組織并不會將這些東西打印出來,因為
- 理解這些比文檔本身重要 - Jim Highsmith
- 組織的需求總是在變化的,固定下來的文本很容易過時也沒有實用性
組織需要不斷的演進既有的方法論,變更不合適的部分,在組織內部的不同團隊之間傳遞好的習慣和實踐。有很多中方法來減少這些方法論文本的厚度:
- 提供工作產出物的范本
- 移除技術操作指南,讓人們用更自然的方式協作
- 根據角色來組織方法論文本,某種產出物按照不同的角色給出簡單的描述
- 做些關于流程的小實踐,通過小的練習實踐這些方法,然后再用于具體的工作