摘 要:從20世紀(jì)60年代引入軟件工程以來,出現(xiàn)了多種封閉的軟件開發(fā)方法。提出了區(qū)別于傳統(tǒng)軟件開發(fā)方法的一種新方法,即基于網(wǎng)絡(luò)信息資源共享的軟件開發(fā)方法。該方法從分析現(xiàn)有的信息資源入手,逐步構(gòu)建了所需系統(tǒng),再將實(shí)施過程中產(chǎn)生的信息資源添加到共享平臺中,作為以后系統(tǒng)構(gòu)建的基礎(chǔ)。該方法已經(jīng)應(yīng)用在北京市西城區(qū)政務(wù)信息共享交換平臺的建設(shè)中,實(shí)踐證明其具有良好的應(yīng)用價(jià)值。
關(guān)鍵詞:信息資源;共享交換;軟件開發(fā)方法;軟件過程
中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A
文章編號:1001-3695(2008)09-2713-05
Research and application of network information resource
sharingbased software development method
DU Wenlian1,2,YANG Li1,2,ZHUO Chun1
(1.Institute of Software, Chinese Academy of Sciences, Beijing 100080, China;2.Graduate School , Chinese Academy of Sciences , Beijing 100049, China)Abstract:Since the beginning of software engineering, many software development methods, with closed processes, have been applied.This paper proposed a new software development method,network information resource sharing based software development method. Unlike traditional methods,analyzed handson information resources; and then built the system in need;extracted new information resources from the system after the completion of development, add them into information resources platform for later use. This method has been used in the development of egovernment resource sharing and exchanging platform of xicheng district, beijing city, and approved had good value of application. Key words:information resource; sharing and exchanging; software development method; software process
0 引言
隨著Web 2.0時(shí)代的到來,互聯(lián)網(wǎng)應(yīng)用的廣泛深入,對于軟件開發(fā)也提出了新的要求,即高效和靈活。因?yàn)榛ヂ?lián)網(wǎng)應(yīng)用非常注重時(shí)效性,對于軟件開發(fā)的效率有很高的要求,如果開發(fā)進(jìn)度不理想,即使系統(tǒng)開發(fā)出來也難以有競爭力。同時(shí)多個(gè)系統(tǒng)之間需要交互,各個(gè)系統(tǒng)之間應(yīng)該具有良好的兼容性,有一致的接口便于訪問,也要求能夠易于擴(kuò)充和升級。
自從爆發(fā)軟件危機(jī)以來,出現(xiàn)了多種軟件開發(fā)方法用于改善軟件開發(fā)過程,提升軟件質(zhì)量,在不同的時(shí)期取得了不錯的效果。但是隨著網(wǎng)絡(luò)時(shí)代的到來,使用傳統(tǒng)方法進(jìn)行軟件開發(fā)已經(jīng)難以滿足用戶需要。在開發(fā)過程中,所有的工作均集中在當(dāng)前系統(tǒng)上,因此沒有很好地利用網(wǎng)絡(luò)上已有的資源,所有系統(tǒng)的構(gòu)建都是從零開始,導(dǎo)致了開發(fā)效率的低下,系統(tǒng)開發(fā)完成后,也難以被再次利用。同時(shí)由于只考慮當(dāng)前系統(tǒng)的需求,當(dāng)需求變化時(shí),軟件的升級變更也比較困難。
針對傳統(tǒng)軟件開發(fā)方法在網(wǎng)絡(luò)環(huán)境下的不足,近年出現(xiàn)了一些新的軟件開發(fā)方法,如敏捷軟件開發(fā)采用迭代增量的方法,快速交付可用的軟件模塊,逐步構(gòu)建起一個(gè)完整的系統(tǒng),用于降低需求不確定所帶來的風(fēng)險(xiǎn),但實(shí)際上還是一種封閉的開發(fā)方法;基于構(gòu)件的軟件開發(fā),在構(gòu)件庫中已有組件的基礎(chǔ)上開發(fā)出所需要的系統(tǒng),避免了從頭開發(fā),同時(shí)使用成熟的構(gòu)件技術(shù)也保證了軟件的質(zhì)量,但該方法將所有的關(guān)注點(diǎn)均放在了系統(tǒng)架構(gòu)上,對于用戶的業(yè)務(wù)需求并沒有很好的把握。
Ruby on rails(RoR)框架,該框架所倡導(dǎo)的方法通過先發(fā)布,再測試的形式來提高軟件發(fā)布速度,即軟件開發(fā)完成后先發(fā)布到網(wǎng)絡(luò)上讓用戶使用,由用戶在使用過程中提出意見和建議,修改后再次發(fā)布,但這種方法對于系統(tǒng)安全性有很高要求的系統(tǒng)(如政府機(jī)關(guān)、金融、保險(xiǎn)機(jī)構(gòu))來講并不適用。
在分析了上述方法的優(yōu)勢和不足之后,本文提出了一種基于網(wǎng)絡(luò)信息資源共享的軟件開發(fā)方法。該方法從分析現(xiàn)有的信息資源入手,逐步構(gòu)建起所需系統(tǒng),系統(tǒng)完成后,再將實(shí)施過程中產(chǎn)生的信息資源添加到共享庫中,作為以后系統(tǒng)構(gòu)建的基礎(chǔ)。通過實(shí)際項(xiàng)目的實(shí)施,取得了顯著的成效,具有良好的應(yīng)用和推廣價(jià)值。
1 傳統(tǒng)軟件開發(fā)方法的介紹及缺點(diǎn)
1.1 傳統(tǒng)軟件開發(fā)方法
自從在1968、1969年連續(xù)召開的兩次著名的NATO會議上提出了軟件工程這一術(shù)語以來,形成了多種軟件開發(fā)方法,主要有以下六種:
a)Parnas方法。針對當(dāng)時(shí)軟件在可維護(hù)性和可靠性方面存在的嚴(yán)重問題,提出了信息隱蔽原則和預(yù)先防護(hù)原則,但是沒有提出具體的實(shí)施流程,因此只能作為其他方法的補(bǔ)充。
b)結(jié)構(gòu)化方法(SASD)。它是20世紀(jì)80年代使用最廣泛的軟件開發(fā)方法。它首先用結(jié)構(gòu)化分析(SA)對軟件進(jìn)行需求分析;然后用結(jié)構(gòu)化設(shè)計(jì)(SD)方法進(jìn)行總體設(shè)計(jì);最后是結(jié)構(gòu)化編程(SP)。
c)面向數(shù)據(jù)結(jié)構(gòu)方法。從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其他細(xì)節(jié),就可得到完整的程序結(jié)構(gòu)圖。
d)問題分析法(PAM)。從輸入、輸出數(shù)據(jù)結(jié)構(gòu)導(dǎo)出基本處理框;分析這些處理框之間的先后關(guān)系;按先后關(guān)系逐步綜合處理框,直到畫出整個(gè)系統(tǒng)的PAD圖。
e)面向?qū)ο蠓椒ǎ∣O)。一種自底向上與自頂向下相結(jié)合的方法,以對象建模為基礎(chǔ),從而不僅考慮了輸入、輸出數(shù)據(jù)結(jié)構(gòu),實(shí)際上也包含了所有對象的數(shù)據(jù)結(jié)構(gòu)。徹底實(shí)現(xiàn)了PAM沒有完全實(shí)現(xiàn)的目標(biāo)。不僅如此,OO技術(shù)在需求分析、可維護(hù)性和可靠性這三個(gè)軟件開發(fā)的關(guān)鍵環(huán)節(jié)與質(zhì)量指標(biāo)上有了實(shí)質(zhì)性的突破,徹底地解決了在這些方面存在的嚴(yán)重問題。f)可視化開發(fā)方法。在可視開發(fā)工具提供的圖形用戶界面上,通過操作界面元素,諸如菜單、按鈕、對話框、編輯框、單選框、復(fù)選框、列表框和滾動條等,由可視開發(fā)工具自動生成應(yīng)用軟件。
1.2 傳統(tǒng)方法的缺陷
筆者將上面提到的幾種方法稱為傳統(tǒng)的軟件開發(fā)方法,因?yàn)檫@些方法都是一個(gè)封閉的過程,主要表現(xiàn)在兩個(gè)方面:a)開發(fā)流程上,除了Parnas方法以外,其他方法基本上都經(jīng)歷了需求、設(shè)計(jì)、開發(fā)、測試、集成、部署等階段,不管項(xiàng)目類型、規(guī)模怎樣,都需要從頭開始,因此開發(fā)效率較低,難以滿足某些對于開發(fā)進(jìn)度有嚴(yán)格要求的系統(tǒng)的需要,而且一直沒有很好的辦法解決這個(gè)問題;b)這些方法在與其他系統(tǒng)的交互上,也存在不足。由于上述方法僅僅關(guān)注于當(dāng)前系統(tǒng),所有的需求、設(shè)計(jì)都圍繞著單一系統(tǒng)。但在互聯(lián)網(wǎng)應(yīng)用越來越普遍,各種異構(gòu)系統(tǒng)之間交互越來越頻繁時(shí),傳統(tǒng)方法開發(fā)出來的軟件之間交互性差的缺點(diǎn)也就越來越明顯。
鑒于傳統(tǒng)軟件開發(fā)方法難以適應(yīng)網(wǎng)絡(luò)環(huán)境下對于軟件開發(fā)所提出的新需求的情況,本文提出了一種新的軟件開發(fā)方法,即基于網(wǎng)絡(luò)信息資源共享的軟件開發(fā)方法。
2 基于網(wǎng)絡(luò)信息資源共享的軟件開發(fā)方法
2.1 基本概念
在具體介紹基于網(wǎng)絡(luò)信息資源共享的軟件開發(fā)方法之前,先來看一下信息資源和網(wǎng)絡(luò)信息資源的概念。
1)信息資源是經(jīng)過人類篩選、組織、加工、并可以存取和能夠滿足人類需求的各種信息的集合,具有知識性和共享性。
2)網(wǎng)絡(luò)信息資源也稱做虛擬信息資源,它以數(shù)字化形式記錄,以多媒體形式表達(dá),存儲在網(wǎng)絡(luò)計(jì)算機(jī)磁介質(zhì)、光介質(zhì)以及各類通信介質(zhì)上的,并通過計(jì)算機(jī)網(wǎng)絡(luò)通信方式進(jìn)行傳遞信息內(nèi)容的集合。簡言之,網(wǎng)絡(luò)信息資源就是通過計(jì)算機(jī)網(wǎng)絡(luò)可以利用的各種信息資源的總和。
2.2 基于網(wǎng)絡(luò)信息資源共享的軟件開發(fā)方法定義
從上面的概念中可以看出,網(wǎng)絡(luò)信息資源有著非常豐富的內(nèi)涵和外延,包括文件、數(shù)據(jù)庫、計(jì)算機(jī)程序、組件、類庫等各種形式的資源,而基于網(wǎng)絡(luò)信息資源共享的軟件開發(fā)方法就是以網(wǎng)絡(luò)上已有的信息資源為基礎(chǔ),根據(jù)所需要開發(fā)系統(tǒng)的特點(diǎn),從中選取適當(dāng)?shù)男畔①Y源加以利用和加工,開發(fā)出適合用戶需要的系統(tǒng),同時(shí)將新開發(fā)的系統(tǒng)作為新的信息資源,添加到網(wǎng)絡(luò)信息資源共享庫中,作為日后新系統(tǒng)開發(fā)的基礎(chǔ)。整個(gè)軟件開發(fā)是一個(gè)開放的、動態(tài)的過程。
3 與基于構(gòu)建軟件開發(fā)方法比較
通過上面的介紹可以看出,基于網(wǎng)絡(luò)信息資源共享的軟件開發(fā)方法(以下簡稱共享開發(fā)方法)的實(shí)現(xiàn)理念與當(dāng)前流行的另一種軟件開發(fā)方法——基于構(gòu)件的開發(fā)方法有比較相似的地方。兩者均從分析現(xiàn)有系統(tǒng)入手,盡量利用已有的資源,對其進(jìn)行較少的改動后滿足客戶的需求,并將新的系統(tǒng)作為日后開發(fā)的基礎(chǔ),從而達(dá)到減少工作量和提高產(chǎn)品質(zhì)量的目的。但是在資源的選取、復(fù)用的內(nèi)容上,兩者有很大的不同。
3.1 構(gòu)件定義
構(gòu)件是為了復(fù)用目的而針對性開發(fā)的軟件實(shí)體,是一個(gè)獨(dú)立發(fā)布的功能部分,可通過其接口來訪問服務(wù)。通過對函數(shù)、過程、對象類或者更大規(guī)模的程序進(jìn)行封裝,形成一個(gè)個(gè)實(shí)現(xiàn)特定功能的抽象的系統(tǒng)特征單元,供系統(tǒng)中其他程序調(diào)用。有了構(gòu)件之后,系統(tǒng)中獨(dú)立的功能模塊可以保留下來,作為日后新系統(tǒng)開發(fā)的基礎(chǔ),提高了軟件開發(fā)的復(fù)用程度,既減少了工作量,又提高了軟件質(zhì)量。在這方面,相比傳統(tǒng)軟件開發(fā)而言是一個(gè)不小的進(jìn)步。
3.2 基于構(gòu)件開發(fā)方法的局限性
從另一方面來說,基于構(gòu)件方法在重用的內(nèi)容上具有局限性。隨著軟件開發(fā)的規(guī)模化、復(fù)雜化、工程化,在整個(gè)軟件開發(fā)的過程中,除了產(chǎn)生最終的可運(yùn)行的程序外,還有許多具有復(fù)用價(jià)值的中間產(chǎn)品,如需求模型、體系結(jié)構(gòu)、數(shù)據(jù)庫、文件、管理方法等。如果只是復(fù)用了程序,就會丟失許多其他的信息,而那些信息對于軟件開發(fā)來說也是非常重要的。筆者認(rèn)為有以下一些內(nèi)容同樣值得復(fù)用:
a)需求模型——一個(gè)組件的目的和出發(fā)點(diǎn)。
b)設(shè)計(jì)模型——某個(gè)組件得以開發(fā)出來的過程,有很重要的借鑒價(jià)值。
c)管理經(jīng)驗(yàn)——除了技術(shù)以外,優(yōu)秀的項(xiàng)目管理經(jīng)驗(yàn)對于一個(gè)成功的產(chǎn)品是必不可少的。3.3 共享開發(fā)方法的優(yōu)勢
解決以上提出的問題,正是共享開發(fā)方法的核心價(jià)值所在。共享開發(fā)方法以網(wǎng)絡(luò)信息資源為基礎(chǔ),除了程序/組件外,數(shù)據(jù)庫、文件、其他有價(jià)值的中間產(chǎn)品,均可作為信息資源用來共享,如圖1所示。
與基于構(gòu)件的開發(fā)方法相比,共享開發(fā)方法至少具有三個(gè)方面的優(yōu)勢。
3.3.1 更好地響應(yīng)用戶需求變更
初看起來,敏捷軟件開發(fā)方法在這方面具有很大的優(yōu)勢,因?yàn)樗岢珦肀ё兓e極應(yīng)對客戶需求變更,并即時(shí)提供可交付的軟件。而基于構(gòu)件方法也強(qiáng)調(diào)根據(jù)用戶特定需求從構(gòu)件庫選取合適的構(gòu)件。相比而言,共享開發(fā)方法在對需求的控制上具有較大的優(yōu)勢。
當(dāng)一個(gè)功能需求被提出來之后,首先需要分析用戶提出該需求的原因,希望達(dá)到的效果,而不是盲目地按照需求進(jìn)行新開發(fā)或者修改現(xiàn)有系統(tǒng)。當(dāng)經(jīng)過分析確認(rèn)有必要實(shí)現(xiàn)該需求時(shí),就可將該需求作為一條信息資源放入信息資源共享庫中,同時(shí)在共享庫中尋找類似的需求,比較這些需求之間的相同點(diǎn)和不同點(diǎn),適用條件和實(shí)施效果等,再結(jié)合用戶目前的情況,提出自認(rèn)為最好的解決方法。例如,做一個(gè)搜索引擎,谷歌采用Page Rank算法,而百度采用競價(jià)排名的算法,那就需要對這兩種算法進(jìn)行全面的比較,如中英文搜索的準(zhǔn)確度,廣告商、用戶對搜索結(jié)果的滿意度,兩種算法的效率比較等。有了全面的分析報(bào)告之后,當(dāng)其他用戶有開發(fā)搜索引擎的需求,并且希望采用的算法并不適合實(shí)際情況時(shí),就可以建議他選取更為合理的算法,避免系統(tǒng)開發(fā)完成后的再度修改。
筆者認(rèn)為這是共享開發(fā)方法最大的一個(gè)優(yōu)勢,因?yàn)樾枨笫撬泄ぷ鞯脑搭^。只有在需求上進(jìn)行嚴(yán)格控制,才能切實(shí)減少不必要的工作量;如果需求有偏差,即使采用最先進(jìn)的技術(shù),開發(fā)出來的產(chǎn)品也難以得到用戶認(rèn)可。此外,對用戶需求的深入分析也有助于更好地了解用戶所在行業(yè)的特點(diǎn),幫助企業(yè)從項(xiàng)目、產(chǎn)品的角度提升到提供行業(yè)解決方案的高度,有助于鞏固企業(yè)在市場中的地位。
3.3.2 提供更為豐富的設(shè)計(jì)方案
在設(shè)計(jì)過程中,會產(chǎn)生不少有復(fù)用價(jià)值的中間產(chǎn)品,雖然不是所有的產(chǎn)品都能成為最終可提交的軟件產(chǎn)品,但是如果保留下來,還是可以被借鑒。筆者認(rèn)為有以下一些中間產(chǎn)品可以復(fù)用:
a)數(shù)據(jù)模型。它是數(shù)據(jù)庫管理系統(tǒng)中用于提供信息數(shù)據(jù)表示和操作手段的形式,是對現(xiàn)實(shí)世界中的具體事物的抽象與表示,是由若干概念構(gòu)成的集合。數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三個(gè)部分組成,也稱做數(shù)據(jù)模型三要素。在信息系統(tǒng)中,數(shù)據(jù)模型占有非常重要的地位,很多時(shí)候數(shù)據(jù)模型的質(zhì)量直接決定了最終系統(tǒng)的質(zhì)量,因此需要在數(shù)據(jù)模型的設(shè)計(jì)上花費(fèi)不少的時(shí)間和精力。
對于像銀行、保險(xiǎn)公司這樣的行業(yè),日常業(yè)務(wù)中需要處理大量的數(shù)據(jù),分公司遍布全國各地,再加上各地業(yè)務(wù)之間的差異,因此很難用同一個(gè)數(shù)據(jù)庫來存儲所有的數(shù)據(jù)。最常見的情況是各個(gè)分公司在工作時(shí)間將業(yè)務(wù)數(shù)據(jù)保存到本地?cái)?shù)據(jù)庫中,在停止?fàn)I業(yè)后將數(shù)據(jù)上傳到總部的數(shù)據(jù)中心進(jìn)行匯總。出于各種歷史原因,各個(gè)分公司當(dāng)初在建設(shè)自身的信息系統(tǒng)時(shí),缺少統(tǒng)一規(guī)劃,僅僅考慮了自身業(yè)務(wù)的特點(diǎn),因此使用了不同的數(shù)據(jù)模型,導(dǎo)致了不同分公司之間數(shù)據(jù)共享與交互的困難。
如果仔細(xì)分析一下,就會發(fā)現(xiàn),對于同一家公司來說,各個(gè)分公司之間的業(yè)務(wù)雖然有所不同,但是最基本的業(yè)務(wù)應(yīng)該是一致的。所以可以采用相同的核心數(shù)據(jù)模型,這樣既可以避免各個(gè)分公司在建設(shè)信息系統(tǒng)時(shí)重新設(shè)計(jì)數(shù)據(jù)模型,同時(shí)也便于各個(gè)部門之間的數(shù)據(jù)共享,最大程度上減少了工作量和提高了系統(tǒng)之間的交互性。
b)業(yè)務(wù)模型。這是一個(gè)比較抽象但非常重要的中間產(chǎn)品。每一個(gè)企業(yè)都有其核心業(yè)務(wù),只有深入理解其業(yè)務(wù)流程,才能做好滿足企業(yè)業(yè)務(wù)需要的系統(tǒng)。而對于并非從事特定行業(yè)工作的技術(shù)人員來說,透徹理解某個(gè)企業(yè)的業(yè)務(wù)并不是一件容易的事,需要與業(yè)務(wù)專家配合進(jìn)行大量的調(diào)查、研究,最終抽象出一個(gè)雙方都能理解的模型。
業(yè)務(wù)模型是系統(tǒng)分析、設(shè)計(jì)的基礎(chǔ),整個(gè)建模的過程非常復(fù)雜,但確實(shí)是必需的。如果對于一家公司的每個(gè)分公司分別進(jìn)行業(yè)務(wù)建模,代價(jià)非常昂貴,因此將業(yè)務(wù)模型作為一種信息資源進(jìn)行共享是一個(gè)有效的手段。
c)分析/設(shè)計(jì)模型。在共享了業(yè)務(wù)模型的基礎(chǔ)上,可以對分析/設(shè)計(jì)模型也進(jìn)行共享。雖然每個(gè)系統(tǒng)都有其各自的特點(diǎn),但是同一家公司的各個(gè)不同分公司或同一行業(yè)中不同公司之間的系統(tǒng)的分析/設(shè)計(jì)模型是可以相互借鑒的。此外,采用類似的系統(tǒng)架構(gòu)也有利于不同系統(tǒng)之間的數(shù)據(jù)共享與交互。當(dāng)積累了一個(gè)行業(yè)中不同系統(tǒng)建設(shè)的經(jīng)驗(yàn)后,系統(tǒng)提供商就能對該行業(yè)的整體狀況有更好的了解,做出比較通用的產(chǎn)品進(jìn)而提出行業(yè)解決方案。
除了以上一些比較抽象的中間產(chǎn)品外,還有一類可提交的復(fù)用產(chǎn)品——程序/組件,前面已作了比較詳細(xì)的介紹,因此不再進(jìn)一步闡述。
3.3.3 為更好地進(jìn)行項(xiàng)目管理提供幫助
一種好的軟件開發(fā)方法除了具體的開發(fā)方法外,還應(yīng)該包括如何管理開發(fā)團(tuán)隊(duì)方面的內(nèi)容。采用傳統(tǒng)方法進(jìn)行軟件開發(fā)時(shí),個(gè)別管理人員掌握了大量的相關(guān)信息和管理經(jīng)驗(yàn),而項(xiàng)目組其他人員在這方面的積累比較少,因此當(dāng)出現(xiàn)人員變動時(shí),新的管理人員就需要花費(fèi)較長的時(shí)間甚至付出較大的代價(jià)才能適應(yīng)新的工作。共享開發(fā)方法在團(tuán)隊(duì)管理方面的核心思想是管理經(jīng)驗(yàn)復(fù)用,就是將成功的管理經(jīng)驗(yàn)也作為信息資源保存下來,添加到共享庫中,為不同項(xiàng)目、不同人員所共享。例如:
a)人員安排。不同類型的項(xiàng)目對于人員的要求是不同的,如業(yè)務(wù)人員/技術(shù)人員的比例,開發(fā)人員/測試人員的比例,以及客戶參與程度等;同一個(gè)項(xiàng)目在不同階段,也會有不同的人員需求。如果有這方面的共享信息資源,項(xiàng)目管理者就可以及早進(jìn)行人員安排,確保不同項(xiàng)目、不同階段都有充足的人力資源。
b)進(jìn)度規(guī)劃。每一個(gè)項(xiàng)目開始前,都要對進(jìn)度進(jìn)行規(guī)劃,而多數(shù)都是根據(jù)經(jīng)驗(yàn)估計(jì)的,因此準(zhǔn)確程度不高。但是如果有類似系統(tǒng)開發(fā)的經(jīng)驗(yàn),就可以知道一個(gè)系統(tǒng)在開發(fā)過程中的難點(diǎn),以及可以并發(fā)進(jìn)行工作,應(yīng)該被賦予更高優(yōu)先級工作、具體的工作量等,這樣就大大提高了規(guī)劃的準(zhǔn)確程度。
c)有效溝通。在項(xiàng)目開發(fā)過程中,與客戶的有效溝通是確保項(xiàng)目成功的一個(gè)重要手段。每一類客戶所關(guān)心的重點(diǎn)是不同的,因此在溝通過程中往往需要采用不同的方法,通過客戶信息資源共享,可以提高溝通的效率,提升客戶滿意度。
4 開發(fā)流程及組織架構(gòu)
4.1 開發(fā)流程
基于網(wǎng)絡(luò)信息資源共享的軟件開發(fā)是一個(gè)開放的、動態(tài)的過程。具體流程如下:
a)分析。與傳統(tǒng)方法不同,這里的分析包含兩個(gè)部分,即系統(tǒng)需求分析與對網(wǎng)絡(luò)上可共享的信息資源的分析。這兩個(gè)部分由不同的人員進(jìn)行,需求分析人員在進(jìn)行系統(tǒng)需求分析時(shí),信息資源管理員(共享開發(fā)方法組織架構(gòu)中的一類人員,本文后面會有相關(guān)介紹)可以分析已有的資源,配合系統(tǒng)分析人員更好的工作。
b)選取資源。在對系統(tǒng)需求和已有信息資源進(jìn)行分析后,就可以從已有資源中選取滿足當(dāng)前系統(tǒng)要求的資源或者資源組合,有些資源可以直接使用,有些資源經(jīng)過少量修改后可以使用。無論是哪種方式都可以大大減少系統(tǒng)開發(fā)的工作量。而且本步驟和步驟a)是可以同時(shí)進(jìn)行的,系統(tǒng)分析人員在進(jìn)行需求分析的同時(shí),信息資源管理員可以分析、選取資源,因此并不比單純進(jìn)行系統(tǒng)分析占用更多時(shí)間。
c)基于共享資源設(shè)計(jì)開發(fā)。在這里,筆者沒有將設(shè)計(jì)和開發(fā)作為兩個(gè)單獨(dú)的步驟。隨著網(wǎng)絡(luò)上可用共享信息資源的增加,新系統(tǒng)開發(fā)的工作量將會逐步減少,因?yàn)楹芏嘈枨罂梢酝ㄟ^選取適當(dāng)?shù)馁Y源經(jīng)過少量修改就可以滿足,因此設(shè)計(jì)開發(fā)的時(shí)間大大縮短,彼此之間的界限也不如傳統(tǒng)軟件開發(fā)方法那樣明顯。
d)單元測試。這里的測試是以信息資源為單位進(jìn)行的,既可以是一個(gè)功能模塊,一個(gè)組件,也可以是一個(gè)文件,一個(gè)數(shù)據(jù)庫,因?yàn)檫@些都是資源,都可以作為以后系統(tǒng)開發(fā)的基礎(chǔ)。這樣的測試方式比起傳統(tǒng)方法更為靈活。
e)集成測試。與單元測試相對應(yīng),集成測試的重點(diǎn)在于對各種信息資源之間的交互、訪問狀況進(jìn)行測試。
f)部署運(yùn)行。當(dāng)通過集成測試后,系統(tǒng)就可以部署到目標(biāo)環(huán)境下,部署完成后就可以上線試運(yùn)行了,傳統(tǒng)軟件開發(fā)方法到這里就結(jié)束了,而共享開發(fā)方法還需要進(jìn)行后面兩個(gè)步驟。g)提取資源。在系統(tǒng)部署運(yùn)行的同時(shí),信息資源管理員將再次進(jìn)行信息資源分析,但現(xiàn)在是對新開發(fā)的系統(tǒng)分析,從中提取出現(xiàn)有資源庫中不存在,但又很有價(jià)值的新系統(tǒng)中信息資源。
h)添加資源。從新系統(tǒng)中提取出資源后,將新的信息資源添加到原有信息資源共享庫中,作為以后系統(tǒng)開發(fā)的基礎(chǔ)。
總體流程如圖2所示。
4.2 組織架構(gòu)
組織架構(gòu)與傳統(tǒng)方法相比,基于信息資源共享的方法對于軟件設(shè)計(jì)、開發(fā)人員提出了不同的要求,除了應(yīng)用系統(tǒng)開發(fā)人員外,還需要共享信息資源開發(fā)、維護(hù)、管理人員,以及將應(yīng)用系統(tǒng)與信息資源集成人員。具體組織架構(gòu)如圖3所示。
5 應(yīng)用舉例及效果分析
5.1 北京市西城區(qū)信息化建設(shè)現(xiàn)狀分析
北京市西城區(qū)目前主要有以下一些委辦局:北京市公安局西城分局、區(qū)民政局、區(qū)計(jì)生委、區(qū)殘聯(lián)、區(qū)法制辦、區(qū)房屋管理局、區(qū)工商局、區(qū)環(huán)境衛(wèi)生服務(wù)中心、區(qū)科學(xué)技術(shù)委員會、區(qū)旅游局、區(qū)統(tǒng)計(jì)局、區(qū)衛(wèi)生局、區(qū)園林局、區(qū)信息辦等。
通過多年的建設(shè),西城區(qū)目前已經(jīng)有多個(gè)跨部門應(yīng)用系統(tǒng)在運(yùn)行,各個(gè)委辦局及社會公眾對公共信息的需要越來越迫切,而且各個(gè)業(yè)務(wù)部門對其他部門專題數(shù)據(jù)的需求也非常強(qiáng)烈。目前這些信息中部分信息還沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn),信息的一致性和現(xiàn)實(shí)性還不能得到很好的保證。因此,要滿足各部門業(yè)務(wù)流程和信息共享的需要,不但要在統(tǒng)一的數(shù)據(jù)標(biāo)準(zhǔn)下建立起信息資源共享庫,而且要建立起對這個(gè)共享庫的管理、維護(hù)、更新和使用的長效管理機(jī)制。使數(shù)據(jù)庫能夠不斷地?cái)U(kuò)展、完善,保證數(shù)據(jù)的一致性、實(shí)時(shí)性和準(zhǔn)確性。為整個(gè)信息資源的規(guī)劃和建設(shè)奠定一個(gè)良好的基礎(chǔ)。
如果用傳統(tǒng)的軟件開發(fā)方法開發(fā)共享數(shù)據(jù)庫,那么整個(gè)開發(fā)過程將是封閉的、靜態(tài)的,不僅沒有很好地利用各個(gè)委辦局多年信息化建設(shè)的成果,同時(shí)僅僅關(guān)注于需要開發(fā)的系統(tǒng),共享庫開發(fā)完成后也難以與各個(gè)委辦局之間實(shí)現(xiàn)良好的交互。
西城區(qū)共享數(shù)據(jù)庫需要建設(shè)人口、法人、宏觀經(jīng)濟(jì)和空間地理四大信息庫,也就是將分散儲存在不同委辦局的數(shù)據(jù)通過數(shù)據(jù)交換進(jìn)入到西城區(qū)信息辦的共享數(shù)據(jù)庫,再通過共享庫這個(gè)平臺共享給各個(gè)委辦局。如果每個(gè)信息庫都要重新開發(fā),工作量非常大,因此在開發(fā)之前需要好好地規(guī)劃一下。
5.2 人口信息庫開發(fā)流程
以人口信息庫的設(shè)計(jì)開發(fā)為例,在經(jīng)過了大量的調(diào)研和現(xiàn)有共享信息資源的分析后,采用了以下開發(fā)流程:
a)系統(tǒng)需求分析。人口庫的建設(shè)目標(biāo)是能夠使西城區(qū)的人口信息能在各個(gè)不同的委辦局之間共享。目前的現(xiàn)狀是各個(gè)委辦局同時(shí)維護(hù)這兩種不同類型的數(shù)據(jù),即基礎(chǔ)數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)。基礎(chǔ)數(shù)據(jù)是指個(gè)人的基本信息,如姓名、性別、身份證號、出生日期等;業(yè)務(wù)數(shù)據(jù)是指由某個(gè)委辦局專門負(fù)責(zé)的數(shù)據(jù),如區(qū)計(jì)生委負(fù)責(zé)育齡婦女信息、區(qū)殘聯(lián)負(fù)責(zé)殘疾人信息、區(qū)民政局負(fù)責(zé)低保人員信息等。這種做法既加重了委辦局的負(fù)擔(dān),同時(shí)當(dāng)不同委辦局對同一個(gè)人的基本信息描述不一致時(shí),就難以確定一個(gè)人的身份,也就無法在不同委辦局之間實(shí)現(xiàn)信息共享了。
人口信息庫就是這樣一個(gè)信息共享的平臺,將西城區(qū)所有人員的基本信息保存到共享庫中,各個(gè)委辦局不再單獨(dú)維護(hù),給每個(gè)人賦予一個(gè)惟一的標(biāo)志符,作為確定一個(gè)人身份的標(biāo)志。這樣,各個(gè)委辦局對于同一個(gè)人擁有相同的標(biāo)志符,就可以方便、準(zhǔn)確地進(jìn)行數(shù)據(jù)共享了。
b)信息資源分析及選取。在有了基本方案后,需要確定以哪個(gè)委辦局的數(shù)據(jù)作為基礎(chǔ)數(shù)據(jù)進(jìn)入共享庫以及其他委辦局?jǐn)?shù)據(jù)進(jìn)入共享庫的方式。一般來說,公安局的人口基本信息是最準(zhǔn)確的,但是出于安全因素的考慮,并不能共享公安局的數(shù)據(jù),因此考慮用區(qū)民政局的數(shù)據(jù)作為基礎(chǔ)數(shù)據(jù),但是在分析了區(qū)民政局的系統(tǒng)后,發(fā)現(xiàn)并不是所有的人口基本信息都被保存了,因此不能直接使用。
如果使用傳統(tǒng)軟件開發(fā)方法,就需要對區(qū)民政局的系統(tǒng)進(jìn)行改造,這顯然不現(xiàn)實(shí);或從多個(gè)委辦局獲取基礎(chǔ)數(shù)據(jù),這種方法難度也較大。但是在分析了北京市信息化建設(shè)的狀況后,發(fā)現(xiàn)北京市民政局保存了全市相對完整的人口基本信息,可以使用其中屬于西城區(qū)的人口基本信息數(shù)據(jù)作為基礎(chǔ)數(shù)據(jù)。首先進(jìn)入共享庫,其他委辦局的數(shù)據(jù)在這個(gè)基礎(chǔ)上,經(jīng)過清洗、比對、匹配等操作進(jìn)入共享庫。這樣,就解決了基礎(chǔ)數(shù)據(jù)來源的問題。
通過進(jìn)一步的研究,北京市信息資源管理中心已經(jīng)建成了北京市政務(wù)信息共享交換平臺,各個(gè)不同委辦局的政務(wù)信息以目錄的形式,通過數(shù)據(jù)交換發(fā)布到共享交換平臺,實(shí)現(xiàn)全市范圍內(nèi)的共享。這個(gè)平臺的運(yùn)行模式和共享數(shù)據(jù)庫的數(shù)據(jù)入庫過程非常類似,因此可以利用該平臺的數(shù)據(jù)交換引擎來處理共享庫的數(shù)據(jù)入庫操作。
c)設(shè)計(jì)開發(fā)。在解決了共享庫數(shù)據(jù)來源以及數(shù)據(jù)入庫的方式后,系統(tǒng)架構(gòu)就已經(jīng)基本確定下來了,剩下的就只是一些細(xì)節(jié)方面的設(shè)計(jì)和實(shí)現(xiàn)了。例如,各個(gè)委辦局的何種數(shù)據(jù)進(jìn)入共享庫,委辦局?jǐn)?shù)據(jù)入庫的優(yōu)先級,對數(shù)據(jù)更新是記錄級別還是字段級別,數(shù)據(jù)入庫需要遵循的規(guī)則,數(shù)據(jù)清洗比對的具體方式等。相比重新開發(fā)整個(gè)應(yīng)用系統(tǒng),在分析和適當(dāng)選取網(wǎng)絡(luò)上共享信息資源后,設(shè)計(jì)開發(fā)的工作量大大減少。
d)測試及部署。這兩步與傳統(tǒng)軟件開發(fā)方法類似,但是由于采用了市民政局的基礎(chǔ)數(shù)據(jù),以及市政務(wù)信息共享交換平臺所提供的交換引擎,基于成熟的數(shù)據(jù)模型以及組件進(jìn)行開發(fā),新開發(fā)系統(tǒng)的質(zhì)量有了比較好的保障,測試及部署時(shí)間相應(yīng)減少,開發(fā)進(jìn)程也更為順利。
e)提取及添加資源。在人口信息庫開發(fā)完成后,經(jīng)過分析,提取出以下兩個(gè)重要的引擎:(a)清洗比對引擎。所謂數(shù)據(jù)清洗,就是在對不符合要求的數(shù)據(jù)(如非空字段中出現(xiàn)空值,不允許有空格的字段中出現(xiàn)空格等),通過適當(dāng)?shù)牟僮鳎ㄓ晒芾韱T修改、返還給來源委辦局處理等)使其滿足共享庫對于數(shù)據(jù)的要求后進(jìn)入共享庫。數(shù)據(jù)比對,則是當(dāng)基礎(chǔ)數(shù)據(jù)需要進(jìn)入共享庫時(shí),首先要確定庫中是否存在該數(shù)據(jù),以決定是插入新的記錄還是更新原有記錄。該引擎允許用戶選擇需要進(jìn)行比對的字段,當(dāng)這些字段比對成功后,就更新原有記錄,否則插入新的記錄。由于法人、空間地理信息庫在不同委辦局信息入庫時(shí)都需要經(jīng)過這樣一個(gè)流程,因此可以抽象出一個(gè)模型,作為工具使用。
(b)統(tǒng)計(jì)分析引擎。這是對人口信息庫進(jìn)行統(tǒng)計(jì)的一個(gè)通用引擎。使用一個(gè)叫做數(shù)據(jù)元的工具對共享庫中的表和字段信息進(jìn)行管理,當(dāng)用戶想對人口信息進(jìn)行統(tǒng)計(jì)時(shí),可以利用數(shù)據(jù)元工具選擇不同字段或者字段組合作為統(tǒng)計(jì)口徑進(jìn)行統(tǒng)計(jì)。根據(jù)字段類型的不同,選擇不同的統(tǒng)計(jì)條件,如性別字段帶有標(biāo)準(zhǔn)的國標(biāo)碼,“男”“女”等,因此這類字段只能選擇特定的值統(tǒng)計(jì);出生日期是時(shí)間類型的,所以統(tǒng)計(jì)的區(qū)間是一個(gè)或多個(gè)時(shí)間段,年齡是數(shù)字類型的,因此統(tǒng)計(jì)區(qū)間是一個(gè)或多個(gè)年齡段。統(tǒng)計(jì)結(jié)果以統(tǒng)計(jì)圖和統(tǒng)計(jì)報(bào)表的形式展示,用戶可以收藏、定制。雖然說統(tǒng)計(jì)分析并不是一個(gè)新的技術(shù),但是這個(gè)引擎并不僅僅是針對目前系統(tǒng)所設(shè)計(jì)的,它可以適用于不同的數(shù)據(jù)庫表和字段。當(dāng)人口庫的統(tǒng)計(jì)功能完成后,只需要作一些簡單的配置,并且用數(shù)據(jù)元工具加以輔助,就可以實(shí)現(xiàn)法人庫、空間地理庫的統(tǒng)計(jì)分析,而無須寫代碼重新開發(fā)。
5.3 與傳統(tǒng)軟件開發(fā)方法比較
與傳統(tǒng)方法相比,基于網(wǎng)絡(luò)共享信息資源的軟件開發(fā)方法有如下優(yōu)勢:
a)縮短了系統(tǒng)開發(fā)時(shí)間。如果使用傳統(tǒng)方法開發(fā)人口信息共享數(shù)據(jù)庫,從前期調(diào)研、需求分析、設(shè)計(jì)、開發(fā)、測試,到系統(tǒng)上線,至少需要三個(gè)月的時(shí)間,而且由于在開發(fā)過程中只考慮了當(dāng)前系統(tǒng)的需求,當(dāng)開發(fā)法人庫、空間地理庫時(shí)幾乎需要與人口庫相同的時(shí)間。而使用共享開發(fā)方法進(jìn)行開發(fā),由于利用了已有共享信息資源,大大減少了開發(fā)時(shí)間,當(dāng)人口庫開發(fā)完成時(shí)還提取了兩個(gè)功能引擎,又可以被后面開發(fā)的系統(tǒng)所利用。在開發(fā)法人庫時(shí)只用了不到一個(gè)月的時(shí)間。兩種方法開發(fā)系統(tǒng)所需時(shí)間如圖4所示。
b)減少代碼量。在系統(tǒng)開發(fā)所需要的代碼量方面,如果只開發(fā)一個(gè)共享數(shù)據(jù)庫,兩種方法所需要的代碼量相差不是太多,因?yàn)楣蚕黹_發(fā)方法雖然利用了部分網(wǎng)絡(luò)信息資源,但是由于考慮到后續(xù)系統(tǒng)開發(fā)的需要,開發(fā)了一些通用工具,需要額外編寫一些代碼。這樣做的好處是,當(dāng)在開發(fā)法人庫、空間地理庫時(shí)基本無須再編寫新的代碼,只需在分析清楚了需求之后,由管理員使用配置工具做一些配置工作即可。兩種開發(fā)方法所需代碼量如圖5所示。
c)擴(kuò)充并完善了信息資源共享庫,為其他區(qū)政府信息系統(tǒng)的建設(shè)奠定了基礎(chǔ)。
從上面的介紹可以看出,使用共享開發(fā)方法進(jìn)行軟件開發(fā)是一個(gè)動態(tài)交互的過程,不僅從網(wǎng)絡(luò)上獲取信息資源,系統(tǒng)開發(fā)完后又提取出可共享的信息資源,對共享庫進(jìn)行擴(kuò)充。這樣,網(wǎng)絡(luò)上可共享的資源日益增多,日后在開發(fā)系統(tǒng)時(shí)可供選擇的余地也大大得到了加強(qiáng)。當(dāng)北京市政府建設(shè)完成了共享交換平臺后,西城區(qū)政府在建設(shè)信息資源共享庫時(shí)就可以加以利用,而當(dāng)西城區(qū)政府的系統(tǒng)建成之后,北京市其他區(qū)縣政府在建設(shè)類似系統(tǒng)時(shí)也可以參考借鑒。
d)使開發(fā)人員有更多的時(shí)間關(guān)注業(yè)務(wù)的實(shí)現(xiàn),更好地滿足客戶需求。
當(dāng)網(wǎng)絡(luò)上有了豐富的可供選擇的信息資源后,開發(fā)人員就可以將更多的時(shí)間和精力從實(shí)現(xiàn)的細(xì)節(jié)上轉(zhuǎn)到更好地滿足客戶需求上面來了。分析系統(tǒng)需求,選取可用資源,適當(dāng)加以改造,使得系統(tǒng)開發(fā)時(shí)間大大縮短,質(zhì)量也顯著提高,客戶的滿意度也大大提高。
6 結(jié)束語
針對網(wǎng)絡(luò)環(huán)境下傳統(tǒng)軟件開發(fā)方法越來越難以適應(yīng)新形勢的情況,本文提出了一種基于網(wǎng)絡(luò)信息資源共享的軟件開發(fā)方法,該方法克服了傳統(tǒng)方法的不足,同時(shí)又借鑒了敏捷軟件開發(fā)等新興軟件開發(fā)方法的優(yōu)勢,具有高效靈活的特點(diǎn)。通過將網(wǎng)絡(luò)上可共享的數(shù)據(jù)庫、文件、組件等看做信息資源,在此基礎(chǔ)上構(gòu)建出適合用戶需求的新系統(tǒng),再從新系統(tǒng)中提取出可共享的信息資源發(fā)布到網(wǎng)絡(luò)上,從而擴(kuò)充了共享資源庫,可供日后系統(tǒng)開發(fā)使用。
在采用本方法開發(fā)的北京市西城區(qū)政務(wù)信息資源共享數(shù)據(jù)庫項(xiàng)目中,首先分析了北京市政務(wù)信息共享交換平臺和北京市民政局的系統(tǒng),獲取了新系統(tǒng)所需的數(shù)據(jù)來源和交換組件等關(guān)鍵信息資源,加以改造后,只進(jìn)行了少量開發(fā)就完成了人口、法人等信息庫的建設(shè),同時(shí)提取出了兩個(gè)功能引擎,為后續(xù)系統(tǒng)的開發(fā)奠定了基礎(chǔ)。
本文方法是從電子政務(wù)系統(tǒng)的建設(shè)中形成的,但是可以推廣到其他行業(yè)信息系統(tǒng)的建設(shè)中。特別是需要建設(shè)大量不同的信息系統(tǒng),并且彼此之間需要進(jìn)行大量數(shù)據(jù)共享、交互的大型企業(yè),如銀行、保險(xiǎn)公司、航空公司、能源化工企業(yè)等。這些企業(yè)在多年的信息化建設(shè)過程中,建成了許多不同的信息系統(tǒng),對這些系統(tǒng)進(jìn)行深入分析,可以得到大量可共享的信息資源。當(dāng)有新的系統(tǒng)需要開發(fā)時(shí),就可以利用這些資源,從而減少開發(fā)的工作量和縮短開發(fā)時(shí)間。筆者正在對基于網(wǎng)絡(luò)信息資源共享的軟件開發(fā)方法作進(jìn)一步的研究,使其適用于更多的領(lǐng)域,更好地提升軟件開發(fā)效率。
參考文獻(xiàn):
[1]SOMMERVILLE I.Software engineering[M].8th ed.Harlow:Addison Wesley,2005.
[2]PRESSMAN R S. Software engineering:a practitioner’s approach [M].5th ed.[S.l.]:McGrawHill Publishing Co,2007.
[3]COCKBURN A. Agile software development:the cooperative game[M].2nd ed.[S.l.]:Addison Wesley, 2006.
[4]MARTIN R C.Agile software development,principles,patterns, and practices[M].[S.l.]:Prentice Hall,2002.
[5]THOMAS D, HANSSON D, BREEDT L,et al.Agile Web development with rails[M].2nd ed[S.l.]:Pragmatic Bookshelf,2006.
[6]MCCONNELL S.Rapid development[M].[S.l.]:Microsoft Press,1996.
[7]張繁,蔡家楣.電子政務(wù)系統(tǒng)中的數(shù)據(jù)交換和共享服務(wù)平臺設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2003,39(7):226-229.[8]王克宏.變革與突破——如何認(rèn)識基于構(gòu)件的軟件開發(fā)方法[N].計(jì)算機(jī)世界報(bào),2002-01-28(B4B7).