摘 要: 探討了通過(guò)軟件企業(yè)的組織結(jié)構(gòu)再造和軟件開(kāi)發(fā)流程再造,實(shí)現(xiàn)基于組件的非線(xiàn)性軟件開(kāi)發(fā)過(guò)程的研究。
關(guān)鍵詞: 基于組件的開(kāi)發(fā); 非線(xiàn)性軟件工程體系; 中小型軟件企業(yè)
1 軟件開(kāi)發(fā)方法的演變
軟件開(kāi)發(fā)方法經(jīng)歷了從結(jié)構(gòu)化程序設(shè)計(jì)到面向?qū)ο笤O(shè)計(jì)、分布式對(duì)象/系統(tǒng)設(shè)計(jì)等方法的演變過(guò)程,近年又產(chǎn)生了基于組件的開(kāi)發(fā)方法。組件是可以插入系統(tǒng)中的對(duì)象?;诮M件的開(kāi)發(fā)(CBD)是一種軟件開(kāi)發(fā)方法,采用這種方法開(kāi)發(fā),生命周期中的所有問(wèn)題和階段,包括需求分析、體系結(jié)構(gòu)、設(shè)計(jì)、構(gòu)建、測(cè)試、部署、支持技術(shù)和項(xiàng)目管理,都是基于組件進(jìn)行的。
然而,現(xiàn)有的軟件工程體系顛倒了人與軟件開(kāi)發(fā)過(guò)程的主次關(guān)系,放任軟件缺陷的引入與傳播,盲目進(jìn)行軟件的修改維護(hù),分不清軟件工程的主要和次要矛盾,導(dǎo)致軟件產(chǎn)品不完整、軟件開(kāi)發(fā)效率低、軟件質(zhì)量差、開(kāi)發(fā)費(fèi)用高昂。造成這些問(wèn)題的根源在于,現(xiàn)有的軟件工程體系都是采用了線(xiàn)性增量單向迭代模型,都是線(xiàn)性思維和簡(jiǎn)單科學(xué)的產(chǎn)物,而軟件是由開(kāi)發(fā)團(tuán)隊(duì)和客戶(hù)這些非線(xiàn)性的人組成的復(fù)雜系統(tǒng)所創(chuàng)造的邏輯思維的產(chǎn)物,其本身也是一個(gè)復(fù)雜的、非線(xiàn)性的系統(tǒng),兩者存在根本性的矛盾,這在很大程度上削弱了基于組件開(kāi)發(fā)方法帶給軟件企業(yè)的好處[1]。
因此,為了最大限度地發(fā)揮基于組件開(kāi)發(fā)方法的優(yōu)點(diǎn),必須摒棄傳統(tǒng)的線(xiàn)性軟件工程體系,取而代之以非線(xiàn)性、整體性、相關(guān)性、關(guān)鍵性、層次性、目的性、開(kāi)放性、動(dòng)態(tài)性、適應(yīng)性等原則和綜合設(shè)計(jì)、增量集成、雙向迭代、主動(dòng)防錯(cuò)、全程評(píng)審、協(xié)同開(kāi)發(fā)、信息共享、實(shí)時(shí)溝通等擴(kuò)展原則的非線(xiàn)性軟件工程體系[1]。
2 基于組件的非線(xiàn)性軟件開(kāi)發(fā)
雖然非線(xiàn)性軟件工程體系具有諸多優(yōu)點(diǎn),但是其實(shí)現(xiàn)需要一定的軟件開(kāi)發(fā)平臺(tái)支持。現(xiàn)在,國(guó)內(nèi)外已有一些軟件企業(yè)在這個(gè)領(lǐng)域進(jìn)行了有益的探索,例如上海艾賽軟件科技有限公司所開(kāi)發(fā)的艾賽銀彈Panorama++軟件開(kāi)發(fā)、測(cè)試、維護(hù)支撐平臺(tái)就是其中的代表。不過(guò),這類(lèi)軟件開(kāi)發(fā)平臺(tái)產(chǎn)品的價(jià)格不菲,通常一套完整的產(chǎn)品需要200~300萬(wàn)元人民幣,這對(duì)于經(jīng)營(yíng)規(guī)模小、資金匱乏、利潤(rùn)空間狹窄、管理水平低的廣大中小型軟件公司來(lái)說(shuō),無(wú)疑并非適宜的選擇。
針對(duì)中小型軟件企業(yè)的現(xiàn)狀,作者認(rèn)為企業(yè)可以通過(guò)組織結(jié)構(gòu)再造和開(kāi)發(fā)流程再造,利用現(xiàn)有的軟件工具,同樣可以在相當(dāng)高的程度實(shí)現(xiàn)非線(xiàn)性軟件工程體系核心思想,達(dá)到較好的效果。
2.1 軟件企業(yè)組織結(jié)構(gòu)再造
針對(duì)非線(xiàn)性軟件工程體系多軌并行的特點(diǎn),軟件企業(yè)應(yīng)從原有的職能型組織結(jié)構(gòu)轉(zhuǎn)化為面向客戶(hù)的矩陣型組織結(jié)構(gòu)。
如圖1所示,企業(yè)將客戶(hù)的每個(gè)或每組需求各視為一個(gè)項(xiàng)目,為每個(gè)項(xiàng)目設(shè)立項(xiàng)目經(jīng)理,并與各個(gè)職能部門(mén)的特定員工組成相應(yīng)的項(xiàng)目組。為了進(jìn)一步體現(xiàn)非線(xiàn)性軟件工程體系的整體性和開(kāi)放性原則,項(xiàng)目組必須與客戶(hù)緊密聯(lián)系,并將相應(yīng)的客戶(hù)人員納入到項(xiàng)目團(tuán)隊(duì),從而構(gòu)成面向客戶(hù)的矩陣型組織。

