時間:2022-04-03 09:46:46
導言:作為寫作愛好者,不可錯過為您精心挑選的1篇軟件開發論文,它們將為您的寫作提供全新的視角,我們衷心期待您的閱讀,并希望這些內容能為您提供靈感和參考。
提要
本文結合筆者實際工作經驗,分析了國內給排水專業CAD軟件開發及應用現狀,探討了給排水CAD軟件開發的原則、思路、方法及步驟等,并給出了開發實例。
一、給排水專業CAD開發應用現狀
在工程設計行業,CAD技術的應用大大提高了設計及繪圖效率。CAD應用軟件的開發也越來越重要。
在給排水設計領域,CAD開發應用起步較晚。有些設計院從八十年代末開始嘗試進行CAD開發,但進展比較慢,多數是圖塊和小型實用程序,在深度和廣度上都存在著差距。從1993年以后給排水CAD開發步伐開始加快。1994年底全國給排水學會和給排水技術情報網組織召開了“計算機技術在給排水專業應用研討會”,對給排水軟件開發起了積極的促進作用。
目前在給排水CAD開發方面已經取得了可喜的成績,尤其是建筑室內給排水方面涌現出一些比較優秀的給排水CAD軟件,如洛陽的一家軟件和北京的幾家軟件。這些軟件都具有計算機輔助設計建筑給排水平面圖、自動生成系統圖、自動統計材料表;進行室外給排水管網計算、自動生成圖形等功能,其中個別軟件已在室外設計和泵房設計等方面有了新的進展。
現有軟件都偏重于民用建筑給排水方面,而且也有待于繼續完善、發展。在給排水的其它領域,由于難度大,投資回報較低,軟件公司還不愿涉足,所以進展緩慢。應用CAD進行給排水及水處理系統的優化設計更是少有人涉足。此外,目前還沒有專業設計CAD軟件的標準和規范。商業化軟件多數都不經過權威部門嚴謹的技術測試和鑒定,所以其數據庫、計算方法、設計方法和生成圖形的準確性還沒有嚴格保障,這一點還可能成為工程設計質量的隱患。
現在設計部門的給排水CAD應用水平也參差不齊。有的購買或自行開發了給排水專業軟件,提高了設計繪圖效率。有的只是在用AutoCAD的簡單命令繪圖,雖提高了CAD出圖率,卻根本談不上利用CAD提高效率。給排水專業CAD應用水平還有待于進一步提高。
目前許多有精力的設計院及研究部門都在研究開發本單位適用的專業軟件及應用程序,但由于開發經驗不足,成績不明顯。本文將結合筆者的工作經驗,著重論述有關給排水軟件開發的原則、思路、方法及步驟,旨在拋磚引玉,促進給排水CAD軟件開發工作。
二、給排水軟件包開發思路及原則
由于現有建筑給排水軟件已經比較成熟,且仍在繼續開發、升級。一般開發者在水平和起點上均與這些軟件開發有一定差距,所以應該購買此類軟件,而著重開發適合本單位使用的實用程序、應用軟件或優化設計軟件。高起點開發者則應在深度及廣度上向更高層次沖擊。
1.給排水CAD軟件開發依據及原則
(1)設計依據為有關設計規范、制圖標準以及設計手冊等;保證數據庫、計算方法和設計方法的準確性。
(2)軟件包開發設計首先要突出專業水平,把專業設計思想轉化為計算機語言是專業軟件包的關鍵所在。
(3)符合設計人員思維習慣及設計習慣,人機界面友好,操作簡單,易掌握。
(4)適用性強,容易修改,容易擴充,容易發展。
(5)盡量使用效率高、功能強的計算機語言及開發工具。
(6)嚴格執行標準化及規范化。
(7)通過自動繪圖以及建立標準圖庫,提高圖紙復用率等途徑,提高設計繪圖速度,真正發揮計算機的優勢,把設計人員從圖板上解脫出來。
2.設計開發步驟
(1)開發適合于給排水專業應用的CAD軟件環境,包括AutoCAD的優化配置及常用專業圖塊及繪圖工具。
(2)開發一些獨立的專業繪圖軟件,發展標準圖形庫,由淺到深,從易到難,逐步提高自動成圖及圖紙復用比例,使軟件包成為覆蓋面廣,功能齊全的專業繪圖軟件包。
(3)開發給排水專業高階段設計方案優化軟件,以及設計、繪圖一體化軟件,逐步成為智能化、自動化程度較高的專家系統軟件包。
3.開發人員配備軟件開發是一項較復雜的腦力勞動,對開發人員要求也較高,專業軟件開發人員大致可分為以下幾個檔次:
(1)初級水平:專業人員掌握一些基本計算機知識及開發工具可以進行一些專業圖塊制作,簡單的實用程序開發。
(2)中等水平:較高專業水平加上較高計算機水平。熟悉專業設計習慣,有較豐富的設計經驗的專業人員,如果掌握先進的CAD開發技術,可以開發出較高水平的CAD應用軟件,可以提高設計效率,特別是可以大大提高繪圖效率。
(3)高級水平:高深的專業水平加上先進的計算機開發技術。在專業方面應該熟練掌握專業基礎知識,有豐富的工程設計經驗,善于總結專業設計思路,發現規律,具有較強的系統工程及方案優化水平。在計算機方面要掌握LSP、ADS、DCL等開發工具(或其它高級開發工具)。這類人員開發專業CAD軟件是最理想的。
由于給排水專業涉及面廣,而且不同行業給排水設計習慣也不盡相同,不可能有軟件可以覆蓋所有給排水領域,適用于所有設計院,所以目前仍然需要分行業、分類進行開發。前述的個別建筑給排水軟件包及開發人員屬于較高水平,其開發設計思路非常值得向給排水其它領域延伸。
4.開發工具(軟件方面)
目前較常用的CAD開發工具主要有AutoLISP語言、ADS、DCL語言以及數據庫處理,也有的開發者使用BASIC、FORTRAN等高級語言與AutoCAD的圖形數據交換接口進行開發;還有用C++開發或用VB等在Windows界面下開發的;此外,網絡技術也越來越重要。
開發CAD軟件,需要非常熟悉Auto CAD命令,以及其中的各參數、系統變量、圖層、圖塊、線形等,這樣才能方便靈活地在程序中執行各種命令,掌握CAD開發技巧,例如圖塊的屬性可以帶許多信息,一條LINE線的厚度可以存入管道的管徑等。此外現在有些軟件使用數據的后處理方式,使軟件和AutoCAD結合得更好,這些技術還需要對AutoCAD圖元數據庫和數據圖形交換等有更深的了解。
AutoLISP是在AutoCAD內部使用的語言,用AutoLISP編輯的程序可以定義變量,對數據進行處理和作出圖形,并可能自定義函數,比較適合搞人工智能工作,特別是它的表處理功能以及遞歸等功能比較獨特,在CAD工作中它可以獨立工作,也可能與DXF圖形交換文件互相配合。其不足之處是速度慢,且程序代碼幾乎無法保護。
ADS是AutoCAD11.0版以后新增加的用來開發應用的一個C語言編程環境。它運行速度快,代碼保護性好,能更有效地利用內存空間以及訪問設備與系統,具有更強大的開發功能。但掌握ADS要比LISP困難,要求開發人員具備C語言編程經驗并熟悉ADS庫中各函數用法。一般商業軟件應該用ADS。
AutoCAD還提 供了可編程對話框(PDB)工具,使用戶可以結合自身專業特點,用DCL語言構造自己的對話框,從而改善界面,提高CAD軟件效率。
目前最流行、最實用的專業CAD開發工具是ADS、DCL,加上少量AutoLISP。
三、開發過程1.專業繪圖環境的開發
(1)AutoCAD的配置及改善
a.選擇AutoCAD版本。目前最常用的是漢化AutoCAD12.0版。但其漢字輸入不太方便,應配上較先進的漢字系統,或用12.0版forWindows(中文)。
b.對AutoCAD系統變量進行重新優化配置及設定,主要包括系統變量及尺寸變量設置,層、線形設置等,使acad.dwg成為理想的樣板圖。
c.對acad.mnu進行優化,將許多常用命令放在最容易拾取的位置或固定位置。專業菜單部分可加入acad.mnu,也可以獨立編寫。
d.利用acad.pgp做簡化命令(10.0版以前的版本可在acad.lsp中用defun函數設定),編寫acad.lsp。
(2)專業繪圖功能
a.專業圖框繪制:可由菜單點取或用屏幕幻燈菜單點取,自動生成各種圖框。
b.專業常用圖塊:由菜單點取生成,自動插入斷線。
c.開發實用的專業繪圖工具程序:如標注標高、管徑、坐標、管道立管、代號、各種管件等的程序,繪制單、雙線管道的程序,生成專業設計說明、圖例、專業詞組的程序,以及文字、線形、線寬編輯和表格操作等實用程序。
d.開發或引進建筑圖繪圖程序。
專業CAD軟件包都應具有高效的繪圖環境,否則一旦自動生成等功能出現故障或不能適用時,用戶就只能用AutoCAD簡單命令來畫圖了。
2.專業繪圖軟件的開發
在專業繪圖環境的基礎上逐步開發一些相對獨立的專業繪圖軟件,逐步形成功能強,覆蓋面廣的給排水綜合軟件包。
目前已開發的較成熟的軟件有:民用建筑給排水CAD軟件包、室外給排水管網計算軟件、給排水管道縱斷面圖繪圖軟件、給排水外部管網設計軟件等。
正在開發,初見成效的軟件有泵房設計軟件、平流沉淀池軟件、機械加速澄清池軟件、和市政管網CAD軟件等。
尚未深入開發,開發難度大,但預期效果好的軟件包括:輻射沉淀池、旋流沉淀池、水塔、綜合管溝、架空管網、過濾間、軟水站、污泥脫水間設計等項目。
給排水軟件開發的另一條思路是發展給排水設備和構筑物的標準CAD圖形庫,從而提高圖紙復用率,這比編制自動成圖的軟件要容易得多。標準CAD圖形庫還可以由權威部門編制后,作為標準圖出版。此外,標準圖還可作為軟件包的一部分,即軟件包可以交互式自動生成圖形,也可以通過自動計算直接調用相應的標準圖。
3.高階段設計及方案優化設計軟件的開發在
利用CAD進行高階段設計及方案優化設計方面,除在民用建筑給排水領域有個別公司研究外,在其它給排水領域中的研究國內還未見到報道。方案優化軟件的難點在于系統化的設計思路和設計經驗向計算機程序的轉化,其中給排水及循環水流程的方案優化模型的建立本身就是給排水設計的一個難題。目前這方面進展緩慢的原因首先是它對開發人員要求高,這一領域的理想人選稀少;其次是給排水專業行業多,領域廣,需開發的軟件工作量巨大,具備這方面精力的研究部門或公司還很少。
總之,給排水專業繪圖軟件包開發是一項艱苦的工作,需要創造一個規模生產,流水線開發的環境,投入一大批高層次的人才。各部門的研究人員既要知難而進,又要避免重復勞動,在各行業、各領域開發出各有特色的實用專業軟件。
四、給排水CAD軟件包開發實例———BYWAT
1.軟件包結構
專業繪圖環境-CA AutoCAD12.0漢化版
AutoCAD配置及改- 系統配置
參數設置
菜單優化
命令簡化
專業繪圖功能-
專業圖框繪制
專業圖塊繪制
專業工具程序
繪建筑圖程序
BYWAT-(2.0)b.
專業繪圖軟件- IS泵及S泵基礎繪圖軟件
水泵底座繪圖軟件
材料表等填充軟件
給水管縱斷面圖繪圖軟件
排水管縱斷面圖繪圖軟件等多常
2.軟件包主要技術特點
(1)符合設計人員設計習慣,簡便易學。
(2)速度快,可提高設計繪圖速度3到5倍。
(3)可由用戶幻燈菜單自動點取專業圖框。
(4)有豐富的專業圖形符號,插入時管道自動斷線。
(5)可方便地繪制建筑圖。
(6)具有各種類型的標高、管徑、坐標等標注功能以及一些方便實用的程序。
(7)繪材料表只需在屏幕菜單中點取材料名稱即可將名稱、材料、單位、標準圖號等填入材料表中的合適位置,序號、數量也特別方便,速度快,輔助功能及提示功能強。如果需要,還可以自動填入單重,自動計算并填入總重。
(8)各型號水泵基礎自動繪制,半自動生成水泵底座圖形,自動計算和生成材料表。
(9)給排水管道縱斷面圖軟件交互式、參數化繪圖,可自動計算,并有輔助功能。
3.專業軟件實例———排水縱斷面圖繪圖軟件
給排水縱斷面圖在冶金給排水設計中約占施工圖總量的近10%,規律性也較強,較適合開發專業繪圖軟件。本軟件原采用LISP語言編寫,由主程序及輔助功能組成,包括程序600多句和幾個圖塊、幻燈等。其中主程序結構較復雜,多處使用循環語句及LISP語言擅長的表處理語句。軟件完全按照冶金設計院設計繪圖習慣及順序設計,操作特別簡單,用戶只需交互式輸入簡單的參數,即可完成完整理想的縱斷面圖。
輸入比例尺后,程序自動繪制排水縱斷面圖表頭。此后按順序輸入節點,節點平面距離、管徑、地面標高、管內底標高、坡度、管材代號、平面示意圖種類后,程序即可畫出這段管及有關的全部文字、圖形,并計算出下一點的管內底標高。以后每輸入一段管的參數,即可畫一段管,與前段管相同不必重新輸入。每個井均可有跌水,軟件還可自動畫出各種平面示意圖。同一表頭內可結束一條管,再給起點畫下一條管。軟件的輔助功能可進行交叉等處理。此外軟件還有較強的容錯功能。
改進以后,加入可編程對話框,每確認一個對話框即可畫一段管,使輸入更加簡潔。軟件還可以從已編寫的數據文件中提取數據自動生成圖形,這也為從外網平面圖直接提取信息生成縱斷面圖打下基礎。
用給排水縱斷面圖軟件繪圖,比手工快5倍以上。
1在設計方面要考慮用戶對軟件的印象
根據調查顯示,網絡用戶在快速閱讀過程中通常會呈現出“F”型的習慣,也就是在特定時間內,用戶迅速瀏覽網站的時候會先看到網站的頂端與左側內容,而中間的內容只能夠被閱讀到一部分。所以我們在設計網站界面的時候可以遵循“F視線追蹤原則”,將各個部門按照主次次序放置到框架之中。如果一個網絡用戶在瀏覽到一個新的網站的時候,如果在三分鐘之內還沒有發現能夠吸引自己興趣的內容,那么這個網站就會100%地失去這個客戶。在近幾年,許多軟件開發公司喜歡用過去的項目模版來設計主界面,這無形中是有利于提高軟件開發速度,并且減少耗費創新技術、思路的時間與風險,然而如果一個軟件產品長期保持一成不變的風格,那么就不會為用戶留下深刻的印象,進而失去市場競爭力。軟件開發商必須要根據商業營銷學的理論,尋找到自己的目標客戶群體,之后根據這個客戶群體的偏好、特征來設計軟件界面的整個風格,讓使用者可以看到產品第一眼后產生一種與眾不同的感受。
2在程序選擇方面要注重優化與處理效率
我們在軟件產品設計的算法方面要注重優化設計,當軟件運行過程中耗時較多就需要我們注意處理、降低廣大用戶在等待過程中的不滿情緒。隨著科學技術的不斷發展,計算機性能與運算速度的不算提升,諸多程序開發工作中將程序運行緩慢的原因歸咎于計算機的問題,不會從自身編程過程找原因,因此軟件開發工作效率較低,許多軟件產品惡評較多,所以我們需要在能夠控制的范圍中優化程序代碼,給予用戶們科學、高效的產品體驗過程。針對一些確實耗費時間的操作軟件,我們可以通過進度條顯示、后臺運行等方式來調整,讓用戶心理上順暢。筆者曾經有幸親自參觀了某通訊公司新任務的運行體驗,工作人員每次點擊用戶的查詢請求,在系統返回的時候需要幾秒鐘甚至幾十秒鐘,使得該公司用戶抱怨數量眾多,而這正是缺乏優化功能的原因。
3產品功能設計要結合人性化與靈活性的特征
傳統設計受到信息化社會發展的影響,使其正處在改造進程的關注對象。當前計算機發展所帶動的現代技術發展并沒有到達高潮,但是計算機作為理想化的設計工具,正在逐步改革自身的設計途徑、方法、過程,并逐漸邁向到數字化設計的時期。如果我們說數字化是現代社會的發展特征,那么人性化的設計就是對這種存在具象的詮釋。我們在產品設計過程中,盡管存在著模塊化設計的理論,但是作為產品設計者的我們不能忘記軟件產品最終是為大眾服務的,必須要將用戶體驗過程放在首要位置。另外,在軟件產品設計過程中,要注重業務模塊之間相互搭配的靈活性屬性,不能盲目追求大眾的操作形式。在廣大用戶使用計算機產品過程中,隨著人們的個人喜歡與聚焦點不同,使用產品的方式也是具有差異性的。筆者曾經設計過一套工程方面的預算系統,部分用戶關注最后的造價,而另一部分用戶關注的是建筑材料的使用狀況,側重點不同導致自身操作步驟也是不同的,因此我們在設計產品過程中需要注意到這一點。
4結束語
隨著科學技術的不斷發展,用戶對于計算機軟件設計水平的需求不斷提高,軟件開發工作者務必要對目標群體進行深入性研究分析,要真正地了解到用戶群體喜歡什么樣的軟件,需要什么樣的軟件,關注什么樣的團結,從每種軟件的運行界面、使用功能、運用條件等諸多方面來實現軟件的優化設計,站在用戶的角度來面對軟件的多個問題,只有遵循這樣的原則,才能夠滿足諸多用戶群體的需求,開發出優質的軟件。
筆者所在學院的軟件工程系是成立于2005年的新專業,為校級特色專業。近年來,隨著對軟件工程特色專業建設進程的推進,課程體系日趨完善。針對軟件工程學科具有理論多且實踐性極強的特點,本系較大幅度地加大了實踐類課程和環節所占的比例,“軟件開發設計實訓”便是其中很重要的一門實踐課程。由于軟件工程學科發展速度很快,在軟件產業不斷發展,全國對高素質的軟件人才的需求量激增的形式下,迫切需要研究和探索實踐類課程的教學模式,激發學生學習興趣,以更有效的手段和方式提高教學和指導質量,為培養更加符合社會實際需要的軟件開發人才打下堅實基礎。在我校教改基金的資助下,依托軟件工程教學團隊,本文對將軟件工程應用于“軟件開發設計實訓”課程的教學模式及主要措施進行探討。
1 選擇適當的軟件工程過程
“軟件開發設計實訓”課程的主要目的是使學生學會用面向對象的設計方法設計實際系統。結合軟件工程學科的發展和應用現狀,軟件開發過程主要采用rup(rational unified process,統一軟件開發過程)的方式組織軟件開發。rup是風險驅動的、基于use case(用例)技術的、以架構為中心的、迭代的、可配置的軟件開發流程。
rup分為初始、精化、構造和交付四個階段,各階段涉及多種工作流【1】。rup的核心工作流主要包括:
需求捕獲工作流:需求捕獲通過對問題的理解和分析,確立問題涉及的信息、功能和系統行為,將用戶需求精確化、完全化。需求的焦點主要在初始和精化階段,在精化階段后期,需求捕獲的工作量大幅下降。
分析工作流:分析的主要工作開始于初始階段的結尾,和需求一樣是精化階段的主要焦點。精化階段的大部分活動是捕獲需求,分析工作與需求捕獲在很大程度上重疊。
設計工作流:設計的主要工作是位于精化階段的最后部分和構造階段的開始部分的主要建模活動。系統建模最初的焦點是需求和分析,在分析活動逐步完善后,建模的焦點開始轉向設計。
實現工作流:實現(實施)是關于把設計模型轉換成可執行代碼的過程。從系統分析師或系統設計師的角度看,實現工作流的重點就是完成軟件系統的可執行代碼。實現工作流是構建階段的焦點。
測試工作流:測試是一項相當主要的工作。測試工作流貫穿于軟件開發的整個過程。它開始于軟件開發的初始階段,而細化階段和構造階段是測試的焦點。測試是為了找出程序中的錯誤與缺限,而不能證明程序無錯。
rup就像一個元過程,通過對rup進行裁剪可以得到很多不同的開發過程,非常靈活,所以可以將其按本課程需要進行精簡,從而把深奧的理論指導融入具體軟件項目的開發設計中,讓學生更加深切地體會到什么叫學以致用,消除畏難情緒,培養和增強在軟件開發設計中自覺遵從軟件工程思想的習慣。本課程使用的case(computer aided software engineering,計算機輔助軟件工程)工具集采用sybase公司的powerdesigner。
2 將有價值的軟件工程知識引入課堂,教學采用項目貫通案例
為讓學生在中小規模的實訓項目中也能體會到較大型項目通常會用到的一些軟件工程技術,讓本課程更有實用價值,教師需要對學生補充一些軟件工程相關知識,包括:設計模式、架構設計、類的持久化以及數據庫設計、面向對象實現以及文檔的書寫這四個方面。
為配合上述四個方面的軟件工程相關知識的介紹,教師采取“項目驅動的案例教學”方法【2】,在課堂講授中引入一個完整的、規模適中、難易適度的軟件項目案例。該案例需要通俗易懂而又具有實際意義,涉及的應用領域應該是學生較為熟悉的,這樣理解起來更為容易。以此案例完整的開發設計過程為主線,借助這個貫穿整個課程教學進程、文檔齊全的完整案例來將軟件項目開發設計過程中的各個環節串連起來,著重展現上述四個方面的知識運用,讓學生熟悉和掌握軟件開發設計的具體實施步驟和技術。
3 學生實踐環節分小組按項目方式進行
由于在本實訓課程之前學生已經學習過一門先導課程:“軟件需求分析實踐”,所以可以把學生仍然按照在“軟件需求分析實踐”課程中的各小組成員組成來進行項目分組,這樣各小組便可將該課程中的最終成果——《軟件需求分析規格說明書》作為本課程的起點來進行,需求捕獲工作流便只需粗略進行。由于本課程側重于軟件開發過程的分析工作流和設計工作流,對實現工作流和測試工作流也只作粗略涉及。
每個項目小組通常為3到5人,分組時采用了優勢互補的方式,注意合理搭配,盡量讓每組各個成員具有不同的優勢能力,并讓其民主推選一名組長負責組內的組織和協調【3】。
教師的項目貫通案例教學分階段間插在學生實踐過程中,每介紹一個階段的rup理論,就緊跟幾次課的學生實踐環節,如此交替進行,當教師的教學案例施教完畢,學生的項目也同步進行到最后階段。
項目進行中模仿軟件公司的例會形式,定期由項目小組長召開小組討論會(如每周一次),對最近這段時間的項目進展情況和技術問題進行討論。每個開發設計階段結束時教師均要求各小組給出相應的文檔,且每個階段完畢要進行一個模擬的里程碑式的評審(教師參與作為評審團的一員)【4】。
教師還應在課程即將結束的最后課時中對各小組的項目完成情況及普遍存在的共性問題作一個分析總結,并讓各小組組長總結本組項目完成的經驗教訓,以利于同學之間取長補短,活躍思維,提高分析總結問題的能力。
4 依托教學團隊,理論及案例部分采用輪流授課法
筆者所在的軟件工程系于2009年底成立了軟件工程教學團隊。團隊兼顧了職稱、學歷、教學、科研的合理搭配,由有大型項目開發和管理經驗的老教師提供指導來提升年輕教師的教學能力,并讓其參與到科研項目中積累項目經驗。本課程的任課教師均由該團隊中選出。本課程所用的《軟件開發設計實訓指導書》的編寫由各任課教師分工完成,每人負責完成一章內容。本課程每個教學班安排30人左右,各教學班的教師全程負責該班整個課程的實踐指導環節。而理論及案例講授部分的教學則采用輪流授課法,實施方案是每個階段的課堂講授由編寫實訓指導書的相應章節的教師對全體教學班集體授課,其他教師同時到場輔導。具體各階段的課堂講授內容安排如下:
1)rup總論以及課程概述
2)設計模式
3)常用的軟件架構風格及適用情況分析
4)對象持久化與數據庫設計
5)面向對象實現及文檔編寫與整理
對應進行的學生的各階段實踐任務如下:
1)按既定方式確定各小組成員和組長,并且重新審核各組在先導課程“軟件需求分析實踐”中的最終成果《軟件需求分析規格說明書》,進一步完成分析模型,得出用例圖,分析類圖,序列圖及協作圖。這一階段學生需提交分析模型文檔。
2)按照設計模式重新設計類。這一階段學生需完成兩個任務:一是實現設計模型中的具體設計類,具體要求學生:使用設計模式和機制;創建初始設計類;確定持久類;定義類可視性;定義操作;定義方法;定義狀態;定義屬性;定義依賴關系;定義關聯;定義內部結構;定義泛化關系;解決用例沖突。二是完成用例實現的設計,主要設計模型內的協作關系,以設計類及其對象為基礎,描述各個特定用例的實現和協作。這一階段學生需提交設計模型、類圖和用例實現。
3)完成架構設計。這一階段學生需要設計包結構,完成系統設計模型圖的實現子系統、接口設計類及架構模型(組件圖),重新審查用例模型,得出用例模型的架構視圖。這一階段學生需提交子系統設計文檔、接口設計文檔及架構模型文檔。
4)根據持久類以及數據庫知識對數據庫進行設計(包括字段編碼設計)。這一階段學生需提交數據庫設計文檔。
5)本課程的最后階段。完成實施模型(部署圖);完成界面以及輸入輸出(報表等)設計;完成具體子系統的編程工作,并進行二次迭代重新審核前面的設計部分;整理測試報告;整理文檔并編寫軟件使用說明書。這一階段學生需提交組件圖、部署圖、輸入輸出設計說明及具體子系統代碼執行程序。
5 考核方式強調過程考核,開發設計能力與書寫文檔能力并重
本課程的實訓目標是使學生能綜合運用所學的知識進行中小型應用項目的軟件開發設計。為此,我們提出了本課程考核的指導思想:重視實訓過程,看重軟件開發設計能力的提高,采用復合考核的方式,課程成績由平時考核、過程考核和項目驗收答辯成績組成。重點突出“會不會做”,強調對學生的實際開發設計能力考核,同時注意防止輕視書寫文檔的觀念。這種考核方式不但能更客觀地反映學生的學習情況,還能引導學生有意識地加強軟件開發設計技能的培養,開發設計能力與書寫文檔能力并重,更利于達到預期的教學效果。本課程具體的課程考核成績組成如下:
1)平時成績*10%(考勤成績*50%+小組開發設計工作中的合作精神表現*50%);
2)階段考核成績*60%(五個階段,各階段的能力表現及提交的文檔各占20 %);
3)項目驗收成績*30%(項目文檔匯總整理占50%,項目答辯50%)。
6 結束語
“軟件開發設計實訓”課程是軟件工程專業實踐類課程中非常核心的一門,其實踐性和綜合性都很強,能集中訓練和提高學生進行軟件項目開發和設計的實際技能。其教學實施過程不應被視為只要學生針對項目要求能編寫出相應的軟件即可,而更應注重軟件開發設計過程的方法和技能的培養,以培養具有軟件工程思想的真正符合社會需求的軟件人才。本課程應緊隨軟件工程學科的發展而不斷更新。在今后的課程開展過程中,其教學模式和措施還需要不斷創新、總結和改進,需要持續不斷地研究和探索。
21世紀是計算機化、信息化的時代,在這個時代,計算機網絡成為信息傳輸媒介,軟件開發技術成為計算機未來發展的導向。為了滿足計算機網絡對軟件不斷增多的需求,軟件開發技術必須不斷發展,才能為構建完善的計算機網絡系統提供可能。
1 計算機軟件開發技術概述
計算機軟件主要指系統軟件、應用軟件。系統軟件是監控、管理和維護計算機的軟件,比如操作系統和自檢程序等。而應用軟件則是解決用戶具體問題的軟件,比如人事管理軟件和學習管理軟件等等。不管是系統軟件還是應用軟件,都為用戶提供了利用計算機代替或簡化一種計算機的工作環境,對于用戶來說,接觸計算機其實是接觸計算機軟件。早在20世紀五六十年代,計算機軟件的開發多是手工方式,這種軟件開發技術不僅出錯率較高、生產效率低下,而且不能滿足軟件生產需要。隨著商品化、大型化軟件的開發,人們意識到計算機軟件的開發需要規范的文檔來確保程序設計、調試和運行。到了20世紀八十年代,人們將軟件工程定義為:實現計算機程序功能采取的規則、方法及與之相關聯的文檔和在計算機上運行程序所需的數據都是計算機軟件。
軟件工程的發展大體經歷了程序設計時代、軟件時代和軟件工程三個時代。以建筑工程開發為例,可以看出計算機軟件開發過程與建筑工程開發有較大的差異。建筑工程開發過程中,設計藍圖設計之后,之后的每一步都不存在回溯的問題,但計算機軟件工程在開發的過程中,每一步都有可能經歷多次的修改、適應等回溯問題,另外,軟件開發成功投入使用后,要考慮到軟件運行和維護的問題等等。
2 計算機軟件開發技術的重要性
軟件開發技術是軟件工程較為關鍵的技術之一,對計算機網絡發展有著極大的助推作用,計算機軟件開發技術能夠促使計算機網絡技術的創新,使一些網絡支持、遠程控制成為可能。軟件開發技術的應用使得計算機網絡形成開發性、共存性的一種網絡模式,對于計算機網絡的發展有促進作用。計算機軟件開發技術的應用解決了軟件開發落后計算機網絡需求的問題,隨著軟件開發技術的不斷提高,軟件的安全性、可靠性和便捷性也有了較大的提高。上述的計算機軟件開發重要性推動了計算機軟件開發技術的應用。
3 計算機軟件開發方法
目前,計算機軟件開發方法主要有原型化方法、軟件生命周期法和自動形式的系統開發方法三種。原型化方法:軟件開發之前要進行嚴格定義和預說明,要求用戶及軟件開發人員對系統整體功能及信息需求有全面、深刻、準確的認定。如果用戶給出的軟件目標不能詳盡描述輸入處理及輸出需求,或者軟件開發者不能確定算法效果、系統適用性或未來使用的人機界面形態,此時,適合采用原型化方法進行軟件開發設計。軟件生命周期法:軟件生命周期法從時間角度出發對軟件開發、定義、維護等問題分解成若干階段,每一個節段的開始和結束均有標準。軟件生命周期通常由6個時期,也就是6個階段。自動形式的系統開發方法:這個方法是利用第4代技術[3]中的軟件作為開發工具,其要求軟件開發者說明軟件實現的內容和目標,而不需要說明如何實現,這種開發方法根據系統的要求自動設計和編碼。
4 計算機軟件開發技術的應用
計算機作為一個工具,計算機軟件開發者的存在使為了讓計算機能更好地服務于人類,因此計算機軟件開發技術要真正實現其應用價值才能被稱得上成功。這里我通過一個計算機軟件開發實例說明計算機軟件開發技術的應用價值。采用兩種方式開發兩個產品,其中第一個產品是運用vb6.0+acess、單機版運行模式進行開發設計,第二個產品是運用web+xml+activex和高級數據庫服務器進行開發設計。現利用兩種產品分別安裝客戶機端,其中,采用第一個產品的話,在客戶機可直接安裝,因為vb虛擬機和acess驅動均是微軟歷史版本,所以系統可自動兼容;采用第二個產品的話,在客戶機要安裝activex組件,這時,要更改瀏覽器安全設置,這就要求客戶端安裝第二個產品的時候需要多個安裝步驟。客戶端安裝成功后,經過一段時間運行,第一種安裝方法運行穩定、無問題,若需備份還原數據或修復安裝,用戶可單獨完成,缺點是隨著客戶端使用時間的增長用戶數據越來越多,在客戶端運行后期運行速度會下降,這時需要人為轉檔。而第二種安裝方法在安裝、運行上受瀏覽器安全設置或系統操作版本的限制,給用戶的使用帶來了一定的不便。這兩個例子引起軟件開發者對問題的認知。計算機作為一種工具,其存在是為了更好地服務于人類,目前,計算機已經成為大眾化工具,計算機軟件開發者不能要求使用計算機的工作人員都是專業化人才,因此,在計算機軟件開發的過程中要根據需求、實際情況進行投入和開發。在計算機軟件開發中要本著“以人為本”的理念,體現軟件的易用及功能強大。
5 結束語
計算機軟件以硬件為載體,是計算機思想的體現,其處理大量的邏輯、信息,為人們提供一種方便、快捷的信息處理手段。在當前這個信息化時代,軟件開發技術有極大的應用價值,因此,科學運用計算機和軟件開發知識,以期通過較少的投入獲 取高質量、高效率、滿足人們需求的軟件產品,對于推動現代化、信息化發展大有裨益。
論文關鍵詞:軟件開發技術 網絡教育 重要性
論文摘要:隨著計算機技術在教育領域的廣泛應用,網絡教育應運而生。軟件開發技術的日趨完善為網絡教育飛速發展提供了技術支持。本文從軟件開發技術與網絡教育的關系角度闡述了軟件開發技術在計算機網絡教育中的重要性。
計算機自20世紀40年代誕生以來,經過近二十多年來教育技術的發展,已經向社會的各個領域滲透。隨著計算機應用的普及、深化,計算機軟件技術的規模越來越大。1968年,北約組織的一次研討會上提出了“軟件工程”一詞。今天,隨著網絡教育的不斷發展,軟件工程的重要性也隨之突顯出來。
1 計算機軟件開發技術的發展過程
軟件開發是一個非常復雜的過程,軟件開發技術的發展經歷了漫長的歷史階段。在軟件開發的初期,人們對軟件開發的認識主要集中在“軟件危機”的解決辦法上。20世紀60年代末k.w.dijkstra提出的結構化程序設計技術曾被看作是克服“軟件危機”的靈丹妙藥,但面對大型軟件系統,系統的重要性、穩定性、擴充性卻難以實現,20世紀70年代產生的面向對象方法,給軟件工程產生了活力。對象管理組織omg在1997年11月將幾經修改的uml正式作為基于面向對象技術的標準建模語言,從此又經不斷發展、推新,uml目前已成為可視化建模語言事實上的工業標準。
隨著soa體系結構的產生以及case技術的不斷發展,軟件工程技術日趨成熟,發生了質的飛躍,對現代網絡教育產生了深遠的影響。
2 現代網絡教育的特點
隨著計算機技術在教育領域的廣泛應用,網絡教育應運而生,相對傳統教育模式而言,網絡教育的出現不僅是對傳統教育形式的有益補充,同時隨著時代的發展,網絡教育也越來越呈現出自身的優勢,其特點明顯體現為:促進了教育形式的變革,實現了傳統面授教育向網絡遠程教育的過渡;促進了教育資源的有效利用,實現了由傳統的書本、紙介文字學習材料向多媒體課件、學習軟件、網絡資料等教學資源轉變,最大限度地有效利用學習資源;促進了學習者自主學習,實現了學習者根據自身學習時間和知識基礎設計學習計劃,獲取知識的自主方式;促進了教學管理的自動化,實現了教學管理的軟件化、平臺化,提升了管理水平和工作效率。
3 軟件開發技術對網絡教育的意義
網絡教育的飛速發展依賴于大量計算機軟件的開發和技術發展,軟件開發技術為實現并發展網絡教育提供了操作平臺和技術保障。
3.1 教育資源庫的開發為網絡教育提供了資源儲備
目前,我國的教育資源庫開發模型有很多種,資源的內容和采集的模式得到了極大的豐富,為網絡教育提供了充足的資源儲備。各類學科資源庫、開放式教育資源庫、資源中心等教育資源與資源數據庫緊密結合,大大提高了資源管理的效率。改變了傳統的教育資源庫脫離數據庫而造成數據不可重復使用,數據關聯性弱和人工浪費的現狀,使教育資源儲備形成了快捷、高效、安全的良好發展態勢。
3.2 教育管理軟件的開發豐富了網絡教育的管理手段
技術進步不僅推動人類文明的發展,同時也給教育提供了學習的新知識,對教育觀念的轉變起到積極地促進作用。教育管理軟件的開發豐富了教育的管理手段,使教育的管理方式由傳統的認為管理向軟件化、信息化管理轉化,有效地提高了管理效率,提升了信息準確率,同時也極大地方便了管理信息的存儲和備份。隨著教育管理軟件的普及、應用,也間接地促進了教師和學校管理人員的現代教育技術水平的提高。
3.3 學科分類軟件的開發使網絡教育更具針對性
學科分類是教育教學資源內容劃分的基本方式,它能夠將每一學科根據類別劃分并進一步細化知識點,促進知識的拓展。因而,在網絡教育中學科分類軟件的開發與應用對學科分類細化和突出網絡教育針對性具有積極的促進作用。學科分類軟件的廣泛應用促進了課程資源的整合,使整個學科類別和知識的層級劃分更加合理清晰、條理分明,結合不同學科的知識特點,更好地突出學科個性。學科分類軟件的應用,在細化知識分類的同時也為學生構建了良好的知識資源環境,為教師與學生間的教與學的過程提供了依托平臺,促進了互動交流。在這一過程的循環中,也能夠較好地體現教師的教學風格,突顯教學個性。這也是網絡教育的重要特點。
3.4 輔助教學軟件的開發使網絡教育更具靈活性
軟件輔助教學是現代教育理論倡導的新型教育模式。輔助教學軟件的大量開發和實踐應用使網絡教育具有更加靈活的教育方式,突顯網絡教育的時代特色。同時教學軟件的廣泛應用有利于促進學生學習自主性的培養,豐富的教學軟件資源使學生根據自身特點制定學習計劃、選擇學習內容、把握學習時長、掌控學習進度,極大地調動了學生自主學習的積極性;有利于學生自學能力的培養,培養了學生自我教育、自我管理、自我服務的良好意識,提高了有效獲取知識的能力。
4 結論
網絡教育開創了現代教育開放、交互、自主、和諧的教育新模式,適應了現代教育的發展變革,軟件開發技術為網絡教育的發展提供了有效技術依據。實踐證明,隨著計算機應用的普及和網絡技術的廣泛應用,依托于計算機網絡的軟件開發技術將以多形式、多層次、多角度發展態勢,在教育領域乃至人類學習、工作、生活等全方位面臨更加廣闊的發展未來。
達芬奇,是文藝復興時期一位意大利籍、極富創新精神的科學家和藝術家;如今在半導體領域,它是強大視頻軟硬件技術的代名詞,是ti德州儀器又一soc開發的心血結晶。
德州儀器dsp業務發展經理鄭小龍說,“達芬奇”(davinci)平臺的推出,旨在讓客戶成為“數字視頻的創意大師”;希望客戶能通過達芬奇平臺,更好地實現數字視頻的創意,這也是此平臺命名的初衷。鄭小龍介紹說,面向不同的應用,達芬奇平臺目前共有三大家族;首先問世的是dm6446,它包括arm9和c64+內核,以及視頻協處理器和視頻前端,并具有豐富的外圍和網絡接口,適合做講求視頻效能的編解碼工作。
ip可視電話的開發便是其一。需要同時對影像和聲音進行編解碼,且對“雙向通信”的要求高。它的另一個典型應用是高端攝像機,需內置支持d1視頻壓縮碼流的編解碼功能(25幀/秒),以及支持h.264的視頻前端,才能獲得清晰圖像。第二個系列是dm6443,它是履行“裁減藝術”的低成本達芬奇平臺。雖然同樣包括arm9和c64+內核,但主要側重在d1解碼的輸出功能。最后一種是專門針對數碼相機所推出的dsc系列,鎖定其低功耗和靜態影像的特性,特別強化電源管理增強型芯片和jpg2000算法部分,并對高端功能進一步進行裁減。同時由于其屬于最終消費品,故而也特別注重對高速總線的支持。
強化組態配置功能 加快設計速度
上市時間永遠是數字多媒體產品研發團隊工作壓力的最大來源,特別是soc化之后,系統的硬件成本雖然顯著降低,但固件開發的復雜度也因而提升。如果沒有適當的工具協助,研發團隊可能得耗費數周以上的時間在整合并最佳化各種固件模塊的工作上。以手機系統設計為例,由于硬件的整合度已經很高,因此研發團隊在手機硬件設計上花不了太多時間,反倒是手機的軟件與固件的編寫與整合,占據了整個手機開發流程中大多數的時間。
在davinci這種高度整合的硬件平臺上,開發團隊也會面臨相同的問題。因此德州儀器在最近所推出的軟件開發套件中,提供了一套expressdsp組態配置套件(configuration kit),讓開發人員可以把多個獨立軟件模塊整合成一個系統可執行的輸出文件,這能為他們省下數個月繁雜耗時的手動整合工作。這套組態配置工具還能針對特定規格產生一組量身訂制的編碼解碼器,這不僅簡化程序代碼的重復使用,開發人員也有更多時間利用他們的工程資源為產品增加更多功能與價值。
此外,鑒于嵌入式系統采用linux操作系統已經成為風潮,在新版開發套件中,ti也從善如流地為davinci平臺的核心──dm644x處理器提供一套數字視頻最佳化linux操作系統。除了操作系統之外,此平臺也包含一套由montavista提供并通過系統測試和實際考驗的視頻應用最佳化linux電路板支持套件。使用此平臺的廠商將直接從ti取得montavista操作系統和devrocket整合開發環境的使用授權和支持,他們可借此取得業界最豐富的linux應用資源。
視頻codec一應俱全 系統開發更容易
除了硬件效能與成本具有競爭力之外,完善的軟件開發工具環境與龐大的第三方支持社群,一直是德州儀器能夠穩居手機應用處理器市場與dsp器件市場的關鍵。在針對視頻應用設計的達芬奇平臺推出后,ti也正試圖將以往帶來成功的策略復制到新平臺上,同時以更積極的做法來深化其市場優勢。去年9月達芬奇產品正式發表,初試啼聲之后,日前另一波達芬奇效應高潮宣告來臨!
隨著ti這套兼備音頻/視頻、語音/影像編碼格式的全集成開發套件問世,將有效減小數字視頻系統的設計復雜性。此次的開發套件由3個部分組成:
expressdsp配置工具:利用首款優化的數字視頻配置工具,盡可能減小設計工作的復雜性。
數據可視化工具:利用首款全面的圖形系統可視化工具實現設計效率與性能的最大化;這套首創圖形系統可視化技術可幫助實現系統互動分析、負載分布分析、瓶頸隔離、意外狀態識別、基準應用性能,并可在同一圖象上同時顯示arm與dsp的任務運行情況。
montavistalinux主板支持套件:充分利用首款針對達芬奇數字視頻而精心優化的linux內核加速應用開發,既可獲取montavista經過驗證且通過系統測試的內核與devrocketide以進行linux編程,并可直接從ti獲得認證與支持。
細心的讀者想必會納悶:為什么要刻意區別“音頻/語音”,以及“視頻/影像”呢?我們同樣也向ti提出了這么一個疑問。鄭小龍的回答是:因為目的不同。動態視頻的質量指針是編解碼,而靜態影像是的關鍵詞在“像素”;同理,音頻看重的是“壓縮率不能太低”,但單純的語音應用卻想盡可能地把碼流降到最低,因此有必要加以區別。
除了在組態配置與操作系統方面提供更完善的支持之外,ti與其開發社群在davinci平臺上所提供的codec種類與數量也正在快速提升。從圖3就可以看出,目前能在davinci平臺上執行的codec幾乎已經完整涵蓋所有視頻應用。此外,為加速先期推廣,ti在推出此款開發套件時,同時也祭出60天免費評估計劃。所有ti自行研發的編解碼軟件將免費提供給采用davinci平臺的客戶免費評估60天,讓客戶的研發團隊可以對各種視頻編解碼算法的效進行深入評估之后,再決定是否要掏錢購買。在這60天內,如果客戶需要相關技術支持,ti的授權軟件供應者也將提供4小時免費的支持服務。
1 項目可行性和建設目標
1.1 編寫目的
互聯網行業對人才的需求量巨大。由于軟件行業是當前平均薪酬最高、需求增長最快的行業,不少年輕人并沒有考慮自身的特點,盲目地跨進了這一行業而深感無所適從。同時不少公司也為如何選擇有潛力的軟件精英而傷透腦筋。
優秀的軟件從業人員在認知風格上表現出顯著的群體特征。他們大多具有很強的推理能力、重組信息的能力和用計算機語言描述思維的能力。如何科學地量化這些特征,事關整個社會人力資源的合理分配和效益發揮。
本軟件的設計與編寫正是為了測評軟件開發人員的認知風格,通過對軟件設計人員的認知風格的研究來挖掘其顯著特性,以便為人們在專業選擇、職業選擇、職業教育、公司人才甄別和培訓(根據認知風格進行有目的的培訓)等方面提供指導和幫助,從而促進軟件行業更健康、持久地發展。
1.2 理論基礎
賴丁和雷納給出一個結構模式[1],開發了一套認知風格的綜合測評系統——認知風格評測系統(csa)。此系統直接測量“整體/分析”和“言語/表象維度”的兩端,由3個子測驗構成[1]。第一個子測驗通過每次呈現一個要求判斷“對”和“錯”的陳述,來測試“言語/表象維度”。測驗中關于認知范疇的信息的陳述和描述外觀的題目的陳述各占一半。賴丁假定表象型的個體由于物體相對容易被表征成心理表象,能夠迅速獲得用于比較的信息,從而對外觀性的陳述做出的反應更快。同時假定言語型個體對認知范疇的項目的反應時間會更短,計算機記錄對每個項目的反應時,并且計算“言語/表象”比率。低比率反應的是言語型,高比率反應的是表象型,居于中間位置的被認為是雙重型。筆者采用這種方法,要求個體必須既閱讀言語型項目,又閱讀表象型項目,以便于閱讀能力和速度同時得到測試。
另外的兩個子測驗用于評估“整體/分析”維度。其中的第一個子測驗的項目要求個體判斷成對的復雜幾何圖形是否相同。假定“整體型”的個體對這種任務的反應可能相對較快,其中的第二個子測驗的項目要求被試通過按兩個有標記的鍵中的一個,來指出作為參考的簡單幾何圖形是否包含在復雜的幾何圖形中。假定“分析型”的個體把簡單圖形從鑲嵌它在內的復雜幾何圖形中找出來的速度相對要快些。在進行這一子測驗時,計算機同樣要記錄反應時,計算整體加工與分析加工的比率。低比率反應了整體性加工傾向。顯然,高比率反應了分析性加工傾向,介于兩者之間的比率被稱為“中間型”。
由于在做這些測驗時,被試并不知道該測驗記錄反應時,他們就能以一種輕松的方式接受測試任務,反映出他們通常加工信息的方式。由于使用比率,總體的反應速度并不影響風格的測試結果。在賴丁的研究[2]中給出了開發相應的csa的背景資料。
1.3 改進與實現
假定軟件從業人員的認知風格在某維度更偏好些,采取ali reza rezaeia(2003)[3]等人對csa系統的建議,根據csa的測試模型進行修正后制定了具體的4個子測驗。小組的成員對csa測試系統進行改進,設計了一個“軟件行業從業人員的認知風格測試系統”。
賴丁的csa系統的“表象維度”的測試是用文字描述的,這可能使表象型的被試先要進行“言語/表象”的轉換,增加對每個項目的反應時。考慮到這一點,在測試系統的設計中,將表象測試題設計為用圖形來呈現。顯然,這將提高“表象維度”的測試效度。
考慮到測試時系統主要是根據“反應時”作為衡量不同風格的依據,筆者首選c#系統進行編程。用c#語言工具設計出用于測試軟件人員認知風格的系統,將4個子測驗進行綜合測試。由于在做這些測驗時,被試并不知道該測驗記錄反應時,這樣他們就能以一種輕松的方式接受測試任務,從而反映出他們通常加工信息的方式。由于使用了比率,所以總體的反應速度并不影響風格的測試結果。軟件開發人員認知風格偏好評測系統如圖1所示。
2 業務和功能需求分析
2.1 總體功能模塊
本系統主要完成4個主模塊,即被試信息管理、試題項目管理、四個分測評和統計分析。其中四個分測評包含兩個維度的四個分測試,即整體/分析維度和言語/表象維度的四個分測試。
2.2 被試信息管理
被試信息管理是用于記錄被試信息,便于隨后的統計與分析的,所以應該具備被試的職業背景選擇、性別、成長環境和學習偏好等相關數據。
2.3 四個子測驗
1)“表象維度”測試。第一個子測評是以圖形方式呈現的對外觀認知的項目,用來測試“表象維度”。假設表象型的個體由于物體相對容易被表征成心理表象,從而對圖形題干將會做出更快的反應,并且從這些表象中能夠直接而迅速地獲得用于比較的信息。樣題如圖2所示,要求被試盡快反應出右邊的字母是否是左邊字母平面旋轉的結果。
2)“言語維度”測試。第二個子測驗包含認知范疇的信息來測試言語維度。言語測試題如:“服法:每日服四片,日服三次。兒童減半,或遵醫囑。溫開水送下”,表明兒童每天要服6片。言語型的個體對認知范疇的項目反應時間更短,因為表象型的個體需要先將抽象的言語轉換為形象來表征。計算機記錄被試對每個項目的反應時。
3)“整體維度”測試。第三個子測驗包含有成對的簡單幾何圖形組(如圖3所示)。此子系統要求個體判斷同一組的圖形是否相同,從而用來評估整體維度。
4)“分析維度”測試。第四個子測驗項目包含一個簡單圖形和一個復雜圖形(如圖4所示),它要求被試在復雜圖形中找到簡單圖形用來評估分析維度,這一子測驗所考察的是個體對包含在復雜圖形里的簡單圖形的識別能力。它假定分析型的人在這一作業中做得更快。
2.4 被試認知風格所屬區間
測試時,系統會隨機從每個子測驗的測試題目中選擇10個題目共組成40題。由于測試中考慮到被試對題目可能沒有興趣,或者大多數題目沒有經過大腦的認真思考就回答會影響測試分析的最終結果,因此必須對測試卷的有效性進行合理判斷。如果一個測試的每一個項目的錯誤率達到30%,系統可判定該測試卷為無效試卷,不計于有效樣本。
3 結語
系統在被試測試開始過程中,記錄下被試對每一個子測驗的各個項目的反應時,然后通過計算言語和表象平均反應時的比率,作為整體加工與分析加工比率值。低比率反應了整體加工傾向,高比率反應了分析加工傾向,界于這兩者之間的比率為中間型。同理,計算出言語和表象反應時的比率。低比率反應了言語維度傾向,高比率反應了表象維度傾向,比率界于這兩者之間的屬于中間型。
計算機應用軟件開發中編程語言的選擇研究
隨著社會的發展,應用軟件在我們的生活中所發揮的作用越來越大。對于軟件開發企業而言,這既是機遇也是挑戰,如何提升軟件開發的效率和質量,進而提升企業的競爭力成為了當前的一個重要課題。這種背景下,做好計算機應用軟件開發中編程語言選擇的研究有著重要的意義。
1 常用編程語言分析
了解常用編程語言的特征和優缺點既是我們進行語言選擇的前提,也是保證我們編程工作順利開展的有效手段。
1.1 c語言:c語言是介于高級語言和匯編語言之間的語言,也被我們稱之為中級語言,它集中了匯編語言和高級語言的很多優勢。在最初的時候,c語言主要應用于unix系統,后來隨著人們對其強大性的認識越來越多,到了上個世紀的90年代,這一語言已經成功的應用到了其他操作系統之中。它一直屬于最為優秀的編程語言之一。
具體來說,c語言的特點主要可以分為以下幾個方面:首先,c語言屬于結構化語言,因此,它具有非常清晰的層次,對于我們使用模塊化的方式進行程序的組織非常有利,也便于維護和調試。其次,c語言中不僅數據類型以及運算符非常豐富,還能夠對內存中的物理地址進行直接的訪問,方便我們進行位操作。第三,它的效率非常高,而且移植性比較強,因此,能夠移植到各種計算機上,這就方便形成很多版本的c語言。第四,由于可以利用c語言實現位操作以及字節操作,因此,相當于利用這一語言能夠實現部分匯編語言的作用。最后,c語言編寫的代碼具有較高的質量,而且程序在執行起來效率比較高。
1.2 c++語言。1986年,at&t貝爾實驗室開發出來了c++語言,主要是利用數據封裝來減少程序變量的不利影響,進而提升程序的可靠性。它的多繼承機制可以更好的對對象的行為及屬性進行描述,雖然c++屬于c語言的擴展,但是,我們可以將其作為一種全新的語言對待。
c++語言的特點主要有:面向對象、封裝、繼承以及多態性。具體來說,由于c++語言屬于c語言的擴展,所以,它具有很多c語言的特點。另外,在c遠的基礎上,c++加入了面向對象的編程思想,這就是其能夠更好地適應當前大規模項目的需求,舉例來說,當前很多系統級編程使用的都是c++語言。
1.3 java語言。java語言相對于c++語言來說,在簡潔性以及安全性有著更大的優勢,具體來說,其主要的特點有:
首先,簡單性:這一點和c++語言比較類似,但是它減少了c++語言中比較容易導致程序錯誤的地方,比如指針以及內存管理。其次,java語言屬于完全面向對象語言,這一點和smalltalk比較類似,當然相對于smalltalk,它的很多方面又存在著巨大的優勢。第三,分布式,在java語言中,包涵了支持基于tcp/ip協議的子庫。第四,健壯性,java語言中的類型檢查可以幫助我們查出很多軟件開發初期出現的錯誤,降低內存出錯的幾率。第五,結構中立,在使用java語言編程的時候,會把程序編譯為中間文件格式,也就是說只要存在java運行系統的機器都能夠對這種中間代碼進行執行。第六,安全,它刪除了手動釋放內存等,很好的防止了非法的內存操作。
此外,除了以上的優勢之外,java語言還具備可移植性好、解釋性強、高性能以及多線程等特點,這里限于篇幅不再對其進行詳細的分析。當前,java語言主要應用在web瀏覽器以及網絡應用系統之中。
1.4 c#語言。這種語言有著類型安全、精確、簡單以及面向對象的特點。它屬于.net的代表語言。具體來說,其特點是:
首先,完全面向對象。其次,對于分布式有很強的支持,也就是說其處理的過程是分布在服務器以及客戶機上的,從這張語言的誕生過
程我們可以發現其注定就可以很好的解決分布式的問題。第三,健壯,在檢查程序錯誤以及運行錯誤方面,c#語言一點不比java語言要差,它使用的也是自動管理內存機制。第四,靈活性比較高,比如在默認情況下,c#語言是不可以使用指針的,但是如果有必要我們可以將指針打開來使用。第五,安全性比較高,它的安全性是由.net平臺來提供的。
此外,c#語言還具備可移植性、解釋性、高性能、多線程、組件模式等特點,總體來說,它屬于java流行之后的有一種語言,但是由于微軟系統的支持,使其在windows方面相對于java有著更大的優勢。當前,這一語言的主要應用有網絡編程、數據庫、窗體編程等方面。
1.5 pascal語言。這是計算機通用的高級程序設計語言,它的主要特點是結構化形式比較嚴格、數據類型非常豐富、查錯能力較高以及運行的效率高等。正是由于這些優勢,使得這一語言可以對各種算法以及數據結構進行描述。另外,利用這種語言,可以幫助我們編程者保持一個很好的習慣和設計風格。
總體來說,每一種語言都有其獨特的優勢和應用范圍,在計算機應用軟件開發過程中如果能夠使用最合適的語言將極大地降低我們的工作量,提升我們的工作效率。
2 計算機應用軟件開發中編程語言選擇的原則
了解了各種編程語言的特點并不能幫助選擇出最合適的語言,我們還要掌握編程語言選擇過程中的原則:
首先,我們在確定編程語言以前充分考慮開發項目的整體架構,一般情況下,并不是說整個系統都必須要使用同一種編程語言進行編寫,語言的選擇將會給組件分解及連接帶了較大的影響。其次,對開銷比較大的操作要我們要進行認真的考慮,比如圖形渲染、密碼學、視頻處理以及信號處理等操作,我們最好選擇靜態類型的語言。第三,如果條件允許,我們要盡量使用最為熟悉的語言,通過這種做法可以更好的對軟件工程項目時間表進行預測,進而降低了變數出現的幾率。第四,假如軟件主要應用于重復處理手工勞動,那么我們要選擇靈活、簡單的編程語言,如果某種語言可以與生俱來來實現這些功能則最佳。第五,對開發硬件環境進行充分的考慮,并不是全部的編程語言都可以很好地適應于受限的硬件環境。一般來說,雖然當前的硬件基本已經足夠了,但是對于以下較為特殊的應用來說,這一問題依舊嚴重。所以,要選擇使編出來的程序可以較好的運行在這種環境中的語言。第六,不論應用軟件開發過程中使用了哪種編程語言,確保編出來的程序可以實現快速調整是一項重要的前提,所以,快速原型是很重要的,基于此,動態語言是一個不錯的選擇,它可以和和很多相關庫進行結合。第七,支持平臺也是我們在編程語言選擇過程中需要考慮的因素,比如,假如我們代碼要在瀏覽器中運行,那么就可以排除很多不合適的編程語言。第八,在編程過程中,有些文件格式將會涉及到位操作,所以,我們還要對項目是否需要大量位操作進行考慮,一般來說,如果有這方面的要求,我們最好選擇容易位操作而且可以提供合適數據類型的編程語言。最后,針對一些特殊領域,我們可以考慮使用專業的編程語言,它既能夠節省很多的工作時間,還可以防止編程出現較大的失誤。
3 結語
軟件開發過程中,編程語言的選擇和編程的效率、質量有著非常大的關系,做好這一工作可以使我們的工作事半功倍。因此,在具體的工作中,我們應加強學習,對這些編程語言特點進行深入的了解,以尋找出最合適的編程語言。
在一般應用軟件系統開發時,程序員只需要考慮軟件系統的功能設計,硬件部分直接根據軟件需求購買即可。嵌入式軟件的開發則需要軟硬件綜合開發,這有兩方面的原因:一方面,任何一個嵌入式產品都是軟硬件的結合體;另一方面,一旦嵌入式產品研制完成后,軟件就已經固化在硬件環境中,用戶不能對其修改。嵌入式軟件的這一特點決定了嵌入式應用開發方式不同于傳統的軟件工程方法。
1 嵌入式軟件開發的特點
嵌入式軟件的開發具有如下幾方面的特點:
1)需要交叉開發工具和環境。由于嵌入式軟件本身不具備自主開發能力,即使設計完成以后用戶通常也不能對其中的程序功能進行修改,因此必須有一套開發工具和環境才能進行開發。這些工具和環境一般基于通用計算機上的軟硬件設備以及各種邏輯分析儀、混合信號示波器等。開發時往往有主機和目標機交叉開發的概念,主機用于程序的開發、調試,目標機作為最后的執行機構。開發時主機和目標機需要交替結合進行。
2)軟硬件協同設計。軟硬件協同設計涉及以下方面:嵌入式軟件設計、實時系統設計、硬件設計和軟件設計。軟硬件協同設計強調硬件與軟件的協同性與整合性、軟件與硬件的可裁減,以滿足系統對功能、成本、體積和功耗等要求。
3)嵌入式軟件開發人員以應用專家為主。通用計算機的開發人員一般是計算機科學或計算機工程方面的專業人士,而嵌入式軟件則是要和各個不同行業的應用相結合的,要求更多的計算機以外的專業知識,其開發人員往往是各個應用領域的專家。
4)軟件要求固態化存儲。為了提高執行速度和系統可靠性,嵌入系統中的軟件一般都固化在存儲器芯片或單片機本身中,而不是存儲于磁盤等載體中。
5)軟件代碼高質量、高可靠性。盡管半導體技術的發展使處理器速度不斷提高,片上存儲器容量不斷增加,但在大多數應用中,存儲空間仍然是寶貴的,還存在實時性的要求。為此要求程序編寫和編譯工具的質量要高,以減少程序二進制代碼長度,提高執行速度。嵌入式軟件的核心是系統軟件和應用軟件,由于存儲空間有限,因而要求軟件代碼緊湊、可靠,大多對實時性有嚴格要求。
6)系統軟件的高實時性。在多任務嵌入式軟件中,對重要性各不相同的任務進行統籌兼顧和合理調度是保證每個任務及時執行的關鍵,單純通過提高處理器速度是無法完成和沒有效率的,這種任務調度只能由優化編寫的系統軟件來完成,因此系統軟件的高實時性是基本要求。嵌入式軟件應用程序雖然可以沒有操作系統直接在芯片上運行,但是為了合理地調度多任務,利用系統資源,系統一般以成熟的實時操作系統作為開發平臺,這樣才能保證程序執行的實時性、可靠性,并減少開發時間,保障軟件質量。
2 軟硬件協同設計概念
嵌入式軟件設計是使用一組物理硬件和軟件來完成所需功能的過程。系統是指任何由硬件、軟件或者兩者的結合來構成的功能設備。由于嵌入式軟件是一個專用系統,所以在嵌入式產品的設計過程中,軟件設計和硬件設計是緊密結合、相互協調的。這就產生了一種全新的發展中的設計理論——軟硬件協同設計。這種方法的特點是,在設計時從系統功能的實現角度考慮,把實現時的軟硬件同時考慮進去,硬件設計包括芯片級“功能定制”設計。既可最大限度地利用有效資源,縮短開發周期,又能取得更好的設計效果。
系統協同設計的整個流程從確定系統要求開始,包含系統要求的功能、性能、功耗、成本、可靠性和開發時間等。這些要求形成了由項目開發小組和市場專家共同制定的初步說明文檔。系統設計首先確定所需的功能。復雜系統設計最常用的方法是將整個系統劃分為較簡單的子系統及這些子系統的模塊組合,然后以一種選定的語言對各個對象子系統加以描述,產生設計說明文檔。其次,是把系統功能轉換成組織結構,將抽象的功能描述模型轉換成組織結構模型。由于針對一個系統可建立多種模型,因此應根據系統的仿真和先前的經驗米選擇模型。
3 嵌入式軟件開發的方法論
在建立一個完整的嵌入式軟件或是產品時,大部分系統都很復雜,不但功能規格很多,還必須考慮例如價格、性能等其他因素,否則很容易做出一個失敗的系統或是產品。因此,在進行系統開發之前,必須先了解一些系統設計技術,使得在開發過程中更為順利。一般來說,產品設計的過程會經歷幾個步驟,為了確保這些步驟的合理性,我們需要一個設計方法論來面對整個設計過程。采用方法論有以下三個重要理由。
確認所做的每一件事情都是必須要做的,不做無謂的工作,也不漏掉關鍵性的重要工作,其中包含性能最佳化或是功能測試。
根據設計方法論可以發展出計算機輔助工具或是設計經驗累積,汲取每一次產品開發的經驗。再經過量化之后,可以發展出一套工具或是方法,讓往后的產品設計步入自動化。
開發團隊遵循同一套方法論,可以讓團隊成員更容易彼此溝通。每個人都能在短時間內了解整體過程中將經歷哪些過程,需要何種支持與接收到何種結果。此外,也容易通過一套已經定義好的方法論,彼此相互合作協調。設計過程的目標是做出有一定用途且具有創新點的產品。產品的典型規格包含功能性、制造成本、性能表現、省電考慮和其他特性。
4 結束語
嵌入式系統開發是在開發過程中綜合考慮軟硬件環境和需求,這樣開發的軟件產品不僅能使系統與硬件的驅動默契更高,還能有效縮短開發周期。由于能夠有效解決軟件危機帶來的危害,嵌入式系統開發成為系統開發的主要趨勢也是不可避免的。
引言
嵌人式系統開發經過30多年的發展,到現在算是一個成熟的技術了。由此可以從總體上確認在嵌入式系統開發展過程中出現的幾種明顯趨勢,這些趨勢指出了一系列新興的關鍵技術。
1 微處理器技術
最早的微處理器是4位和8位器件。由于制造技術越來越復雜,集成的單片8位微處理器開始出現,16位微處理器也開始使用。隨著微電子技術的發展,16位的微處理器已得到廣泛的應用。32位架構的器件逐漸占領了高端的應用市場,第一代的32位器件都是cisc架構,但目前,越來越多的risc芯片正在提供更高的性能。嵌人式系統設計者選擇微處理器的范圍比以前大了,必須根據性能、需求、支持、可用性和價格來進行選擇。
2 系統架構
隨著微處理器的發展系統架構也在進步。最早的系統,是由cpu和一些邏輯器件組成的。多年以來,系統變得日益復雜,但都還可以使用同樣的調試技術—電路仿真、芯片級調試、rom監控器以及指令集模擬。嵌入式系統日益強勁,而功能需求的增長則更快很多設計者開始重新審視微處理器和它們的用法。
3 設計組成
嵌入式系統發展的最初階段。所有的開發包括軟件和硬件設計,通常都是一個工程師來承擔。軟件在整個工作址中的比例很小,大約5%-10%。隨著時間的推移軟件開發占工程時間的比例持續增長。至20世紀80年代中期,軟件開發已經是由專業歡件人員來做,所占比例一般已超過整個開發工作量的50%。
在最近幾年,雖然硬件設計變得更加復雜,但軟件的份量也急劇增長,目前通常占到開發總量70%-80%。因此,需要有軟件團隊參與,同時也產生了一些新的挑戰。這些挑戰中的一個,就是要有可用的硬件平臺來進行軟件測試。由于要在更短的時間內開發更多的軟件,就需要盡快建立測試環境。發出更多的軟件,就需要盡快建立測試環境。有多種可行的方法,如本地代碼執行原型環境、指令集軟仿真(模擬),以及使用標準的、低成本的、現成的評估板。此外,低成本的主機一目標機連接技術,也變得越來越普及,有代表性的就是jtag接口。
4 軟件內容
軟件開發所占總時間的比例一直在增加。同時,來自全球貿易和競爭的壓力使得產品投放市場的時間也一直在縮短。這極大地影響了設計的策略。最早的設計相當簡單,僅僅由自己設計的應用代碼組成。隨著系統的復雜度增加,多任務的模型被軟件開發者廣泛采納,很多開發者選擇標準的、商用的實時操作系統產品。隨著各個標準的進一步被采納,買來的軟件,或者說有“知識產權”的軟件所占的比例正穩步增長。這個趨勢給了軟件開發者很多啟示。集成標準的軟件組件—和應用代碼及其他—是我們所關心的。在多任務背景下調試是另一個值得關注的問題。與選擇知識產權有關的商業決定尤為復雜;除了當前的要求之外,還有將來的(例如移植到別的處理器)也必須加以考慮。
5 編程語言
對于早期的4位和8位微處理器,匯編語言是唯一的選擇。隨著16位微處理器技術成為現實,出現了幾種可供選擇的語言。有pascal和c語言和pl/m語言。對某些類型的系統來說,forth語言也曾很流行,隨著時間推移,32位技術的使用日益增多,出現了c和ada。后者在國防部的系統中被普遍使用。
在嵌入式軟件開發中,c++開始逐步取代c語言。現在,1/4~1/3的嵌入式系統代碼是用c++編寫的。java語言當初是專門為嵌人式應用開發的,在要求運行時重新配置的應用場合,它找到了一席之地。統一建模語言(uml)也成為高級設計方法學的最流行選擇。
6 軟件隊伍的規模和分布
正如先前討論的一樣,最初的嵌人式系統設計只要一個人就夠了。在適當的時候,因專業化,產生了致力于軟件開發的工程師。下一步就是建立嵌人式軟件開發團隊。管理軟件開發在任何情況下都是一個挑戰,嵌入式系統開發也不例外,只是有細微差別。使用傳統的編程技術———過程語言,如c語言和匯編語言,團隊里的大部分成員都需要對整個系統了解比較全面。隨著團隊變大,這就變得越來越不可行。價況住往是,團隊里有一些特殊的人才,他們對某些專門領域很在行。為了有效地管理團隊必須使用合適的策略,將他們的專長封裝起來。盡可能使一個專家的工作成果能夠被非專家以安全、可靠和直觀的方式加以使用.在這種情況下,面向對象編程技術找到應用點。
雖然有很多非常大的公司,但軟件隊伍不是簡單的人員擴充他們正在變成分布式的。團隊的一些成員在一個地方,而其他的可能在別處。這些地點甚至有可能位于不同的國家。這種安排在歐洲很常見,在那里,真正關心的可能是交流的語言。其他地方,時區可能是個問題(可能也是一個優勢,因為分布式的團隊可以全天候工作)。隨著新興的技術中心(如印度)廣泛崛起,上述情況越來越普遍。在這一背景不,軟件組件的可重用性需求就變得很常見了。
7 uml和建模
最近幾年,uml己經成為一項關鍵的設計方法,它和逐漸增七的嵌人式軟件團隊規模關系密切。廣義上說,使用設計工具的方式有2種:或者是作為編寫代碼的指導,或者就作為直接生成代碼的一種手段。對于嵌人式軟件來說,代碼生成是有爭議的,它可能會被爭論(而且還很有道理)—每一個系統都是不同的,都有各自的特殊需求。這正是xtuml(可執行和可翻譯的uml)吸引人的地方,因為它使得應用與架構清晰地分離了。這里所遵循的,是與面向對象編程同樣的原則—使用工具和技術來平衡專家意見。
追蹤所有被當前各種嵌人式系統開發趨勢所驅動的新技術并非易事。孤立地看待其中任何一項技術也是毫無意義的,因為它們之間有著許多聯系。例如,多任務與多處理器調試相關;基于標準的rtos技術對處理器移植來說真是件幸事;使用設計方法學可以令實現更容易。
隨著現代電子技術的不斷發展,嵌入式系統已經廣泛滲透到我們的工作、生活中,從家用電器、手持通信設備、汽車、到信息終端、儀器儀表、航天航空、軍事裝備、制造工業、過程控制等,都充斥著嵌入式系統的應用。
隨著嵌入式軟件快速發展,傳統嵌入式系統的開發手段已越來越難以滿足日益增長的復雜性和質量要求。當前,嵌入式軟件開發大多采用文檔形式。但文檔形式嵌入式軟件開發存在著許多弊端:文檔本身在傳遞過程中是不可測試的,因此在軟件開發的各個階段之間形成了溝通障礙。由于不可測試,需求的錯誤被逐層積累,只有系統測試時才能發現。這就產生了矛盾:大部分錯誤已積累形成,但只能在后面發現。因此在糾正錯誤時,文檔架構代價高昂。
為了解決上述傳統嵌入式軟件開發存在的問題,提高嵌入式軟件開發的開發效率、保證嵌入式軟件的質量,本文探討將模型驅動開發技術應用到嵌入式軟件開發過程。
一、模型驅動開發技術
模型驅動開發(model-driven development,mdd )是mda中的一部分。mda是模型驅動體系架構(model-driven architecture)的簡稱,由對象管理組織(object management group,omg)所驅動。mda表示了一種模型驅動開發方法的概念框架。然而,盡管完整的mda還沒有成為現實,但模型驅動開發現在已成為可能[1]。
軟件開發一般要經歷軟件需求分析、軟件概要設計、軟件詳細設計、編碼實現、軟件測試幾個階段。每個階段都可以產生每個階段的相應模型。這些產生的模型,可以在工具環境中進行調試驗證,盡可能在系統開發的早期發現其中的錯誤,同時也可以克服采用自然語言作為文檔工具出現的不準確、不科學的描述。在開發的最后階段,考慮軟硬件平臺的實現,保證開發過程與軟硬件平臺的無關性,有利于系統的開放性和可移植性的提高。整個過程也是一個不斷迭代開發的過程,這種通過可調試模型驅動的迭代方式,由于不是首先從浩瀚復雜的代碼中入手,而是首先從清晰易懂的模型出發,使得系統的更新變得比較容易[2]。
二、模型驅動開發的優勢
模型驅動開發的一個優點是可以消除開發過程中各參與方之間的隔閡,需求工程師,系統分析員,軟件開發人員和測試者都可以使用同一種預言。他們可能專注于語言的不同部分,以滿足他們的需要,但他們都會共用一些基本的結構,并對他們工作的系統有一個統一的認識。而且使用統一的語言有助于消除角色間的界限,使得在項目的不同階段人員轉換到被需要的角色更加容易。還有另外一些人需要知道項目的進展情況,包括項目領導、經理和評估委員會。更重要的是,用戶也需要知道什么將會被交付,需要加入到整個開發過程中,與創建系統的不同人員進行交流。一種圖形建模語言,比如統一建模語言(unified modeling language,uml),使得各參與方之間的交流成為可能,幫助架起參與方與某些系統復雜功能之間的橋梁。模型驅動開發正逐漸獲得公司高級管理者注意,其中的一個主要原因就是這種能夠逐漸增加用戶、管理層和大的組織機構參與的能力。
模型驅動開發的另一個優點是把系統和軟件開發更多地納入到系統和軟件工程規則中。模型驅動開發是關于開發和維護系統的,系統并不只是由應用程序組成,還包括其他的部分,使得人們可以理解這個應用程序。一個模型可以包含明顯可執行的部分,但它幾乎總是還有其他部分,并不能被運行,比如需求、系統的粗略框架、分析模型。在項目開發時,所有這些都應該被創建出來并保持最新,它們對于將來的維護非常重要。
模型驅動開發可以使嵌入式軟件開發過程花費更少的時間用于實現和測試階段,更多的時間用于分析和設計階段,當迭代重復這些過程時,會發現,這種方式的好處是實實在在的。
三、模型驅動開發在嵌入式軟件開發中的應用前景
目前,模型驅動開發技術還處于新興階段,在嵌入式軟件開發領域的發展仍然處于起步階段。在一段時間內,傳統的文檔形式軟件開發仍將是主流的嵌入式軟件開發手段。但傳統的嵌入式軟件開發存在的諸多弊端決定了其必將被新的開發技術所取代,而模型驅動開發技術正是解決這些問題的有效手段。
嵌入式軟件開發領域專業技術人員正在不斷年輕化,他們能夠更快的接受新的技術理念,積累新的技術知識。因此,他們會持續關注模型驅動開發技術的發展,并研究將模型驅動開發技術應用到嵌入式軟件開發過程中的契合點。在年輕的專業技術人員逐漸占據主導地位后,必將會逐漸把積累的先進技術理念和知識應用到工程實踐中去,采用模型驅動開發技術這種更合理、更有效的技術手段去保證項目開發的效率和質量。
四、結論
隨著模型驅動開發技術的不斷發展、完善和推廣,相關模型驅動開發工具環境的不斷出現,以及嵌入式軟件領域的系統設計人員和開發人員對于模型驅動技術的不斷深入了解,模型驅動開發技術在嵌入式軟件開發中必將得到廣泛應用。
論文關鍵詞:網絡應用軟件 軟件開發生命周期osd動 安全性測試 項目設計 單元測試 集成測試 驗收側試
論文摘要:文章論述了軟件開發生命周期中每個階段添加的一系列關泣安全性的活動,提出將安奮瀏試整合到軟件開發生命周期中,分析了軟件安全性瀏試片祠試人員的要求,并以一個sql注入實例來具體說明安全性瀏試在軟。
信息網絡安全事件發生比例的不斷攀升、病毒利用軟件漏洞猖狂地傳播使得人們越發認識到信息安全的重要性。一般認為,傳統的信息安全技術可以借助防火墻(包括軟件和硬件防火墻)審核通過網絡的報文、限定用戶的訪問權限等來防止非授權用戶對重要數據的訪問,但是這一觀點是建立在軟件安全基礎上的。網絡應用軟件需要暴露在網絡環境下,并且授權外部用戶可以透過網絡來訪問此軟件。通過網絡,攻擊者有機會接觸到軟件,如果軟件本身存在漏洞,那么所有的防火墻就形同虛設。暴露于網絡的應用軟件往往成為被攻擊的目標,是網絡應用軟件安全的重災區。美國國家標準與技術研究院(nist)2002年的一項研究表明,美國花費在軟件缺陷方面的費用達到595億美元。公安部2008年全國信息網絡安全狀況與計算機病毒疫情調查分析報b說明,在發生的安全事件中,未修補或防范軟件漏洞仍然是導致安全事件發生的最主要原因。
1安全測試的定義
安全測試是鑒別信息系統數據保護和功能維護的過程。安全測試需要涵蓋的6個基本安全概念是:保密性、完整性、權限(身份驗證)、授權(權限分配)、可提供性、不可抵賴性陰。軟件開發商都存在解決安全威脅方古的問題。對軟件開發商來說,安全性是其核心要求,這是由市場力量所驅動,也是由保護關鍵基礎結構及建立和保持計算的廣泛信任的需要所決定的。所有軟件開發商面對的一個主要挑戰就是創建更加安全的軟件,使其不需要頻繁地通過修補程序進行更新。軟件安全已經成為評判軟件質量的一個重要標準,軟件安全測試則成為保證軟件產品能夠符合這一標準的重要手段。軟件的安全性測試主要是測試在正常和非正常情況下,軟件能否對數據進行安全有效的操作。
2軟件開發生命周期流程(參見圖1)
對于軟件行業來說,要滿足當今提升安全性的需要,軟件供應商必須轉為采用一種更嚴格的、更加關注安全性的軟件開發流程。這種流程旨在盡量減少設計、編碼和文檔編寫過程中存在的漏洞,并在軟件開發生命周期中盡可能早地檢測到并消除這些漏洞。用于處理來自internet的輸人、控制可能被攻擊的關鍵系統或處理個人身份信息的企業和消費者軟件最需要實施這種流程。在很多實際的軟件開發項目中,安全測試已經成為sdl一個不可或缺的組成部分,并成為整個項目過程中的長期任務。黑盒一白盒測試方法往往執行在產品遞交客戶之前,但有的甚至在投人使用之后都未進行安全檢測和風險評估;在一些安全性要求較高的項目中,雖然將安全風險評估納人預算,但在實際操作中卻對其并未作過多考慮。這樣,所導致的直接后果是在開發工作幾近完成的情況下進行問題分析處理所造成的成本將遠遠大于在軟件開發階段進行缺陷修改的成本。即便是從充分利用現有的有限資金和資源的角度來考慮,也有必要將安全測試囊括到sdl中。這樣做雖然不能取代軟件開發后期的滲透測試和脆弱性測試,卻可以有效減少后者在施過程中的投人。
開發人員應該根據客戶的功能需求來制定相應的安全規約,利用內建的明確的控制機制來降低安全風險。開發人員可以根據風險評估的結果來確定測試項目:軟件能否可靠運行(safety)以及軟件運行結果是否可靠(security)。
軟件開發生命周期((sdl)中常用的測試方法有:單元測試、集成測試和驗收測試。
2.1需求、設計階段—安全性分析
在軟件項目的設計過程中,人們往往只是關注系統的特性和功能,而沒有充分考慮其他重要的非功能問題(例如性能、可用性、平臺支持、安全,及要在稍后的軟件開發生命周期中需要解決的安全性),導致了項目中許多不必要的波動和延遲。由于安全性分析影響了整個的設計和架構,因此應該在項目設計階段充分地審查和了解它們。
安全性考慮包括一系列問題,例如訪問控制和授權、敏感數據的適當處理、數據和存儲器訪問的適當使用,以及加密方法。一些安全性需求不是非功能的需求,如所實施的加密類型。另外,許多安全性需求是更直接地面向用例的,并且需要定義主要場景,以及定義備選路徑和異常路徑。在沒有將功能的和非功能的需求適當地定義及并人軟件中的情況下,編碼錯誤和設計缺陷會表現出關鍵的信息和操作處于危險。我們應該像對待其他的需求那樣處理安全性需求,并將安全性需求劃分出優先級,設定范圍,同時作為整體用例和功能需求的一部分進行管理。
2.2實施階段—單元測試
受測試方式的影響,開發者對軟件安全風險的評估不可能面面俱到。最典型的就是在代碼設計階段,開發者可以通過單元測試來檢驗代碼行為,這些結果都是可以預知的,但是受到范圍的局限,不能測試這些類或者模塊集成后的行為。
實施單元測試可以從軟件基本單位(單個類)的檢測上保證輸人的有效性;在可能出現惡意攻擊的地方,也可以利用這一思想來組織針對單個類或者方法的單元測試,從而組織起軟件內部的縱深防御策略,防止惡意行為對軟件安全造成的損害。但是,這一方法將軟件各組件進行強制孤立,因此對于因大量組件交互而引起的軟件缺陷,利用此種方法無法檢測。
單元層的安全測試比較適合于防止緩沖區溢出,格式化字符串以及數據缺失的審核。
2.3驗證階段—集成測試
在集成層,軟件的整體安全屬性變得可見和可測試,使得這一層的可測試屬性數量相對單元層而言要多得多,但是對于跨站腳本和網絡服務器提供的一些服務(例如安全套接層ssl和url過濾)的測試,存在一定的困難。我們可以將實際案例和風險分析的結果作為組織集成測試的指南。
集成測試要求測試人員通過安全測試培訓,并且是有熟練技術的軟件開發人員。
在這一層,我們可以開展諸如注人缺陷驗證、旁路驗證以及訪問控制等方面的安全測試,來源于外部代碼的安全審查結果也應該以集成測試的方式加以確認。
2.4階段—驗收測試
驗收測試是軟件產品交付客戶之前的最后一個測試階段,是在真實的測試環境中,利用基于惡意事件的安全檢測模板,測試在典型的滲透活動中可被識別的安全缺陷。驗收測試的這一特性(基于安全檢測模板),使得我們可以借助于強大的自動化測試軟件進行檢測,并且可以用驗收測試的結果來完善滲透測試報告內容,從而有助于開發人員理解軟件的脆弱性以及針對軟件脆弱性所采取的補救措施是否有效。
驗收測試針對軟件的外部api,因此不如單元測試和集成測試松散,并且只能測試當前已知且暴露的漏洞或者缺陷。非定制的商業軟件重新設計的關鍵功能或者其他改變都會影響到軟件的整體安全性,因此,如果改變會使得軟件產生不可預知的缺陷,針對這些缺陷的測試就應該在單元層或者集成層開展,而不是在驗收層。
在驗收層,我們可以測試針對解釋性程序(sql, xpath,ldap等)的注人式攻擊、跨站腳本攻擊、跨站請求偽造等。緩沖區溢出及格式化字符串等軟件缺陷也可以在驗收測試層得到檢測。
3安全測試隊伍
軟件測試一度被認為是編程能力偏低的員工的工作,直到今天,仍然有許多公司把優秀的人才安排在編碼工作上,也有更多公司讓優秀的人才進行設計,僅有很少公司讓優秀的人才進行測試工作。實際的軟件工程實踐證明,讓對軟件思想有深刻理解的工程師進行軟件測試,可以大幅度地提高軟件質量軟件供應商還必須認識到組織測試人員進行“安全進修”對安全測試的成功實施至關重要。在這些情況下,軟件供應商必須負責對其工程人員進行適當教育。根據組織的規模和可用的資源,擁有大批工程人員的組織可建立一個內部計劃對其工程師進行在職安全培訓,而小型組織則可能需要依賴外部培訓。
測試人員要像攻擊者那樣帶有“惡意的”想法去思考,而且在測試軟件時還要扮演攻擊者,攻擊自己的系統,以此來幫助發現軟件的安全漏洞。安全測試并不會總是直接導致安全溢出或者暴露可利用的漏洞,從而引出安全缺陷。要安全測試盡可能地發揮作用,測試人員需具備較強的分析能力,而這更多的是依靠熟練的開發技術和開發經驗。
4漏洞舉例:一個sql的注入式漏洞
有幾種情形使得sql注人攻擊成為可能。最常見的原因是,使用拼接形成的sql語句去操作數據庫。譬如,傳入用戶輸人的管理員用戶名和密碼,把這2個參數拼接形成sql語句,通過執行該sql語句,以便驗證用戶輸人的管理員用戶名和密碼的正確性。具體過程如下:
一般情況下,用戶傳人正常的用戶名和密碼進行驗證,如傳人“myname”和“mypassword”進行驗證,得到的sql語句將是:
這個sql語句很正常。但是,這只是開發人員預期的做法:通過管理員用戶名和密碼來驗證賬戶信息。但因為參數值沒有被正確地加碼,黑客可以很容易地修改查詢字符串的值,以改變sql語句的邏輯。譬如,分別傳人“myname’ ori=1--” , "mypassword",得到的sql語句將是:
在用戶名“myname’ or i=i--”中,第一個“”’結束了原有字符串中第一個單撇號的配對,"or”后面的“i=i”會導致不管前面的驗證結果如何,都會返回真true值,而隨后的“一”將把其后的sql語句注釋掉。現在問題出現了,不管使用什么用戶名和密碼,都能驗證通過。在存在漏洞的數據顯示頁面,如果注人join語句,就能獲取數據庫里的所有數據,顯示在頁面上,如獲取用戶名、密碼等;而注入up-date/insert/delete語句將改變數據,如添加新的管理員賬號等。這樣,數據庫將不再安全。
sql注人安全漏洞的形成,根本在于sql語句的拼接,只要放棄sql語句拼接,適用規范的加碼訪問方式,問題自然迎刃而解。以下便是修改后的安全驗證方法:
5結論
為符合軟件的安全性要求,開發人員在開發過程中應盡可能多地進行安全分析、安全性測試。安全檢測效能的充分發揮依賴于開發人員與安全測試人員的密切配合以及對相關人員在安全教育方面的再投資。對于安全問題,在軟件完成后進行處理比在代碼編寫階段處理付出的代價要大得多。包含了安全因素在內的經過完全測試的最終產品,自然具有保密性、完整性、權限(身份驗證)、授權(權限分配)、可提供性、不可抵賴性。
隨著計算機技術的飛速發展,軟件開發也已經有了五六十年的發展歷史了,從上個世紀90年代以來,世界軟件產業獲得了飛速的發展。
一、軟件開發中小型項目發展的現狀
首先項目管理意識差,在項目開發過程中,一定程度的存在有人無事情做以及有事情無人做的現象。項目開發中的技術經理一心專研技術,無暇顧及各種管理事務,同時,專門聘請的項目管理經理又由于不了解項目具體問題,不涉及系統的分析設計,出現了無事情可做的現象。其次是項目成本意識差,很多項目經理都是從技術骨干當中而來,對規格、進度和成本之間的平衡知之甚少,所以在對資源進行申請的時候很好考慮成本的因素。第三是項目計劃制定不合理,在制定項目計劃的時候不嚴謹、可操作性差、隨意性大,并且也沒有能夠貫穿于整個項目之中。第四是文檔編寫不規范,沒有能夠進行及時的更新,往往是文檔寫在功能模塊實現完之后,并且是憑工程師的記憶來寫。第五是不重視軟件測試,在開發中沒有規范的測試文檔、沒有詳盡的測試用例。第六是團隊意識差,各成員之間不夠團結,甚至是存在矛盾,導致技術交流缺乏,出現很多模塊之間的問題。
二、軟件開發的特點
軟件是由程序、文檔和數據組成,是為實現軟件產品而進行的活動,首先它具有臨時性,對于軟件開發的開始和結束都很明確,和一般的日常工作不相同。其次是獨特性,每一個軟件開發都有自己明確的目標,和其他項目不相同。第三是漸進明細性,軟件開發是一個不斷改進、不斷完善的過程,軟件開發不可能一次性完成并永久使用,在信息技術的不斷發展中,以及軟件技術人員的水平不斷提高的基礎上,軟件開發肯定是一個不斷進取的過程。第四是知識與技術特性,在軟件開發中,存在著大量的智力型活動,需要用到管理學、現代信息技術等知識。第五是要以客戶為中心,軟件開發最終是需要客戶接受的,通過客戶接受才能實現它的價值,因此軟件開發不僅要滿足系統功能和性能,還要適應不同的用戶以及不同觀點的人的使用。
三、軟件開發中小型項目的開發流程
結合軟件開發的特點,為了更好的解決軟件開發中小型項目開發現狀中存在的問題,提高項目管理意識、控制項目成本,軟件開發中小型項目開發的流程主要分為以下幾個階段。首先是軟件開發中小型項目開發的啟動階段,在這個階段中,要建立項目管理過程規范,對各種軟件項目計劃和需求管理進行建立,保證工作計劃在軟件項目活動管理中的可行性。比如制定軟件質量保證計劃、軟件開發計劃、軟件測試計劃、軟件配置管理計劃、過程改進計劃、風險管理計劃等。在軟件開發計劃中要明確項目組的費用預算和資源安排、項目組與客戶之間的介入關系、項目組各成員分工安排等。特別是在軟件項目啟動的時候就需要開展軟件質量保證活動,對項目明顯和潛在的風險進行分析識別,明確各風險管理項的跟蹤管理方式。其次是軟件項目的實施階段,在這個階段中重點關注風險和需求的跟蹤,開發成果、開發計劃與進度和活動的一致性。成立sqa部門,指定軟件質量保證負責人,通過建立bug,實現對問題的跟蹤。在同一的標準結構下建立項目配置庫,有效的和客戶進行溝通,對客戶新的需求進行及時的更改,對工作的成果進行及時的標識和管理。控制好項目成果的入庫、出庫和更新,更新和都由專門的管理人員統一進行,將工作成果在的時候打上標簽,保證項目成員手頭是統一版本的工作成果,避免在階段工作中,由于工作成果不一致導致版本混亂,甚至是出現返工的現象,從而影響到整個項目的進度。同時,要定期或不定期的對配置庫內容和軟件產品基線的狀態進行檢查,保證庫內成果的可用性和配置庫的完整性。項目階段成果和項目重要計劃都必須經過嚴格評審,并且要取得相關方的承諾和一致認同。在項目編碼階段,互查單個工作產品的普及代碼,保證單位模塊的質量。在工作成果的每一次評審之前,給各位評審人員通報評審內容和范圍,使評審人員更加充分的了解評審內容,從而提高評審效率,起到保證評審質量的作用。在評審中發現的缺陷,應該立即糾正,并且同時指定責任人跟蹤缺陷解決過程,使缺陷能夠全部被解決掉。第三是可行性研究和分析階段,在這個階段中要進行充分的調研、了解、分析,有項目經理和開發部經理參與完成可行性研究報告、軟件需求說明書、產品需求說明書和項目開發計劃。第四是軟件開發設計階段,在這個階段中,主要是進行設計、軟件平臺選型、數據庫和數據文件的設計、io設計、編碼設計、操作流程設計、模塊接口設計等。第五是軟件實現階段,在這個階段中,主要是代碼的實現、軟件的跟蹤調試、軟件的單元和整體測試、修訂軟件設計說明書、編寫測試文檔等。第六是軟件發放和維護階段,這個階段主要是對產品進行評價,編寫產品發放報告、綜合評價產品、交付給用戶使用、跟進用戶的問題等。
【摘要】在軟件項目開發的過程中,軟件項目管理的成功與否是決定一個項目是否能夠順利高效率完成的重要保證。但是我國大部分的軟件企業在進行項目管理時都存在著各種問題,從而使項目不能順利有效地完成。文章探討了在項目管理過程里出現的常見問題,并給出了相應的解決策略。
【關鍵詞】軟件項目管理;項目經理;項目計劃
軟件行業在現在的眾多行業里是一個極具挑戰性和創造性的行業,體現了軟件開發者的智慧和汗水,同時軟件開發是一項復雜的系統工程,牽涉到許多方面的因素,在實際工作中,經常會出現各種各樣的問題,甚至會面臨失敗。如何總結、分析失敗的原因,得出有益的教訓,對于項目開發人員來說,是在今后的項目中取得成功的關鍵。
一、軟件開發中實行項目管理的意義
項目管理就是在項目活動中運用一系列的知識、技能、工具和技術,以滿足或超過相關利益者對項目的要求,實際上就是通過項目各方干系人的合作,把各種資源應用于項目,以實現項目的目標,滿足項目干系人的需求,其本質就是對時間、質量和成本的管理。
隨著軟件開發的深入、各種技術的不斷創新以及軟件產業的形成,人們越來越意識到軟件過程管理的重要性,管理學的思想逐漸融入軟件開發過程中,項目開發的管理日益受到重視。
二、目前在軟件項目管理中存在的誤區
現在大多數企業都認識到了在項目中進行管理的重要性,但是仍然有許多企業在實施項目管理的過程中存在著這樣那樣的誤區,主要表現在:
1.項目經理不夠專業。在軟件企業中,缺乏專業的項目管理人員來實施項目管理及擔任項目經理,通常被任命的項目經理主要是因為他們能夠在技術上獨當一面,但是他們在管理方面特別是項目管理方面的知識比較缺乏。
2.項目計劃缺乏綱領性。項目經理對總體計劃、階段計劃的作用認識不足,因此制定總體計劃時比較隨意,不少事情沒有仔細考慮;階段計劃因工作忙等理由經常拖延,造成計劃與控制管理脫節,無法進行有效的進度控制管理。
3.缺乏有效的管理意識。部分項目經理不能從總體上把握整個項目,而是埋頭于具體的技術工作,造成項目組成人員之間忙的忙、閑的閑,計劃不周、任務不均、資源浪費。有些項目經理沒有很好的管理方法,不好安排的工作只好自己做,使項目任務無法有效、合理地分配給相關成員,以達到“負載均衡”。
4.缺乏有效的溝通制度和機制。在項目中一些重要信息沒有進行充分和有效的溝通。在制定計劃、意見反饋、情況通報、技術問題或成果等方面與相關人員的溝通不足,造成各做各事、重復勞動,甚至造成不必要的損失;有些人沒有每天定時收郵件的習慣,以至于無法及時接收最新的信息。
5.風險管理意識淡泊。有些項目經理沒有充分意識到風險管理的重要性,對計劃書中風險管理的章節簡單應付了事,隨便列出幾個風險,隨便地寫一些簡單的對策,對于后面的風險防范起不到什么指導作用。
6.項目干系人的不確定性。在范圍識別階段,項目組對客戶的整體組織結構、有關人員及其關系、工作職責等沒有足夠了解以至于無法得到完整需求或最終經權威用戶代表確認的需求;或者是多個用戶代表各說各話、昨是今非,但同時又要求項目盡早交付;項目后期需求變化隨意,造成項目范圍的蔓延,進度的拖延,成本的擴大。
7.缺乏項目團隊的合理分工 。項目團隊內部有時由于各階段不同角色或同階段不同角色之間的責任分工不夠清晰而造成工作互相推諉、責任互相推卸的現象;有時各階段不同角色或同階段不同角色之間的責任分工比較清晰,但是各項目成員只顧完成自己那部分任務,不愿意與他人協作。這些現象都將造成項目組內部資源的損耗,從而影響項目進展。
三、解決軟件項目管理中存在的誤區的有效策略
要想解決上面描述的誤區,歸根到底還是要從管理學的角度入手,即在軟件項目的開發過程中加入過程管理的內容,這樣我們可以在軟件開發中對各個過程的質量加以控制,從而達到保證軟件產品質量的目的。為了有效提高管理水平,我們應該努力做到:
1.項目經理接受系統的項目管理知識培訓是非常必要的,有了專業領域的知識與實踐,再加上項目管理知識與實踐和一般管理的知識和經驗的有機結合,必能大大提高項目經理的項目管理水平。
2.計劃的制定需要在一定條件的限制和假設之下采用漸近明細的方式進行不斷完善。提高項目經理的計劃意識,采用項目計劃制定相關知識、技術、工具,加強對開發計劃、階段計劃的有效性進行事前事后的評估。
3.加強項目管理方面的培訓,并通過對考核指標的合理設定和宣傳引導項目經理更好地做好項目管理工作。技術骨干在擔任項目經理之前,最好能經過系統的項目管理知識,特別是其中的人力資源管理、溝通管理的學習,并且在實際工作中不斷提高自己的管理素質,豐富項目管理經驗,提高項目管理意識。
4.制定有效的溝通制度和溝通機制,提高溝通意識;采取多種溝通方式,提高溝通的有效性。通過制度規定對由于未及時收取郵件而造成損失的責任歸屬;對于特別重要的(下轉第198頁)(上接第196頁)內容要采用多種方式進行有效溝通以確保傳達到位,例如:除發送郵件外還要電話提醒、回執等,重要的內容還要通過舉行各種會議進行傳達。
5.通過學習項目管理知識掌握風險識別、量化、對策研究、反應控制的工具和方法,掌握項目風險管理所必備的知識。通過加強對項目規劃中風險管理計劃的審核提高項目組的風險管理意識。總結本行業項目中常見的風險及其對策作為風險管理計劃中必要的風險內容,并切實評估相應對策的有效性和可行性。
6.項目的目的就是實現項目干系人的需求和愿望。項目干系人管理應當從項目的啟動開始,項目經理及其項目成員就要分清項目干系人包含哪些人和組織,通過溝通協調對他們施加影響,驅動他們對項目的支持,調查并明確他們的需求和愿望,減小其對項目的阻力,以確保項目獲得成功。
7. 項目經理應當對項目成員的責任進行合理的分配并清楚地說明,同時應強調不同分工、不同環節的成員應當相互協作,共同完善。
實施有效的項目管理絕非易事,對于軟件企業而言,這不是一個小的改變,而是一種變革,企業需要為此付出艱苦的努力,同時,成熟有效的項目管理無疑將對企業起著至關重要的作用,項目管理的水平將是企業核心競爭力之一。
摘要:在特定框架的基礎上建立目標應用系統是當前web應用開發的主流,如面向j2ee平臺的struts、spring、jsf、cocoon、axis和xalan等框架都得到了廣泛的應用。這些框架是軟件開發人員從以往的經驗和教訓中總結出的設計模式。這些模式的應用,不僅降低了軟件開發的成本,同時也保證了web應用系統的質量。
關鍵詞:j2ee平臺;web應用;jsp
一.j2ee平臺概述
sun的java 2 enterprise edition(j2ee)平臺已經成為使用最廣泛的web程序設計技術。該技術主要支持兩類軟件的開發和應用。一類是做高級信息系統框架的web應用服務器(web application server),另一類是在web應用服務器上運行的web應用程序(web application)。全球主要的商業網站和管理信息系統大多采用j2ee平臺作為首選的web開發技術,每一個web應用服務器都將需要企業開發和運行多種web服務軟件。
二.j2ee平臺web應用結構分析
j2ee平臺的核心技術是java server page[1]和servlet。整個j2ee平臺的應用結構模型如圖1所示。從應用結構圖明顯看出j2ee完全遵從mvc設計模式[2]。下面分別對每個組件做一個介紹。
servlet組件:servlet在web應用中擔任重要角色。servlet運行于servlet容器中,可以被servlet容器動態加載,來擴展服務器的功能,并提供特定的服務。servlet按照請求/相應得方式工作。在j2ee平臺下,控制器組件就是由servlet來構成的。
jsp組件:在傳統的html文件中加入java程序代碼和jsp標簽,就構成了jsp頁面。java程序段可以操控數據庫、重新定向網頁以及發送e-mail等,實現建立動態網站所需要的功能。jsp技術大大降低了對用戶瀏覽器的要求,即使用戶瀏覽器端不支持java,也可以訪問jsp頁面。
javabean組件:javabean是一種符合特定規范的java對象,在javabean中定義了一系列的屬性,并提供了訪問和設置這些屬性的公共方法。javabean可以作為共享數據,存放在page、request、session或application范圍內。在jsp文件中,可以通過專門的標簽來定義或者訪問javabean。
自定義jsp標簽:jsp標簽技術是在jsp1.1版本后出現的。這些可重用的標簽能夠處理復雜的邏輯運算和事務,或者定義jsp頁面的輸出內容和格式。自定義標簽可以使jsp代碼更加簡潔,有助于將jsp文件中的java程序代碼分離出去,使jsp文件側重于提供html表示層數據。對于j2ee下不同的框架,會有自己不同的標簽庫。
ejb組件:enterprise java bean(ejb)組件是基于標準分布式系統對象技術、corba和rmi的服務器端java組件。ejb組件和javabean組件一樣,都用于實現企業應用的業務邏輯,它們的根本區別在于:ejb組件總是分布式的,sun公司制定的ejb組件模型要求ejb組件運行于ejb服務器中,而javabean組件可以和servlet或jsp運行在由servlet/jsp容器提供的同一個java虛擬機中。
xml語言:即可擴展標記語言(extensible markup language),是一種用來創建自定義標記的標記語言。xml在web應用以及web服務開發中得到廣泛的應用,可用來描述結構化的數據。如在struts框架中,有兩個重要的配置文件:web.xml和struts-config.xml。web.xml文件用于配置web應用;struts-config.xml用于配置struts框架。
三.j2ee平臺下web開發框架
框架 (framework)[3]不同于類庫(library)。框架提供的不是一組功能性的組件,而是一個軟件結構,一種業務流程,以及hollywood法則(“don’t call us,we’ll call you”)。選擇框架,意味著web應用開發人員只需且只能在框架限制的范圍內編寫業務組件和顯示組件,由框架管理這些組件之間的協作。這雖然喪失了一定的自由,但是卻能得到結構更加良好,質量更加可靠的web應用軟件。現在,常用的j2ee平臺下web應用框架包括struts、spring、jsf、webwork等。
四.展望web應用開發
縱觀web應用的發展過程,有兩個現象值得注意。首先,底層功能的完善會優化上層功能,上層功能的推廣對底層功能提出更高的要求。當web硬件能提供高速度的帶寬時,軟件公司才能開發出滿足用戶需要的程序。web系統被大量使用往往使現有系統不能滿足要求。這就要求開發出新的硬件和軟件系統。例如,在http協議上,最先只有html作為文檔編輯語言。當web瀏覽器(ie,netscape)成為計算機必不可少的上網工具時,動態的web設計語言(java,servlet/jsp,asp,cgi,等)應運而生。其后由于這些語言需要占用系統得計算資源,高速的web應用軟件和主機成為大型網站必不可少的配置。在此背景下,web應用技術在整個人類的生活中開始占據重要的位置,隨著web應用平臺和框架的增多,如何快速有效的進行web應用開發,而且如何盡可能的使前期開發可以為多個web框架應用,成為it業界的研究方向。