999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

OSGI規(guī)范對增量式開發(fā)模型的支持探究

2011-10-17 01:15:22天津市信息中心應(yīng)用開發(fā)處300040
中國科技信息 2011年5期
關(guān)鍵詞:規(guī)范功能模型

馮 毅 天津市信息中心應(yīng)用開發(fā)處 300040

OSGI規(guī)范對增量式開發(fā)模型的支持探究

馮 毅 天津市信息中心應(yīng)用開發(fā)處 300040

OSGI(Open Services Gateway Initiative)提供了規(guī)范化的模塊劃分,低耦合的模塊間關(guān)系,統(tǒng)一的模塊開發(fā)方式,可動態(tài)插拔的模塊管理環(huán)境。這些特性都適合搭建需求復(fù)雜多變的應(yīng)用系統(tǒng)架構(gòu)。本文在對幾種增量式開發(fā)模型進(jìn)行分析的基礎(chǔ)上,從OSGI規(guī)范對增量式開發(fā)模型的支持展開探討。

OSGI;增量式開發(fā);服務(wù)

1 前言

隨著信息系統(tǒng)應(yīng)用領(lǐng)域的發(fā)展,應(yīng)用環(huán)境日趨復(fù)雜,應(yīng)用模式變化迅速。為了解決復(fù)雜多變環(huán)境中,軟件開發(fā)跟不上需求變化的問題,需要設(shè)計一套既適合復(fù)雜應(yīng)用環(huán)境又具有良好擴(kuò)展能力的軟件框架。OSGI帶來了什么?從需求實現(xiàn)方面,OSGI為動態(tài)擴(kuò)充、修改系統(tǒng)功能和改變系統(tǒng)行為提供了支撐,而在傳統(tǒng)的開發(fā)方式下,要實現(xiàn)系統(tǒng)的動態(tài)擴(kuò)充、修改以及改變是一件很麻煩的事;從技術(shù)角度方面,OSGI帶來了規(guī)范化的模塊組織以及統(tǒng)一的開發(fā)方式,這為傳統(tǒng)的模塊的組織、模塊開發(fā)以及模塊積累提供了一種全新的指導(dǎo)以及支撐。

2 傳統(tǒng)開發(fā)模型

軟件工程是研究軟件系統(tǒng)構(gòu)造的計算機(jī)科學(xué)領(lǐng)域。我們可以將軟件工程定義為“工程在軟件中的應(yīng)用”。更精確地講,IEEE標(biāo)準(zhǔn)610-1990的軟件工程的標(biāo)準(zhǔn)術(shù)語表將軟件工程定義為:系統(tǒng)的、規(guī)范的、定量的方法在軟件的開發(fā)、操作和維護(hù)中的應(yīng)用。

在傳統(tǒng)的軟件生存期模型中,每個階段都有良好定義的起點和終點,并明確地指明下一階段可以交付使用的內(nèi)容。以瀑布型生存期模型為例(見圖2-1),它包含需求分析和規(guī)范、系統(tǒng)設(shè)計和規(guī)范、編碼和模塊測試、集成和系統(tǒng)測試、交付和維護(hù)五個階段。

這種經(jīng)典的軟件開發(fā)過程的最大問題是,它將風(fēng)險留到后面的階段,并且依次傳遞。例如,如果任何測試揭示出系統(tǒng)存在的故障,我們至少必須返回到編碼階段,也許要回到設(shè)計階段以糾正某些錯誤。因此清除早期階段引入的錯誤要付出巨大的代價,甚至是項目的失敗。

3 幾種增量式開發(fā)模型

3.1 Rational統(tǒng)一過程(RUP)

RUP是一種軟件工程過程。它提供了如何在開發(fā)組織中嚴(yán)格分配任務(wù)和職責(zé)的方法。它的目標(biāo)是:按照預(yù)先制定的時間計劃和經(jīng)費預(yù)算,開發(fā)高質(zhì)量的軟件產(chǎn)品以滿足最終用戶的需求。

RUP以一種大多數(shù)項目和開發(fā)組織都能適應(yīng)的形式,捕獲了很多現(xiàn)代軟件開發(fā)中的最佳的實踐。這些實踐活動主要包含六個方面:

迭代地開發(fā)軟件。

管理需求。

應(yīng)用基于構(gòu)件的構(gòu)架。

為軟件建立可視化的模型。

不斷地驗證軟件質(zhì)量。

控制軟件的變更。

其中,迭代開發(fā)是(RUP)推薦的方法。

3.2 極限編程(XP)

