数据自治开放的软件开发和运行环境
數(shù)據(jù)自治開放的軟件開發(fā)和運行環(huán)境
吳毅堅1,2, 陳士壯1,2, 葛佳麗1,2, 趙文耘1,2
1. 復旦大學計算機科學技術(shù)學院,上海 201203
2. 上海市數(shù)據(jù)科學重點實驗室,上海 201203
摘要:數(shù)據(jù)自治開放是數(shù)據(jù)開放的一種新形式,能保護數(shù)據(jù)擁有者的合法權(quán)益。數(shù)據(jù)自治開放這一新的數(shù)據(jù)開放模式要求軟件開發(fā)和運行環(huán)境能從應用的需求描述、應用開發(fā)和調(diào)試、應用運行監(jiān)控等方面進行全方位的支持。給出了支持數(shù)據(jù)自治開放的軟件開發(fā)和運行環(huán)境的總體設計,闡述了支持軟件行為管控的數(shù)據(jù)自治開放應用開發(fā)全過程,從而實現(xiàn)數(shù)據(jù)自治開放中數(shù)據(jù)的全生命周期管理,說明了建設數(shù)據(jù)自治開放的軟件開發(fā)運行基礎設施的可行性。
關鍵詞:數(shù)據(jù)開放;數(shù)據(jù)自治開放;軟件開發(fā)環(huán)境;軟件運行環(huán)境;軟件行為管控
doi:10.11959/j.issn.2096-0271.2018016
論文引用格式:吳毅堅, 陳士壯, 葛佳麗, 等. 數(shù)據(jù)自治開放的軟件開發(fā)和運行環(huán)境[J]. 大數(shù)據(jù), 2018, 4(2): 31-41.
WU Y J, CHEN S Z, GE J L, et al. Software development and runtime environment for self-governing openness of data[J]. Big data research, 2018, 4(2): 31-41.
1? 引言
近年來,許多國家紛紛通過建立數(shù)據(jù)開放平臺推動數(shù)據(jù)開放和共享,以便公眾能夠及時、快捷、準確地獲取數(shù)據(jù)資源[1]。通常,這些平臺要求數(shù)據(jù)擁有者以XML、CSV、XLS等格式把數(shù)據(jù)上傳到平臺。數(shù)據(jù)使用者可以根據(jù)需求從數(shù)據(jù)平臺下載數(shù)據(jù),然后按照數(shù)據(jù)平臺的要求使用數(shù)據(jù)。然而,是否能完全遵守這類數(shù)據(jù)使用要求則很大程度上由數(shù)據(jù)使用者決定,數(shù)據(jù)擁有者無法控制其提供數(shù)據(jù)的復制、傳播和使用。數(shù)據(jù)治理權(quán)的削弱和喪失很大程度上導致數(shù)據(jù)擁有者不愿開放數(shù)據(jù)。
數(shù)據(jù)自治開放是數(shù)據(jù)開放的一種新思路和新模式。在數(shù)據(jù)自治開放環(huán)境下,數(shù)據(jù)擁有者將保持對數(shù)據(jù)的治理權(quán),擁有的數(shù)據(jù)將通過系統(tǒng)化的受控機制開放給潛在的數(shù)據(jù)用戶。潛在的數(shù)據(jù)用戶通過開放的渠道獲取數(shù)據(jù)的基本信息,并通過數(shù)據(jù)自治開放軟件平臺獲取經(jīng)過封裝的數(shù)據(jù)實體,在本地或云端按照約定的方式受控地使用數(shù)據(jù)。數(shù)據(jù)用戶可以查看部分數(shù)據(jù)內(nèi)容(如果數(shù)據(jù)擁有者允許),并利用數(shù)據(jù)開展數(shù)據(jù)分析和開發(fā)數(shù)據(jù)應用,但無法對數(shù)據(jù)個體或全體進行復制或傳播。
與傳統(tǒng)的數(shù)據(jù)開放不同,數(shù)據(jù)自治開放環(huán)境在支持數(shù)據(jù)開放的同時,注重保持數(shù)據(jù)稀缺性和保護數(shù)據(jù)權(quán)益。數(shù)據(jù)擁有者一方面希望通過持有數(shù)據(jù)獲得數(shù)據(jù)的潛在價值,另一方面又可能沒有能力獲取這種潛在價值。這種數(shù)據(jù)價值困境削弱了數(shù)據(jù)擁有者開放數(shù)據(jù)的動機,直接影響了數(shù)據(jù)潛在價值的挖掘。如何通過技術(shù)手段,在保護數(shù)據(jù)擁有者權(quán)益的同時,又能充分發(fā)掘數(shù)據(jù)潛在價值,是面向數(shù)據(jù)自治開放的軟件環(huán)境面臨的挑戰(zhàn)之一。
數(shù)據(jù)價值的挖掘依賴于軟件,因此軟件的開發(fā)和運行環(huán)境是否有足夠的能力支持數(shù)據(jù)使用的全生命周期,直接影響數(shù)據(jù)自治開放的可行性、有效性和效率。為了提升數(shù)據(jù)利用的效率,數(shù)據(jù)擁有者僅提供數(shù)據(jù),而讀取并處理數(shù)據(jù)的軟件則由數(shù)據(jù)使用者自行開發(fā)(即外部軟件)。然而,由于大數(shù)據(jù)分析處理的創(chuàng)新性和不確定性,難以預先精確限定外部軟件的數(shù)據(jù)處理方式和具體行為,因此需要對外部軟件實際訪問和處理數(shù)據(jù)進行必要的管理和監(jiān)控,才能確保數(shù)據(jù)不被非法復制和傳播,從而保護數(shù)據(jù)的稀缺性和數(shù)據(jù)擁有者的合法權(quán)益。
為了有效地管理和監(jiān)控外部軟件行為、支持數(shù)據(jù)使用者在數(shù)據(jù)自治開放環(huán)境下開發(fā)數(shù)據(jù)分析軟件,需要研究支持數(shù)據(jù)治理權(quán)控制的軟件開發(fā)和運行環(huán)境,對數(shù)據(jù)自治開放中數(shù)據(jù)獲取、外部軟件的開發(fā)調(diào)試和部署運行、數(shù)據(jù)使用等環(huán)節(jié)提供數(shù)據(jù)和軟件的全生命周期的支持保障。本文從數(shù)據(jù)自治開放中數(shù)據(jù)使用方式變化的角度,分析了面向數(shù)據(jù)自治開放的軟件開發(fā)和運行支持的總體需求,闡述了數(shù)據(jù)封裝體的基本設計思想;給出了基于數(shù)據(jù)封裝體的軟件開發(fā)和運行環(huán)境進行架構(gòu)設計的思路,闡述其主要組成部分的意義和功能,說明了在該環(huán)境下數(shù)據(jù)使用和軟件開發(fā)的全過程;討論了構(gòu)建該環(huán)境的關鍵技術(shù)挑戰(zhàn)。
2 ?相關研究
在軟件開發(fā)平臺方面,各大云開發(fā)商都在研發(fā)相應的大數(shù)據(jù)開發(fā)平臺。例如阿里云推出了“數(shù)加平臺”,提供大數(shù)據(jù)計算服務、大數(shù)據(jù)開發(fā)套件等大數(shù)據(jù)應用開發(fā)和運行基礎設施。然而,這些開發(fā)平臺主要針對一般性的大數(shù)據(jù)應用開發(fā),而不關注數(shù)據(jù)本身的權(quán)益保護和數(shù)據(jù)稀缺性的保持。
軟件行為管控是數(shù)據(jù)自治開放中的重要環(huán)節(jié),通過監(jiān)控軟件訪問數(shù)據(jù)的行為來保護數(shù)據(jù)不被非法復制和傳播。在信息安全領域,有大量的關于軟件行為分析的研究,通過動態(tài)[2,3]和靜態(tài)[4-6]的方法追蹤敏感數(shù)據(jù)流,從而防止敏感數(shù)據(jù)的泄露。還有研究通過對常見的數(shù)據(jù)源和數(shù)據(jù)宿進行分類[7],規(guī)定軟件的合法行為序列[8],對比軟件的實際執(zhí)行軌跡,判定軟件行為是否符合要求[2],從而發(fā)現(xiàn)是否有數(shù)據(jù)的非法使用[9]。然而,這些工作主要關注敏感數(shù)據(jù)泄露,并且大多應用在移動應用的檢測上,而并不關注對完整數(shù)據(jù)集的泄露保護。另外,對軟件行為日志的分析也是軟件行為和意圖分析的一個重要輔助手段[10-13]。
從數(shù)據(jù)本身的保護方面來看,數(shù)據(jù)訪問控制[14,15]是一種主要的數(shù)據(jù)泄露防控手段。然而,目前的做法主要是通過技術(shù)手段限制數(shù)據(jù)訪問,例如加密、授權(quán)、安全策略、信任級別[16]等,內(nèi)容也主要關注隱私保護[17],因此這些方法并不完全適用于數(shù)據(jù)開放環(huán)境。
由此可見,要從根本上解決數(shù)據(jù)開放環(huán)境下受控的數(shù)據(jù)訪問,保持數(shù)據(jù)的稀缺性,必須從訪問數(shù)據(jù)的軟件入手,研發(fā)針對數(shù)據(jù)稀缺性保護的軟件開發(fā)和運行平臺,確保軟件對數(shù)據(jù)的訪問過程是受控的,并且同時具有一定的靈活性,以支持各類大數(shù)據(jù)分析和數(shù)據(jù)密集型應用需求[18,19]。
3 ?數(shù)據(jù)自治開放的軟件開發(fā)和運行環(huán)境
3.1 數(shù)據(jù)自治開放環(huán)境的數(shù)據(jù)訪問特點和需求
數(shù)據(jù)自治開放是控制和限制數(shù)據(jù)使用者傳播或濫用數(shù)據(jù)的新型數(shù)據(jù)開放模式。在數(shù)據(jù)自治開放環(huán)境下,數(shù)據(jù)使用者無法再像傳統(tǒng)的數(shù)據(jù)開放或共享那樣,得到完整的數(shù)據(jù)資源,并對數(shù)據(jù)資源進行直接的、不受數(shù)據(jù)擁有者或第三方(如基礎平臺軟件)控制的訪問,因此也無法任意復制傳播。但同時,數(shù)據(jù)使用者又能根據(jù)自身的需求,在數(shù)據(jù)擁有者的“授權(quán)”(按申請的方式使用數(shù)據(jù)的權(quán)利,但不是處置權(quán)或治理權(quán))下自由使用數(shù)據(jù)。這就要求有一個支持數(shù)據(jù)使用且對數(shù)據(jù)使用有適當管控的軟件環(huán)境,將數(shù)據(jù)封裝和保護起來,同時又具備計算能力滿足數(shù)據(jù)使用者傳統(tǒng)的數(shù)據(jù)使用(處理和分析等)需求。
自治開放中的數(shù)據(jù)是以帶有自主程序單元和內(nèi)在計算能力的封裝體的形式發(fā)布和使用的。這種數(shù)據(jù)封裝體是數(shù)據(jù)自治開放的軟件開發(fā)和運行環(huán)境使用的最基礎的數(shù)據(jù)單元。數(shù)據(jù)使用者能獲得的數(shù)據(jù)只能存在于數(shù)據(jù)封裝體中,并且只能進行自己聲稱的數(shù)據(jù)訪問行為。超出預先聲稱意圖的數(shù)據(jù)訪問行為必須被檢測、監(jiān)控、報警或拒絕;必要時,數(shù)據(jù)封裝體中的自主程序單元還可對數(shù)據(jù)進行銷毀(擦除),從而避免數(shù)據(jù)的非法復制傳播。
本文將針對這種數(shù)據(jù)訪問特點和管控需求,給出數(shù)據(jù)自治開放的軟件開發(fā)和運行環(huán)境的總體設計架構(gòu),并論述基于該架構(gòu)的數(shù)據(jù)應用開發(fā)全過程。
3.2 總體架構(gòu)
數(shù)據(jù)自治開放的軟件開發(fā)和運行環(huán)境是一個以數(shù)據(jù)封裝體(帶有自主程序單元和內(nèi)在計算能力的數(shù)據(jù)存儲形式,數(shù)據(jù)被灌裝入數(shù)據(jù)封裝體中)為基本數(shù)據(jù)組織和運算的開發(fā)運行一體化平臺,分為相對獨立的開發(fā)平臺和運行平臺兩個部分。開發(fā)平臺支持基于數(shù)據(jù)封裝體的外部軟件開發(fā)和調(diào)試,運行平臺支持外部軟件的測試、運行和管控,同時兩部分又通過數(shù)據(jù)封裝體的基本設計密切結(jié)合,一體化地支撐數(shù)據(jù)密集型應用的開發(fā)和運行。
圖1展示了基于數(shù)據(jù)封裝體的軟件開發(fā)和運行環(huán)境的總體架構(gòu)。為了便于闡述,圖1中還包括了用于管理數(shù)據(jù)封裝體的管理平臺。在軟件開發(fā)和運行環(huán)境中,外部軟件所需的所有數(shù)據(jù)可來自于數(shù)據(jù)擁有者的自主存儲或者公有存儲,并通過數(shù)據(jù)管理平臺封裝到數(shù)據(jù)封裝體中。外部軟件的開發(fā)人員需要根據(jù)自身的業(yè)務需求和數(shù)據(jù)訪問需求,通過數(shù)據(jù)封裝體管理平臺提出數(shù)據(jù)訪問申請,并由管理平臺將數(shù)據(jù)存儲中的數(shù)據(jù)灌裝到數(shù)據(jù)封裝體中,以供程序開發(fā)調(diào)試使用。具體開發(fā)流程將在第3.3節(jié)中論述。
圖1 數(shù)據(jù)自治開放的軟件開發(fā)和運行環(huán)境的總體架構(gòu)
開發(fā)平臺主要由一個集成開發(fā)環(huán)境(integrated development environment, IDE)構(gòu)成。該IDE基于Eclipse架構(gòu),擴展了新的面向數(shù)據(jù)封裝體開發(fā)的多種設計視圖,用于支持數(shù)據(jù)封裝體應用整個開發(fā)生命周期中不同開發(fā)環(huán)境的需求。例如,在數(shù)據(jù)封裝體應用開發(fā)的啟動階段,開發(fā)人員需要向數(shù)據(jù)站提交業(yè)務需求,此時要用到應用開發(fā)需求視圖和資源列表視圖,便于開發(fā)人員書寫需求并查看可用的數(shù)據(jù)封裝體目錄;而在數(shù)據(jù)封裝體應用開發(fā)初期,開發(fā)人員可能希望看到數(shù)據(jù)封裝體定義的細節(jié)以及一些樣本數(shù)據(jù),此時則要用到數(shù)據(jù)封裝體視圖。各類視圖將數(shù)據(jù)封裝體應用開發(fā)過程中的需求組織起來,以便開發(fā)人員針對不同開發(fā)需求自行切換。該IDE還集成了程序運行時開發(fā)包,將數(shù)據(jù)封裝體訪問、外部數(shù)據(jù)分析算法以及在數(shù)據(jù)站端的運行支持接口等集成在開發(fā)環(huán)境中,方便開發(fā)者的程序開發(fā)工作。該IDE提供了專門針對大數(shù)據(jù)應用開發(fā)問題而重新設計的調(diào)試環(huán)境,用于解決由于數(shù)據(jù)質(zhì)量參差不齊而出現(xiàn)的實際數(shù)據(jù)內(nèi)容與數(shù)據(jù)封裝體標稱數(shù)據(jù)結(jié)構(gòu)產(chǎn)生差異的問題。外部程序開發(fā)人員根據(jù)獲取的樣本數(shù)據(jù)封裝體編寫和調(diào)試面向數(shù)據(jù)封裝體的應用程序,并通過樣本數(shù)據(jù)封裝體進行調(diào)試,才能在程序中正確處理樣本數(shù)據(jù)封裝體中出現(xiàn)的各類問題。調(diào)試環(huán)境除了提供傳統(tǒng)集成調(diào)試環(huán)境以外,還特別針對數(shù)據(jù)分析過程進行優(yōu)化,例如對數(shù)據(jù)計算的中間結(jié)果進行檢查、根據(jù)數(shù)據(jù)規(guī)格說明驗證數(shù)據(jù)封裝體的數(shù)據(jù)實例等;而對于平臺而言,可以通過調(diào)試對代碼進行動態(tài)分析,從而對關鍵數(shù)據(jù)的處理邏輯進行檢查。
運行平臺是外部程序在服務器環(huán)境中運行的基礎軟件支撐,主要包括以下幾個方面。
● 基本的應用程序運行容器,如Tomcat等Web應用運行容器或Java運行,提供了應用程序運行的基本環(huán)境。
● 基礎運行框架:是外部應用程序在運行容器中運行時所需的面向數(shù)據(jù)封裝體的接口支持,如標準的數(shù)據(jù)封裝體訪問接口以及集成的標準數(shù)據(jù)分析方法等。
● 管控模塊:基于數(shù)據(jù)封裝體實時訪問日志以及運行容器日志,收集外部程序的數(shù)據(jù)訪問行為,并進行實時和準實時的分析,然后根據(jù)行為管控策略給出相應的數(shù)據(jù)行為控制。
● 需求分析器:用于在開發(fā)初期分析選擇合適的數(shù)據(jù)封裝體以及在運行階段作為數(shù)據(jù)訪問行為異常的參考。
● 測試環(huán)境:任何一個面向數(shù)據(jù)封裝體的外部應用在開發(fā)完成后、投入正式運行之前,由應用程序接入模塊送入測試環(huán)境進行相應的測試,包括用戶視角的用戶需求驗證和平臺視角的數(shù)據(jù)權(quán)益保護。
3.3 支持軟件行為管控的數(shù)據(jù)自治開放應用開發(fā)全過程
支持軟件行為管控的數(shù)據(jù)自治開放應用開發(fā)過程如圖2所示,主要分為提交需求、獲取數(shù)據(jù)封裝體樣本、本地開發(fā)程序、調(diào)試程序、提交程序、測試程序以及正式運行7個步驟。
圖2 支持軟件行為管控的數(shù)據(jù)自治開放應用開發(fā)全過程
(1)提交需求
與普通的應用開發(fā)不同,面向數(shù)據(jù)封裝體的應用開發(fā)由于需要對軟件的行為進行必要的管控,因此需要將待開發(fā)應用的業(yè)務需求和數(shù)據(jù)需求提交給運行平臺中的需求分析模塊,并在運行平臺中對該軟件開發(fā)任務進行注冊。后續(xù)的開發(fā)過程將同時在開發(fā)平臺和運行平臺中記錄。
(2)獲取數(shù)據(jù)封裝體樣本
運行平臺中的需求分析模塊在收到程序開發(fā)請求后,通過數(shù)據(jù)管理平臺獲得符合相關需求的樣本數(shù)據(jù)封裝體,并分發(fā)給開發(fā)者。樣本數(shù)據(jù)封裝體是對所需數(shù)據(jù)的部分采樣,僅供開發(fā)人員開發(fā)程序時使用。樣本數(shù)據(jù)封裝體的行為管控可以設置得較弱,而且開發(fā)人員為了充分調(diào)試程序,甚至可多次請求樣本數(shù)據(jù)封裝體。
(3)本地開發(fā)程序
在完成樣本數(shù)據(jù)封裝體的獲取后,開發(fā)人員就可利用傳統(tǒng)的開發(fā)技術(shù)自行開發(fā)數(shù)據(jù)封裝體應用。通常,開發(fā)人員會首先讀取數(shù)據(jù)封裝體的實際數(shù)據(jù)結(jié)構(gòu),并按照實際的數(shù)據(jù)結(jié)構(gòu)嘗試讀取數(shù)據(jù)。在熟悉樣本數(shù)據(jù)后,結(jié)合實際業(yè)務需求,編寫數(shù)據(jù)查詢的代碼,并完成數(shù)據(jù)的分析。
(4)調(diào)試程序
在程序的開發(fā)過程中,開發(fā)人員需要利用集成開發(fā)環(huán)境中的集成調(diào)試器進行程序調(diào)試。開發(fā)人員一般將著重檢查和驗證開發(fā)程序?qū)颖緮?shù)據(jù)處理的正確性。與傳統(tǒng)的單純調(diào)試程序不同,在面向數(shù)據(jù)封裝體的應用開發(fā)中,平臺本身也可通過程序的調(diào)試運行獲取關鍵數(shù)據(jù)的使用邏輯,從而為后續(xù)正式程序的軟件行為檢測和管控收集信息。在調(diào)試程序的過程中,當程序的行為與預期不一致時,開發(fā)人員隨時可以重新修改程序,并再次進行調(diào)試。
(5)提交程序
由于最終的程序?qū)⒃谶\行平臺上執(zhí)行,所以通常情況下,開發(fā)人員在本地開發(fā)完成并通過調(diào)試的程序,需要通過運行平臺的應用程序接入模塊加載到運行容器中執(zhí)行。在此過程中,應用程序接入模塊根據(jù)需求分析模塊記錄的開發(fā)任務ID,找到程序在提交需求步驟中留下的數(shù)據(jù)訪問信息,并據(jù)此信息初步驗證程序?qū)?shù)據(jù)訪問的合法性。
(6)測試程序
在面向數(shù)據(jù)封裝體的應用開發(fā)過程中,系統(tǒng)級的測試是必不可少的環(huán)節(jié)。在此環(huán)節(jié)中,新開發(fā)的程序在隔離的沙箱環(huán)境中運行。開發(fā)人員可提交必要的測試規(guī)則,使得程序在正式大規(guī)模高負荷運行之前,仍然有機會在服務器環(huán)境下驗證其數(shù)據(jù)處理的正確性。而對于運行平臺而言,通過測試一方面可以預先檢查數(shù)據(jù)訪問行為是否符合預期,是否與其聲稱的訪問目標一致,另一方面也可預判該程序的正式運行是否會對整個運行平臺的穩(wěn)定運行造成不利影響。程序出現(xiàn)異常或平臺判定程序訪問數(shù)據(jù)的言行不一致,都可以導致測試失敗,并驅(qū)動外部程序返回集成開發(fā)環(huán)境進行修正。因此,測試程序這一環(huán)節(jié),在面向數(shù)據(jù)封裝體的數(shù)據(jù)自治開放軟件開發(fā)環(huán)境中具有非同尋常的意義。
(7)正式運行
當開發(fā)人員和平臺都認可測試結(jié)果后,程序?qū)⑦M入正式的運行狀態(tài)。考慮到大數(shù)據(jù)應用的數(shù)據(jù)量大、計算方法多樣,盡管之前經(jīng)過了調(diào)試和測試,但當程序面臨真實數(shù)據(jù)時,仍然可能產(chǎn)生各種管控問題。因此,運行平臺中的管控模塊將持續(xù)對正式運行的程序進行行為檢測和分析,確保程序按既定方案正常使用數(shù)據(jù)。
4 ?關鍵技術(shù)挑戰(zhàn)
4.1 軟件行為管控
外部軟件行為管控需要在外部軟件開展正式數(shù)據(jù)訪問之前,通過監(jiān)控外部軟件訪問軟件的行為,提取軟件訪問數(shù)據(jù)的行為特征,并基于這些特征抽象出其高層意圖。相關研究被廣泛應用在軟件行為監(jiān)測、隱私防護、惡意軟件檢測方面。
外部軟件行為管控是數(shù)據(jù)自治開放中保障數(shù)據(jù)權(quán)益的重要環(huán)節(jié)。在數(shù)據(jù)自治開放環(huán)境下,外部軟件如何能充分獲得訪問數(shù)據(jù)的自由,同時又能保證數(shù)據(jù)的權(quán)益不受侵害,是一個重要的研究挑戰(zhàn)。
外部軟件行為管控主要分為使用數(shù)據(jù)前的管控技術(shù)和使用數(shù)據(jù)過程中的管控技術(shù)兩個方面。使用數(shù)據(jù)前這一階段主要包括數(shù)據(jù)使用者獲取數(shù)據(jù)和獲取數(shù)據(jù)后開發(fā)外部軟件的若干活動。在獲取數(shù)據(jù)時,數(shù)據(jù)使用者需要提供使用數(shù)據(jù)的有關需求和意圖,這是保護數(shù)據(jù)治理權(quán)、防止數(shù)據(jù)濫用的基本條件。數(shù)據(jù)使用者的需求和意圖只有在不侵犯數(shù)據(jù)擁有者數(shù)據(jù)治理權(quán)的條件下,才可獲得批準,并開展后續(xù)的數(shù)據(jù)使用活動。數(shù)據(jù)使用者獲批使用數(shù)據(jù)后,需要自行開發(fā)軟件來使用數(shù)據(jù)(如處理和分析,但是不能復制和傳播)。而開發(fā)調(diào)試軟件過程仍然不是正式的數(shù)據(jù)使用過程,而是僅通過部分或者示例性的樣本數(shù)據(jù)進行。該過程中的軟件行為管控主要是在數(shù)據(jù)使用者初步完成開發(fā)軟件后,以開發(fā)運行環(huán)境對軟件進行靜態(tài)代碼分析為主、動態(tài)軌跡收集為輔的方式,初步驗證是否符合(不抵觸)之前聲稱的需求和意圖。
使用數(shù)據(jù)過程中的管控主要是對正式上線運行的外部軟件的訪問數(shù)據(jù)等行為進行收集、分析、決策和控制。通過監(jiān)控外部軟件訪問數(shù)據(jù)的行為,提取出軟件訪問數(shù)據(jù)的行為特征,并基于這些特征抽象出其高層意圖,與數(shù)據(jù)使用者預先聲稱的需求和意圖進行比較,從而決定是否允許后續(xù)的數(shù)據(jù)訪問行為。主要通過程序動態(tài)分析讓軟件在受控環(huán)境中運行,收集軟件運行時對數(shù)據(jù)實際的處理操作,并分析得到軟件的整體行為意圖。該過程需要同時考慮管控的效果和效率,并且在實現(xiàn)中根據(jù)實際管控需求作出相應的權(quán)衡。
4.2 高層業(yè)務需求描述與建模
對外部程序的數(shù)據(jù)需求和業(yè)務需求的描述和建模是軟件行為管控的基礎。在面向數(shù)據(jù)封裝體的軟件開發(fā)開始前和完成后,都需要盡可能準確地描述開發(fā)程序?qū)?shù)據(jù)的實際需求以及程序的高層業(yè)務需求。而現(xiàn)實中,準確定義需求已經(jīng)是公認的軟件工程的難題,并且由于軟件開發(fā)任務的高度復雜性和現(xiàn)實環(huán)境快速變化等多種因素的影響,需求的易變性也是導致難以準確描述業(yè)務需求的一大障礙。然而,在數(shù)據(jù)自治開放環(huán)境下,由于數(shù)據(jù)需求可以相對清晰、較好地體現(xiàn)軟件開發(fā)者的設計思路,因此,充分利用數(shù)據(jù)需求和領域知識對數(shù)據(jù)使用者的意圖進行描述,是一個重要的突破口。
外部軟件訪問開放的數(shù)據(jù)資源時,應當表明其訪問數(shù)據(jù)資源的高層意圖。例如某外部軟件聲稱為了追蹤病癥A的治療和患者愈后情況,需要訪問該病癥的所有醫(yī)療數(shù)據(jù),那么根據(jù)這一意圖,對與病癥A“概念相關”的數(shù)據(jù)資源的訪問(可能)都是符合其意圖的。這種概念相關性依賴于特定業(yè)務領域知識模型以及對開放數(shù)據(jù)資源的語義標注。在外部軟件訪問開放數(shù)據(jù)資源時,對其所有數(shù)據(jù)訪問行為和曾訪問過的數(shù)據(jù)資源語義進行分析,對外部軟件訪問數(shù)據(jù)資源的實際意圖進行建模,并通過實際意圖與其生成的高層意圖的比較來評價數(shù)據(jù)訪問行為的風險。
4.3 面向數(shù)據(jù)封裝體的軟件開發(fā)工具包的設計
軟件開發(fā)工具包(software development kit,SDK)是數(shù)據(jù)封裝體應用開發(fā)的基礎。由于大數(shù)據(jù)應用開發(fā)的復雜性和不確定性,一些軟件實現(xiàn)算法往往無法內(nèi)置于開發(fā)環(huán)境中,而只能由開發(fā)者自行編寫。這就產(chǎn)生了如何將外部編寫的算法邏輯安全可靠地運行在服務器端,并確保數(shù)據(jù)權(quán)益不受外部程序損害的問題。因此,需要一個基礎開發(fā)框架為外部軟件的開發(fā)提供足夠的可擴展性。同時,對于一些常見的數(shù)據(jù)分析算法,則希望有一些內(nèi)置的實現(xiàn)可以給開發(fā)人員方便地使用。另外,數(shù)據(jù)封裝體本身的訪問也需要在開發(fā)平臺中實現(xiàn),但開發(fā)平臺僅處理樣本數(shù)據(jù)封裝體,因此需要數(shù)據(jù)封裝體訪問接口的開發(fā)態(tài)和運行態(tài)兩個不同的權(quán)限控制版本。可見,對基礎開發(fā)框架、可擴展的數(shù)據(jù)分析算法的實現(xiàn)以及對數(shù)據(jù)封裝體本身的訪問,都是開發(fā)運行平臺需要解決的問題。
(1)基礎開發(fā)框架SDK
基礎開發(fā)框架SDK提供了外部程序在本地和運行平臺中運行的基礎接口類。這些基礎接口類是外部應用程序代碼邏輯的重要擴展點。當外部應用開發(fā)者需要在應用開發(fā)時使用自有的特定算法時,應當將這些算法根據(jù)基礎開發(fā)框架SDK中規(guī)定的框架進行設計編碼,實現(xiàn)相應的數(shù)據(jù)處理接口,從而實現(xiàn)從特定結(jié)構(gòu)輸入數(shù)據(jù)到特定結(jié)構(gòu)輸出數(shù)據(jù)的轉(zhuǎn)化。
之所以需要規(guī)定特定的數(shù)據(jù)輸入和輸出接口,是出于對數(shù)據(jù)保護的考慮。當外部程序用自身算法進行計算時,涉及的原始數(shù)據(jù)都是對應用程序開放的。然而,在這種情況下,缺乏對應用程序的行為管控及對數(shù)據(jù)權(quán)益的保護是非常危險的。因此,在基于數(shù)據(jù)封裝體的外部應用開發(fā)中,應用開發(fā)模塊對數(shù)據(jù)的讀寫都必須通過給定的接口完成,從而通過控制數(shù)據(jù)流入和流出情況來保護數(shù)據(jù)。
(2)數(shù)據(jù)分析SDK
數(shù)據(jù)分析SDK以外部軟件包的形式提供常用的數(shù)據(jù)分析算法。這些開發(fā)包對于整個開發(fā)環(huán)境而言是開放的,可以由任何第三方根據(jù)基礎開發(fā)框架的標準要求進行擴展。與數(shù)據(jù)封裝體內(nèi)置的基本分析接口不同,數(shù)據(jù)分析SDK可以提供更加復雜的計算邏輯,并且需要通過基礎開發(fā)框架SDK和數(shù)據(jù)封裝體SDK才能訪問數(shù)據(jù)封裝體內(nèi)的數(shù)據(jù)。盡管復雜的計算邏輯可以通過外部程序開發(fā)者根據(jù)基礎框架SDK自行開發(fā),但內(nèi)置的數(shù)據(jù)分析SDK提供了常用的分析算法實現(xiàn),可簡化外部程序開發(fā)人員的投入。
(3)數(shù)據(jù)封裝體SDK
數(shù)據(jù)封裝體SDK提供了外部程序訪問數(shù)據(jù)封裝體中數(shù)據(jù)的基本操作規(guī)范,即數(shù)據(jù)訪問接口。在數(shù)據(jù)自治開放環(huán)境中,當數(shù)據(jù)站中的任何數(shù)據(jù)提供給外部程序使用時,均會灌裝到數(shù)據(jù)封裝體中;而外部程序?qū)?shù)據(jù)封裝體中數(shù)據(jù)的訪問,必須通過數(shù)據(jù)封裝體SDK提供的數(shù)據(jù)封裝體訪問接口。
數(shù)據(jù)封裝體SDK將提供受控的體內(nèi)數(shù)據(jù)訪問能力和基本的數(shù)據(jù)分析能力。數(shù)據(jù)訪問能力是指,當外部程序需要獲取數(shù)據(jù)封裝體內(nèi)的原始數(shù)據(jù)時,能通過數(shù)據(jù)封裝體提供的接口調(diào)用數(shù)據(jù)SDK中的數(shù)據(jù)獲取方法,讀取原始的數(shù)據(jù)記錄。這種原始數(shù)據(jù)的讀取能力受到數(shù)據(jù)封裝體內(nèi)置的安全機制的限制,例如,當原始數(shù)據(jù)的讀取超過預設的限制時,數(shù)據(jù)訪問請求將被拒絕。基本的數(shù)據(jù)分析能力主要包括簡單的數(shù)據(jù)統(tǒng)計操作,如求指定字段取值的最大值、最小值、算術(shù)平均值、中位值、方差等。同樣,數(shù)據(jù)分析能力也受 到封裝體內(nèi)安全機制的限制,用于保護原始數(shù)據(jù)不被過度泄露。
4.4 離線開發(fā)調(diào)試和在線運行驗證
為了便于開發(fā)人員使用與業(yè)務需求相關的各類數(shù)據(jù),數(shù)據(jù)封裝體提供了數(shù)據(jù)的基本規(guī)格說明。數(shù)據(jù)使用方利用數(shù)據(jù)的規(guī)格說明在本地編寫適用于獲得的數(shù)據(jù)封裝體的軟件代碼。用戶開發(fā)集成環(huán)境內(nèi)置數(shù)據(jù)封裝體訪問接口,供數(shù)據(jù)用戶進行本地調(diào)試使用。為了方便開發(fā)和保護數(shù)據(jù)權(quán)益,在開發(fā)前,運行平臺生成一些帶有部分樣本數(shù)據(jù)的數(shù)據(jù)封裝體,使得開發(fā)人員可以利用數(shù)據(jù)封裝體開發(fā)接口進行開發(fā)調(diào)試。
這種離線開發(fā)調(diào)試的方式能處理一部分數(shù)據(jù)質(zhì)量問題。但是,在大數(shù)據(jù)應用環(huán)境下,數(shù)據(jù)質(zhì)量不高、數(shù)據(jù)內(nèi)容與規(guī)格說明不一致等問題層出不窮,因此即便本地調(diào)試通過的程序,仍然很可能在真實運行環(huán)境中發(fā)生錯誤而需要停機調(diào)試。
在正式運行中,為了提升處理停機問題的效率,需要一種既保護數(shù)據(jù)不被意外泄露,又能方便用戶在本地調(diào)試的實現(xiàn)方案。數(shù)據(jù)封裝體的開發(fā)態(tài)應用程序編程接口(application programming interface, API)的離線版本提供了一種重要的在線本地調(diào)試方式,當在線數(shù)據(jù)使用發(fā)生問題、產(chǎn)生錯誤時,可通過本地接口獲得出錯數(shù)據(jù)的樣本,并且配置一定的容錯性,使接口能夠一次盡可能多地返回可能的數(shù)據(jù)異常的問題。與此同時,這一特性還需要和數(shù)據(jù)防泄露機制配合,防止因運行時故障導致原始數(shù)據(jù)泄露的情況發(fā)生。
5 ?結(jié)束語
面向數(shù)據(jù)封裝體的軟件開發(fā)與運行環(huán)境,是支持數(shù)據(jù)自治開放的軟件開發(fā)和運行的重要軟件基礎設施。本文給出了這種新型軟件開發(fā)與運行環(huán)境的總體架構(gòu),并闡述了基于數(shù)據(jù)封裝體的數(shù)據(jù)自治開放軟件開發(fā)過程。數(shù)據(jù)自治開放的軟件開發(fā)要求開發(fā)環(huán)境和運行環(huán)境的無縫銜接,進一步突出了開發(fā)、運行一體化的要求。數(shù)據(jù)封裝體作為支持數(shù)據(jù)自治開放的新型載體,要求軟件開發(fā)和運行環(huán)境提供相應的支撐,包括解決數(shù)據(jù)需求描述、數(shù)據(jù)訪問行為管控、數(shù)據(jù)封裝體應用的本地開發(fā)和遠程運行等一系列的關鍵技術(shù)挑戰(zhàn)。在后續(xù)工作中,將逐步對面向數(shù)據(jù)封裝體的軟件開發(fā)和運行環(huán)境的各個技術(shù)挑戰(zhàn)開展進一步的研究,建立支持數(shù)據(jù)自治開放的軟件研發(fā)基礎設施。
點擊下方?閱讀原文?即可獲取全文
作 者 簡 介
吳毅堅(1979-),男,博士,復旦大學副教授,主要研究方向為軟件維護與演化、大數(shù)據(jù)應用開發(fā)平臺。
?
陳士壯(1991-),男,復旦大學碩士生,主要研究方向為軟件工程、數(shù)據(jù)開放共享。
?
葛佳麗(1993-),女,復旦大學碩士生,主要研究方向為軟件工程、數(shù)據(jù)開放共享。
?
趙文耘(1964-),男,復旦大學教授,主要研究方向為軟件工程、企業(yè)應用集成、軟件開發(fā)平臺。
?
《大數(shù)據(jù)》期刊
《大數(shù)據(jù)(Big?Data?Research,BDR)》雙月刊是由中華人民共和國工業(yè)和信息化部主管,人民郵電出版社主辦,中國計算機學會大數(shù)據(jù)專家委員會學術(shù)指導,北京信通傳媒有限責任公司出版的科技期刊。
關注《大數(shù)據(jù)》期刊微信公眾號,獲取更多內(nèi)容
總結(jié)
以上是生活随笔為你收集整理的数据自治开放的软件开发和运行环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: C++之const修饰得到是谁
 - 下一篇: 2018中国国际大数据大会专属报名通道(