敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考

來源 |  汽車電子與軟件


前言

在軟件定義汽車趨勢下,一方面”快速交付”、“OTA”已成為行業的共識;另一方面“交付質量”雖可適度下降但仍要有底線;這兩者的沖突已超出了傳統的ASPICE研發流程體系的能力范圍,“敏捷開發”是否可以解決這一切呢?這兩者是否可以,或者如何結合呢?


01 軟件研發體系的挑戰與思考


1. 挑戰與痛點


最近在公司內部做了個小的調查,大家對于軟件開發過程的痛點還是不少的。以下是一個從“管理層”視角來看的“痛點”,以及相應的原因。


研發干的“不好”


  • 定義了A,實現出來卻變成了B:  產品定義方與實現缺乏溝通,且交付物只在最后階段可見,再提意見就晚了
  • 里程碑快到了,才發現問題仍然一堆:軟件開發的過程不透明,難以管控
  • 上線后,售后問題急死人:工期的壓縮對非必要環節產生沖擊,嚴重影響質量


市場變化“太快”


  • 定義了A,干到一半想改成B,基本不可能:傳統的瀑布式開發,流程越往后走,變更成本越高
  • 定了一年上線,臨時想改成8個月,困難重重:瀑布式開發,若未走完全流程則質量問題一大堆,基本無法交付。


黃花菜“涼了”


  • 需求從提出到交付,周期太長:單一功能涉及多個專業部門,干系人復雜,溝通成本太高;功能開發流程鏈條較長,從計劃到交付往往涉及10+環節;


2. Tesla和行業里是怎么干的呢?


首先,Tesla并未采用ASPICE,下面是Tesla的Software QA Engineer的職位描述,就是測試。如果采用ASPICE的話,則會有專門的人員去保證流程、優化流程。

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖1

那么Tesla是怎么干的呢?從各種渠道的證據來看,其都是通過“敏捷”來解決的。Tesla的高管團隊大多來自硅谷,而硅谷的軟件文化——敏捷到無須再提,所以Tesla從設計、開發、生產到組織架構都是敏捷的組織形式。

比如:Tesla的自適應空氣懸架,需求從提出到交付,僅用一個迭代[1],按Tesla每月一小迭代的節奏來看,推測也就是1-2個月就上線了。

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖2
自適應空氣懸架

又比如:Tesla的組織架構,在馬斯克發了如下郵件后就蕩然無存了,僅有形式上的意義:"溝通應該通過最短路徑來完成,而不是用“指揮鏈”。任何一個試圖強行用指揮鏈方式溝通的經理,很快就會發現他得去別處工作了"

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖3
僅有形式上的意義的組織架構

那么"Tesla"很多時候屬于"外星生物",咱們不一定學的來,那么其他"正常"的公司是怎么干的呢?

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖4
敏捷相關行業實踐

首先是互聯網企業:

  • Tesla、Apple、Google應用敏捷基本是不用去考證了,其中Apple在2012年組織架構已經是“敏捷”的[2], Google也在2006年就成功將”敏捷”引入Adwords的開發中,并發表相關論文,被IEEE收錄[3]

然后是汽車零部件巨頭:

  • 至少是2020年起,Aptiv已經在全球范圍內全面推廣”敏捷”,且聘請咨詢公司專門定制了AutoScrum的敏捷框架,在公司官網也可以看到其已經在"主動安全"、"自動駕駛"、"車輛互聯"等領域應用敏捷方法了。[4]

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖5

  • Bosch在2015年宣布開始轉型為敏捷組織, 管理層率先使用”敏捷”的方式開始工作[5][6]
  • Continental在2020年也宣布全面轉向敏捷的方法與文化,其VNI部門率先開始全球試點[7]

整車廠也不例外:

  • 奔馳已經將”敏捷(Agile)的組織文化”寫入公司戰略[8],并且其子公司Mbition也開始用敏捷的方式生產整車,并要求其供應商也使用敏捷的方式。其主頁http://mbtion.io上有一段話

    "The essence of our Way-of-Working (WoW) is being agile when it comes to applied values and principles"

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖6

  • 沃爾沃自2017年起,全球整車研發開始轉向敏捷開發[9]。并從2020年開始,使用完全敏捷的方式打造新的量產車型。
  • 寶馬的智能座艙和IT部門也是使用敏捷方式,其中IT部門在2019年實現100%敏捷[10]


3. 我們的思考與方向