面向客戶(hù)的矩陣型組織結(jié)構(gòu)為在軟件工程中體現(xiàn)非線(xiàn)性軟件工程體系的整體性、開(kāi)放性、動(dòng)態(tài)性、綜合設(shè)計(jì)、雙向迭代、全程評(píng)審、協(xié)同開(kāi)發(fā)、信息共享、實(shí)時(shí)溝通等原則思想,提供了組織基礎(chǔ)和保證。
2.2 軟件企業(yè)開(kāi)發(fā)流程再造
非線(xiàn)性軟件工程體系的核心思想是強(qiáng)調(diào)雙向迭代、增量集成、全程評(píng)審、協(xié)同開(kāi)發(fā)。軟件企業(yè)應(yīng)調(diào)整原有職能型組織結(jié)構(gòu)基礎(chǔ)上的工作流程,在新的面向客戶(hù)的矩陣型組織結(jié)構(gòu)基礎(chǔ)上,構(gòu)建實(shí)現(xiàn)上述思想的基于組件的非線(xiàn)性軟件開(kāi)發(fā)流程。
如圖2所示,基于組件的非線(xiàn)性軟件開(kāi)發(fā)流程由軟件企業(yè)開(kāi)發(fā)部門(mén)的分析構(gòu)建組、組件開(kāi)發(fā)組、品質(zhì)保障組、組件管理組的相關(guān)成員及相關(guān)用戶(hù)組成。其中,根據(jù)企業(yè)軟件產(chǎn)品的構(gòu)成,可以設(shè)立針對(duì)不同組件的組件開(kāi)發(fā)組。

