軟件設計與開發范例6篇

前言:中文期刊網精心挑選了軟件設計與開發范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。

軟件設計與開發

軟件設計與開發范文1

關鍵詞:DIY;心理健康教育;測評軟件

中圖分類號:TP311.52 文獻標志碼:A 文章編號:1673-8454(2014)20-0073-02

從事學校心理健康教育,常遇到心理測評。對于個體測評而言,手工操作簡單量表(SAS、SDS等)尚能應付,稍復雜的(SCL―90等)就感到煩與累了,16PF、MMPI等則望而生畏且準確性還難以保證;對于團體測評來說,手工幾乎難以實現,市售軟件價格較高,電腦移植不方便,查詢分析不能滿足個性需求??煞馜IY網頁呈現、即插即用、滿足特殊需要的心理測評軟件?本文將與同仁分享。

一、心理健康教育測評軟件開發的一般方法

DIY心理健康教育測評軟件可通過建立便攜式數據庫網站實現。[1]

1.前期準備

(1)知識準備。我們將要做的工作是建立一個數據庫網站,事先應找到ASP和DreamWeaver兩類書籍以備用。

(2)軟件準備。建立網站(制作網頁)需要相應軟件作平臺,這里主要是制作網頁的軟件(如DreamWeaver)和編譯軟件(如NetBox等)。

2.軟件開發

心理健康教育測評軟件(數據庫網站)的一般開發過程如下:

(1)設計“主頁”。主頁有兩大功能――測驗與查詢。測驗就是啟動量表讓被試回答問題,查詢則報告測評結果。用“超級鏈接”指向“問卷”網頁實現測驗功能;通過口令(設置密碼)進入相應的“查詢”網頁。

(2)制作“問卷”網頁。將測驗量表制成網頁,讓測題呈現于電腦屏幕,前面再加上學生的基本信息。制作時答案分別處理,單選題用“單選按鈕(radio)”,多選題用“復選框(checkbox)”,學生基本信息則根據情況選用“文本框(text)”等表單元素。學生基本信息、答案在網頁上供被試輸入或選擇,在電腦后臺分別對應相關變量。

(3)建立數據庫。建立數據庫存放測評信息,可用ACCESS或EXCEL新建一個數據庫文件,一般應考慮學生基本信息(學號、姓名、性別、年齡、測驗日期與時間等)、回答信息(被試選擇的答案)、其它信息(檢驗是否重復提交)等,其數據結構(字段名稱、類型、長度等)要與上步中答案變量相應(不是相同),以便建立數據聯系。如果制作MMPI(至少399題)測驗,許多非大型的數據庫目前還無法突破255個字段,而EXCEL2007版不受此限。

(4)接收數據。建立一個專門網頁,使用ADO數據訪問技術訪問數據庫,再用SQL(主要是Insert語句)將被試回答的內容有序存入相應的數據表。此網頁以后臺運行為主,前臺一般不向用戶呈現信息(特殊情況提醒除外)。

(5)制作“查詢”網頁。查詢網頁是接受用戶查詢要求,并將其轉換為相應查詢命令的網頁。前臺供用戶選擇查詢條件,后臺則將其轉為相應變量。此步的關鍵是將用戶的查詢條件(后臺的相應變量)轉換成SQL的SELECE語句。

(6)制作“測評結果”網頁。根據量表測評規則(積分法、常模及解釋等)和用戶要求對數據進行統計和分析,以網頁或打印的方式將測評結果展示給用戶。結果展示方式多種多樣,以數據呈現較容易,即將相應數據顯示到網頁上,但不夠直觀。而以圖形方式則一目了然,如EXCEL,它能以圖形(條形圖、折線圖、餅圖等)直接呈現,也可采用相關軟件(如VBChart、ASPChart等)輔助制作。查詢內容一般有查詢被試答案、查詢分量和綜合分析報告等。如“中小學生心理健康測驗(MHT―CR)”可以數字表現分量,也可以折線圖表現分量,報告可以批量,也可以個別;再如“大學生人格問卷(UPI)”結果分別以第一類、第二類和第三類報告被試信息;SCL―90結果既有曲線,也有數字,還有文字分析與建議。此步工作隨用戶需求難易程度差異較大。

制作網頁時,凡是與數據相關(無論是存入還是查詢)的網頁,都要創建(如與之間)與數據庫的連接,以便對數據庫進行操作。

3.編譯打包

網頁運行要有支撐平臺(瀏覽器),還須有引擎才能啟動。網上有多種類型的引擎,各有特點。它們體積小,速度快,如綠三角AWS、綠四葉SERVICER(新生命專用)和紅色字母b的Netbox。

源文件一般都是各自獨立散布的,既不便于移植,更不利于產權保護。利用相關軟件可以將它們編譯成文件數量少、體積小且可以獨立運行的文件。編譯軟件較多,如Netbox,國產軟件,網上可下載,使用有說明。啟動Netbox可以將所有網頁(不含數據文件)編譯成一個引擎文件(EXE文件,一般不足1M),配上相應的數據文件便可使用。編譯后的軟件置于U盤,即插即用,尤其適用于局域網,也可放在網站上。