參考行業的實踐,以及對敏捷、ASPICE的理解,我們認為轉向敏捷開發,并且依托DevOps與工程師文化建立軟件研發體系,是解決以上痛點的方式與方法。

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖7

02 敏捷細究


既然提到“敏捷”,雖然網絡上關于“敏捷”的介紹不少,我還是簡單的講一講我的理解吧。


1. 敏捷概況


  • 是一種源自“精益”的理念,始于2001年 ,一開始僅用于軟件開發,目前已應用于生產、零售、人事資源、預算、審計,企業組織形式等領域。
  • 在21世紀席卷全球,最大的5家互聯網公司Amazon, Apple, Facebook, Google, Microsoft都在使用
  • 全球有許多非營利組織提供相關的培訓與認證服務,如Scrum聯盟,Agile聯盟,PMI(項目管理協會)
  • 主流問題管理工具都原生的支持敏捷開發:如Jira, Teambition (阿里), TAPD (騰訊)

敏捷的核心"理念"如下:

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖8

這里特別要強調最下面這句話:"盡管右項有其價值,但我們更重視左項的價值", 并不是說右邊沒有價值,而是說如果你認同右邊的價值的話,左邊就更有價值。

2. 敏捷開發流程特點

  • 關鍵角色:Product Owner(產品負責人), Scrum Master(敏捷教練)
  • 跨職能團隊:一個團隊內要具備所有的角色
  • 迭代快速:需求拆細,2-6周可交付

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖9
敏捷常用方法

敏捷有如下優點(來自2020全球敏捷報告):

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖10

下面挑選幾點詳細闡述一下。

3. 敏捷優點詳述

1) 敏捷工程實踐可以大幅提升代碼質量 。某金融科技集團實施1年半的數據:問題/故事數 0.4 -> 0.16

測試驅動開發:在編寫任何代碼之前,首先編寫對應的測試用例;測試用例需要能完全自動化運行。根據IBM和微軟的研究,BUG會少40% - 50%[11]

結對編程: 兩位程序員在一臺電腦前工作,一個負責寫代碼,一個負責實時檢視代碼。兩者角色定期更換。生產率低15%,但BUG少15%,考慮到解BUG工作量比寫要大幾倍,總體效率更高


敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖11
測試驅動開發(TDD)流程

2) 敏捷開發可提升交付速度。某金融科技集團實施1年半的數據:交付周期由 75天-> 42天


敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖12

敏捷 vs 瀑布


3) 敏捷開發通過可視化項目管理等措施,提高軟件開發透明度,大大提高管理效率,進一步促進生產效率。某金融科技集團實施1年半的數據:人均用戶故事數由2.6 -> 4.3


敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖13


4) 敏捷與OKR:兩者是天生的契合關系,有些公司直接把OKR叫做“敏捷”目標管理。這兩者的團隊文化都強調:


  • 自組織:在完成必需工作后,團隊自行決定做什么
  • 自驅力:溝通更多為自下而上,充分發揮個人主動能動性


這里也進一步講一個好處,在敏捷實行的較好的團隊中,由于自驅與自組織,管理人員會變少,利于整個組織的扁平化。


4. 敏捷轉型的關鍵挑戰


敏捷雖然很好,但要轉型成功,挑戰不小,以下是來自敏捷年度報告中的統計。


敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖14

敏捷轉型中的挑戰


這里我著重講兩點:


  • 缺乏領導層的支持: 實行敏捷,組織架構上的微調是必不可免的,這個就需要領導層的支持。很簡單的說,一個SCRUM團隊中,有來自產品、開發、測試、集成等各個職能團隊的人,他們憑什么聽指揮呢?那么至少這個SCRUM master要有考核或比較強的話語權。
  • 組織對變革的阻力: 三方面吧,一是接受新的觀念、流程對很多人都較為困難,且在轉型初期會較為痛苦;二,敏捷特別講究量化數據,這時很多“老油條”或“摸魚達人”就會被暴露出來,他們當然天然會反抗這種轉型;三、敏捷轉型后,整個組織自驅力越來越強,需要的管理人員會變少,這些人該去哪?難免又會有內部的阻力.

5. 敏捷轉型中會出現的常見問題