用戶(hù)提出對(duì)軟件產(chǎn)品的需求后,組件管理組首先在企業(yè)內(nèi)、外的組件庫(kù)中尋找可用的組件。如果沒(méi)有,將由分析構(gòu)建組牽頭,協(xié)同組件n開(kāi)發(fā)組和用戶(hù)共同對(duì)需求進(jìn)行必要的分析,建立相應(yīng)的模型,制訂規(guī)約,并產(chǎn)生需求說(shuō)明文檔。
品質(zhì)保障組對(duì)模型和規(guī)約進(jìn)行審核。如果審核未能通過(guò),需要完善需求分析;如果審核通過(guò),將由分析構(gòu)建組和組件n開(kāi)發(fā)組共同進(jìn)行組件n的構(gòu)架設(shè)計(jì),即總體設(shè)計(jì),并產(chǎn)生組件構(gòu)架設(shè)計(jì)文檔。
品質(zhì)保障組對(duì)組件n的構(gòu)架設(shè)計(jì)進(jìn)行審核。如果審核未能通過(guò),需要根據(jù)未能通過(guò)的原因,追溯到組件n的架構(gòu)設(shè)計(jì),甚至需求分析階段,進(jìn)行必要的修改和完善工作;如果組件n的構(gòu)架設(shè)計(jì)審核通過(guò),開(kāi)發(fā)工作將逐步進(jìn)行組件n詳細(xì)設(shè)計(jì)(組件n開(kāi)發(fā)組完成)、編寫(xiě)程序和單元測(cè)試(組件n開(kāi)發(fā)組和品質(zhì)保障組協(xié)同完成)、組件n測(cè)試(組件n開(kāi)發(fā)組和品質(zhì)保障組協(xié)同完成)、集成測(cè)試(組件n開(kāi)發(fā)組、品質(zhì)保障組和組件管理組協(xié)同完成),并在各階段產(chǎn)生相應(yīng)的文檔[6]。在每個(gè)階段中,階段性成果都要經(jīng)過(guò)品質(zhì)保障組的審核通過(guò),開(kāi)發(fā)工作才能進(jìn)入下一階段。如果審核未能通過(guò),開(kāi)發(fā)工作都將依據(jù)造成錯(cuò)誤的原因追溯到以前的相應(yīng)階段,并進(jìn)行改進(jìn)和完善。
如果針對(duì)用戶(hù)的需求,組件管理組在企業(yè)內(nèi)、外組件庫(kù)中找到了可用的組件,軟件開(kāi)發(fā)工作隨即進(jìn)入組件測(cè)試工作階段。
針對(duì)用戶(hù)需求的各個(gè)需要?jiǎng)?chuàng)建或完善的組件的開(kāi)發(fā)工作并行推進(jìn)并互為獨(dú)立的開(kāi)發(fā)項(xiàng)目。最后,對(duì)所有的組件一起進(jìn)行集成測(cè)試。
當(dāng)系統(tǒng)集成測(cè)試工作順利通過(guò)審核后,組件管理組將對(duì)組件及其附屬文檔進(jìn)行歸檔,以便日后復(fù)用或進(jìn)一步完善。
基于組件的非線(xiàn)性軟件開(kāi)發(fā)過(guò)程,不僅具有基于組件開(kāi)發(fā)的軟件復(fù)用、部署簡(jiǎn)單等優(yōu)點(diǎn)[7],同時(shí)也通過(guò)企業(yè)組織結(jié)構(gòu)再造和軟件開(kāi)發(fā)流程再造實(shí)現(xiàn)了非線(xiàn)性軟件工程體系的核心理念,提高了軟件開(kāi)發(fā)質(zhì)量和效率,降低了開(kāi)發(fā)成本,適用于中小型軟件企業(yè)的產(chǎn)品開(kāi)發(fā)工作中。
參考文獻(xiàn)
[1] 熊繼光. 新一代軟件工程體系與實(shí)踐—基于現(xiàn)代系統(tǒng)科學(xué)與復(fù)雜性科學(xué)的非線(xiàn)性整體軟件工程體系及其應(yīng)用[M]. 北京:清華大學(xué)出版社,2008.
[2] Jay Xiong, Jonathan Xiong. The DP&T System: The defect prevention and traceability-driven system for software engineering [R]. The 2006 International Conference on Software Engineering Research & Practice, 2006.
[3] Jay Xiong, Jonathan Xiong. The DP&T model: the defect prevention and traceability-driven model for software engineering [R]. The 2006 International Conference on Software Engineering Research & Practice, 2006.
[4] Jay Xiong, Jonathan Xiong. The DP&T methodology: the defect prevention and traceability-driven methodology for software engineering [R]. The 2006 International Conference on Software Engineering Research & Practice, 2006.
[5] 李偉波,劉永祥,王慶春. 軟件工程[M]. 武漢:武漢大學(xué)出版社,2006
[6] (美)PRESSMAN R S.軟件工程——實(shí)踐者的研究方法(第5版)[M].梅宏,譯.北京:機(jī)械工業(yè)出版社,2005.
[7] (美)HERZUM P, SIMS O. 基于組件的企業(yè)級(jí)開(kāi)發(fā)[M].韓柯,等譯.北京:機(jī)械工業(yè)出版社,2005.