二、心理健康教育測評軟件專項功能開發

心理健康教育測評軟件(數據庫網站)可根據需要開發多種功能,舉例如下。

1.建立心理檔案

對于一些規模較大的學校(學生數千),可根據需要將相關心理量表(如“卡特爾人格特質(16PF)”等)做成問卷網頁,收集學生的心理特征數據,建立心理檔案數據庫。為保證學生提交答卷的有效性,可(用JS語句)設置“限制與提醒”,對于每題必答測驗,如有漏答題則不讓提交答卷,并將光標自動移到該題處,讓被試重新回答;如問題“與你童年一起生活的有:A.父親;B.母親;C.祖父;D.祖母……X.以上都不是”,有些能同時選擇,而有些則不能。軟件應自動查找矛盾回答,適時提醒被試選擇或更正。

2.建立本體常模和心理健康統計學標準

許多著名心理量表因無適用常模而被束之高閣。具有一定規模的學校或區域可將某個測試群體(2000或3000以上)作為常模團體,通過標準化操作來收集數據,經過統計處理(平均值與標準差)得到常模,作為個體的參照常模。

心理健康統計學標準認為,健康心理是圍繞某一群體的心理健康常模,在兩個標準差(2S)范圍內不斷上下波動的相對平衡過程。[2] 有了本體常模,就可以用A(平均值)和S(標準差)表示健康心理的統計學標準:上限為A+2S,下限為A-2S。

3.用于個案(或同質群體)研究

以心理量表的某個或幾個分量的界限值作為查詢(SELECT語句 中WHERE子句)條件,提供相應個案(或同質群體),如將MHT―CR中的“對人焦慮”和“過敏傾向”分量作為條件查詢個案(或同質群體)。

4.評估心理健康教育效果

將相應的心理量表制成網頁問卷,收集相關數據,評估學生的心理健康教育效果。

5.預測(預警)危機

將適合學生的心理健康水平評估量表制作成網頁,對學生進行普測,再以相應的標準設定界限,如前述的心理健康統計學標準,對數據進行分析、預測,并對超出正常范圍的個體提出警示。

6.選擇專業(高考志愿)、規劃職業生涯

可用16PF對高考生作測驗并分析,看看哪些專業適合,并預測大學學業成績。也可用霍蘭德(HOLLAND)職業興趣測驗,以供高考生作多種選擇或職業生涯規劃。[3]

7.評估睡眠狀況

升學壓力大,許多學生睡眠不足,特別是高中生,可以用匹茲堡睡眠質量指數(PSQI)編制相應網頁,供學生自我評估睡眠質量。

三、注意事項

1.使用期限

軟件成熟得有個過程,一般要經歷試用與改進、使用與完善幾個循環才相對“健壯”。因此,最好設個期限,到時自動失效,再更完善的軟件。

2.適用范圍

心理健康教育測評軟件的針對性很強,應當明確它的適用范圍,譬如MHT―CR是專門用來測評中小學生心理健康狀況的,不可用作其它目的,更不可強行對學生進行測評。

四、結束語

DIY心理健康教育測評軟件不難,只要肯在看書與上網兩方面下功夫??磿D―品嘗“筵席”,上網――享用“快餐”。看書是學習系統理論,掌握一般方法,上網是學習前人(網友)如何解決千變萬化的現實難題,二者相輔相成。想讓心理健康教育測評得心應手,還是DIY吧! 參考文獻:

[1]姚宏程.便攜式數據庫網站的一種建立方法[J].中國教育信息化(基礎教育),2011(4).

軟件設計與開發范文2

中圖分類號:TP317 文獻標識碼:A 文章編號:1671-7597(2014)04-0019-01

使用C++語言進行跨平臺的開發,目的是把應用程序的代碼處理成能夠在已有的平臺下使用和能執行文件。但是在其他平臺中,處理后的文件不可以被使用,特別在Windows與Unix平臺下更不能使用。所以,要解決和處理這個缺陷,就要將源程序的代碼翻譯成在各個平臺下都能使用的文件。通過幾十年的發展和演變,C++語言基本上能夠在所有的平臺下進行工作,但是在不同平臺下的編譯也會不同,也造成了語言之間的不同。同樣的,設計一個新產品就要對操作系統的函數進行使用和調用。因此,要避免這種區別就要在代碼中使用條件選擇編譯、進行工程模式編譯或可以使用預編譯。各種平臺使用的程序編譯手段也是不一樣的。要使在不同平臺下進行程序編譯時出現最小的差別就要手動對編譯條件的設置控制或管理。使用腳本文件和環境變量,還可以使用第三方軟件對代碼進行動態編譯,這樣就能使跨平臺開發的難度簡化。

1 跨平臺的概念

在軟件開發中有個很重要的概念就是跨平臺,跨平臺和操作系統無關也與硬件環境不相關聯。如果一個應用程序是在操作系統下開發和設計的,那把它放在其他操作系統中也能使用。隨著軟件工程的發展對跨平臺開發的需求也在不斷的增加,所以要開發出能夠在各種各樣的平臺下都能使用的應用程序,就能為應用程序創造很大的市場份額。

