文/王艷麗
物料需求清單(Bill of Material),簡稱BOM,是產品結構的技術性描述文件,表明了產品組件、子件、零件直到原材料之間的結構關系,以及每個組裝件所需的各子部件的數量,多用于生產制造類企業(yè)。生產制造系統(tǒng)常用BOM來管理繁多而又關聯(lián)的物料,BOM描述了裝配件的結構化零件表,且隨著用戶需求、設計的更改而處于動態(tài)的變化與更新之中,BOM可快速準確地提供所有物料清單,是提高生產管理系統(tǒng)效率的關鍵環(huán)節(jié)。
早在1968年,NATO組織的軟件工程會議上,Mcllroy首次提出了“軟件工程”、“軟件構件”以及“軟件工廠”等概念。1975年開始舉辦的世界軟件工程大會ICSE,提出了在軟件生產中采用工程化的方法來開發(fā)軟件。而軟件BOM就是這軟件工廠用來管理軟件構件的工具。狹義上講,構件是指一個對象(接口規(guī)范或二進制代碼),它被用于復用,接口被明確定義。軟件構件一般指對外提供一組規(guī)約化接口的、符合一定標準的、可替換的軟件系統(tǒng)的程序模塊。開發(fā)者可以通過組裝已有的構件來開發(fā)新的應用系統(tǒng),從而達到軟件復用的目的。20世紀90年代,美國國防部提出了基于模塊的開放式系統(tǒng)方法(MOSA)。提出采用開放式的松耦合標準化模塊,能有效地控制和降低成本。
軟件BOM是需求分析和概要設計的產物。需求分析是軟件開發(fā)過程的重要環(huán)節(jié),直接決定著軟件的成敗。正確的需求分析會將用戶的需求分解為軟件的功能、性能和接口等,進而進行軟件概要設計和詳細設計,將抽象的功能、性能和接口等轉化為一個個相互關聯(lián)的構件。本文將詳細闡述軟件BOM在構件化軟件開發(fā)過程中的設計流程、采用的形式及其應用價值。
傳統(tǒng)軟件開發(fā)過程一般經歷需求分析、軟件設計(包括軟件概要設計、軟件詳細設計)、軟件測試(包括軟件實現和單元測試、單元集成和測試、軟件配置項測試)三大過程,形成的最終產品交付用戶。如圖1所示。
構件化軟件開發(fā)過程如圖2所示,將軟件設計過程細分為軟件架構設計、軟件BOM表設計、軟件投產、新研構件設計;將軟件測試細分為集成測試和CSCI測試,經測試后將新研構件入庫。最后還增加了在應用中的構件回歸測試并入庫的動作。
對于一個成熟領域的軟件開發(fā),如果軟件復用率達90%的話,采用圖2的構件化開發(fā)流程,可以將軟件開發(fā)時間縮短30%左右。其中90%的構件只需要從構件庫中出庫即可應用,另外只有10%的構件需要新研,這相對于所有的開發(fā)都從零開始要大大節(jié)約人力和縮短開發(fā)周期。
軟件BOM即軟件結構清單,做好軟件BOM表設計的前提是軟件需求分析。軟件負責人進行軟件需求分析,初步分解出軟件構件需求,形成軟件BOM表V1.0。構件設計師根據軟件BOM表V1.0,進行復用分析,梳理出哪些構件可以從標準構件庫中出庫復用,哪些構件是新研構件,進而形成軟件BOM表V2.0。
如圖3所示,在軟件需求階段,軟件設計師根據用戶的軟件研制任務書,逐層細化軟件需求,將軟件分解為CSCI層(子系統(tǒng)層、工作模式層、工作方式層)、子功能層、構件層,各層獨立,反映產品軟件的工作模式、工作方式、子功能、性能、質量屬性、接口、約束等,分解形成BOM表,并以BOM表為抓手,實現表單式開發(fā)與管理,支持軟件構件復用,避免重復開發(fā)。軟件需求逐層分解形成BOM的過程如圖4所示。
圖1:傳統(tǒng)軟件開發(fā)過程
圖2:基于BOM表的構件化軟件開發(fā)過程
軟件BOM表常采用excel明細表的文本形式和結構樹的電子視圖形式。excel明細表的形式如圖5所示,結構樹的電子視圖形式如圖6所示。
圖3:軟件BOM設計流程圖
圖4:軟件需求逐層分解形成軟件BOM的示例
圖5和圖6的示例展示了最簡單的軟件BOM表設計情況,實際應用中會更加復雜,會有層層嵌套的情況。軟件BOM表設計完成后,以結構樹的電子視圖形式在PDS系統(tǒng)中歸檔。PDS中結構樹上的每個節(jié)點關聯(lián)各類屬性等信息。隨后軟件項目負責人根據該BOM表安排軟件設計任務。
軟件BOM表作為軟件的明細表,描述了軟件的需求與構件之間的設計關系。比如特定的軟件需求由哪些構件來實現,構件與構件之間的關系是什么,該軟件需求與其他軟件需求之間的交互關系是什么,這些構件怎樣組裝來實現該軟件需求等。是進行軟件需求追蹤的手段,從而使設計滿足用戶的需求。
在實際應用中,軟件設計師與構件設計師往往不是同一個人,軟件設計師設計出軟件BOM表V1.0版,構件設計師根據該軟件BOM表來設計軟件。軟件設計師再依據軟件BOM完成構件的系統(tǒng)集成。軟件設計工作流水線進行,使軟件設計工作效率大大提高。
圖5:軟件BOM表的Excel形式示例
圖6:軟件BOM表的結構樹電子視圖形式示例
軟件BOM的基本要素是軟件構件,軟件構件是指軟件系統(tǒng)中的可復用單元,它實現特定的功能,符合一套接口標準并實現一組接口。構件設計師對照軟件BOM表首先要進行軟件復用分析,判斷哪些構件可以復用,哪些需要新研。對于可以100%復用的構件,直接從軟件構件庫中出庫備用。對于可以部分復用的構件,需要從軟件構件庫中出庫后安排構件修改、構件測試驗證及構件入庫等工作。對于新研的構件,則需要根據構件需求分析進行構件設計、構件測試驗證及構件入庫等工作。這樣,復用率越高,新研的構件越少,軟件開發(fā)的周期越短。從而避免重復開發(fā),大大提高了軟件開發(fā)的效率。而且,復用率越高的產品,說明軟件成熟度越高,軟件質量越高。
基于軟件BOM表的構件化開發(fā)過程,使得軟件設計系列化、標準化、規(guī)范化、通用化。同時,標準化、規(guī)范化的構件設計,經過測試驗證及回歸測試驗證后,作為標準構件入軟件構件庫,增加了軟件構件庫的庫存種類和數量;反之,軟件構件庫的充實又為之后的軟件設計工作提供更多可供復用的標準構件。從而實現“搭積木”式軟件加工方式,使軟件開發(fā)更加便捷高效。
對質量的影響:軟件BOM表隨著構件的逐步優(yōu)化,版本也隨之同步升級,質量也隨之得以提高。隨著大量產品的借用,構件會趨于成熟,軟件BOM表也隨之趨于成熟。這有利于同領域的其他產品借用或者部分借用。
對生產率的影響:一般來說,大約80%~90%的復用可使軟件生產率提高25%~40%。
對成本的影響:軟件復用率越高時,新研構件越少,耗費的人力成本和時間成本都會大大降低。
對管理的影響:在PDS等系統(tǒng)中歸檔了的軟件BOM表,記錄了關于該產品所用的所有軟件構件的數據信息,如構件的名稱、版本、基本內容、復用/新研等信息,以及構件與構件之間的嵌套關系。它對于質量管理中從最終產品追溯零件、組件起到關鍵作用。軟件BOM表以信息共享為基礎,是綜合管理、資源調度的重要依據。另外,軟件BOM表中復用/新研的數據也可作為安排軟件開發(fā)計劃的依據。
本文針對基于軟件BOM的構件化開發(fā)過程,闡述了軟件BOM的設計流程、設計形式及其應用價值??梢钥闯鲈跇嫾浖_發(fā)過程中,軟件BOM設計是不可缺少的重要環(huán)節(jié)。軟件BOM在“工廠”式的軟件加工過程中起著連接設計與制造的紐帶作用,對提高軟件生產率和軟件質量、降低軟件開發(fā)成本都起著至關重要的作用。因此,做好軟件需求分析、軟件BOM設計、構件設計、構件測試等,且每個環(huán)節(jié)都進行專家審核和評審,才能有效地提高軟件開發(fā)的質量,推動軟件工程的發(fā)展。