XP是一種輕量、高效、低風(fēng)險、柔性、可預(yù)測、科學(xué)而充滿樂趣的軟件開發(fā)方式。它與其他方法的不同之處在于:

它的短周期內(nèi)的早期、具體和持續(xù)的反饋。

它遞增地進(jìn)行計劃編制,這種方法迅速提供一個總體計劃,然后在項目的整個生命周期內(nèi)不斷發(fā)展它。

它針對不斷變化的業(yè)務(wù)需求靈活地對功能的實現(xiàn)進(jìn)行計劃的能力。

它依賴于由程序員或客戶編寫的自動測試來監(jiān)控開發(fā)進(jìn)度,使得系統(tǒng)得以發(fā)展并及早捕獲缺陷。

它依賴于口頭交流、測試和源代碼來溝通系統(tǒng)的結(jié)構(gòu)和意圖。

它依賴于在整個系統(tǒng)存在期間一直持續(xù)的進(jìn)化式設(shè)計過程。

圖2 -1 軟件生存期的瀑布模型

它依賴于技術(shù)水平一般的程序員之間的緊密協(xié)作。

它依賴于能同時滿足程序員的短期本能和項目的長期利益的實現(xiàn)。

XP項目以探索階段開始。探索的目的是確定需求、區(qū)分各種需求的優(yōu)先次序和對需求進(jìn)行評估。一旦確定了足夠的需求以便能夠提供將給客戶帶來收益的最小系統(tǒng)之后,即規(guī)劃第一個版本。隨著時間的推移,進(jìn)一步的探索將帶來更多的需求,也將規(guī)劃更多的版本。

一個XP項目被分解為一系列版本。每個版本都會給客戶帶來商業(yè)價值。當(dāng)規(guī)劃一個版本時,客戶選擇將要實現(xiàn)的故事。這一選擇在技術(shù)上可能并不是最有效的,但它確保每個版本都給企業(yè)帶來最大的收益。商業(yè)價值重于技術(shù)效率。一個版本通常花費一到三個月的時間。版本周期越短,我們獲得反饋的速度越快。但是,一個版本必須同時給企業(yè)帶來價值,并且企業(yè)必須能夠吸收此價值。客戶最終決定版本周期長短。

XP的迭代計劃一般將一個版本分解為幾個一周到三周的迭代。迭代長度在項目開始時即已選定,并在以后保持不變。團(tuán)隊通過向客戶提交預(yù)算來開始規(guī)劃迭代。該預(yù)算是開發(fā)人員認(rèn)為他們能夠完成的工作量。這一數(shù)量采用了與故事評估相同的單位。再一次應(yīng)用一個簡單的規(guī)則:開發(fā)人員在一次迭代內(nèi)可以承擔(dān)的工作量與他們在上一次迭代內(nèi)完成的工作量相同。對于第一次迭代,提供了合理但任意的評估,它可能是錯誤的,但隨后的迭代將快速糾正它。

在編程方式上,XP采用結(jié)對編程的方法。雖然任務(wù)已經(jīng)由各個程序員負(fù)責(zé),但所有的生產(chǎn)軟件都是由成對的程序員來編寫的。每一對程序員在一個工作站上進(jìn)行開發(fā),共用一個鍵盤。

3.3 Scrum軟件開發(fā)過程

Scrum是新興起來的敏捷軟件開發(fā)過程,它主要基于經(jīng)驗式的反饋控制原理。其模型如圖3-1所示:

“I”代表輸入,例如需求,采用的技術(shù)等。隨著Scrum開發(fā)進(jìn)程,輸入部分逐步明晰。

“Proeess”是Scrum過程所規(guī)定的30天的開發(fā)周期。

“C”是Scrum過程在每日實施過程中要執(zhí)行的控制行為。

“O”是每一次Scrum周期完成時所開發(fā)出的軟件產(chǎn)品。

Scrum實踐活動主要包含以下內(nèi)容:

(1) Scrum Master:

負(fù)責(zé)整個Scrum過程的實施。它是一個介于客戶與開發(fā)團(tuán)隊之間的角色。既代表客戶向開發(fā)團(tuán)隊確定需求,又代表開發(fā)團(tuán)隊向客戶提供軟件產(chǎn)品。

(2)Product Backlog:

圖3 -1 Scrum模型

指的是將要在軟件中提供的應(yīng)用功能與技術(shù)功能,并且這些功能是經(jīng)過優(yōu)先級排序的。隨著Scrum過程的進(jìn)行,所需的功能不斷的演進(jìn),優(yōu)先級也做相應(yīng)的調(diào)整。然而在一個Scrum處理周期內(nèi),主體的內(nèi)容是確定不變的。