2 跨平臺的開發所需要的環境

軟件編輯器、程序編譯器和程序調試器是構成開發環境的三個組成部分。Sandbox是進行代碼編譯和調試的軟件,其內部含有各種平臺下需要的不同種類的依賴庫和代碼庫。在程序的開發中它還含有各種源代碼。它的配置對多元化的平臺的要求也是很高的,通常講,C/C++語言的軟件開發和編譯要在各個平臺上能夠使用,還要注意以下問題。

1)最終結果的質量:Sandbox中所選擇的工具是否能夠產生最好的代碼。是否能夠產生最簡潔,最友好的配置文件以及在捕捉錯誤和調試時是否能夠提供足夠的支持。

2)Sandbox中含有的工具是否可以使應用程序與多元性的目標平臺進行合理的整合。

3)創立的Sandbox是不是可以使管理更加的簡單,即能否在不同的平臺進行變換時出現最小差異的文件。

對跨平臺開發來說實現抽象是很重要的一個因素,但是利用與平臺相關的工具包也需要使用相適應的工具。這些開發工具往往并不是統一的,比如Linux上流行的GCC在Windows下的使用并不如VisualStudio.nct中的C++。要達到這個目的,就要把用抽象以及相關的設計使用新的開發手段進行開發,實現在不同的平臺下都能進行編譯。

3 C++語言的跨平臺軟件開發的設計

3.1 避免語言的擴展特性

不管我們依據哪一種形式的方法進行編程,一般要選擇比較老的程序庫或文件。比較老的程序庫里面的一些原有程序和公式都是很規范的和標準的,不像現在的一些新的程序庫一樣比較的雜亂無章。有非常普遍出現的故障在跨平臺上產生,有時在獲得支持后,還是會出現沒有定義精確的事故。跨平臺開發是對異常靈敏度要求很高的,無限度的利用新特性,就會使軟件很難排除異常情況。所以,在跨平臺開發時要調用C++的標準函數模型,這樣就會使已開發的軟件和產品的穩定性更加強。

3.2 實現動態處理

在實際的開發過程中,每當編寫一個旨在多種環境中運行的可移植代碼庫時,項目的開發就會不可避免的面臨一個問題,即怎樣處理在一個平臺上有而在另外一個平臺上沒有的特性。

3.3 使用腳本文件進行管理

要達到使編寫的程序代碼簡潔、易懂的目的,要使軟件的結構更加的合理,這就要求先把與平臺相關聯的文件和數據庫分割開來,再把在開發期間要用的腳本文件進行編譯,再合理的分到各個部位。在使用應用程序時,要把配置文件里的配置選項調出來進行讀取里面的程序。因此,當跨平臺軟件開發時,要使與平臺相關聯的文件全部進行分離,要利用特殊的手段來實現該功能。

3.4 使用安全的數據串行化

如何使用安全和可靠的對數據進行存儲和加載是跨平臺要解決的核心問題。利用軟件的“fwrite”或“fread”指令可以對每個編譯器和單一目標平臺處理。若果是在跨平臺的操作環境中,利用這種方法對數據進行存儲和加載就不能做到平臺間的獨立性。如果要利用跨平臺對數據存儲到目標文件外,不同平臺間是有差異的,這樣也會引起結果的多樣性。

3.5 跨平臺開發中的編譯與測試

當進行跨平臺軟件開發時會與修改和編寫的很多代碼有關聯,相關聯的代碼會在很長的時期內不能在另外的平臺檢測,也會造成bug的潛藏時間增長。所以,要在多個不同的平臺下進行測試,這樣就能及時發現bug。

3.6 實現抽象

實現抽象是處理跨平臺中應用程序能被移植難題的有效方式。通過這種方式我們就能不利用一般的結構體系而進行單獨的軟件開發,同時還能夠使編出的程序更加的獨立化和簡潔化。當對跨平臺進行開發時,會有非常多的函數要進行利用,但是開發時不用編譯所有的函數,通常使用的方法是封裝,這些就是實現抽象的過程。封裝的方法并不是在任何情況下都是適用的,當遇到一些特殊的情況時,我們要使用其他的方式來進行程序的調用,我們提前可以將編寫好的功能程序存放到程序空中,并以該功能命名,當我們使用該程序或公式的時候,可以直接調用該功能的程序,便可以實現該功能。不管選用哪一種方式無非是對任意接口函數與平臺中的聯系進行隱藏。

4 結束語

本文主要介紹了跨平臺的定義和進行跨平臺設計所需要的環境以及怎樣進行跨平臺設計。在進行跨平臺設計的過程中我們結合了其他軟件設計的一些思路和方法,經過大量的軟件設計實踐,得出了一套跨平臺設計的方法和手段。與此同時我們還要在開發的軟件中加入更多的功能和操作容積。對跨平臺進行設計而言,經驗是很重要的,經驗越豐富的設計工程師設計的軟件的功能會越好一些,沒有經驗的工程師,在首次設計時很難利用跨平臺設計一個非常完美的應用軟件。所以,本文介紹了跨平臺軟件設計的一些技術,希望可以為跨平臺的開發的設計工程師提供一些幫助。

參考文獻

