在實際工作中,我們經(jīng)常會遇到這樣的問題:與設計開發(fā)相關的模型、標準、方法有那么多,選擇哪一個呢?或者在汽車嵌入式軟件開發(fā)時,我們希望應用Automotive SPICE,也希望使用Agile(Agile的好處很誘人:輕量化、快速響應、擁抱變化等),那么如何解決Automotive SPICE和Agile的沖突呢?
過程模型或能力度模型(如:CMMI, Automotive SPICE):是明確定義“需要做什么(What)”以及“做的目的(Why)”。
標準:滿足某種條件情況下必須要滿足的要求,比如當車載E/E系統(tǒng)是與功能安全相關時,則適用于ISO26262標準,其中就有比如“單元測試覆蓋度”的要求。
方法論:是在特定場景下應用的特定方法,比如在開發(fā)車載嵌入式軟件時,其應用層軟件可以采用基于模型開發(fā)(MBD)的方法。
如上圖所示:
過程模型或能力度模型定義的是“What”和“Why”,比如:需要射中靶心
方法論是采取的具體方式,是“How”,比如:
1)在旅游的時候(左圖),我們可以用那樣一種弓箭來射中靶心;
2)在正式比賽時(右圖),我們需要用專業(yè)弓箭來射中靶心
我們能把處于“What”層面的過程模型或能力度模型與處于“How”層面的方法論進行比較嗎?
1)模型:人需要穿衣服(what),以保暖(Why)
2/3)在冬季沈陽(場景),穿一件羽絨服(方法)
4)通過”Why”來衡量解決方案(How)的有效性:在冬季的沈陽,穿羽絨服可以達到保暖的目的嗎?
舉個Automotive SPICE中的具體例子:
1)ASPICE MAN.3 BP10:評審和報告項目進展(What:評審和報告;Why:監(jiān)控項目進展)
2/3)需求穩(wěn)定明確時(場景),采用傳統(tǒng)開發(fā)方法,進行周監(jiān)控和里程碑監(jiān)控(方法)
4)通過”Why”來衡量解決方案(How)的有效性:在需求穩(wěn)定明確的場合,采用傳統(tǒng)開發(fā)方法用周監(jiān)控和里程碑監(jiān)控的方式,可否達到監(jiān)控項目進展的目的呢?
繼續(xù)上一個例子:
1)ASPICE MAN.3 BP10:評審和報告項目進展(What:評審和報告;Why:監(jiān)控項目進展)
2/3)需求不穩(wěn)定不明確時(場景),采用Scrum方式:每日站例會、Sprint評審會議和Sprint回顧會議方式(方法)
4)通過”Why”來衡量解決方案(How)的有效性:在需求不穩(wěn)定不明確的場合,采用Scrum的每日站例會、Sprint評審會議和Sprint回顧會議方式,可否達到監(jiān)控項目進展的目的呢?
經(jīng)常有人問我如下的類似問題:
比如1:為了滿足ASPICE要求,在使用Scrum方法時,是否需要開周會,形成周會議記錄?
ASPICE有要求要開周會嗎?
比如2:為了滿足ASPICE要求,在基于模型開發(fā)時,在Matlab/Simulink中的模型設計內容需要拷貝到Word中,形成一份Word版本的詳細設計嗎?
ASPICE有要求Word版本的詳細設計嗎?
提出這樣的問題,是將模型在某場景下應用的方法論,當成了模型的要求。