敏捷轉型中會出現的問題千奇百怪,我也講兩個:


  • 生產率臨時下降(2~3個Sprint):在剛開始實行敏捷轉型時,有很多新的習慣要養成,有很多新的流程要遵循,所以必然會出現臨時性的生產率下降。但放心,一般來說,經過2~3個Sprint的磨合,就可以明顯看到效率的提升。
  • 敏捷容易退化:有些組織在實行敏捷一段時間后,比如說站會開了,KANBAN有了,Scrum也跑起來了,會慢慢的松懈,效率會掉下來。這主要因為“敏捷”是“價值觀”,而不是“方法”,只用敏捷的方法是不夠的。有一句名言叫“Don't do agile, be agile",就是指這個。那么如何保證“敏捷”的價值觀能夠貫徹并保持下去呢?就靠“工程師文化”了,這個后面詳細描述。


03 敏捷與ASPICE


前面講了很多“敏捷”的好處,但是在汽車行業“ASPICE”才是老大哥啊。本節就講講把這兩者放一起講講。


1. 敏捷與ASPICE可以結合嗎?


答案是:可以。行業中把這兩者結合起來用的不少,比如說Aptiv。但是,我要問一句,“為什么要結合呢”?

首先,來說為什么要用“ASPICE”?答案也很顯然,客戶爸爸們要求的啊。沒有ASPICE認證,很多OEM壓根就不會把項目給你。

然后,來說為什么要用“敏捷”?答案也很顯然,被客戶爸爸們逼的。沒事改需求,交付周期壓縮到巴不得明天就上等等,不“敏捷”怎么活?

那么,ASPICE和敏捷結合之后的結果是什么呢?在行業中,結果往往是敏捷主導著整個開發流程,ASPICE流于形式。因為,兩者從“價值觀”上就是沖突的。

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖15

了解ASPICE的人就該明白:

  • ASPICE更加注重文檔:這里的文檔泛指可被第三方檢查的證據。ASPICE Level1的認證就是根據你的文檔輸出(outcome)來倒推你是否有按Base Practice干的。如果你沒有這些,Level 1過不了。
  • ASPICE更加注重流程和計劃,GP(Generic Practice)2.1.1~2.1.6基本講的就是流程、計劃。如GP2.1.6里面寫明了:必須識別、準備、安排合適的資源來保證流程按計劃的進行。要知道,你想通過ASPICE Level 2的認證,GP2.1.1~2.1.6是必要條件。

另外,實行“敏捷”的一大好處就是“提高客戶滿意度”,你沒事就給客戶交點東西,讓他提意見,然后按他的意見改,他能不滿意嗎?在客戶滿意了之后,還要啥ASPICE啊?

2. ASPICE的種種弊端


ASPICE在汽車行業很多年了,它的好處大家應該都很清楚:它對工程流程覆蓋的非常全面,可以幫助與指導軟件開發,并提高交付的質量。我這里主要講講它的壞處。不過在講這個之前,先講一個笑話和親身經歷。

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖16

有一個軟件工程師有一天遇到了上帝,上帝跟他說:“我可以滿足你一個愿望”。工程師想了想,說“我想做一個好的項目”。上帝想了想,于是讓這個工程師得到了“永生”。

做為“軟件工程師”,想做一個好的項目實在太難,但我有幸遇到了。大概在2013年時,我和另外5個小伙伴一起做一個TBOX的項目,大概做了3個多月吧,交付給測試,質量出奇的好。好到QA跑過來說,你們項目的數據有問題,怎么沒有問題的爬坡曲線?確實,我們當時總BUG就是個位數,然后就再也沒有BUG了。

但是,這個項目拿去過ASPICE,沒有通過...... 被提了一堆問題。

以上就是我個人對ASPICE的印象。接下來講講ASPICE的弊端。

弊端1: 過時的管理理念

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖17

“敏捷”,是由一群優秀的軟件工程師達成的“價值觀”方面的共識,更多的是激發個人的積極主動性。

“ASPICE”,是由歐洲20多家OEM共同制定,用于指導零部件廠商的。由于甲方對乙方的天然的不信任,更多的是強調“管理與約束人性的懶惰”。

孰優孰劣,一目了然。

弊端2: 沉重而不靈活

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖18

  • 3~5倍工作量:一個項目,嚴格采用ASPICE后,是常規項目的3~5倍工作量。這個是很多Tier1實踐下的結果,不信的可以自己試試
  • Traceability——看上去很美的骨感現實:ASPICE幾乎每個流程都會講雙向可追溯性(Traceability),大部分項目要么就是把所有的需求全部鏈接到一個模塊上,要么就是只拿一個小模塊來做這事。因為,工程實踐中,Traceability確實可以幫助發現問題,但是性價比極低,你當架構師做架構設計時是只看一遍需求嗎?
  • 改需求或重構時怎么辦:我在上一家公司時,曾經有2個月獨自做一個大模塊,代碼量大概4萬行左右,其中還有幾千行是用于生成代碼的代碼。然后2個月內,我一邊做設計一邊寫代碼,寫不通了就重構設計,一共搞了3遍。如果按ASPICE來,我該怎么辦?