軟件設計與開發范文3

【關鍵字】自動化測試;ATS;軟件開發平臺;通用測試系統

一、引言

傳統的ATS(Automatic Test System),即自動測試系統的軟件設計方法中,要求測試人員面向測試儀器進行編程操作,測試軟件則根據被測試的代碼段的要求進行編程。這種軟件設計方法有著層次分割不清的問題,容易將系統軟件和測試軟件的功能混淆,增大測試程序、測試儀器以及被測對象的關聯性,嚴重降低了測試代碼的可移植性。另外,傳統的測試方法中,測試功能比較單一,由于測試代碼已經被固化,因此測試功能得不到優化升級,缺乏靈活性。

目前,ATS得到了飛速發展,自動測試系統的單一、專用功能正在向通用的多元化功能方向發展。但是,如何實現測試軟件的通用性仍然是一個急需解決的問題。本文以通用性ATS軟件開發平臺為研究對象,提出了通用型ATS軟件開發平臺的框架結構和設計方法。本文設計的通用性ATS軟件開發平臺能夠有效地幫助測試人員提高維修以及測試工作,并且具有較高的推廣價值。

二、通用性ATS軟件開發平臺的結構和功能

通用性的ATS軟件開發平臺主要的功能,是提供給用戶一個通用性的測試軟件開發工具,通過該軟件開發平臺運行測試系統的開發過程。通用性的ATS軟件開發平臺的功能一般分為如下五類:第一類,能夠對測試資源進行動態的配置和重構;第二類,能夠對測試對象的硬件資源進行初始化、掃描以及初始化等功能;第三類,為測試程序提供完備的開發與調試的空間;第四類,給測試程序提供強大的數據處理功能;第五類,對系統的消息系統,例如中斷、觸發等等,而且還能夠滿足系統資源并行處理。

三、通用性ATS軟件開發平臺的相關技術

IEEE1232的標準是將ATS體系結構進行層次劃分的標準。通用性ATS軟件開發平臺要求與NxTestATS的框架對接。如何實現接口標準的規范、組件技術、軟件的統一開發過程以及UML技術均是設計通用性ATS軟件開發平臺的關鍵技術。另外,本文研究的通用ATS軟件開發平臺主要是基于STD標準?;赟TD標準的開發關鍵技術,能夠利用C和C++等通用的程序設計語言開發基于信號的組件。在測試的時候,這些基于信號的組件可以進行信號操作,并且這些組件為TPS提供了可移植性能。

四、通用性ATS軟件開發平臺的設計

本文針對基于信號組件的通用性ATS軟件開發平臺進行研究與設計。本文給出的通用性ATS軟件開發平臺主要由信號組件、接口框架、測試儀器信號驅動器以及資源管理器構成。其中,信號組件則作為獨立的COM組件,并且COM組件作為資源管理器以及儀器信號驅動的父類組件。下面探討了每個功能組件的功能描述。

信號組件中,每個信號組件與一種信號進行一一映射,信號的類型可以參考STD標準。具體的功能,首先是將客戶程序的輸入信號的信息進行存儲,并儲備為儀器信號驅動的調用參數。其次是能夠存儲測試的結果,測試的應用程序進行吊調用。

接口框架中的功能描述為,將面向信號的儀器驅動接口的方法與屬性進行定義,為其他組件的調用做準備。

資源管理器中,作為應用程序與儀器驅動信號驅動的中間層次,能夠利用檢索儀器的XML文件,進行儀器的查詢,并且能夠創建具體的儀器信號驅動程序。

作為儀器信號的驅動功能是進行測試的實現,通過對底層儀器驅動函數的封裝,實現具體儀器信號測試的功能。

結束語

本文首先針對傳統的ATS以及當前的通用性ATS進行比較,深入分析了通用性ATS的優勢,詳細闡述了ATS軟件開發平臺的功能與結構,對通用性ATS的相關技術做了深入的探討,最后給出了以面向信號為基礎的通用測試軟件開發平臺的設計。該通用性ATS軟件開發平臺具有廣泛的應用范圍,并且能有積極的提高測試人員的維護以及測試工作效率。

參考文獻

[1] 葉海明,周紹磊,王昆平. 通用測試系統軟件平臺設計[J]. 國外電子測量技術. 2010(02):111-113.

[2] 戴豪民,牛雙誠,張光軼,武恒州. 面向信號自動測試系統信號組件的設計[J]. 現代電子技術. 2012(05) :224-226.

軟件設計與開發范文4

關鍵詞 :網絡課程;案例;樹型結構

中圖分類號:G642 文獻標識碼:B

1引言

在開放教育和遠程教育中,網絡教學正被越來越多地使用,開發適用于網絡教學的高質量的網絡課程已經成為發

展網絡教育的一個非常重要的課題。

《現代遠程教育技術標準體系和11項試用標準(簡介)》中對網絡課程進行了定義。網絡課程是通過網絡表現的某門學科的教學內容及實施的教學活動的總和,它包括兩個組成部分:按一定的教學目標、教學策略組織起來的教學內容和網絡教學支撐環境。