(3)Scrum Team:

為了達(dá)成Scrum過程的目標(biāo)而組建的團(tuán)隊。這個團(tuán)隊被給予充分的權(quán)限去決定哪些是完成Scrum目標(biāo)所需要的。Scrum Master與Scrum Team共同決定在一個Scrum處理周期內(nèi)從Product Backlog中選哪些功能模塊進(jìn)行開發(fā)。

(4) Daily Scrum Meeting:

每天幾分鐘的會議。會議的內(nèi)容:報告總結(jié)自上次Daily Scrum Meeting所取的成果,確定下次Daily Scrum Meeting需做的工作,分析其中存在的障礙,以及如何排除。

(5) Spint:

代表Scrum每一個處理周期,一般為30天。

(6)Spint Planning Meeting:

在每一個Spint期開始的時候要確定該Spint期的工作目標(biāo)。主要包括從Product Backlog選取工作內(nèi)容,并確定優(yōu)先等級等。

(7)Spint Review:

這是一個4小時的信息發(fā)布會議。在每一個Spnit周期束的時候,Scrum Team向管理層、客戶等介紹和演示該階段所取得的成果。

整個Scrum軟件過程以Scrum Master和Scrum Team為核心,通過在每一ScrumSpint期間內(nèi)嚴(yán)格執(zhí)行Scrum實踐所規(guī)定的活動,不斷的確定需求,開發(fā)功能,完善產(chǎn)品。

通過以上的分析,采用增量式軟件開發(fā)過程,可以及早地發(fā)現(xiàn)問題、降低險,并且使得風(fēng)險發(fā)生概率在每次的迭代過程中逐次降低,大大降低了整個軟開發(fā)過程的風(fēng)險成本。

4 OSGI規(guī)范對增量式開發(fā)的實現(xiàn)

OSGI規(guī)范為網(wǎng)絡(luò)服務(wù)定義了一種標(biāo)準(zhǔn)化、組件化的計算環(huán)境。在OSGI規(guī)范中,bundle是部署基于Java的應(yīng)用的唯一實體。Bundle由Java類和其他資源組成。Bundle向用戶提供功能或者向其他bundle提供組件化的服務(wù)。每一個bundle可以用基于ZIP文件格式標(biāo)準(zhǔn)而壓縮為JAR文件。

在bundle這個JAR文件中:

(1) 包含提供0個或者多個bundle服務(wù)的資源。這些資源可以是Java編程語言的類文件,也可以是其他的數(shù)據(jù),例如HTML文件、幫助文件、圖等等。

(2) 包含一個裝配表(manifest)文件。這個裝配表文件描述了JAR文件的內(nèi)容,并提供關(guān)于bundle的一些信息。這個裝配表文件中的信息被當(dāng)做參數(shù)傳遞給OSGI框架,從而使得該bundle能被OSGI框架正確地裝載和啟動。

(3) 描述了該bundle所依賴的其他資源。比如所需要的其他Java包等。只有bundle所依賴的資源都在的情況下,該bundle才能正確的啟動。

(4) 設(shè)計了一個特殊的類文件以充當(dāng)bundle啟動者(bundleActivator)的角色。在bundle啟動者實現(xiàn)了BundleActivator接口,它主要包含兩個操作:start()與stop()。OSGI框架可以通過調(diào)用bundle啟動者的start(),stop()方法來啟動與停止該bundle。在start()方法中可以做一些初始工作,比如向OSGI框架注冊該bundle所提供的bundle服務(wù)。在stop方法中可以做一些清除工作。

(5) 包含一個可選的文檔。這些可選的文檔必須放在JAR文件中的OSGI-OPT目錄或者其子目錄下。這些可選文檔并不是運行該bundle所必需的。這些文檔可能有助理解bundle的功能,比如說源代碼文件、設(shè)計文檔等。而在空間緊缺的情況下,我們可以將這些可選文檔刪除。

除了上面所說的一般bundle外,還有一個特殊而又重要的bundle被稱為系統(tǒng)bundle(System bundle)。OSGI框架就是由這個特殊的系統(tǒng)bundle來表示的。

這樣的架構(gòu)使得軟件開發(fā)從一開始就以模塊化、組件化的形式進(jìn)行分割:

