摘 要:從20世紀60年代引入軟件工程以來,出現了多種封閉的軟件開發方法。提出了區別于傳統軟件開發方法的一種新方法,即基于網絡信息資源共享的軟件開發方法。該方法從分析現有的信息資源入手,逐步構建了所需系統,再將實施過程中產生的信息資源添加到共享平臺中,作為以后系統構建的基礎。該方法已經應用在北京市西城區政務信息共享交換平臺的建設中,實踐證明其具有良好的應用價值。
關鍵詞:信息資源;共享交換;軟件開發方法;軟件過程
中圖分類號:TP311 文獻標志碼: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時代的到來,互聯網應用的廣泛深入,對于軟件開發也提出了新的要求,即高效和靈活。因為互聯網應用非常注重時效性,對于軟件開發的效率有很高的要求,如果開發進度不理想,即使系統開發出來也難以有競爭力。同時多個系統之間需要交互,各個系統之間應該具有良好的兼容性,有一致的接口便于訪問,也要求能夠易于擴充和升級。
自從爆發軟件危機以來,出現了多種軟件開發方法用于改善軟件開發過程,提升軟件質量,在不同的時期取得了不錯的效果。但是隨著網絡時代的到來,使用傳統方法進行軟件開發已經難以滿足用戶需要。在開發過程中,所有的工作均集中在當前系統上,因此沒有很好地利用網絡上已有的資源,所有系統的構建都是從零開始,導致了開發效率的低下,系統開發完成后,也難以被再次利用。同時由于只考慮當前系統的需求,當需求變化時,軟件的升級變更也比較困難。
針對傳統軟件開發方法在網絡環境下的不足,近年出現了一些新的軟件開發方法,如敏捷軟件開發采用迭代增量的方法,快速交付可用的軟件模塊,逐步構建起一個完整的系統,用于降低需求不確定所帶來的風險,但實際上還是一種封閉的開發方法;基于構件的軟件開發,在構件庫中已有組件的基礎上開發出所需要的系統,避免了從頭開發,同時使用成熟的構件技術也保證了軟件的質量,但該方法將所有的關注點均放在了系統架構上,對于用戶的業務需求并沒有很好的把握。
Ruby on rails(RoR)框架,該框架所倡導的方法通過先發布,再測試的形式來提高軟件發布速度,即軟件開發完成后先發布到網絡上讓用戶使用,由用戶在使用過程中提出意見和建議,修改后再次發布,但這種方法對于系統安全性有很高要求的系統(如政府機關、金融、保險機構)來講并不適用。
在分析了上述方法的優勢和不足之后,本文提出了一種基于網絡信息資源共享的軟件開發方法。該方法從分析現有的信息資源入手,逐步構建起所需系統,系統完成后,再將實施過程中產生的信息資源添加到共享庫中,作為以后系統構建的基礎。通過實際項目的實施,取得了顯著的成效,具有良好的應用和推廣價值。
1 傳統軟件開發方法的介紹及缺點
1.1 傳統軟件開發方法
自從在1968、1969年連續召開的兩次著名的NATO會議上提出了軟件工程這一術語以來,形成了多種軟件開發方法,主要有以下六種:
a)Parnas方法。針對當時軟件在可維護性和可靠性方面存在的嚴重問題,提出了信息隱蔽原則和預先防護原則,但是沒有提出具體的實施流程,因此只能作為其他方法的補充。
b)結構化方法(SASD)。它是20世紀80年代使用最廣泛的軟件開發方法。它首先用結構化分析(SA)對軟件進行需求分析;然后用結構化設計(SD)方法進行總體設計;最后是結構化編程(SP)。
c)面向數據結構方法。從目標系統的輸入、輸出數據結構入手,導出程序框架結構,再補充其他細節,就可得到完整的程序結構圖。
d)問題分析法(PAM)。從輸入、輸出數據結構導出基本處理框;分析這些處理框之間的先后關系;按先后關系逐步綜合處理框,直到畫出整個系統的PAD圖。
e)面向對象方法(OO)。一種自底向上與自頂向下相結合的方法,以對象建模為基礎,從而不僅考慮了輸入、輸出數據結構,實際上也包含了所有對象的數據結構。徹底實現了PAM沒有完全實現的目標。不僅如此,OO技術在需求分析、可維護性和可靠性這三個軟件開發的關鍵環節與質量指標上有了實質性的突破,徹底地解決了在這些方面存在的嚴重問題。f)可視化開發方法。在可視開發工具提供的圖形用戶界面上,通過操作界面元素,諸如菜單、按鈕、對話框、編輯框、單選框、復選框、列表框和滾動條等,由可視開發工具自動生成應用軟件。
1.2 傳統方法的缺陷
筆者將上面提到的幾種方法稱為傳統的軟件開發方法,因為這些方法都是一個封閉的過程,主要表現在兩個方面:a)開發流程上,除了Parnas方法以外,其他方法基本上都經歷了需求、設計、開發、測試、集成、部署等階段,不管項目類型、規模怎樣,都需要從頭開始,因此開發效率較低,難以滿足某些對于開發進度有嚴格要求的系統的需要,而且一直沒有很好的辦法解決這個問題;b)這些方法在與其他系統的交互上,也存在不足。由于上述方法僅僅關注于當前系統,所有的需求、設計都圍繞著單一系統。但在互聯網應用越來越普遍,各種異構系統之間交互越來越頻繁時,傳統方法開發出來的軟件之間交互性差的缺點也就越來越明顯。
鑒于傳統軟件開發方法難以適應網絡環境下對于軟件開發所提出的新需求的情況,本文提出了一種新的軟件開發方法,即基于網絡信息資源共享的軟件開發方法。
2 基于網絡信息資源共享的軟件開發方法
2.1 基本概念
在具體介紹基于網絡信息資源共享的軟件開發方法之前,先來看一下信息資源和網絡信息資源的概念。
1)信息資源是經過人類篩選、組織、加工、并可以存取和能夠滿足人類需求的各種信息的集合,具有知識性和共享性。
2)網絡信息資源也稱做虛擬信息資源,它以數字化形式記錄,以多媒體形式表達,存儲在網絡計算機磁介質、光介質以及各類通信介質上的,并通過計算機網絡通信方式進行傳遞信息內容的集合。簡言之,網絡信息資源就是通過計算機網絡可以利用的各種信息資源的總和。
2.2 基于網絡信息資源共享的軟件開發方法定義
從上面的概念中可以看出,網絡信息資源有著非常豐富的內涵和外延,包括文件、數據庫、計算機程序、組件、類庫等各種形式的資源,而基于網絡信息資源共享的軟件開發方法就是以網絡上已有的信息資源為基礎,根據所需要開發系統的特點,從中選取適當的信息資源加以利用和加工,開發出適合用戶需要的系統,同時將新開發的系統作為新的信息資源,添加到網絡信息資源共享庫中,作為日后新系統開發的基礎。整個軟件開發是一個開放的、動態的過程。
3 與基于構建軟件開發方法比較
通過上面的介紹可以看出,基于網絡信息資源共享的軟件開發方法(以下簡稱共享開發方法)的實現理念與當前流行的另一種軟件開發方法——基于構件的開發方法有比較相似的地方。兩者均從分析現有系統入手,盡量利用已有的資源,對其進行較少的改動后滿足客戶的需求,并將新的系統作為日后開發的基礎,從而達到減少工作量和提高產品質量的目的。但是在資源的選取、復用的內容上,兩者有很大的不同。
3.1 構件定義
構件是為了復用目的而針對性開發的軟件實體,是一個獨立發布的功能部分,可通過其接口來訪問服務。通過對函數、過程、對象類或者更大規模的程序進行封裝,形成一個個實現特定功能的抽象的系統特征單元,供系統中其他程序調用。有了構件之后,系統中獨立的功能模塊可以保留下來,作為日后新系統開發的基礎,提高了軟件開發的復用程度,既減少了工作量,又提高了軟件質量。在這方面,相比傳統軟件開發而言是一個不小的進步。
3.2 基于構件開發方法的局限性
從另一方面來說,基于構件方法在重用的內容上具有局限性。隨著軟件開發的規模化、復雜化、工程化,在整個軟件開發的過程中,除了產生最終的可運行的程序外,還有許多具有復用價值的中間產品,如需求模型、體系結構、數據庫、文件、管理方法等。如果只是復用了程序,就會丟失許多其他的信息,而那些信息對于軟件開發來說也是非常重要的。筆者認為有以下一些內容同樣值得復用:
a)需求模型——一個組件的目的和出發點。
b)設計模型——某個組件得以開發出來的過程,有很重要的借鑒價值。
c)管理經驗——除了技術以外,優秀的項目管理經驗對于一個成功的產品是必不可少的。3.3 共享開發方法的優勢
解決以上提出的問題,正是共享開發方法的核心價值所在。共享開發方法以網絡信息資源為基礎,除了程序/組件外,數據庫、文件、其他有價值的中間產品,均可作為信息資源用來共享,如圖1所示。
與基于構件的開發方法相比,共享開發方法至少具有三個方面的優勢。
3.3.1 更好地響應用戶需求變更
初看起來,敏捷軟件開發方法在這方面具有很大的優勢,因為它提倡擁抱變化,積極應對客戶需求變更,并即時提供可交付的軟件。而基于構件方法也強調根據用戶特定需求從構件庫選取合適的構件。相比而言,共享開發方法在對需求的控制上具有較大的優勢。
當一個功能需求被提出來之后,首先需要分析用戶提出該需求的原因,希望達到的效果,而不是盲目地按照需求進行新開發或者修改現有系統。當經過分析確認有必要實現該需求時,就可將該需求作為一條信息資源放入信息資源共享庫中,同時在共享庫中尋找類似的需求,比較這些需求之間的相同點和不同點,適用條件和實施效果等,再結合用戶目前的情況,提出自認為最好的解決方法。例如,做一個搜索引擎,谷歌采用Page Rank算法,而百度采用競價排名的算法,那就需要對這兩種算法進行全面的比較,如中英文搜索的準確度,廣告商、用戶對搜索結果的滿意度,兩種算法的效率比較等。有了全面的分析報告之后,當其他用戶有開發搜索引擎的需求,并且希望采用的算法并不適合實際情況時,就可以建議他選取更為合理的算法,避免系統開發完成后的再度修改。
筆者認為這是共享開發方法最大的一個優勢,因為需求是所有工作的源頭。只有在需求上進行嚴格控制,才能切實減少不必要的工作量;如果需求有偏差,即使采用最先進的技術,開發出來的產品也難以得到用戶認可。此外,對用戶需求的深入分析也有助于更好地了解用戶所在行業的特點,幫助企業從項目、產品的角度提升到提供行業解決方案的高度,有助于鞏固企業在市場中的地位。
3.3.2 提供更為豐富的設計方案
在設計過程中,會產生不少有復用價值的中間產品,雖然不是所有的產品都能成為最終可提交的軟件產品,但是如果保留下來,還是可以被借鑒。筆者認為有以下一些中間產品可以復用:
a)數據模型。它是數據庫管理系統中用于提供信息數據表示和操作手段的形式,是對現實世界中的具體事物的抽象與表示,是由若干概念構成的集合。數據模型通常由數據結構、數據操作和完整性約束三個部分組成,也稱做數據模型三要素。在信息系統中,數據模型占有非常重要的地位,很多時候數據模型的質量直接決定了最終系統的質量,因此需要在數據模型的設計上花費不少的時間和精力。
對于像銀行、保險公司這樣的行業,日常業務中需要處理大量的數據,分公司遍布全國各地,再加上各地業務之間的差異,因此很難用同一個數據庫來存儲所有的數據。最常見的情況是各個分公司在工作時間將業務數據保存到本地數據庫中,在停止營業后將數據上傳到總部的數據中心進行匯總。出于各種歷史原因,各個分公司當初在建設自身的信息系統時,缺少統一規劃,僅僅考慮了自身業務的特點,因此使用了不同的數據模型,導致了不同分公司之間數據共享與交互的困難。
如果仔細分析一下,就會發現,對于同一家公司來說,各個分公司之間的業務雖然有所不同,但是最基本的業務應該是一致的。所以可以采用相同的核心數據模型,這樣既可以避免各個分公司在建設信息系統時重新設計數據模型,同時也便于各個部門之間的數據共享,最大程度上減少了工作量和提高了系統之間的交互性。
b)業務模型。這是一個比較抽象但非常重要的中間產品。每一個企業都有其核心業務,只有深入理解其業務流程,才能做好滿足企業業務需要的系統。而對于并非從事特定行業工作的技術人員來說,透徹理解某個企業的業務并不是一件容易的事,需要與業務專家配合進行大量的調查、研究,最終抽象出一個雙方都能理解的模型。
業務模型是系統分析、設計的基礎,整個建模的過程非常復雜,但確實是必需的。如果對于一家公司的每個分公司分別進行業務建模,代價非常昂貴,因此將業務模型作為一種信息資源進行共享是一個有效的手段。
c)分析/設計模型。在共享了業務模型的基礎上,可以對分析/設計模型也進行共享。雖然每個系統都有其各自的特點,但是同一家公司的各個不同分公司或同一行業中不同公司之間的系統的分析/設計模型是可以相互借鑒的。此外,采用類似的系統架構也有利于不同系統之間的數據共享與交互。當積累了一個行業中不同系統建設的經驗后,系統提供商就能對該行業的整體狀況有更好的了解,做出比較通用的產品進而提出行業解決方案。
除了以上一些比較抽象的中間產品外,還有一類可提交的復用產品——程序/組件,前面已作了比較詳細的介紹,因此不再進一步闡述。
3.3.3 為更好地進行項目管理提供幫助
一種好的軟件開發方法除了具體的開發方法外,還應該包括如何管理開發團隊方面的內容。采用傳統方法進行軟件開發時,個別管理人員掌握了大量的相關信息和管理經驗,而項目組其他人員在這方面的積累比較少,因此當出現人員變動時,新的管理人員就需要花費較長的時間甚至付出較大的代價才能適應新的工作。共享開發方法在團隊管理方面的核心思想是管理經驗復用,就是將成功的管理經驗也作為信息資源保存下來,添加到共享庫中,為不同項目、不同人員所共享。例如:
a)人員安排。不同類型的項目對于人員的要求是不同的,如業務人員/技術人員的比例,開發人員/測試人員的比例,以及客戶參與程度等;同一個項目在不同階段,也會有不同的人員需求。如果有這方面的共享信息資源,項目管理者就可以及早進行人員安排,確保不同項目、不同階段都有充足的人力資源。
b)進度規劃。每一個項目開始前,都要對進度進行規劃,而多數都是根據經驗估計的,因此準確程度不高。但是如果有類似系統開發的經驗,就可以知道一個系統在開發過程中的難點,以及可以并發進行工作,應該被賦予更高優先級工作、具體的工作量等,這樣就大大提高了規劃的準確程度。
c)有效溝通。在項目開發過程中,與客戶的有效溝通是確保項目成功的一個重要手段。每一類客戶所關心的重點是不同的,因此在溝通過程中往往需要采用不同的方法,通過客戶信息資源共享,可以提高溝通的效率,提升客戶滿意度。
4 開發流程及組織架構
4.1 開發流程
基于網絡信息資源共享的軟件開發是一個開放的、動態的過程。具體流程如下:
a)分析。與傳統方法不同,這里的分析包含兩個部分,即系統需求分析與對網絡上可共享的信息資源的分析。這兩個部分由不同的人員進行,需求分析人員在進行系統需求分析時,信息資源管理員(共享開發方法組織架構中的一類人員,本文后面會有相關介紹)可以分析已有的資源,配合系統分析人員更好的工作。
b)選取資源。在對系統需求和已有信息資源進行分析后,就可以從已有資源中選取滿足當前系統要求的資源或者資源組合,有些資源可以直接使用,有些資源經過少量修改后可以使用。無論是哪種方式都可以大大減少系統開發的工作量。而且本步驟和步驟a)是可以同時進行的,系統分析人員在進行需求分析的同時,信息資源管理員可以分析、選取資源,因此并不比單純進行系統分析占用更多時間。
c)基于共享資源設計開發。在這里,筆者沒有將設計和開發作為兩個單獨的步驟。隨著網絡上可用共享信息資源的增加,新系統開發的工作量將會逐步減少,因為很多需求可以通過選取適當的資源經過少量修改就可以滿足,因此設計開發的時間大大縮短,彼此之間的界限也不如傳統軟件開發方法那樣明顯。
d)單元測試。這里的測試是以信息資源為單位進行的,既可以是一個功能模塊,一個組件,也可以是一個文件,一個數據庫,因為這些都是資源,都可以作為以后系統開發的基礎。這樣的測試方式比起傳統方法更為靈活。
e)集成測試。與單元測試相對應,集成測試的重點在于對各種信息資源之間的交互、訪問狀況進行測試。
f)部署運行。當通過集成測試后,系統就可以部署到目標環境下,部署完成后就可以上線試運行了,傳統軟件開發方法到這里就結束了,而共享開發方法還需要進行后面兩個步驟。g)提取資源。在系統部署運行的同時,信息資源管理員將再次進行信息資源分析,但現在是對新開發的系統分析,從中提取出現有資源庫中不存在,但又很有價值的新系統中信息資源。
h)添加資源。從新系統中提取出資源后,將新的信息資源添加到原有信息資源共享庫中,作為以后系統開發的基礎。
總體流程如圖2所示。
4.2 組織架構
組織架構與傳統方法相比,基于信息資源共享的方法對于軟件設計、開發人員提出了不同的要求,除了應用系統開發人員外,還需要共享信息資源開發、維護、管理人員,以及將應用系統與信息資源集成人員。具體組織架構如圖3所示。
5 應用舉例及效果分析
5.1 北京市西城區信息化建設現狀分析
北京市西城區目前主要有以下一些委辦局:北京市公安局西城分局、區民政局、區計生委、區殘聯、區法制辦、區房屋管理局、區工商局、區環境衛生服務中心、區科學技術委員會、區旅游局、區統計局、區衛生局、區園林局、區信息辦等。
通過多年的建設,西城區目前已經有多個跨部門應用系統在運行,各個委辦局及社會公眾對公共信息的需要越來越迫切,而且各個業務部門對其他部門專題數據的需求也非常強烈。目前這些信息中部分信息還沒有一個統一的標準,信息的一致性和現實性還不能得到很好的保證。因此,要滿足各部門業務流程和信息共享的需要,不但要在統一的數據標準下建立起信息資源共享庫,而且要建立起對這個共享庫的管理、維護、更新和使用的長效管理機制。使數據庫能夠不斷地擴展、完善,保證數據的一致性、實時性和準確性。為整個信息資源的規劃和建設奠定一個良好的基礎。
如果用傳統的軟件開發方法開發共享數據庫,那么整個開發過程將是封閉的、靜態的,不僅沒有很好地利用各個委辦局多年信息化建設的成果,同時僅僅關注于需要開發的系統,共享庫開發完成后也難以與各個委辦局之間實現良好的交互。
西城區共享數據庫需要建設人口、法人、宏觀經濟和空間地理四大信息庫,也就是將分散儲存在不同委辦局的數據通過數據交換進入到西城區信息辦的共享數據庫,再通過共享庫這個平臺共享給各個委辦局。如果每個信息庫都要重新開發,工作量非常大,因此在開發之前需要好好地規劃一下。
5.2 人口信息庫開發流程
以人口信息庫的設計開發為例,在經過了大量的調研和現有共享信息資源的分析后,采用了以下開發流程:
a)系統需求分析。人口庫的建設目標是能夠使西城區的人口信息能在各個不同的委辦局之間共享。目前的現狀是各個委辦局同時維護這兩種不同類型的數據,即基礎數據和業務數據。基礎數據是指個人的基本信息,如姓名、性別、身份證號、出生日期等;業務數據是指由某個委辦局專門負責的數據,如區計生委負責育齡婦女信息、區殘聯負責殘疾人信息、區民政局負責低保人員信息等。這種做法既加重了委辦局的負擔,同時當不同委辦局對同一個人的基本信息描述不一致時,就難以確定一個人的身份,也就無法在不同委辦局之間實現信息共享了。
人口信息庫就是這樣一個信息共享的平臺,將西城區所有人員的基本信息保存到共享庫中,各個委辦局不再單獨維護,給每個人賦予一個惟一的標志符,作為確定一個人身份的標志。這樣,各個委辦局對于同一個人擁有相同的標志符,就可以方便、準確地進行數據共享了。
b)信息資源分析及選取。在有了基本方案后,需要確定以哪個委辦局的數據作為基礎數據進入共享庫以及其他委辦局數據進入共享庫的方式。一般來說,公安局的人口基本信息是最準確的,但是出于安全因素的考慮,并不能共享公安局的數據,因此考慮用區民政局的數據作為基礎數據,但是在分析了區民政局的系統后,發現并不是所有的人口基本信息都被保存了,因此不能直接使用。
如果使用傳統軟件開發方法,就需要對區民政局的系統進行改造,這顯然不現實;或從多個委辦局獲取基礎數據,這種方法難度也較大。但是在分析了北京市信息化建設的狀況后,發現北京市民政局保存了全市相對完整的人口基本信息,可以使用其中屬于西城區的人口基本信息數據作為基礎數據。首先進入共享庫,其他委辦局的數據在這個基礎上,經過清洗、比對、匹配等操作進入共享庫。這樣,就解決了基礎數據來源的問題。
通過進一步的研究,北京市信息資源管理中心已經建成了北京市政務信息共享交換平臺,各個不同委辦局的政務信息以目錄的形式,通過數據交換發布到共享交換平臺,實現全市范圍內的共享。這個平臺的運行模式和共享數據庫的數據入庫過程非常類似,因此可以利用該平臺的數據交換引擎來處理共享庫的數據入庫操作。
c)設計開發。在解決了共享庫數據來源以及數據入庫的方式后,系統架構就已經基本確定下來了,剩下的就只是一些細節方面的設計和實現了。例如,各個委辦局的何種數據進入共享庫,委辦局數據入庫的優先級,對數據更新是記錄級別還是字段級別,數據入庫需要遵循的規則,數據清洗比對的具體方式等。相比重新開發整個應用系統,在分析和適當選取網絡上共享信息資源后,設計開發的工作量大大減少。
d)測試及部署。這兩步與傳統軟件開發方法類似,但是由于采用了市民政局的基礎數據,以及市政務信息共享交換平臺所提供的交換引擎,基于成熟的數據模型以及組件進行開發,新開發系統的質量有了比較好的保障,測試及部署時間相應減少,開發進程也更為順利。
e)提取及添加資源。在人口信息庫開發完成后,經過分析,提取出以下兩個重要的引擎:(a)清洗比對引擎。所謂數據清洗,就是在對不符合要求的數據(如非空字段中出現空值,不允許有空格的字段中出現空格等),通過適當的操作(由管理員修改、返還給來源委辦局處理等)使其滿足共享庫對于數據的要求后進入共享庫。數據比對,則是當基礎數據需要進入共享庫時,首先要確定庫中是否存在該數據,以決定是插入新的記錄還是更新原有記錄。該引擎允許用戶選擇需要進行比對的字段,當這些字段比對成功后,就更新原有記錄,否則插入新的記錄。由于法人、空間地理信息庫在不同委辦局信息入庫時都需要經過這樣一個流程,因此可以抽象出一個模型,作為工具使用。
(b)統計分析引擎。這是對人口信息庫進行統計的一個通用引擎。使用一個叫做數據元的工具對共享庫中的表和字段信息進行管理,當用戶想對人口信息進行統計時,可以利用數據元工具選擇不同字段或者字段組合作為統計口徑進行統計。根據字段類型的不同,選擇不同的統計條件,如性別字段帶有標準的國標碼,“男”“女”等,因此這類字段只能選擇特定的值統計;出生日期是時間類型的,所以統計的區間是一個或多個時間段,年齡是數字類型的,因此統計區間是一個或多個年齡段。統計結果以統計圖和統計報表的形式展示,用戶可以收藏、定制。雖然說統計分析并不是一個新的技術,但是這個引擎并不僅僅是針對目前系統所設計的,它可以適用于不同的數據庫表和字段。當人口庫的統計功能完成后,只需要作一些簡單的配置,并且用數據元工具加以輔助,就可以實現法人庫、空間地理庫的統計分析,而無須寫代碼重新開發。
5.3 與傳統軟件開發方法比較
與傳統方法相比,基于網絡共享信息資源的軟件開發方法有如下優勢:
a)縮短了系統開發時間。如果使用傳統方法開發人口信息共享數據庫,從前期調研、需求分析、設計、開發、測試,到系統上線,至少需要三個月的時間,而且由于在開發過程中只考慮了當前系統的需求,當開發法人庫、空間地理庫時幾乎需要與人口庫相同的時間。而使用共享開發方法進行開發,由于利用了已有共享信息資源,大大減少了開發時間,當人口庫開發完成時還提取了兩個功能引擎,又可以被后面開發的系統所利用。在開發法人庫時只用了不到一個月的時間。兩種方法開發系統所需時間如圖4所示。
b)減少代碼量。在系統開發所需要的代碼量方面,如果只開發一個共享數據庫,兩種方法所需要的代碼量相差不是太多,因為共享開發方法雖然利用了部分網絡信息資源,但是由于考慮到后續系統開發的需要,開發了一些通用工具,需要額外編寫一些代碼。這樣做的好處是,當在開發法人庫、空間地理庫時基本無須再編寫新的代碼,只需在分析清楚了需求之后,由管理員使用配置工具做一些配置工作即可。兩種開發方法所需代碼量如圖5所示。
c)擴充并完善了信息資源共享庫,為其他區政府信息系統的建設奠定了基礎。
從上面的介紹可以看出,使用共享開發方法進行軟件開發是一個動態交互的過程,不僅從網絡上獲取信息資源,系統開發完后又提取出可共享的信息資源,對共享庫進行擴充。這樣,網絡上可共享的資源日益增多,日后在開發系統時可供選擇的余地也大大得到了加強。當北京市政府建設完成了共享交換平臺后,西城區政府在建設信息資源共享庫時就可以加以利用,而當西城區政府的系統建成之后,北京市其他區縣政府在建設類似系統時也可以參考借鑒。
d)使開發人員有更多的時間關注業務的實現,更好地滿足客戶需求。
當網絡上有了豐富的可供選擇的信息資源后,開發人員就可以將更多的時間和精力從實現的細節上轉到更好地滿足客戶需求上面來了。分析系統需求,選取可用資源,適當加以改造,使得系統開發時間大大縮短,質量也顯著提高,客戶的滿意度也大大提高。
6 結束語
針對網絡環境下傳統軟件開發方法越來越難以適應新形勢的情況,本文提出了一種基于網絡信息資源共享的軟件開發方法,該方法克服了傳統方法的不足,同時又借鑒了敏捷軟件開發等新興軟件開發方法的優勢,具有高效靈活的特點。通過將網絡上可共享的數據庫、文件、組件等看做信息資源,在此基礎上構建出適合用戶需求的新系統,再從新系統中提取出可共享的信息資源發布到網絡上,從而擴充了共享資源庫,可供日后系統開發使用。
在采用本方法開發的北京市西城區政務信息資源共享數據庫項目中,首先分析了北京市政務信息共享交換平臺和北京市民政局的系統,獲取了新系統所需的數據來源和交換組件等關鍵信息資源,加以改造后,只進行了少量開發就完成了人口、法人等信息庫的建設,同時提取出了兩個功能引擎,為后續系統的開發奠定了基礎。
本文方法是從電子政務系統的建設中形成的,但是可以推廣到其他行業信息系統的建設中。特別是需要建設大量不同的信息系統,并且彼此之間需要進行大量數據共享、交互的大型企業,如銀行、保險公司、航空公司、能源化工企業等。這些企業在多年的信息化建設過程中,建成了許多不同的信息系統,對這些系統進行深入分析,可以得到大量可共享的信息資源。當有新的系統需要開發時,就可以利用這些資源,從而減少開發的工作量和縮短開發時間。筆者正在對基于網絡信息資源共享的軟件開發方法作進一步的研究,使其適用于更多的領域,更好地提升軟件開發效率。
參考文獻:
[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]張繁,蔡家楣.電子政務系統中的數據交換和共享服務平臺設計[J].計算機工程與應用,2003,39(7):226-229.[8]王克宏.變革與突破——如何認識基于構件的軟件開發方法[N].計算機世界報,2002-01-28(B4B7).