一個基于可重用構(gòu)件的軟件開發(fā)過程模型
摘要:基于構(gòu)件的開發(fā)(CBD)觀念已廣泛應(yīng)用于軟件開發(fā)中,便于構(gòu)件的重用。眾所周知的CBD體系結(jié)構(gòu)有 ActiveX, CORBA, RMI以及 SOAP 等。文章主要通過與傳統(tǒng)軟件開發(fā)方法的比較研究支持基于CBD的實踐,同時也評價了面向?qū)ο蟮倪^程模型以及提出了一種新型的基于 CBD 的軟件開發(fā)過程模型,并探討了倉儲的重要概念。
關(guān)鍵字:構(gòu)件重用;基于構(gòu)件的開發(fā);軟件開發(fā)過程;倉儲
1.引言
軟件重用的觀念起源于制造業(yè)和土木工程領(lǐng)域,通過配件組裝汽車、磚瓦搭建房屋就是很好的例子,基于配件的產(chǎn)品在市場上已取得了很大的成功。
軟件公司采用同樣的方式開發(fā)軟件,通過軟件配件的方式使他們在市場上取得了成功,軟件配件是通過包的形式同軟件一同發(fā)售的。軟件配件被叫做組件或構(gòu)件,很多學者從不同的角度給出了定義。一般認為可重用的二進制代碼即為組件,組件觀念和面向?qū)ο缶幊痰膶ο笏枷牒芟嗨啤R粋€組件是為了服務(wù)特定用途,具有獨立功能的系統(tǒng)部件,比如:命令按鈕,文本輸入框等。組件就像模式一樣強制開發(fā)人員采用已定義好的過程,將其插入到新軟件系統(tǒng)中以滿足的需求。
微軟公司和SUN公司是主要的軟件工具提供商,他們的工具被廣泛用于應(yīng)用軟件開發(fā)。這兩家公司和其他廠商也提供大量的組件使他們?nèi)〉昧顺晒Α5诙糠置枋鯟BD相關(guān)的工作,第三部分描述比較過程模型,第四部分涉及到CBD過程模型的動機,第五部分提出一個CBD過程模型,第六部分描述倉儲在CBD中的重要性,第七部分表述CBD相比傳統(tǒng)軟件開發(fā)的優(yōu)越性。
2.相關(guān)工作
Lycett and Giaglis[1]認為評估信息系統(tǒng)方面的重用是極度困難的。他們認為所有
的開發(fā)方法都會在軟件重用上存在風險。主要的重用風險可以通過下面的方式避免:
(1). 在組件選擇的早期階段整合業(yè)務(wù)驅(qū)動評估可以減小評估和選擇組件的風險。
(2). 評估和選擇在一個不斷迭代的過程中進行。
作者討論了貼現(xiàn)現(xiàn)金流(DCF)、凈現(xiàn)值(NPV)、投資回報率(ROI)、內(nèi)部收益率(IRR)、
成本效益分析(CBA),但沒有提供任何事實和數(shù)字。他們沒有提供適當?shù)脑u價標準來評估和整合已開發(fā)的組件,以便重復(fù)使用。他們提出了一個內(nèi)容,背景和過程(CCP)的分析,以評估一個組件重復(fù)使用,這是不切合實際的,因為CCP非常主觀的選擇和評價組件重用。Boehmet al[2]提出的建設(shè)性成本模型二能夠很好的評估基于重用組件的軟件成本。
Merijn de Jonge[3]認為一個可重用的需求將被開發(fā)成獨立的、可整合的組件。他提出了重用最佳實踐和過程的要求以及在一個系統(tǒng)和跨系統(tǒng)中整合可重用的獨立的組件技術(shù)。他提出了一個源代碼樹組成技術(shù)用于整合:
(1) 核心模塊的組成部分。
(2) 依據(jù)不同系統(tǒng)范圍,包開發(fā)允許同步開發(fā)一個以上的組件。
基于包的軟件開發(fā)是一個熱門的研究領(lǐng)域。作者集中在源代碼樹組成技術(shù),可用于一個以上的系統(tǒng)的軟件配置管理,這一個重用組件庫管理上的問題。作者并沒有討論跨領(lǐng)域開發(fā)組件和他們在多個系統(tǒng)中的整合問題。
軟件重用的程度取決于重用策略,他們通過收集71 軟件開發(fā)組織的數(shù)據(jù)總結(jié)了一套六維度的軟件重用方法,這些維度分別是規(guī)劃、改善、正規(guī)過程、管理支持、項目相似性、對象技術(shù)、公共架構(gòu)。在這些維度的基礎(chǔ)上,他們發(fā)現(xiàn)了被軟件開發(fā)組織實踐的重用策略。五個策略分別是:基于高重用潛能的特定重用、基于低重用潛能的不協(xié)調(diào)重用、基于高重用潛能的不協(xié)調(diào)重用、缺乏管理下的系統(tǒng)重用、強化管理下的系統(tǒng)重用。他們主要研究的觀念是分類重用策略,因此,開發(fā)組織能夠得利并完成開發(fā)項目。作者支持最后一個策略---強化管理的下系統(tǒng)重用,但是在得出結(jié)論前還需要更詳細的分析不同領(lǐng)域不同軟件組織的數(shù)據(jù)。
選擇可重用的組件對于提高軟件開發(fā)效率是很重要的[4]。他們提出了便于 EJB 組件重用的組件倉庫概念,便于可重用組件的存儲和管理。通過組件倉庫可以使軟件開發(fā)獲得很大的效益:規(guī)格觀看、適應(yīng)、測試、部署。作者提出的倉庫沒有版本控制和變更控制的功能,而這些對組件倉庫是很重要的兩個概念。軟件組織不得不投入巨資才能在組件重用方法上取得成功,這對他們來說是個障礙,他們認為重用的核心是源代碼。據(jù)作者提到的一個評估:“領(lǐng)域組件占整個應(yīng)用的65%,組件重用應(yīng)該聚焦在領(lǐng)域組件上”。他提出了基于組件的開發(fā)到支持領(lǐng)域組件的整合方法,這個整合方法是軟件開發(fā)環(huán)境中的可重用組件的集合。
作者也討論了接口的概念,描述了接口包裝機制,他用來管理和控制可重用組件之間的接口。他的主要研究目標是為軟件組織開發(fā)標準,以便他們開始重用實踐,強調(diào)主要是編程
效果,而不是管理和業(yè)務(wù)觀點。作者主要研究點在于開發(fā)領(lǐng)域特定可重用組件,而不是構(gòu)建不同領(lǐng)域組件,這個問題可以通過軟件設(shè)計的適應(yīng)性和子管理型解決。
Arndt and Dibbern 的研究[5]揭露了構(gòu)建軟件系統(tǒng)的兩種傳統(tǒng)方式: 定制和使用標準的
軟件包。他們提出定制組合和領(lǐng)域軟件包方法來達到兩個效益。有許多對立的因素抵制實踐這一新的領(lǐng)域。作者解釋組合方法的變更過程已采取了一個合理的方法。他們還引入了創(chuàng)新的觀念,如何模塊化開發(fā)可以得到領(lǐng)域變更帶來的好處。
基于組件的軟件開發(fā)的優(yōu)點已經(jīng)在很多論文中有論述,這雖然是一個理論上的概念,但
能夠很好的指導(dǎo) CBSD 實踐,對于CBSD的驗證本文不做論述。
3. 幾種經(jīng)典過程模型的比較
瀑布模型是軟件開發(fā)中的傳統(tǒng)和經(jīng)典模型。溝通、計劃、建模、構(gòu)建和部署是瀑布過程模型的主要階段,從系統(tǒng)開發(fā)生命周期階段來說這種模型是基于迭代的。這種模型只適合需求全面確定,并依據(jù)現(xiàn)有軟件重新設(shè)計。他不適用于商業(yè)軟件,因為他的階段迭代。這種模型需要大量時間和高額成本才能完成軟件開發(fā)任務(wù)。另一個障礙就是可工作的軟件版本在開發(fā)階段才可見,如果客戶需求含糊不清的話會給軟件帶來致命的災(zāi)難。在軟件開發(fā)初始階段是很難完完整整的收集需求的,而這恰恰是瀑布模型的基礎(chǔ)。
原型過程模型被提出來用于整合其他方法學,比如瀑布模型,以使他們發(fā)揮效果。開發(fā)演示模型和需求評估是原型模型的主要階段。他是一個很自然的周期,不斷的迭代知道軟件開發(fā)完成。在短周期和低成本內(nèi)快速開發(fā)軟件。沒有為現(xiàn)在和未來的項目做大量的文檔。快速開發(fā)經(jīng)常帶來質(zhì)量的低劣。所以原型過程模型從來沒有被獨立的用來開發(fā)軟件。它依賴于最終用戶方面的功能和接口,這可能會導(dǎo)致效率低下。最終用戶有時候可能不希望項目成功,因為威脅到他們的工作,他們可能會評估一些關(guān)鍵的軟件特性和功能。
快速應(yīng)用開發(fā)( RAD)過程模型,是適合商業(yè)軟件開發(fā)的模型之一。需求和規(guī)劃、用戶設(shè)計、構(gòu)建和收尾是RAD模型的主要階段。他帶來的好處就是快速開發(fā)和低成本。完整的用戶需求是RAD模型的核心優(yōu)勢,這是因為在設(shè)計和構(gòu)建階段對原型模型的應(yīng)用。RAD模型關(guān)注用戶視角的主要特性,他涵蓋了瀑布模型的所有階段,但很有效率。所有的原型模型的缺點被納入到了RAD模型中。RAD模型不適合于涉及到安全方面的關(guān)鍵項目,比如涉及到生命風險等。
演化和增量過程模型支持軟件工程是開發(fā)出更完整和全面的軟件。溝通、規(guī)劃、分析、設(shè)計、測試和客戶評價是演化過程模型的主要階段。他適合模塊化,增量,WEB開發(fā)以及小規(guī)模團隊。軟件開發(fā)組織可以雇傭更多開發(fā)人員,當核心功能確認之后。
Rational統(tǒng)一過程( RUP的)模型結(jié)合了幾乎所有演化模型的特性,但他重點是純粹面向?qū)ο蟮摹K闹饕A段是,初始化階段,設(shè)計階段,構(gòu)建階段和產(chǎn)品化階段。構(gòu)建階段支持現(xiàn)有組件的重用。RUP的主要局限性是過高的時間和成本,強調(diào)文檔寫作而不是軟件開發(fā)。
Highsmith and Cockburn 認為[6]所有的敏捷過程都強調(diào)了質(zhì)量上的設(shè)計。極限編程(XP)是被廣泛應(yīng)用的敏捷過程模型(動態(tài)系統(tǒng)開發(fā)(DSDM), SCRUM, crystal, 特征驅(qū)動)。XP模型的主要階段是計劃,設(shè)計,編碼和測試。敏捷關(guān)注點在于用兩周的時間提價第一個軟件增量,用兩個月完成整個軟件開發(fā)任務(wù)。
所有模型的局限和利益在于快速開發(fā)和成本節(jié)約。快速開發(fā)帶來了低劣的質(zhì)量以及RAD所有缺點的引入,表1是對瀑布模型,原型模型,RAD模型,演化模型,OO模型,RUP模型,敏捷模型以及本文提出的基于 CBD 的過程模型。
4. CBD過程模型研究現(xiàn)狀
Bailey and Basili[7]為組件重用和重設(shè)計提出了軟件生命周期模型,模型提出的組件重用的五個策略:
(1) 分析現(xiàn)有程序,對可重用組件排序。
(2) 重新設(shè)計,消除特定領(lǐng)域的問題。
(3) 將可重用組件保存在倉庫中。
(4) 以重用的方式構(gòu)建獨立狀態(tài)組件并保存在倉庫中。
(5) 利用組件開發(fā)新系統(tǒng)。
該模型還不是CBD的完整模型,但他的核心關(guān)注點在重用活動上。粗略的收集需求可能
是一個項目最終失敗,這是由于需求的自然缺陷決定的。作者提出了構(gòu)建軟件的方法—基于知識的組件分類。通過知識將現(xiàn)有的組件表示、選擇和整合到新的系統(tǒng)中。對重用工件的不同分類也有論述。這些是枚舉,關(guān)鍵字,面和超文本,這邊論文的目的是緩解基于知識的需求收集,但未提出全面的基于CBD的過程模型。
Eduardo Santana de Almeida等人[8]提出了分布式CBD的漸進方法。這種方法基于兩個階段,第一階段是組合問題域的需求并用面向?qū)ο蟮恼Z言設(shè)計可用的組件,這些組件保存在倉庫中,第二階段是設(shè)計師根據(jù)需求從倉庫中選擇適當?shù)慕M件來構(gòu)建軟件。作者沒有提出一個足夠清晰的過程模型,而且也需要特殊的工具支持。
Luiz Fernando Capretz等人[9]提出了一種軟件生命周期可用于面向?qū)ο蟮腃BD構(gòu)建。他主要的階段是領(lǐng)域工程、系統(tǒng)分析、設(shè)計和實現(xiàn)。這個模型的主要問題是在設(shè)計階段選擇可重用組件,正常應(yīng)該在分析階段,進而分析師能夠評估成本、時間安排、要求開發(fā)成果以及組件整合。
Hutchinson等人[10]提出了四階段的基于組件的開發(fā)過程模型。這是非常復(fù)雜的模型。核心的觀念就是整合現(xiàn)有的和新開發(fā)的組件,而不是內(nèi)部開發(fā),倉庫的概念沒這篇文章沒有體現(xiàn)。
Ning[11]的CBD過程模型包括的主要階段是組件分析、架構(gòu)設(shè)計、組件鏈接、組件生產(chǎn)和組件整合,作者修改了瀑布模型并這和了上面提到的階段作為新的CBD過程模型。瀑布模型不適合商業(yè)應(yīng)用,因為他重復(fù)的審核階段。時間和成本消耗過程模型只適合研究項目,表2是對以上幾個CBD 過程模型的比較。
5. 基于CBD的過程模型
面向?qū)ο蟮倪^程模型是唯一能夠表示對現(xiàn)有組件重用的過程模型,對象過程模型經(jīng)過修改可以實現(xiàn)基于組件開發(fā)的重用。軟件設(shè)計,構(gòu)建和測試階段體現(xiàn)了現(xiàn)有類的重用。本文提出的CBD過程模型的主要階段有溝通、計劃、分析與選擇、可發(fā)與測試、評估,如圖1。
項目開始通過與客戶溝通獲得基本的需求。初級用例在這個階段開發(fā)出來。項目規(guī)格或提案文件在計劃階段完成。項目規(guī)格或提案文件包括可行性分析和風險評估,并提供成本效益分析(CBA)表。CBA表用于分析項目是否對客戶可行。如果客戶同意提案分析階段才能開始。面向?qū)ο蟮倪^程模型能夠依據(jù)CBD過程模型進行修改,所以新的分析階段命名為分析與組件選擇。這個階段分析師收集詳細需求并嘗試定位和選擇可重用組件,這里引入了組件倉庫的概念,這些組件的之間的關(guān)系是確定的,而且組件的屬性和行為也已經(jīng)定義好,這個階段需要最大化的重用組件,而不需要重復(fù)發(fā)明輪子。他將提高軟件工程師的生產(chǎn)力和效率。基于面向?qū)ο竽P偷拈_發(fā)與測試階段滿足CBD過程模型的要求。被選擇的組件依據(jù)新系統(tǒng)的需求進行修改和測試。對于新的組件要進行設(shè)計、開發(fā)和單元測試。對新開發(fā)的和重復(fù)使用的組件進行集成和系統(tǒng)測試。如果編程人員正在使用基于CORBA或RMI的架構(gòu),接口定義語言( IDL )可用于編碼集成組件。面向?qū)ο蟮倪^程模型滿足CBD過程模型的需要。客戶需要評估和驗證軟件是否滿足他們的實際需要。
6. 倉庫的角色和重要性
基于可重用組件的軟件開發(fā)可以提高效率,倉庫用于可重用組件的存儲和管理,他的組要好處:分類、搜索、修改、測試、實施、版本控制、變更控制、最新和一致的文檔。我們可以從多維倉庫(一個或多個倉庫組成)中選擇和管理組件,多維倉庫的好處在于基于領(lǐng)域的開發(fā)和分類。
7. CBD過程模型的優(yōu)越性
基于組件開發(fā)的優(yōu)點:可重用性、互操作性、可升級性、低復(fù)雜性、時間效益、成本效益、開發(fā)效率、可靠性、高質(zhì)量。可重用性是基于CBD開發(fā)的重要特性,用ASP開發(fā)一個基于 WEB 的Email 系統(tǒng)就是一個CBD應(yīng)用的例子。協(xié)作數(shù)據(jù)對象的Windows NT服務(wù)器(CDONTS)是微軟開發(fā)的郵件系統(tǒng),這個組件能夠用來開發(fā)類似的應(yīng)用系統(tǒng)。一個特定工具的內(nèi)嵌組件也放映了從用的好處,如微軟VB的6.0文本框和命令按鈕對象等,這些組件可以被頻繁的使用,這就是VB6.0成為快速開發(fā)工具的原因。我們把經(jīng)理花在業(yè)務(wù)開發(fā)實現(xiàn)上而不是基本的組件上。
CBD架構(gòu)允許組件之間通信,使組件之間有互操作性,便于開發(fā)人員將系統(tǒng)整合到其他應(yīng)用系統(tǒng),不同銀行ATM機上信息系統(tǒng)互聯(lián)就是一個很好的例子。如果組件需要升級,對于WEB應(yīng)用系統(tǒng)來說是很容易的,只需要用新組件替換原有組件而不需要更改應(yīng)用系統(tǒng)。C/S架構(gòu)用來開發(fā)分布式應(yīng)用系統(tǒng)。這里有三中類型的C/S架構(gòu):(1)將表示層,業(yè)務(wù)邏輯層和數(shù)據(jù)層封裝在一起的應(yīng)用系統(tǒng)比如微軟的 EXCEL 和 Access 軟件等。(2)兩層架構(gòu)前端整合了表示層和業(yè)務(wù)邏輯層,后端是數(shù)據(jù)存儲層,可以是Oracle SQLServer 等等。(3)表示層,業(yè)務(wù)邏輯層和數(shù)據(jù)存儲層作為獨立的層次,即是三層架構(gòu)或多層架構(gòu),前端我們可用JSP,Servlet表示,業(yè)務(wù)邏輯可以用 EJB,DCOM 等描述,后端可以用數(shù)據(jù)庫或一般文件系統(tǒng)表示。
三層架構(gòu)是目前用的最廣的用于開發(fā)商業(yè)軟件。商業(yè)邏輯隨著商業(yè)環(huán)境的變化,很容易改變,這樣只需要改變EJB或DCOM組件即可,而不需要太多改動表示層和數(shù)據(jù)持久層的代碼。
CBD的一個優(yōu)點就是不需要程序員關(guān)系組件內(nèi)部是怎么工作的。他們只需要關(guān)系組件的接口以及怎樣和他們的系統(tǒng)整合在一起。這就像一個司機一樣,他不需要知道轎車的發(fā)動機是怎么運行的。對于程序員他們只要關(guān)注應(yīng)用軟件的業(yè)務(wù)邏輯而不去關(guān)系基本的組件,如文本框和按鈕組件的實現(xiàn)。CBD是程序員從復(fù)雜的編程中脫離出來。他們可以是可重用的組件在類似的系統(tǒng)中頻繁的應(yīng)用,提高了開發(fā)效率,降低了開發(fā)成本,當然也使設(shè)計過程更有效率。可重用的組件第一次被使用后,徹底的被測試和維護,因此,可重用的組件相比新開發(fā)的組件更可靠更穩(wěn)定,同時軟件的質(zhì)量也有一定程度的提高。可重用的組件得到了很好的測試和維護。新開發(fā)的組件需要大量的開發(fā)和維護,大量的缺陷沒有被發(fā)現(xiàn),軟件質(zhì)量受影響就是這個原因。
大量的案例也正名了基于CBD開發(fā)的重要性。Lim[12]表述,重用組件的項目總儲蓄額沖410萬美元增長到了560萬美元,同時投資回報率也沖216%曾長到了410%。據(jù)他論述,重用代碼的缺陷率是0.9每千行代碼,而新開發(fā)的代碼的缺陷率是4.1每千行代碼,他通過兩個項目的比較,一個項目是基于CBD開發(fā),一個不是,基與CBD開發(fā)的系統(tǒng)時間只是沒有基于CBD開發(fā)時間的51%。35%的軟件質(zhì)量得到了改善。
8. 結(jié)束語
本文通過與傳統(tǒng)軟件開發(fā)的對比敘述了基于CBD的軟件開發(fā)過程模型,并提出了一基于CBD的軟件過程模型,同時討論了倉庫在CBD開發(fā)中的應(yīng)用。通過以上的論述可以看出基于CBD開發(fā)的軟件更具成本效益、節(jié)約時間和提高生產(chǎn)效率。一個可工作的原型系統(tǒng)將支持基于CBD的模型的。
參考文獻
[1] Mark Lycett, George M. Giaglis. Component based information systems: Towards a framework for
evaluation. In: Proc of 33rd annual international conference on system sciences, Hawaii, 4-7 January 2001.
[2] Donald J. Reifer, Barry W. Boehm, Sunita Chulani, The rosetta stone: Making COCOMO 81 Files
Work With COCOMO II. Available from: http://sunset.usc.edu/publications/TECHRPTS/1998/
usccse98-516/usccse98-516.pdf,1998.
[3] Merijn de Jonge, Package-based software development. In: Proc of 29th EUROMICRO conference
new waves in system architecture,2003.
[4] Jihyun Lee, Jinsam Kim, Gyu-Sang Shin. Facilitating reuse of software components using repository technology. In: Proc of 10th Asia–Pacific software engineering conf, 2003.
[5] Jens-Magnus Arndt, Jens Dibbern. The Tension between Integration and Fragmentation in a
Component Based Software Development Ecosystem. In: Proc of 39th Hawaii international conference on system sciences, 2006.
[6] Highsmith J, Cockburn A. Agile software development: The business of innovation. IEEE Comput
2001;34(9):120–2.
[7] Bailey John W, Basili Victor R. The software-cycle model for reengineering and reuse. ACM
Press 1991:267–328.
[8] Eduardo Santana de Almeida, Alexandre Alvaro, Daniel Lucredio,Antonio Francisco do Prado,
Luis Carlos Trevelin, Distributed component-based software development: An incremental
approach.In:Proc of 28th annual international computer software and applied conference, 2004.
[9] Highsmith Luiz Fernando Capetz, Miriam AM Capretz, Dahai Li, Componentbased software
development. In: Proc of the 27th annual conference of the IEEE industrial electronics society, 2001.
[10]John Hutchinson,Gerald Kotonya, Ian Sommerville, Stephen Hall, A service model for
component-based development. In: Proc of 30th EUROMICRO Conf, 2004.
[11]Ning Jim Q. A component-based software development model. IEEE Software 1996:389–94.
[12]Lim WC. Effects of reuse on quality, productivity and economics.IEEE Software 1999;5:23–30.
本博客為學習交流用,凡未注明引用的均為本人作品,轉(zhuǎn)載請注明出處,如有版權(quán)問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。