弊端3:驅趕優秀人才

在這個“軟件定義汽車”的時代,優秀的軟件人才都是稀缺的,如何吸引都是一門學問。要是還驅趕,那怎么了得。

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖19

“你寫出了淘 寶的搜索引擎?不好意思,你單元測試是不是沒做?”

上圖是阿里大神“多隆”,p11,2003-2007年獨自一人維護淘 寶的搜索引擎,程序員的天花板。像“多隆”這樣的優秀工程師,其價值觀是這樣的:

  • 成就感:實現了某個復雜功能,解決了某個疑難問題
  • 以自己代碼的健壯性、可維護性、可擴展性為榮
  • 吹牛:老子10年前寫的代碼他們現在還在用呢
但ASPICE后,要求優秀工程師的價值觀是這樣:
  • 成就感:我所有的文檔(泛指)都寫完啦
  • 以嚴格遵守流程,不給QA添麻煩為榮
  • 吹牛:(想不出來了...)

結果呢:“抱歉,我還是離開這家公司吧”

3. ASPICE vs 敏捷 總結


敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖20

面對第一章的“痛點”,ASPICE確實可以解決質量問題,但對市場變化“很快”毫無貢獻,反而還會延長交付的周期。而“敏捷”可以解決所有的“痛點”。

04 工程師文化與DevOps


1. 工程師文化


在公司建立“工程師文化”是“敏捷”不退化的根本保障。“工程師文化”的根本,是以“工程師”為中心的文化。

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖21

個人理解,主要有以下幾點:

  • 質量為導向:充分信任工程師,在不達交付標準時不上線,且不追責. 優秀的工程師的自我要求都是非常高的,到了交付時間點若未達心中的交付標準,其實是不愿意上線的。這時要尊重工程師的意愿,且不追責,因為他往往已經盡力了。
  • 追求新技術:使用和關注最新的技術和工具,并允許因嘗試新技術而帶來的時間成本。嘗試新技術就有失敗的風險,一味只想提高效率而不愿承擔可能的后果就是耍流氓。
  • 專注的時間:盡量減少不必要的會議與其他打擾,否則工程師的“靈感”可能就被打斷了。這里的小提示就是,在非必要時,盡量留言,而不是打電話或者直接找過去。
  • 內部技術論壇:內部建立技術的充分溝通與交流的氛圍。這里,有個簡單粗暴的辦法來判斷公司是否有技術氛圍,就是看那幾百人的大群里,都在聊什么?是經常有技術的交流和分享呢?還是都是些行政類的通知?


2. DevOps


敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖22

DevOps的敏捷快速迭代的技術保證,本身也是個大話題,這里就不展開了,大概有以下幾點:

  • 代碼的提交直接觸發:消除等待時間,快速反饋
  • 每個變化對應一個交付管道:使問題定位和調試變得簡單
  • 全開發流程高效自動化:穩定,快速,交付結果可預測
  • 持續進行自動化回歸測試:提升交付質量
  • 設施共享并按需提供:資源利用最大化

05 結語


敏捷正在吃掉全世界,可能你還不知道,汽車行業也不會例外!

敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考的圖23

參考
  1. ^1 https://www.36kr.com/p/847294138930688

  2. ^2 https://www.forbes.com/sites/stevedenning/2012/02/03/is-apple-truly-agile/?sh=d209df6641e6

  3. ^3 https://www.agilearena.net/google-case-study-agile-software-development/

  4. ^https://www.aptiv.com/en/careers/competencies/join-our-agile-revolution

  5. ^4 https://flyntrok.com/2020/07/07/agile-owl-edition-3/

  6. ^5 https://hbr.org/2018/05/agile-at-scale

  7. ^6 https://www.continental.com/en/press/press-releases/2020-10-21-new-project-organisation-vni-238392

  8. ^7 https://www.daimler.com/company/strategy/

  9. ^https://www.forbes.com/sites/stevedenning/2020/01/26/how-volvo-embraces-agile-at-scale/?sh=50690f454cf0

  10. ^https://www.itpro.co.uk/agile-development/31552/how-bmw-embraced-agile-to-hit-new-speeds

  11. ^https://zhuanlan.zhihu.com/p/257174601


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP