1. 程式人生 > >精益軟體開發(一)

精益軟體開發(一)

精益軟體開發連載(一)

“精益軟體開發”這個詞最初是由歐洲聯盟的ESPRIT倡議組織1992年10月在德國斯圖加特舉辦的一個會議的標題。另外早些年,Robert “Bob” Charette 在1993年建議把“精益軟體開發”應用於軟體專案風險管理的最佳方法作為他工作研究的一部分。“精益”這個術語是1991年由James Womack、Daniel Jones和Daniel Roos在他們編寫的圖書《The Machine That Changed the World: The Story of Lean Production 》中使用英語定義的術語,用來描述豐田公司的管理方法。把精益這種思想應用於軟體開發其實是很早的,大約是在精益這個術語第一次被使用在製造過程和工業領域之後的一兩年中。
沃麥克(Womack)和瓊斯(Jones)在他們出版於1995年的第二本書中,定義了精益思想的五個核心原則:

• 根據客戶需求,重新定義價值
• 識別價值流,重新制定企業活動
• 使價值流動起來
• 依靠客戶需求拉動價值流
• 追求盡善盡美

這成為未來十年大部分時間裡預設的工作定義。有人建議,通過消除浪費而達到追求完美。雖然有五大支柱,而第五個就是通過消除浪費的活動和系統化的識別浪費的活動並且消除這些活動來追求完美,真正的與廣泛的讀者產生共鳴。通過20世紀90年代末和早期的第二十一世紀的一部分活動,精益變得幾乎完全與消除浪費的實踐相關聯。

沃麥克(Womack)和瓊斯(Jones)對精益的定義並不被普遍性的共享。豐田的管理原則更為微妙。英語中的“浪費”一詞可以用三個含義更為豐富的日語術語描述:

• Muda–字面上的意思是“浪費”,這意味著沒有附加值的活動
• Mura–意思是“不均衡”和可被理解為“在流量的變化中”
• Muri–意思是“過重的負擔”或“不合理”(超出人或者裝置的能力)

追求完美是通過減少非增值的活動,而且通過穩定的工作流程和消除過重的負擔達到的。此外,豐田的做法是基於一個基本的尊重人和嚴重影響來討論二十世紀的質量保證和統計的過程控制專家,如愛德華茲•戴明(W. Edwards Deming)。不幸的是,幾乎有許多作者給出了精益的定義。

精益和敏捷

Bob Charette雖然受到邀請但是他並未能出席2001年在美國猶他州瓦薩奇山雪鳥滑雪勝地召開的敏捷軟體開發[5]宣言會議。儘管錯過了這個歷史性的會議,但是精益軟體開發被認為是幾個敏捷方法中的一個。Jim Highsmith致力於他在2002出版的書中與Bob關於這個話題採訪中的一個章節。後來,Mary和Tom Poppendieck繼續編寫了一系列與此相關的圖書。在二十一世紀最初的幾年中,精益原則被用來解釋為什麼敏捷方法更好。從精益的觀點來解釋敏捷方法,它包含很少的“浪費”,因此產生了更好的經濟性的結果。精益原則被用來作為“許可者”採用敏捷方法。

精益超越敏捷

近年來,精益軟體的發展確實出現了與自己相關的學科,但這並不是敏捷運動的一個分支。這種學科的演變最初的思想源自於精益產品開發和Donald G. Reinertsen [10,11]的工作研究:非敏捷世界的大型系統工程思想的融合,以及James Sutton和Peter Middleton的著作。我也綜合了Eli Goldratt和W. Edwards Deming的著作,強調專注於工作流程而不是減少浪費。在2005年前後Reinertsen的要求下,我介紹了當系統已經準備好了之後,使用限制工作進展和“拉”動新工作的看板系統。Alan Shalloway在他2009年的書中增加了精益軟體開發思想的主題[ 14 ]。自2007以來,精益作為一個新的力量出現在軟體開發行業,進步專注於改善流程,管理風險,提高(管理)決策。看板已成為IT相關工作精益生產的主要推動者。看來,專注於流程而不是消除浪費成為重點,這在知識工作活動如軟體開發的持續改進方面是一個更好的催化劑。

定義精益軟體開發

定義精益軟體開發是具有挑戰性的,因為沒有具體的精益軟體開發方法或過程。精益不是個人軟體過程、V模型、螺旋模型、EVO、特徵驅動開發、極限程式設計、Scrum、或者測試驅動開發。如果它被觀察到與精益軟體開發運動的價值和精益軟體開發的原則相一致,一個軟體開發生命週期過程或專案管理過程可以說是“精益”。因此,那些期待一個簡單的祕訣,可以遵循和命名精益軟體開發將感到失望。你必須通過理解精益原則和採用精益的核心價值觀來定製或定製自己的軟體開發過程。

在精益軟體開發中有幾個學派(schools of thought)。最大的也可以說是領先的學派是精益系統的社會。其代表人物有Donald Reinertsen,Jim Sutton,Alan Shalloway,Bob Charette,Mary Poppendeick,David J. Anderson。Mary和Tom Poppendieck的作品發展到社會和其信條分別形成之前,作為Craig Larman的工作,Bas Vodde [15,16],以及最近的Jim Coplien。本文旨在廣泛代表的精益系統社會的觀點表示在其信條(credo),並提供一個綜合和總結他們的思想。

價值

精益系統協會在2012精益軟體與系統會議發表了其信條。這是基於一組發表在一年前的價值觀。這些值包括:
• 接受人類的條件
• 接受複雜性和不確定性是自然的知識工作
• 致力於更好的經濟成果
• 使社會學更好的結果
• 尋求,擁抱和質疑的想法,從一個廣泛的學科
• 基於價值觀的社群提高了積極變化的速度和深度

接受人類的生存環境

諸如軟體開發等知識工作是由人類進行的。我們人類本質上是複雜的,而邏輯思想家,我們也受我們的情緒和內在的一些動物性的特徵,不能合理地被克服。我們的心理和神經心理學必須考慮到我們所從事的設計系統或過程中。我們的社會行為也必須得到滿足。人類本質上是情感的、社會的和部落的,我們的行為隨著疲勞和壓力而改變。成功的過程將是那些擁抱和容納人類的生存環境,而不是那些試圖否認它,並假設邏輯、機器般的行為。

接受複雜性和不確定性是自然的知識工作

顧客和市場的行為是不可預測的。工作流程和工作的人是不可預測的。缺陷和要求的返工是不可預測的。軟體開發中存在著多層次的內在的機會或看似隨機的行為。專案的目的、目標和範圍在交付時往往會發生變化。這種不確定性和可變性,儘管最初是未知的,可知在某種意義上說,它可以研究和量化其風險管理,但有些變化是不可知的提前並不能充分的預期。因此,系統的精益軟體開發必須能夠應對顯露出來的事件,並且系統必須能夠適應不斷變化的情況。因此,任何精益軟體開發過程中必須存在一個框架,允許適應(過程),以展現事件。

朝著更好的經濟結果努力

人類的活動諸如精益軟體開發應側重於產生更好的經濟成果。當資本主義既有利於商業價值又有利於顧客利益時,資本主義是可以接受的。投資者和企業所有者應獲得投資回報。員工和工人應該有公平的報酬來公平地執行工作。客戶應該得到一個良好的產品或服務,提供其承諾的好處,以換取公平的價格支付。更好的經濟成果將以較低的成本向客戶交付更多的價值,同時以最有效的方式管理投資者或業主所調配的資金。

更好的社會學成果

更好的經濟成果不應該以犧牲那些履行工作的人花費來交付。建立一個工作場所,尊重人並接受人們的條件,並提供尊重人的心理感受和社會學本質工作的系統是必不可少的。建立一個偉大的地方來完成偉大的工作是精益軟體開發團體的一個核心價值。