- 相關(guān)推薦
淺談?dòng)嬎銠C信息隱蔽性設計
摘要:包含在計算機模塊內的信息對于無(wú)需這些信.g-的其他模塊是不可存取的,即將不需要的信息都隱藏起來(lái),只允許其他模塊知道其本身所需的信息。這樣可以使問(wèn)題求解簡(jiǎn)單化,從而達到好理解、好實(shí)現、好驗證、好重用的目標。它可以從整體上保證計算機軟件的質(zhì)量,降低計算機軟件的開(kāi)發(fā)和維護成本。
關(guān)鍵詞:隱蔽原則;抽象原則;關(guān)系;對象;黑盒
有關(guān)計算機軟件工程的隱蔽原則一般是這樣描述的:包含在模塊內的信息對于無(wú)需這些信息的其他模塊是不可存取的,即將不需要的信息都隱藏起來(lái),只允許其他模塊知道其本身所需的信息。
如果說(shuō)最簡(jiǎn)單的就是最好的,那么計算機信息隱蔽性最強的就是最簡(jiǎn)單的。從方法學(xué)的總結到推廣,從軟件設計到軟件實(shí)現,從手工開(kāi)發(fā)到工具輔助,信息隱蔽原則無(wú)時(shí)無(wú)處不發(fā)揮著(zhù)極有效的指導作用。
l 計算機隱蔽原則與其他原則的統一
1.1 方法學(xué)都基于軟件工程基本原則
基本原則是行為所依據的法則和規范。無(wú)論什么方法學(xué)從知識工程角度來(lái)說(shuō),都是運用軟件工程方法學(xué)基本原則的規則、策略及工具的集合。其中抽象原則是最重要的,它給出軟件工程問(wèn)題求解全過(guò)程的最基本原則,其他原則是對抽象原則的補充。
指導如何抽象的基本原則大體上可以分為體系規范原則和模塊規范原則兩類(lèi)。前者是規范整體解題思路及解得驗證,包括形式化原則、分割原則、層次原則、概念完整性原則、完備性原則;后者則是與子問(wèn)題有關(guān)的原則,包括隱蔽原則、局部化原則、邏輯獨立性原則。面向對象的“關(guān)系”抽象較多受前者規范,“對象”抽象較多受后者規范。
1.2 基本原則間的相互關(guān)聯(lián)
雖然可以做“體系規范”和“模塊規范”的大體分類(lèi),但基本原則之間并不是無(wú)關(guān)的,而是整體與局部間的相互制約,形成一個(gè)統一體。
要求將信息最大限度地隱蔽在計算機模塊內的隱蔽原則,使模塊內部信息封裝化、模塊的外部形象黑盒化,與外部的關(guān)系最少,所以使滿(mǎn)足體系抽象原則的抽象過(guò)程和驗證工作簡(jiǎn)單化,同時(shí)也很容易滿(mǎn)足模塊規范的其他原則,如局部化原則和邏輯獨立性原則。
例如將具有多重關(guān)聯(lián)的多個(gè)數據庫表的條件組合查詢(xún),
由一個(gè)駐在服務(wù)器端的存儲過(guò)程來(lái)統一完成?蛻(hù)端用戶(hù)可以在同一個(gè)窗口上對數十項多層交叉的查詢(xún)條件任意選擇組合,將選定條件送給相應存儲過(guò)程。從外部來(lái)看,存儲過(guò)程的任務(wù)極為單純,即根據指定條件找出所有符合條件的記錄,將結果寫(xiě)到一個(gè)有共享結構的工作表中,然后把查詢(xún)正常與否的消息通報給客戶(hù)端的調用程序。該程序接到正常查詢(xún)結束消息后,到指定暫時(shí)存放查詢(xún)結果的工作表中,按一定格式取出結果并報告給用戶(hù)。
我認為,這是一個(gè)全面符合軟件工程基本原則的設計典范,而其關(guān)鍵技術(shù)是信息隱蔽設計。首先是遵循隱蔽原則將具有復雜關(guān)系結構的多個(gè)數據庫表的操作和庫表結構封裝在一起,實(shí)現了完全的信息隱蔽。由于高度信息隱蔽的實(shí)現使這一組相關(guān)庫表的所有多層交叉組合結構有可能在一個(gè)對象中完成,高度滿(mǎn)足了局部化原則。由于它的功能單純、明確,數據庫表間接口通過(guò)對相應存儲過(guò)程傳遞參數來(lái)完成,屬于內聚性最強的功能內聚和耦合性最弱的數據耦合,因而具有很好的邏輯獨立性。
不難想象,幾十項查詢(xún)條件的組合,查詢(xún)結果顯示方式達三四十種是很正常的。由于在局部化、功能獨立化原則下應用對象只是抽象成一個(gè)超類(lèi)窗口對象,在信息隱蔽設計支持下,這三四十種結果顯示功能可以全部相互獨立地掛在查詢(xún)父窗口下,自然地滿(mǎn)足了分割原則、層次原則、概念完整性原則等體系規范原則。
2 信息隱蔽性設計的目的和優(yōu)越性
2.1 目的
探討信息隱蔽性設計的目的是:分析將信息隱蔽起來(lái)有什么好處,以便使問(wèn)題求解簡(jiǎn)單化。
2.1.1 好理解
一般的復雜問(wèn)題有兩個(gè)特征,一是解題要參照的接口太多、太復雜,二是解題的方法太復雜。那么要想使之簡(jiǎn)化,無(wú)非是從問(wèn)題接口和問(wèn)題解法上人手。將復雜的接口信息與復雜算法隱蔽起來(lái),剩下的自然是簡(jiǎn)單的。換句話(huà)說(shuō)就是實(shí)現對象的外部數據結構與算法的封裝。
需要知道的東西越少越好理解。在軟件工程中,理解是最繁重的工作之一。開(kāi)發(fā)過(guò)程中從分析人員對用戶(hù)需求的理解,到設計人員對需求規格的理解,直至編程人員對軟件設計的理解,是一個(gè)理解傳遞的過(guò)程。每一級開(kāi)發(fā)人員的目的都應是將經(jīng)過(guò)自己加工后的、更簡(jiǎn)單的抽象結果更抽象、更好理解。因此好的設計人員就是經(jīng)其加工后傳給下級開(kāi)發(fā)人員的設計最容易理解,即給出的問(wèn)題定義越簡(jiǎn)單、接口越少越好。
2.1.2 好實(shí)現
有時(shí)好理解卻不好實(shí)現,即實(shí)現算法復雜。但是,如果把復雜算法做成一個(gè)封裝的模塊對象,使實(shí)現者只需知道模塊的作用和使用方法就可以得到所期待的輸出結果,而無(wú)須知道模塊內部的具體實(shí)現,因此實(shí)現的問(wèn)題就可以得到簡(jiǎn)化。
2.1.3 好驗證
復雜問(wèn)題也不好驗證。有些設計看起來(lái)好理解,也不難實(shí)現,但驗證起來(lái)卻很難。例如如果設計了相當多的功能熱鍵用戶(hù)接口。對于輸入數據窗口和數據項較多的應用程序,測試起來(lái)十分困難。多個(gè)功能熱鍵、多種激活方式、多個(gè)輸入數據窗口和數據項之間前后控制跳轉,這些都是黑盒測試的出發(fā)點(diǎn),而每個(gè)控制節點(diǎn)都以2以上的指數方式遞增著(zhù)測試用例數目。即使一般復雜的應用,其測試用例也超過(guò)200類(lèi)。
由于采用了這種多控制、多轉移的復雜輸入方式設計,算法復雜是不可避免的。簡(jiǎn)化的辦法還是信息隱蔽性設計,將每個(gè)熱鍵的多種激活方式觸發(fā)的內部處理都寫(xiě)成公共對象且封裝起來(lái),供各應用程序繼承調用。顯然這種隱蔽技術(shù)直接簡(jiǎn)化了理解和實(shí)現。由于公共父類(lèi)對象已經(jīng)做過(guò)全面集中測試,下層程序繼承后的有關(guān)測試絕大部分可以“免檢”,所以間接簡(jiǎn)化了驗證,達到“好驗證”的目的。
2.1.4 好重用
好驗證的設計方法是把算法復雜的對象泛化為超類(lèi)對象,進(jìn)行集中實(shí)現和集中測試,使多個(gè)下層子類(lèi)共享父類(lèi)的實(shí)現和測試,所以它也是一種重用方案。好重用往往是好理解、好實(shí)現、好驗證的必然結果。不過(guò)它是從更高層次上審視信息隱蔽性的目的。
2.2 優(yōu)越性
由于信息隱蔽性設計重用性高,因此可以大大降低開(kāi)發(fā)和維護成本。具體可以從兩方面來(lái)看其優(yōu)越性。
1)由于將復雜內容都隱蔽到公共超類(lèi)之中,可以集中優(yōu)勢兵力對公共超類(lèi)對象統一進(jìn)行設計攻關(guān)、設計優(yōu)化和代碼優(yōu)化及測試和修改,所以不僅利于保證設計和實(shí)現的正確性,而且利于提高可維護性、保證數據安全性?傊,有利于從整體上保證軟件的基本質(zhì)量,降低維護成本。
2)由于簡(jiǎn)化了編程難度,避免了重復勞動(dòng),降低了對程序員技術(shù)經(jīng)驗水平的要求,減少了設計說(shuō)明和理解交流及編輯的工作量,因而利于減少開(kāi)發(fā)成本。
倘若前述的軟件設計不是采用信息隱蔽性設計,倘若我們只有對復雜的庫表結構了如指掌之后才能進(jìn)行多層交叉組合查詢(xún)程序的實(shí)現,這不僅將需要許多時(shí)間理解庫表結構,還需要構筑同樣的數據庫,錄入能體現復雜數據關(guān)系的各種測試數據。由于數據關(guān)系映射著(zhù)應用對象的關(guān)系,為此我們還必須了解滿(mǎn)足各種組合查詢(xún)的數據與應用業(yè)務(wù)處理間的對應關(guān)系,因為稍有理解偏差,取出的用于統計的數據就會(huì )全面失去意義。所以信息隱蔽性設計對于大型軟件開(kāi)發(fā),特別是分式的異地開(kāi)發(fā),是不可或缺的。
實(shí)際上,前述軟件設計提供給我們的是與復雜數據庫結構封裝在一起的組合查詢(xún)存儲過(guò)程,只是一個(gè)樁程序。在我們開(kāi)發(fā)客戶(hù)端組合查詢(xún)程序時(shí),它完全是個(gè)黑盒子,甚至沒(méi)有放到服務(wù)器端。但是,它使得組合查詢(xún)程序只剩下輸入數據檢驗這一單純功能了。
3 信息隱蔽性設計的基本思路與實(shí)踐
信息隱蔽是個(gè)原則而不是方法,按此原則設計的系統具有信息隱蔽性,這是設計優(yōu)化的一種表現。結構化方法和面向對象方法都追求信息隱蔽性,并且各自具有一套抽象與實(shí)現的思路與方法。在此,我們嘗試歸納一下不拘泥于方法學(xué)的有關(guān)設計思路與方法。
3.1 哪些場(chǎng)合應考慮隱蔽性設計
總的來(lái)說(shuō),凡是可以用信息隱蔽性設計、使復雜問(wèn)題簡(jiǎn)單化的場(chǎng)合,都應該采用此設計。
首先,可以對共同事件、共同處理采用隱蔽性設計。因為重復是問(wèn)題復雜化的一個(gè)重要原因。例如“輸入數據檢驗”、“退出事件”、“打開(kāi)事件”、“打印處理”、“熱鍵的轉移控制”、“系統信息輸出處理”等,甚至對打印報表的“制表時(shí)間與頁(yè)號編輯”功能的共同處理。
其次,可以對接口和環(huán)境采用隱蔽性設計。因為接口也是問(wèn)題復雜化的重要原因之一。例如,可將靜態(tài)數據庫表及其查詢(xún)操作隱蔽起來(lái),將復雜關(guān)系表及其存取操作隱蔽起來(lái),甚至可以將所有數據庫都隱蔽起來(lái),使低級開(kāi)發(fā)人員根本不必意識數據庫的存在,以及將特殊輸入輸出裝置接口處理隱蔽起來(lái),將與其他系統的接口處理隱蔽起來(lái)等。
此外,還可以把復雜的算法、概念隱蔽起來(lái),也可以把用戶(hù)沒(méi)有權限的功能隱蔽起來(lái),以保證數據的安全性。
3.2 信息隱蔽的實(shí)現方法 .
我們可以把實(shí)現信息隱蔽的物理范圍稱(chēng)為隱蔽黑盒。信息隱蔽實(shí)現方法實(shí)際上就是隱蔽黑盒的實(shí)現方法與調用方法。隱蔽黑盒一般可以用函數、存儲過(guò)程、超類(lèi)對象、語(yǔ)句系列來(lái)實(shí)現。使用隱蔽黑盒時(shí),可以用函數、存儲過(guò)程調用、祖先繼承及程序段復制等相應辦法來(lái)引用。
3.2.1 服務(wù)器端的隱蔽黑盒設計技術(shù)
我們使用觸發(fā)器來(lái)實(shí)現對一些數據庫超類(lèi)表(如流水號表)或共同表操作(如表頭信息寫(xiě)操作)的盒化。觸發(fā)器是通過(guò)將實(shí)現方法與調用方法封裝在一起,把調用方法也隱蔽起來(lái),是最徹底的隱蔽黑盒。這除了使復雜問(wèn)題簡(jiǎn)單化以外,還有利于數據庫的安全。因為再?lài)烂艿目蛻?hù)端操作也無(wú)法完全排除網(wǎng)絡(luò )帶來(lái)的不安全因素的影響。而隨著(zhù)網(wǎng)絡(luò )支持性?xún)r(jià)比的提高,把數據庫相關(guān)操作集中在服務(wù)器端,客戶(hù)端只負責輸入數據的正確性檢查和結果數據的處理,這顯然是一種既講效率又能保證數據庫數據安全體系結構的方法,是“胖服務(wù)器瘦客戶(hù)機”發(fā)展方向的必然取舍。
3.2.2 靜態(tài)表的隱蔽黑盒設計
從信息隱蔽的角度看程序中分離出去的靜態(tài)表,對程序來(lái)說(shuō)也是一個(gè)隱蔽黑盒,它實(shí)現了程序中存在變因的控制數據或開(kāi)關(guān)數據對程序的隱蔽(隔離)。靜態(tài)表放在服務(wù)器端,便于共享和維護。同時(shí),我們用邏輯控制靜態(tài)表解決了面向不同應用對象動(dòng)態(tài)組合應用功能這個(gè)難題,把沒(méi)有權限的那一部分功能對用戶(hù)隱蔽了起來(lái)。
總之,隱藏黑盒就是重用單元,重用單元越多軟件開(kāi)發(fā)越簡(jiǎn)單,與數據庫有關(guān)的隱蔽黑盒放在服務(wù)器端要比放在客戶(hù)端好處更多,因此隱藏黑盒有著(zhù)廣闊的重用前景。
參考文獻
[1] 沈美明,溫冬嬋.IBM-PC匯編語(yǔ)言程序設計(第二版)[M].北京:清華大學(xué)出版社,2001.9.
[2] 張世和.數據結構[M].北京:清華大學(xué)出版社,2000.12.
[3] 葉忠杰.計算機網(wǎng)絡(luò )安全技術(shù)(第二版)[M].北京:科學(xué)出版社。2004.9.
【淺談?dòng)嬎銠C信息隱蔽性設計】相關(guān)文章:
談?dòng)嬎銠C信息隱蔽性設計03-19
淺談?dòng)嬎銠C信息安全技術(shù)及防護措施論文01-01
淺談軍用計算機電磁信息安全與防護03-02
淺談關(guān)于計算機信息管理專(zhuān)業(yè)教學(xué)的思考03-09
淺析計算機及信息化對設計的影響03-13
計算機及信息化對設計的影響淺析11-25
淺談設計美學(xué)03-20
淺談山區高速公路動(dòng)態(tài)設計與信息化施工03-01
淺談道路勘測設計中計算機的工程計算03-01