“軟件工程”課程是本科計算機專業的一門重要課程。在當前的教學中,特別是開放教育和遠程教育中還存在著很多欠缺,案例太少,或者各章中的案例相互割裂,使得學生學完該課程之后無法形成整體的軟件工程概念和思想。因此設計和開發貫穿整個教學過程的案例成為“軟件工程”網絡課程的必然選擇。

2 “軟件工程”網絡課程的教學內容設計

2.1以案例為中心

當前的計算機相關專業實踐教學環境存在諸多薄弱環節,特別是在軟件工程教學中,很難為學生提供一個全面的感性認識。而當前的教學是離散的過程,沒有提供一個完整的商業軟件的實例來講解商業軟件開發的全部過程。經過調查研究、綜合對比和專家論證,我們選擇了某

軟件公司的商務軟件“應急系統”作為整個軟件工程網絡課程的案例。選擇該軟件的原因是該系統在Windows平臺上基于C++開發,而C++是大部分計算機科學與技術專業的學生都學習過的第四代開發平臺,不足的地方是部分學生不了解應急系統。在教學內容設計中我們先對此公司“應急系統”的相關知識作了簡單介紹,然后把軟件工程的各個階段與該軟件的相關內容進行了一一映射和組合,公開了大部分相關設計和源代碼。

2.2兼顧面向過程和面向對象

當前軟件設計與開發的手段一般采用面向過程和面向對象這兩種方法。雖然“應急系統”是采用面向對象方法設計的,但是我們補充了面向過程的設計內容,這樣學生通過比較,既能熟悉和了解面向過程和面向對象的設計方法,又增強了理解,從而獲得了比較好的教學效果。

3網絡課程支撐環境的設計

3.1總體結構

系統設計應由上而下進行。首先設計總體結構,然后再逐層深入,直至進行每一個模塊的設計。總體設計主要是在系統分析的基礎上,將整個系統劃分為若干子系統,子系統則由若干模塊組成。數據的存儲以及整個系統實現等方面都進行了合理的安排。圖1所示為“軟件工程網絡”課程開發與設計的總體結構圖。

3.1系統開發平臺――Dorado MVC架構

Dorado全稱“Dorado Web應用開發套件”,包含:Dorado Web UI控件集及UI引擎(Dorado Web UI Components and UI Engine),Dorado可視化集成開發工具 (Dorado Studio),Dorado MVC開發框架和Dorado Web應

用框架。其中Dorado MVC開發框架的主要功能有:提供類似Struts的MVC開發框架,以便更加方便地利用Dorado套件進行基于MVC架構的開發;提供性能監控控制臺,可以方便地對系統運行過程中各功能點的運行效率進行統計和分析;支持國際化資源配置;支持模塊化配置。Dorado MVC開發框架是一個可選件。Dorado套件完全支持各種第三方開發框架,如Struts、WebWork等。我們利用Dorado與目前較為流行的Struts+Hibernate+Spring進行協同開發。

3.2系統主要模塊算法與設計

(1) 集合混淆算法

客觀題測試用于學生自測。題目是隨機排列的,順序與數據庫的存儲順序不同,它使用了Java.util.Collections中的shuffle(List list)方法來實現,下面是其在JDK 6.0中的算法和代碼。

使用指定的隨機源隨機更改指定列表的序列。所有序列更改發生的可能性都是相等的,假定隨機源是公平的。

此實現向后遍歷列表,從最后一個元素向前一直到第二個元素,將隨機選擇的元素重復交換到“當前位置”。元素是從列表中隨機選擇的,從第一個元素運行到當前位置。

此方法以線性時間運行。如果指定列表沒有實現RandomAccess接口并且是一個大型列表,則此實現在改組列表前將指定列表轉儲到該數組中,并將改組后的數組轉儲回列表中。這避免了二次型行為,該行為是因為在適當位置改組一個“有序訪問”列表而引起的。

private static Random r;

public static void shuffle(List list) {

if (r == null) {

r = new Random();

}

shuffle(list, r);

}

public static void shuffle(List list, Random rnd) {

int size = list.size();

if (size < SHUFFLE_THRESHOLD || list instanceof RandomAccess) {

for (int i=size; i>1; i--)

swap(list, i-1, rnd.nextInt(i));

} else {

Object arr[] = list.toArray();

// Shuffle array

for (int i=size; i>1; i--)

swap(arr, i-1, rnd.nextInt(i));

// Dump array back into list

ListIterator it = list.listIterator();

for (int i=0; i

it.next();

it.set(arr[i]);

}

}

}

(2)DES加密算法

由于客觀題的隨機排列,使得試題的排列次序與數據庫中有所不同。同時,考慮到通過逐條在數據庫中查詢來校驗答案對數據庫的壓力過大,所以事先查詢出試題的答案,然后根據打亂后的試題次序把正確答案拼成一個字符串,然后加密放到頁面的隱藏域中。這樣一來,當提交試題查看結果時不用再次查詢數據庫,只要把答案字符串解密,然后分割成數組校驗即可。

這里的加解密采用了DES算法。

DES算法的入口參數有三個:Key、Data、Mode。其中Key為8字節共64位,是DES算法的工作密鑰;Data也為8字節64位,是要被加密或被解密的數據;Mode為DES的工作方式,有兩種:加密或解密。