(1) 在bundle的內(nèi)部實現(xiàn)上,可以由簡單到復(fù)雜,不斷的演進(jìn)。單獨一個bundle就可以實現(xiàn)某一具體功能。由于bundle本身可以演進(jìn),所以每一個bundle都可以自然而然地采用增量式的軟件開發(fā)方法。

(2) 當(dāng)某一個bundle的功能通過增量式的開發(fā)從而得到確定時,我們可以發(fā)新bundle用以實現(xiàn)另一項功能。這樣通過bundle數(shù)量上的增加,不斷增加和完善軟件所需的功能。

通過上述的分析,OSGI規(guī)范在設(shè)計的時候,已經(jīng)將模塊化、組件化、增量式演進(jìn)等現(xiàn)代軟件開發(fā)方法融入到其架構(gòu)與具體的規(guī)則中,確保了基于OSGI規(guī)范的軟件體可以更好地支持需求的擴(kuò)展與演進(jìn)。

[1][美]Eric Clayberg Dan Rubel,Eclipse插件開發(fā).人民郵電出版社.2006

[2][美]Ericgh Gamma Kent Beck,Contributing to Eclipse,中國電力出版社.2005

[3]閻宏.Java與模式.電子工業(yè)出版社.2005

[4]OSGi Alliance: http://www.osgi.org/

10.3969/j.issn.1001-8972.2011.005.033

馮毅 天津市理工大學(xué) 學(xué)士學(xué)位 1997年參加工作,主要從事軟件開發(fā)工作。

猜你喜歡
規(guī)范功能模型
一半模型
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
來稿規(guī)范
來稿規(guī)范
PDCA法在除顫儀規(guī)范操作中的應(yīng)用
來稿規(guī)范
重要模型『一線三等角』
重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
關(guān)于非首都功能疏解的幾點思考
3D打印中的模型分割與打包
主站蜘蛛池模板: 亚洲精品麻豆| 老色鬼欧美精品| 成人av手机在线观看| 成人在线综合| 中文字幕无码电影| 亚洲Av综合日韩精品久久久| 亚洲AⅤ波多系列中文字幕 | 国产乱子伦一区二区=| 四虎永久免费网站| 欧美区国产区| 国产探花在线视频| www.国产福利| 中文字幕在线播放不卡| 欧洲极品无码一区二区三区| 精品国产aⅴ一区二区三区| 在线观看网站国产| 综合久久久久久久综合网| a级毛片视频免费观看| 8090成人午夜精品| www亚洲天堂| 国产精品三区四区| 亚洲 欧美 日韩综合一区| 精品久久777| 日本人又色又爽的视频| 国内熟女少妇一线天| 欧美亚洲激情| 国产亚洲精品自在久久不卡| 日韩无码精品人妻| 亚洲va在线∨a天堂va欧美va| 精品超清无码视频在线观看| 素人激情视频福利| 天天综合天天综合| 女人18一级毛片免费观看 | 亚洲精品卡2卡3卡4卡5卡区| 一区二区三区国产精品视频| 91麻豆精品视频| 久久永久精品免费视频| 亚洲无码在线午夜电影| 在线看国产精品| 欧美日韩91| 日韩天堂在线观看| 国产最新无码专区在线| 91亚洲影院| 亚洲h视频在线| 狠狠色丁香婷婷综合| 中文字幕有乳无码| 一区二区理伦视频| 国产欧美日韩精品第二区| 久久久亚洲色| 国产精品极品美女自在线| 亚洲av无码久久无遮挡| 粗大猛烈进出高潮视频无码| 国产成人精品一区二区秒拍1o | 亚洲中文字幕国产av| a级毛片视频免费观看| 亚洲高清无码精品| 美女被操91视频| 亚洲日本一本dvd高清| 欧美国产精品不卡在线观看| 亚洲va欧美ⅴa国产va影院| h网址在线观看| 国产高潮流白浆视频| 久久天天躁狠狠躁夜夜躁| 激情六月丁香婷婷四房播| 精品在线免费播放| 日韩精品一区二区深田咏美| 97国产精品视频自在拍| 亚洲一区二区三区国产精品| 午夜国产不卡在线观看视频| 国产成人1024精品| 精品国产美女福到在线直播| 国产情侣一区| 激情无码字幕综合| 日韩欧美国产三级| 国产99视频在线| 无码中文字幕加勒比高清| 真实国产乱子伦视频 | 亚洲乱强伦| 99热国产这里只有精品无卡顿"| 孕妇高潮太爽了在线观看免费| 亚洲色欲色欲www在线观看| 国产成人精品高清不卡在线|