DES算法是這樣工作的:如Mode為加密,則用Key去把數據Data進行加密,生成Data的密碼形式(64位)作為DES的輸出結果;如Mode為解密,則用Key去把密碼形式的數據Data解密,還原為Data的明碼形式(64位),作為DES的輸出結果。在通信網絡的兩端,雙方約定一致的Key,在通信的源點用Key對核心數據進行DES加密,然后以密碼形式在公共通信網(如電話網)中傳輸到通信網絡的終點。數據到達目的地后,用同樣的Key對密碼數據進行解密,便再現了明碼形式的核心數據。這樣便保證了核心數據(如PIN、MAC等)在公共通信網中傳輸的安全性和可靠性。

下面是加密算法的部分代碼(解密原理類似):

public class DesEncrypt {

private Key key;

/**

* 根據參數生成KEY

*

* @param strKey

*/

public void getKey(String strKey) {

try {

KeyGenerator _generator = KeyGenerator. getInstance("DES");

_generator.init(new SecureRandom (strKey.getBytes()));

this.key = _generator.generateKey();

_generator = null;

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 加密 String明文輸入,String密文輸出

*

* @param strMing

* @return

*/

public String getEncString(String strMing) {

byte[] byteMi = null;

byte[] byteMing = null;

String strMi = "";

BASE64Encoder base64en = new BASE64Encoder();

try {

byteMing = strMing.getBytes("UTF8");

byteMi = this.getEncCode(byteMing);

strMi = base64en.encode(byteMi);

} catch (Exception e) {

e.printStackTrace();

} finally {

base64en = null;

byteMing = null;

byteMi = null;

}

return strMi;

}

/**

* 解密 以String密文輸入,String明文輸出

*

* @param strMi

* @return

*/

public String getDesString(String strMi) {

BASE64Decoder base64De = new BASE64Decoder();

byte[] byteMing = null;

byte[] byteMi = null;

String strMing = "";

try {

byteMi = base64De.decodeBuffer(strMi);

byteMing = this.getDesCode(byteMi);

strMing = new String(byteMing, "UTF8");

} catch (Exception e) {

e.printStackTrace();

} finally {

base64De = null;

byteMing = null;

byteMi = null;

}

return strMing;

}

(3) 章節維護算法

本網絡課程中的課程章節、目錄均為樹形結構,其數據模型采用了樹的模型,然后通過遞歸從根開始逐層遍歷顯示每個節點,便于導航學生學習。

下面是顯示樹形結構的代碼,由于樹形結構的顯示使用了ExtJs(Ajax)框架來渲染,所以代碼最終將產生JavaScript代碼的字符串,交由ExtJs框架完成最后顯示工作。

public String getExtTreeString(String prexHref ,String target ,boolean allowEdit ) {

......

//查詢根節點(包含子節點層次)

Course rootWithHierarchy = treeNodeDao. getTreeRootWithHierarchy();

StringBuffer rootInfo = new StringBuffer();

//構造ExtJs的樹形代碼

appendInfo(rootWithHierarchy , rootInfo);

StringBuffer treeInfo = new StringBuffer("new Ext. tree.AsyncTreeNode(" + Constants.PLACEHOLDER + rootInfo + ")");

return ExtUtil.formatExtStr(treeInfo);

}

private void appendInfo(Course node , StringBuffer buf){

if(node == null) return ;

//如果是葉子節點,構造葉子信息

if(node.getIsLeaf()) appendLeaf(node,buf);

//如果是目錄,構造目錄信息

else appendFolder(node , buf);

}

private void appendFolder(Course node , StringBuffer buf){

buf.append(",{text:'" + node.getText() + "',");

if(allowEdit){

buf.append("href:'"+prexHref+node.getId()+"',");

buf.append("hrefTarget:'" + target + "',");

}

buf.append("id:'" + node.getId() + "',");

buf.append("leaf:false,");

buf.append("children:[" + Constants.PLACEHOLDER);

//遍歷子節點,構造子節點信息

for(Course child: node.getChildren()){

appendInfo(child , buf);

}

buf.append("]}");}

private void appendLeaf(Course node , StringBuffer buf){

buf.append(",{text:'" + node.getText() + "',");

buf.append("id:'" + node.getId() + "',");

buf.append("iconCls:'user',");

buf.append("href:'"+prexHref + node.getId() + "',");

buf.append("hrefTarget:'" + target + "',");

buf.append("leaf:true");

buf.append("}");

}

從上述代碼中可以看出,首先找出(包含子節點信息的)根節點,然后通過appendInfo方法來產生ExtJs的JavaScirpt代碼,appendInfo會根據節點類型(葉子或目錄)來調用appendLeaf或appendFolder方法,其中appendFolder首先生成該目錄的信息,然后逐個顯示子節點信息,子節點又會調用appendInfo方法。就是這樣遞歸的調用,形成了最終的字符串,然后通過服務器傳到表現層,通過ExtJs來顯示整棵樹。

4結束語

我們在設計和開發“軟件工程”網絡課程時,采用基于案例的教學內容設計,同一個案例貫穿所有章節,增強了學生對知識點的掌握和理解。開發環境采用Dorado MVC架構(Struts+Hibernate+Spring),獲得了好的效果。這種開發模式與傳統MVC的開發模式比較,其最大的優勢在于可以節省開發人員在開發Web應用表現層式的工作量,同時又為用戶提供非常友好的交互界面。

從表1中可以看出,本文采用的方法在開發工作量、用戶界面、軟件可擴展性等三個方面都具有相當大的優勢。

本網絡課程的設計和開發是從教學內容和網絡教學支撐環境兩個方面展開的,已在教學中使用一年,收到了較好的教學效果。特別是課程章節采用樹型結構,使得學生在自主學習的過程中獲得了更好的導航效果,提高了學習效率。下一步的工作是多增加藝術性方面的內容,尤其是媒體素材設計方面。

參考文獻:

軟件設計與開發范文5

 

因此,開發一套具有通用性并能克服上述不足的權限管理軟件來確保信息系統的信息安全是十分必要作。本文基于B/S架構,設計開發了一套權限管理軟件。該軟件用戶體驗性強,客戶端無需下載控件,能同時支持多種數據庫;實現了按一定的組織結構訪問網頁,確保信息系統安全。

 

1 軟件設計

 

1.1軟件整體設計

 

權限管理軟件設計是基本文由LWlm.cOm收集整理于角色的訪問控制(Role-Based Access Control,簡稱RBAC)設計模型。RBAC是美國NIST于20世紀90年代初提出了一種基于角色的訪問控制模型。其核心思想是:不是直接將用戶和權限進行關聯,而是引入“角色”概念,將代表行為的權限和角色相互關聯,角色與用戶相互關聯,用戶和權限通過角色而間接關聯。

 

在軟件具體設計中,首先通過系統的域驗證來保證用戶合法性;域驗證通過后,從數據庫中讀取該用戶具備哪種角色,然后根據用戶的角色,來確定該用戶可以訪問的頁面;最后將這些頁面生成菜單,從而實現權限管理的功能。

 

1.2軟件體系架構的設計

 

在軟件體系架構設計中,采用分層式結構,添加了Model層,并將數據訪問層做了一定程度上的擴展,具體軟件體系架構圖1所示。

 

表示層:是系統的展示部分,負責用戶與整個系統的交互。表示層僅僅包含頁面上控件的邏輯代碼,只與界面上的元素有關,而與系統的業務邏輯無關。

 

業務邏輯層:是整個系統的核心。它與這個系統的業務邏輯相關。在權限管理軟件中,業務邏輯層的相關設計主要涉及到頁面、角色和菜單處理的業務邏輯。如果涉及到數據庫的訪問,則調用數據訪問層。

 

數據訪問層:其功能主要是負責數據庫操作。該層包括DAL接口、DAL工廠、Oracle Dal、SqlServer Dal以及最后產生的Model層。該數據訪問層中完全采用了“面向接口編程”的思想。抽象出來的IDAL模塊,脫離了與具體數據庫的依賴,從而使得整個數據訪問層更加有利于數據庫遷移。只需添加一個相應數據庫版本的DAL并且實現IDAL接口即可連接到各種數據庫。業務邏輯層和表現層不需要任何的改動,從而提高了代碼的復用率。

 

實體層:該層主要將數據庫中定義的表映射成程序可以訪問的業務實體,并且只定義實體的屬性,并無實體的行為。該層由數據訪問層產生,貫串了業務管理層和表示層。權限管理系統主要涉及的實體有:用戶類、頁面類和角色類等。

 

1.3系統功能設計

 

權限管理軟件主要包括四個模塊:用戶管理、頁面管理、角色管理和菜單管理。

 

1.4系統數據庫設計

 

數據庫設計是軟件開發過程中的基礎環節。良好的數據庫設計不但有利于提高系統的整體性能,而且也方便將來使用過程中的數據維護。權限管理軟件數據庫設計達到了第三范式(3NF),這種設計能夠有效保證數據的完整性和參照完整性,同時降低數據的冗余度。

 

2 軟件實現

 

該軟件實現了與域無縫集成。用戶登錄后首先通過域驗證來確保登錄用戶的合法性。這樣既方便了用戶,避免用戶記住多個用戶名和密碼也保證了系統的安全性。

 

在權限管理系統中,利用了C#中DLLImport直接調用Windows已經存在的域驗證功能。DllImport所在的名字空間是 using System.Runtime.InteropServices。

 

MSDN中對DllImportAttribute的解釋是這樣的:可將該屬性應用于方法。DllImportAttribute 屬性提供對從非托管 DLL 導出的函數進行調用所必需的信息。作為最低要求,必須提供包含入口點的 DLL 的名稱。

 

3 軟件應用

軟件設計與開發范文6

【關鍵詞】pcap文件格式;數據包分析;流量統計;網絡協議

1.引言

隨著網絡維護規模的加大,網絡技術的變化,網絡關鍵數據的采集也越來越困難。有時為了分析和采集數據,必須能在異地同時地進行采集,于是將協議分析儀的數據采集系統獨立開來,能安置在網絡的不同地方,由能控制多個采集器的協議分析儀平臺進行管理和數據處理,這種應用模式就誕生了分布式協議分析儀。這種分布式協議分析儀是未來網絡安全分析和研究的一個重要發展趨勢。網絡測量作為一種收集網絡運行數據和分析網絡協議運行狀態的重要手段之一,在幫助網絡管理人員分析網絡異常的原因方面發揮了重要的作用。

2.本文研究內容

本課題針對網絡數據包的捕獲和分析技術做了比較深入的闡述。設計并實現了一個基于Pcap的實時網絡數據包捕獲和協議統計分析系統。該系統WinPcap網絡數據包捕獲機制,對流經網絡的數據包進行監測和統計分析,系統提供了網絡數據包的抓取和分析功能。

本文研究與開發一套用于中小規模網絡系統的網絡監控軟件,重點考慮對網絡故障的分析功能,設計并實現了一個基于WinPcap的實時網絡數據包捕獲和協議統計分析系統。該系統在RTFM流量測量框架體系結構上,采用WinPcap網絡數據包捕獲機制,對流經網絡的數據包進行監測和統計分析,并通過多線程技術和讀寫緩沖技術,解決了讀取緩沖區中數據和網絡數據到來之間的速度差異:在連續地捕獲數據包的同時,對數據包進行同步地分析和歸類,并進行應用級處理。完成了數據包級和流級的流量指標,包括TCP/IP各層協議分布,包大小分布,前N名的IP主機和主機對分布等;并提供網絡運行狀態的告警指示,可以根據網絡安全管理員設定的特征信息,對具有特征信息的數據包進行分類解析、還原和預警。系統使用了基于五元組的Flow結構,并加入了Hash算法,添加了對TopN主機進行排序的數組,從而提高了檢索和監測效率。有效地解決了目前根據RTFM實現的網絡測量系統,如NeTraMet,存在功能有限、性能不高,并且配置麻煩的局限性。

3.軟件詳細設與計實現

3.1 軟件設計流程

軟件利用VC++與MFC技術設計一個基本的針對PCAP文件格式的網絡數據包分析軟件。界面采用MFC實現一個單文檔的程序,用戶區分為上下連個視圖,上面視圖是一個列表,顯示捕獲的數據包主要信息,信息內容包括:時間、序號、長度、源MAC、目的MAC、類型、端口等內容。下面視圖顯示數據包分析的時間以及數據保存的目錄等信息。點擊文件——打開,選擇一個事先保存好的pcap文件格式數據包如圖1所示:

3.2 網絡協議分析的總體流程

該模塊從緩沖區內讀取數據包,首先對數據包進行分解,然后按照網絡協議對數據包進行解析。并以列表的形式實時顯示數據包的解析結果,包括數據報的包長度、源IP、目的IP、端口、使用協議等相關信息。數據包分析顯示流程圖如2所示:

3.3 分析模塊的實現

被捕獲的數據只要經過解析才能夠對協議的分析提供有用的數據。本模塊就是對捕獲的數據包按照數據鏈路層(MAC)、網絡層(IP, ARP/RARP)、傳輸層(TCP, UDP, ICMP)和應用層(HTTP等)的層次結構自底向上進行解析,并將解析結果顯示輸出。

4.結束語

本文研究與開發一套用于中小規模網絡系統的網絡監控軟件,重點考慮對網絡故障的分析功能。設計并實現了一個基于WinPcap的實時網絡數據包捕獲和協議統計分析系統。系統在RTFM流量測量框架體系結構上,采用WinPcap網絡數據包捕獲機制,對流經網絡的數據包進行監測和統計分析,并通過多線程技術和讀寫緩沖技術,解決了讀取緩沖區中數據和網絡數據到來之間的速度差異;在連續地捕獲數據包的同時,對數據包進行同步地分析和歸類,并進行應用級處理。完成了數據包級和流級的流量指標,包括TCP/IP各層協議分布,包大小分布,前N名的IP主機和主機對分布等;并提供網絡運行狀態的告警指示,可以根據網絡安全管理員設定的特征信息,對具有特征信息的數據包進行分類解析、還原和預警。

參考文獻

[1]謝鰓,張大方,文吉剛.基于WinPcap的實時網絡監測系統[J].湖南大學學報(自然科學版),2006.

[2]WILLIAMSON C.Internet traffic measurement[M]. IEEE Internet Computing,2001,Vol.5(6):70-74.

[3]莊春興,彭奇志.基于WinPcap的網絡嗅探程序設計[M].計算機與現代化,2002.Vol.5:34-36.

[4]趙心宇,朱齊丹,朱達書.應用WinPcap捕獲網絡數據包[J].應用科技,2004,Vol.31(11):29-31.

[5]循序漸進學習使用WinPcap[J].中國協議分析網.http://pafnet,2005.

[6]Charles Hornig.A Standard for the Transmission of IP Datagazns~EthemetNetworks[M].RFC894,1984.

[7]J.Postel,J.Reynolds.A Standard for the Transmission of 1P Datagrams over IEEE 802 Networks[M].RFC1042,198.

作者簡介:

亚洲精品一二三区-久久