前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇軟件測試心得體會范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。
關鍵詞:測試用例;復用;軟件測試;測試用例庫
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2013)14-3308-03
軟件應用的廣泛、功能的強大導致軟件越來越復雜,對測試工程師的素質要求也越來越高,各種測試方法和技術也應運而生,測試用例作為測試工作的重中之重,選擇合適的測試用例對軟件測試的成敗作用重大,測試用例質量的高低直接影響了軟件測試的質量。
隨著軟件測試的長期實施,一般都會積累豐富的高質量的測試用例,如果能夠在以后的軟件測試工作中利用現有的資源,那么會減少測試用例設計的時間,提高軟件測試過程中發現軟件缺陷的效率,縮短軟件測試的時間及成本,保證軟件產品的質量,給軟件產品的按時帶來極大的可能。
在實際工作過程中,測試用例在設計過程中過分依賴于被測軟件,只能在軟件升級及改進的時候可以加以利用;測試用例之間一般都會存在或多或少的聯系,如有些測試用例的運行取決于其它測試用例的運行結果;每個測試工程師在設計測試用例的時候都有自己的喜好,對測試用例的格式和結構也沒有一個統一的定義,并且對測試用例沒有統一進行管理,描述也不太充分,這些都為測試用例的復用帶來了很大的困難。
1 研究現狀
隨著人們對軟件產品質量的重視程度的加強,軟件測試在軟件開發中的重要性也越來越突出,在軟件開發中所占的成本也逐漸提高,對于一些安全性較高的軟件,如銀行系統等,軟件測試費用會所占的比重會更高。
測試用例的設計作為軟件測試過程的核心,它的優劣直接影響了軟件測試的效率,而測試用例的設計在很大程度上取決于測試人員的經驗等,如何利用已有的資源對測試用例進行重用避免軟件測試過程中的重復工作,提高軟件質量,就顯的很有必要了,很多學者對測試用例的復用進行了研究。
文獻[1]提出了通過抽取測試用例操作步驟的關鍵詞,將其提煉為可復用的測試項集合的方法來實現對測試用例的復用,此方法降低了測試用例復用與被測功能的相關性,但是只是對測試用例的輸入域進行復用,對測試用例設計的思想,設計步驟沒有辦法復用。文獻[2]從測試用例的分類著手,針對其具有的共性以及面向對象語言的特點,將面向對象系統中的測試用例依據設計方法分為狀態檢查測試用例和狀態比較測試用例,進而提出了一個統一的測試用例生成、執行模式,使測試用例能夠獨立于被測對象,在理論上討論了通過使用統一的調用模式,以達到測試用例復用的目的。文獻[3] 針對第三方測試機構的特點給出了一種測試用例復用過程模型,對測試用例進行統一建模組織,并進行有效管理的思路。文獻[4]提出了一種測試復用機制,通過對測試用例進行可復用描述,得到可復用的測試用例,并利用刻面樹作為邏輯結構,生成測試用例庫,通過用例庫的各種功能實現用例的復用。文獻[5]給出了基于形式規格說明的測試用例庫,增強測試用例庫中用例的復用程度。文獻[6]針對航天測控軟件的特點,介紹了面向復用的測試用例的結構、組織方式,用例復用的流程等技術,實現了測試用例的管理和復用。
以上文獻對測試用例可復用性的研究,都把測試用例的描述作為研究重點,分析測試用例可復用特征,通過不同的測試用例復用策略,生成不同程度的可復用測試用例庫,該文在上述研究的基礎上,對可復用測試用例的概念、設計思想進行詳細分析,給出了可復用測試用例庫的模型,對提高測試用例的復用程度有很好的效果。
2 測試用例復用
2.1 測試用例復用的概念
軟件復用是指利用已開發成功的值得借鑒的成果、經驗來開發新的軟件產品的過程,整個軟件開發中的一切優秀成果都可以進行復用,包含軟件測試過程,軟件測試復用主要是重復利用測試過程中產生的測試理論、測試思想、測試策略、測試用例及測試文檔等等。其中對軟件測試的核心——測試用例的復用將會提高測試的效率。
測試用例的復用就是在軟件測試過程中利用已經存在的測試用例的過程,根據測試用例被復用的程度,可以分為直接復用和改進復用,如果搜索出來的測試用例與需求完全一致,則直接復用現有測試用例, 一般情況下,直接復用測試用例的情況很少,如果搜索出來的測試用例與需求近似,則對現有的測試用例進行修改和繼承,得到一個新的測試用例之后再復用,即改進復用。
2.2 測試用例復用的類型
按照測試用例的復用[5]類型,可分為以下幾種:
1)同一軟件在不同測試階段的測試用例復用
在項目開發過程中,底層測試對象的測試用例可能部分地復用到高層對象的測試中,例如單元測試的測試用例可以用到集成測試中。
2)同一軟件在不同時間測試下的測試用例復用
在項目開發過程中,隨著應用的推廣,新的需求會被提出來,那么就會出現這種產品的多個版本,在對一個軟件多個版本的測試中,如果軟件在上一次測試過程中產生的大量測試用例被保存下來,在新的一次測試中,可以查詢找到相關的測試用例,進行測試用例的復用,縮短了軟件產品的升級時間及提高了后續版本的質量。
3)類似軟件之間的測試用例復用
同類軟件的測試用例在設計思想、測試策略、測試數據、及測試步驟等都有類似之處,通過借鑒原有的測試用例對發現被測軟件的缺陷,測試效率的提高有很大的幫助。
2.3 可復用測試用例的設計思想
要實現軟件測試過程中對測試用例的復用,必須滿足以下條件:首先應該存在用于復用的軟件測試用例,如果沒有測試用例可供選擇,對測試用例的復用將無從談起;其次可復用的測試用例是有效的,能夠為將來的軟件測試提供服務,測試用例的描述應該完整,并與被測軟件的相關性降低到最小,這樣的測試用例才能滿足將來的軟件測試需求;最后軟件測試工程師了解可復用測試用例的使用方法,才能更好的實施測試用例的復用。在實際操作過程中,需要對測試用例的結構有一個良好的定義,這樣才能在測試環境發生改變的時候,測試用例能夠繼續利用,那么在設計可復用的測試用例的時候要遵循的指導原則如下:
1)測試用例之間的相關性盡量降低到最低;
2)測試用例對被測軟件的依賴盡量減弱;
3)測試用例的描述要規范化;
4)測試用例盡量不包含常量,輸入值用變量代替;
5)測試用例的內容要完整,結構要統一;
6)測試用例的分類要合理。
3 基于復用的測試用例庫模型
實現軟件測試用例復用的有效途徑就是建立一個測試用例庫,并按照適合領域、類型等進行多級合理的分類、組織、存儲,以便進行查找和利用現有測試用例。
軟件測試的目的是盡可能的發現軟件的缺陷,發現缺陷越高的測試用例,越有復用的必要,在測試用例庫的設計中添加測試用例發現的缺陷描述,這樣在復用測試用例的時候,優先選擇易于發現軟件錯誤的優質測試用例;對于優質的測試用例,被復用的測試也會越來越多,那么,在以后的測試用例的選取上,也盡量選擇復用次數較高的測試用例;對于復用效果好的測試用例,或者對于測試用例復用的時候的一些心得體會也很重要,可以指導后面的測試用例的選取,在測試用例的結構中添加復用人的評論也至關重要。
隨著測試用例庫中的用例逐漸增加, 測試用例庫逐漸龐大起來,為了提高測試用例的搜索效率,對于部分復用次數較少的測試用例, 或隨著技術的不斷改進, 對于不再具備實際運行的條件而成為過時的測試用例, 可將其刪除或者移動到歷史用例庫。
在測試用例庫中對測試用例發現的缺陷進行排序,可以對相似類的軟件系統所出現的缺陷有一定的預測作用。在復用測試用例的時候,優先選擇易于發現缺陷的測試用例和數據。
4 總結
軟件測試對于軟件產品質量的高低起著至關重要的作用,如何提高軟件測試的效率已經越來越影響軟件產品是否能夠按時,作為軟件測試的核心——測試用例的設計將變得更為重要。為了縮短軟件測試的時間,就需要重復利用以往的先進經驗成果,即復用測試用例。測試用例的復用程度,取決于測試用例設計的獨立程度及是否規范,并且有一個有效的對測試用例進行規范管理的測試用例庫。該文對可復用測試用例的設計思想進行詳細分析,提出了可復用測試用例庫的模型,對測試用例的復用有很好的效果。
參考文獻:
[1] 胡珊,楊豐玉,張曄,等. 基于測試項抽取的測試用例復用方法[J]. 微電子學與計算機,2010(1).
[2] 徐仁佐,陳斌,陳波,等.構造面向對象軟件可復用測試用例的模式研究[J]. 武漢大學學報:理學版,2003(5).
[3] 卜國峰,孫志剛,丁小良.軟件測試用例的復用研究[J].四川兵工學報,2009(5).
[4] 肖寒,顧春華.一種基于Z規格說明的測試用例復用機制[J].計算機應用與軟件,2009(12).
關鍵詞:五年制高職軟件技術專業;職業能力;畢業設計
1概述
目前,許多五年制高職院校對畢業設計這一環節越來越重視。學校按照自身的人才培養方案,對畢業設計的要求也是各不相同。有的學校采用實習結束后,提交相關的畢業論文作為畢業設計;有的學校要求學生結合實習崗位,針對企業在生產和管理需要解決的問題開發軟件,并輔以文字介紹軟件的設計思想、流程和使用方法作為畢業設計;有的學校則在畢業實習之前,通過畢業設計題庫,讓學生自由選擇設計。不論哪種方案,其宗旨都是以就業為導向,培養學生崗位職業能力。畢業設計是銜接學校教育與企業崗位工作的重要環節,只有了解企業對學生職業能力的要求,設計相應的畢業設計流程,才能在畢業設計中培養學生的職業能力。本文結合我校軟件技術專業的特點,探索基于學生職業能力培養的畢業設計方法。
2五年制高職軟件技術專業基于職業能力的課程體系
2.1五年制高職
所謂五年制高職,也稱五年制大專,通過招收初中畢業生,實施五年一貫制培養模式、融中等職業教育和高等職業教育于一體的職業教育。五年制高職的前3年為中等職業教育階段,后2年為高等職業教育階段,圍繞學生所需的知識、能力和素質,整體設計統籌安排中、高等職業教育的課程體系,達到培養高技術應用型人才的目標。
2.2軟件技術專業基于職業能力的課程體系
職業能力是指從事某個職業的多種能力的綜合,即將所學的知識、技能和態度在職業活動進行類化遷移整合,形成完成一定職業任務的能力。職業能力又分為基本能力(即社會能力)、專業能力及綜合能力也稱核心能力。通過構建職業素質課程、專業基礎課程和方向核心課程三個模塊,凸顯“三個能力”,基于職業能力的課程體系如圖1,職業素質課程模塊主要培養學生具備必要的人文、身心、道德、職業等素質,培養學生與人交流、合作的社會能力;專業基礎課程模塊主要培養學生具備基本編程基礎、網頁設計圖像處理能力及計算機維護能力等專業性的基本職業能力培養;方向核心課程模塊主要培養學生具備使用當前主流開發技術完成軟件開發的職業核心能力。
3基于職業能力培養的畢業設計實踐
職業能力的培養是學校人才培養的目標所在,在畢業設計實踐中有機融合職業能力的培養,可以使學生在畢業后快速適應企業工作并勝任相應的工作崗位,真正實現學校人才培養和企業人才需求之間的零距離對接。
3.1創新畢業設計的組織與管理,保障畢業設計環節
畢業設計的組織與管理是確保畢業設計實踐有效開展的關鍵。首先合理安排畢業設計的時間。畢業設計一般放在學生畢業實習之前的最后一個學期,五年制高職的畢業設計可安排在第9個學期進行,利用第9學期的最后2個月開展,前2個月的時間各科目按原有教學計劃進行教學。其次是指導教師確立,參照我校的教學規律,畢業實習之前的專業課教學就是方向核心課程中各項目實戰課程的教學,所以指導教師也就是負責這些項目實戰課程的教師,教師仍按原課表開展工作,這樣指導教師可以實時了解到所帶學生的進展。通過這一部署,學生每天在固定時間、固定地點集中,畢業設計的時間、場地有保障,指導老師按課表進行指導,做到對畢業設計全程監管,檢查指導及時,學校的教學管理不會紊亂,促進畢業設計實踐實施,也可使學生帶著完成的畢業設計作品去找實習崗位,更好地展示自己的能力水平。
3.2圍繞崗位職業核心能力,設置畢業設計方向
學生的職業能力和從事的崗位息息相關。通過對當地軟件企業的考察、調研及人才培養方案的定位,五年制高職軟件技術專業學生就業崗位有軟件程序員、軟件測試員、網頁設計員、軟件技術支持等崗位。其中,軟件程序員是主要就業崗位,程序員又細分為.Net程序員、Java程序員、PHP程序員及移動開發程序員等。不同的崗位,職業能力的要求有所不同,通過主要就業崗位與所需核心職業能力的分析表1可以得出,合理設置畢業設計方向,可以針對性地提升學生在相應崗位上的綜合能力,所以在選擇設置畢業設計方向時,也是按四個方向來實施。通過專門化的方向設置,提升和強化學生的崗位職業核心能力。
3.3構建畢業設計環節,打造學生的職業能力
結合軟件技術專業主要就業崗位的特點,構建“分組與選擇方向、選題與開題、項目實施、論文撰寫與展板設計,畢業答辯與評價、畢業設計成果展示”這一畢業設計環節,達到充分融合軟件技術專業學生的職業能力,升華核心職業能力,具體內容詳見表2。(1)方向選擇及分組:根據畢業設計具有自主性和選擇性的特點,不僅要滿足學生對某個方向的興趣愛好,又要防止學生都集中在某個方向上,可以采用先讓學生選擇方向,當某個方向滿員時老師可以選擇學生,將學生進行有效分流,完成畢業設計的第一步。(2)選題:最大限度滿足學生自主選題,提高學生興趣。對于學習基礎薄弱的學生可以使用教師提供選題或項目實戰課程中未完成或需要護的項目。(3)畢業設計評價:畢業設計評價從整體到量化。畢業設計評價=作品50%+畢業設計文檔分25%(論文、項目任務書、畢業設計日志、展板設計圖、答辯PPT)+陳述答辯25%。再對作品50%進行細化,主要由指導老師跟蹤考評,圍繞選題的創新和科學性,作品的可操作性及技術性等分階段全面量化評分表,這里不再羅列。(4)畢業設計成果展示交流:一方面通過布置展廳展示學生作品,另一方面挑選優秀畢業設計作品,邀請在外實習學生回校向低年級學生開設畢業設計成果匯報,主要內容包括介紹畢業設計作品創作理念、方法和在外實習心得體會等,引導低年級學生主動探究、激發興趣促進其職業能力的培養。
通過在大唐電信的畢業實習進一步掌握和強化通信專業理論知識的理
解,了解當代通信新技術及運營商實際情況,認識3g無線網絡、光傳輸、epon接入網等商用設備,學習其工作原理及領域。理論聯系實踐,為實際工作打下良好基礎。
2 實習任務及內容
2.1 實習任務
1.做好實習筆記。
2.聯系所學專業知識,多思考,多請教。
3.總結實習中所學的知識及心得體會,完成實習報告。
2.2 實習內容
2.2.1 了解通信運營商現網運營的實際狀況,學習當代通信及信息行業新技術。 國內三大運營商中國電信、聯通、移動。中國電信作為中國主體電信企業和最大的基礎網絡運營商,提供固定電話網絡及cdma網絡運營。中國聯通是基于gsm和wcdma制式網絡的移動通信運營商,同時作為中國主體電信企業和基礎網絡運營商,覆蓋全國城鄉,在全國范圍內經營電信業務。XX年中國聯通分拆雙網,其中cdma網絡并入中國電信聯通停止cdma業務,保留gsm網絡與中國網通組成新的聯通集團。中國移動是一家基于gsm和td-scdma制式網絡的移動通信運營商,其建成了一個覆蓋范圍廣、通信質量高、業務品種豐富、服務水平一流的移動通信網絡。現在的通信正向光通信網絡轉變,其運營商都正在進行光網絡的轉型中,epon(以太無源光網絡)作為一種新型接入網技術的出現,其低成本,帶寬高,擴展性強,節省了大量光電轉換器,為光網絡的建設減少了成本。
2.2.2 參觀3g無線移動網絡、光傳輸、epon接入網等商用設備,了解其工作原理及應用領域。
3g無線移動網絡大大推動了移動互聯網的發展,當前,大部分3g運營商已經升級到3g增強型技術,下行傳輸速率提高到21mbit/s,3g增強型技術所提供的高帶寬,使得占用帶寬較多,實時交互性較強的互聯網業務可以在3g網絡上廣泛應用,為運營商的業務創新提供了更多的發揮空間。
光傳輸是在發送方和接收方之間以光信號形態進行傳輸的技術。現在商用系統sdh系統 155mbps、622mbps、2.5gbps、10gbps。 – dwdm系統 32x10gbps、 40x10gbps。光傳輸技術包括sdh(同步數字系列)、pdh(準同步數字系列)、波分復用技術、光分插復用、光交叉互連及全光網絡。光傳送網絡技術、光因特網技術、寬帶綜合光接入技術是光通信發展的動力。
epon(無源光網絡)新型的光纖接入網技術,它采用點到多點的結構、無緣光纖傳輸,在以太網上提供多種業務。它在物理層采用pon技術,在鏈路層使用以太網協議,利用pon的拓撲結構實現了以太網的接入。它結合了pon技術和以太網技術的優點:低成本;夠寬帶;擴展性強,靈活快速的服務重組;與現有以太網的兼容性;方便的管理等。在不光纖資源短缺的情況下,采用多級分光且分光功率不等的光分路器,可節約光纖的開支。
2.2.3 學習wcdma網絡的硬件組成,進行硬件維護管理、調測開通業務實習。 wcdma(寬帶碼分多址)是一種基于gsm map核心網,utram(umts陸地無線接入網)為無線接口的第三代移動通信系統,是中國聯通采用的3g通訊標準。wcdma的優點是:較高的擴頻增益,發展空間較大,全球漫游能力最強,技術成熟性最佳。在硬件維護中,夏季高溫天氣時,需要定時查看機房溫度,做好機房降溫工作,定期清理rnc防塵網上的灰塵,并通過網管每天查看rnc板卡溫度,在溫度超過40度,就需要及時查看防塵網和機房環境溫度。調測開通業務時,在開通新站前,需要仔細檢查參數的配置,導頻正常應該為總功率的10%,修改范圍為8-12db。軟件測試是使用人工或自動的手段,來運行或測試某個系統的過程。其目的在于檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。
2.2.4 學習wcdma網絡優化技術,掌握網絡優化的基礎知識,上機體會認知網絡優化的技術運用。
網絡優化是整個無線網絡建設過程中的重要一環,其目的是根據無線網絡系統的實際表現和性能,對網絡進行合理的調整,逐漸改善網絡的性能,達到在現有配置條件下系統性能的最優。整體優化是cdma技術的典型特點。因為頻率相同,所以網絡優化應當對系統內所有的基站整體同時進行。
對于wcdma系統的優化主要包括下列幾個方面:
1 小區布局優化:包括站點位置、拓撲結構、是否使用多層、多頻網絡、天線方位角、下傾角、高度等工程參數的優化。
2 覆蓋優化:優化容量與覆蓋之間的關系,根據業務特點優化覆蓋指標。
3 容量優化:合理控制負載,結合阻塞率、掉話率等指標調整資源配置。
4 無線資源管理優化:包括小區參數、切換參數、接入參數、功率控制參數和各類定時器等參數的優化。
5 導頻污染問題:導頻污染問題分析及其解決方案。
6 鄰區優化:包括鄰集列表優化、控制合理鄰區數量以及結合實際情況調整鄰區參數等。
2.2.5 學習三網合一技術,了解最新發展技術,進行硬件維護管理、調測開通業務實習。
三網融合是指電信網、廣播電視網、互聯網在向寬帶通信網、數字電視網、下一代互聯網演進過程中,三大網絡通過技術改造,其技術功能趨于一致,業務范圍趨于 相同,網絡互聯互通、資源共享,能為用戶提供語音、數據和廣播電視等多種服務。三合并不意味著三大網絡的物理合一,而主要是指高層業務應用的融合。三網融合應用廣泛,遍及智能交通、環境保護、政府工作、公共安全、平安家居等多個領域。光通信技術的發展,為綜合傳送各種業務信息提供了必要的帶寬和傳輸高質量,成為三網業務的理想平臺。統一的tcp/ip協議的普遍采用,將使得各種以ip為基礎的業務都能在不同的網上實現互通。具有統一的為三大網都能接受的通信協議,從技術上為三網融合奠定了最堅實的基礎。對于終端用戶而言,三網融合提供的是一種更多的選擇方案和更豐富的交互應用。
3 實習心得與收獲
大學生專業實習是大學學習階段在完成一定的課程后所要進行的最重要的一段實踐環節。實習是每一個合格的大學生必須擁有的一段經歷,它使我們在實踐中增強專業意識和實踐意識,在為期兩周的北京北京協力超越科技有限公司實習中,對通信專業的基礎知識,有了更深的了解,開闊了眼界,增加了見聞,明白了一些通信設備的簡單原理,也明白了目前該行業的最新發展,把平時書本的知識應用在實踐中,看到了所學知識的不足,在大學中積累的知識只是行業中的冰山一角,況且高校教育與現實工作中的實際情況脫節很大,這需要我更加努力學習,了解更多的相關知識,豐富自己的閱歷。 通過實習,我們才有了機會去面對著專業性人員,聽著他們對專業性的講解以及親自看到了許多的大型通信設備,這些都很有助于我們對知識的理解以及與實際相聯系,這些都很益于我們以后的工作。通過實習,讓我體會到了通信在國民經濟發展中所處的地位和所起的作用,加深對通信工程在生產生活中的感性認識,了解這些企業生產和運營的規律,學習這些企業組織和管理知識,鞏固了所學理論,培養了初步的實際工作能力和專業技術能力,增強了我在通信工程方面的學業背景和對本專業的熱愛。
(1)真正體驗到工作并不是想象中的那樣,它不是一件容易的事。
(2)以前覺得書本上很空洞的東西現在清楚明了了許多,我真正的感到了“實踐出真知”這句話的內涵,自己親身實踐的東西是自己永生難忘的,這也是人類得以生活得更好的根本原因。
(3)從小的方面來說,不能有絲毫的馬虎,沒有機會讓自己犯錯誤,每天都要打起精神工作。我切身體會到了做好自己工作的重要性,在做事之前,要周全考慮到做工作的各個方面,特別是我們學理工的,更要有邏輯思維和一絲不茍的態度來對待事情。
(4)深切體會到了學好專業學好知識的重要性,因為我們所學的是通信工程專業,通信工程的地位舉足輕重,所以我要好好在實踐中學習,為祖國的通信事業奉獻光和熱。
關鍵詞:軟件開發;能力培養;案例教學
當前計算機專業或軟件工程專業的學生存在著學用脫節、實際開發能力偏弱等問題。盡管很多高校計算機專業、軟件工程專業在軟件方面的課程體系上是將整個學科專業的知識按一定順序和層次分解,使得學生能夠循序漸進地學習和掌握知識,這無疑是行之有效的。但掌握了軟件開發領域的知識,并不意味著同時具備了軟件開發的能力。事實上,學生雖然接受了系統的軟件開發專業知識的學習和軟件開發技術應用的訓練,但軟件開發能力低下的情況還相當普遍。要從軟件開發的“菜鳥”,成長為軟件開發的高手,或者稱之為“高級藍領”,必須通過長期的歷練,沒有捷徑。但好的教學案例和人才培養模式,對促進軟件人才的成長和開發能力的提升有很重要的作用[1]。
1軟件開發人員能力要求
由于軟件開發是一項技術綜合性很強的工作,因此,企業對軟件開發人員能力的要求也是綜合性的[2]。按照教育部對軟件學院學生實踐能力培養的要求和工程應用型人才培養的定位[3],軟件學院的學生在軟件開發過程中,既要能將用戶的需求映射到良好的軟件體系結構,在進行應用軟件總體設計時有大思路和大局觀,也要能運用現代軟件設計方法和編程技術在進行詳細設計時關注細節,實現高質量的軟件;在考慮軟件實際應用時,既要支持國際化及本地化的應用要求,也要支持軟件及運行平臺升級、操作系統遷
移的應用要求;在技術應用能力上,既要對使用的編程語言和開發環境有很好的把握,也要能綜合運用前期所學的操作系統技術、數據庫技術、網絡編程技術、圖形圖像處理技術、人機交互技術等專門技術;在軟件工程素質上,既要具有軟件工程技術和管理方面的知識,還要具備良好的團隊合作、交流和文字與口頭表達能力。上述這些就是現代IT企業對軟件開發人員的能力要求。
2案例實踐教學對軟件人才培養的意義
案例實踐教學對軟件人才培養具有以下優勢:
1) 學生通過案例學習不僅對理解和掌握計算機軟件的抽象概念及原理十分有用,而且對學習先進的軟件編程方法、使用先進的軟件開發技術、提高自身的軟件開發能力大有益處。
2) 學生通過對案例代碼的閱讀分析,可以使一些一知半解的概念突然變得清晰易懂,使一些久思不解的問題變得豁然開朗。
3) 通過案例學習,學生能夠零距離接觸到軟件高手,深深為他們巧妙的方法、過硬的技術、認真細致的精神、追求完美的態度所折服。
3實踐教學案例的設計
案例設計的內容、質量以及案例教學的水平是案例實踐教學的基礎,是案例學習成功與否的關鍵。
作者簡介:蔡建平,男,教授,研究方向為軟件工程、嵌入式軟件測試和數字媒體技術。
3.1案例設計要求
設計支持軟件開發能力,特別是綜合開發能力培養的實踐教學案例是許多高校計算機軟件類專業教學面臨的問題。
首先,這樣的案例對于高年級的學生要涉及到他們前期所學的計算機軟件開發各個方面的知識和技術,如程序設計、面向對象編程、數據結構與算法、操作系統、數據庫、網絡通信、圖形圖像處理、人機交互、軟件體系結構,等等;另外,要幫助這些學生在通過案例學習后,建立起軟件開發的大思路或大局觀,對軟件的質量要求(特別是可靠性要求)、維護要求(特別是軟件功能擴充及升級要求)有很清晰地了解,并能夠反映到軟件的設計和實現上。最后,學生學習完案例后,要了解支持軟件跨地域、跨平臺和跨時間的應用需求,并掌握保證這些需求得以實現的相關技術,如軟件的國際化和本地化、軟件及平臺的升級、平臺移植或系統遷移等技術。
在案例設計中最為關鍵的問題是案例能夠在各高校無障礙地推廣,不要因為經費、實驗環境等問題使案例設計成果沒有應用價值。因此,案例設計要求全部使用開源代碼或開源技術。事實上,開源軟件的使用,不僅有利于通過免費的開源軟件大大降低搭建實驗環境所需的條件,使學生能夠零距離地學習優秀軟件,全面提升自身的軟件開發能力和軟件開發素質,而且學生可以根據專業興趣或學時安排,有選擇地對其中的軟件和技術進行更深入的學習和專門的研究,形成自身的技術特長和研究方向。
案例設計中還有一點要特別注意:所選擇的案例不要涉及很深的領域專業知識,又是人們感興趣、經常接觸到的東西,這樣有利于激發學生的學習興趣;另一方面,希望案例涉及多種計算機軟件開發的主流技術,如面向對象程序設計技術、客戶/服務器技術、多線程技術、網絡編程技術、數據庫技術、圖形學、GUI等眾多軟件技術;最后,希望所設計的案例是綜合性的應用軟件,以適合學生綜合開發能力的訓練。
3.2案例詳細設計
基于上述的案例設計要求,以及早期項目的研發經歷,我們選擇股票軟件作為軟件綜合開發實踐教學的案例。首先,股票軟件不涉及很深的領域專業知識,又是現代社會人們非常關注、感興趣、且有可能經常接觸或身陷其中的事物,學生容易入門和感興趣;另一方面,這類軟件其工作模式主要是客戶/服務器的工作模式,涉及到面向對象編程技術、網絡通信技術、數據庫技術、圖形技術、用戶界面技術以及數據結構與算法等眾多軟件技術,其綜合性很強,對學生綜合開發能力的訓練非常合適;最后,我們所選擇的股票軟件Stock-0.0.9是一個早期的開源股票軟件,它是一個股票軟件的雛形,易于學生學習和完善,包括做第二次開發。將該軟件作為案例進行實踐教學可讓學生接觸和應用如下開源技術:
1)Linux操作系統及虛擬機技術;
2)GCC程序設計技術(包括編譯技術、調試技術及集成開發技術等);
3)MySQL數據庫應用技術(基于C/C++應用編程接口API的MySQL數據庫開發技術);
4) 基于套接字編程的網絡通信技術(支持TCP/IP協議的開源liptcp++庫的應用);
5) 基于Gtk+的界面設計技術(應用Glade支持界面的設計及應用框架的生成);
6) 股票軟件的結構化程序設計及面向對象編程技術等。
在對Stock-0.0.9進行編譯生成可執行目標代碼并建立其運行環境的過程中,學生能夠接觸和了解到程序設計的強類型機制、可靠性編程思想、軟件構造方法、C/S工作模式實現手段、開發環境及應用環境升級對策、軟件國際化及本地化應用要素、操作系統遷移或移植問題等方面的內容,使學生真正掌握基于復雜圖形用戶界面的大型應用軟件開發的方法和技術,理解現代軟件開發方法學和現代程序設計思想,增強他們解決實際問題的工程實踐能力。
4案例教學實踐及成果
4.1實踐情況
軟件學院針對教育部對軟件學院學生實踐能力培養的高要求和軟件工程碩士復合型工程人才培養的定位,以及學院學生(特別是非在職的工程碩士研究生)綜合性實踐能力太弱等實際情況,經充分論證,確定了提升學生軟件綜合開發能力的培養目標,分別于2006年下半年在學院為本科生開設了“界面設計”課程,為軟件工程碩士開設了“高級軟件編程技術”課程。這兩門選用同樣案例,講授了10多次,受益學生達800多人。在這期間,課程的教學案例和實踐資源也不斷得到補充和完善。
4.2實踐成果――教材建設
學院考慮到案例實踐教學的效果以及教學案例和實踐資源的成熟與完整,決定將案例和課程資源進行總結與提升,出版與之配套的實踐教材,推廣相關的實踐教學經驗,讓國內高等學校計算機和軟件相關專業的實踐教學從中受益。學校對此工作提供了經費支持,同時在清華大學出版社的支持下,完成了《軟件綜合開發案例教程――Linux、GCC、MySQL、Socket、Gtk+與開源軟件》的編寫工作,該教材已于2011年2月出版發行。
1) 教材的主要內容。
除了有大量篇幅講述計算機應用的主要開源技術外(如Linux操作系統、GCC編程語言、網絡Socket編程通信、MySQL數據庫管理、Gtk+界面設計),特別通過實際案例――Stock股票軟件將這些技術融會貫通在一起,并站在更高的角度上對軟件體系結構、應用軟件開發模式、軟件的國際化與本地化,軟件開發和應用環境升級方法以及平臺移植技術等充分地介紹和實例說明,以此達到授人以漁的目的。可以說這是一本集各種主要的計算機開源技術應用于一體的軟件綜合開發實踐教材。
2) 教材的特色。
① 能夠滿足計算機、軟件工程及相近專業高年級學生在前期學習了程序設計、操作系統、數據庫、計算機網絡等計算機專業基礎課程后,急需通過一個案例或一個項目來應用這些專業基礎知識和技術進行綜合性實驗或實踐,提高自身計算機技術綜合應用能力的需求。
② 除了對主流的計算機開源技術做了詳細地介紹和舉例分析外,還特別地突出了計算機開源技術在實際股票軟件項目中的應用,很好地支持著案例驅動式的實踐教學。
③ 教材所涉及到的實驗教學資源相當豐富,覆蓋面相當廣,且全是開源軟件或開源工具,保證了國內許多院校在辦學條件不足,實驗教學經費有限,無法全方位引進商用軟件工具的情況下,仍然能夠開設出軟件綜合性開發的實踐課程。
總之,該教材作為案例實踐教材,自始至終強調和灌輸現代軟件開發方法學和現代程序設計思想,強調軟件綜合開發能力的培養。該教材所涵蓋的大量技術內容、實操案例及問題解決方案,如果學生能夠完全掌握并能實際地用于軟件項目的開發,從軟件開發能力上說已達到一個高級藍領的要求了。
5案例實踐教學的實施方案
北京工業大學軟件學院在學生軟件綜合開發能力培養上分別針對軟件工程本科專業的學生和軟件工程專業學位的學生開設了選擇同樣案例和教材的不同課程――“界面設計”和“高級軟件編程技術”。下面我們主要以本科生為例,介紹在“界面設計”課程中案例實踐教學的實施方案或課程大綱。
5.1課程設計目的
學院在四年制軟件工程專業本科生的教學計劃中,為大三的學生在第二學期安排了“界面設計”的課程,60學時,2學分,共15個實驗單元(每個單元4學時)。
“界面設計”課程是按照教育部對國家示范性軟件學院培養工程化軟件實用人才的要求,以界面設計為立足點,對前期所學的主要計算機技術(如軟件開發、程序設計、網絡編程、數據庫應用等)進行綜合訓練。
要求學生在掌握界面設計的原則、方法和常用技術,掌握當前主流的開源界面開發工具Gtk+和開源界面設計工具Glade進行界面設計及實現等技能的基礎上,通過具體的案例――股票行情分析軟件,將計算機軟件開發所涉及到的相關知識綜合在一起,開展實踐活動。
通過該實踐課程,除了使學生掌握界面設計的全部流程和技術,培養學生界面的設計能力外,可使學生接觸和學習基于復雜圖形用戶界面的大型軟件開發的方法和技術,了解Linux操作系統、編程語言、程序設計、編譯應用、圖形界面、數據庫、網絡通信、軟件體系結構、應用軟件開發模式以及平臺移植等技術在實際軟件開發或應用項目中的具體應用,達到增強他們工程實踐能力的目的。
5.2課時安排
該課程設計以《軟件綜合開發案例教程》為實踐教材,其實踐教學方案主要是按照15個實驗單元并依據教材內容和知識單元組織進行制定的。
第1單元:對課程設計提要求,對Linux操作系統知識點進行講解,并安排學生進行Linux操作系統的實際應用,學會Linux虛擬機的安裝、配置和使用。
第2單元:對應用GCC進行軟件開發知識點進行講解,安排學生進行GCC開發應用實踐,學會編寫工程文件、用GCC編譯C/C++程序、調試程序、建立集成開發環境。
第3單元:對網絡通信及Socket編程知識點進行講解,安排學生進行網絡通信的Socket編程實踐,學會在libtcp++環境下建立客戶/服務器的工作模式。
第4單元:對MySQL數據庫應用知識點進行講解,安排學生進行MySQL應用的相關實踐,學會用MySQL C API進行數據庫應用的簡單開發。
第5單元:對Gtk+用于界面設計的知識點進行講解,安排學生進行Gtk+的界面設計實踐,學會用Gtk+和Glade進行簡單界面的開發。
第6單元:介紹股票交易的相關知識、股票軟件一般包含的內容和所涉及到的技術,安排學生學習和使用國內主流的股票軟件,學會股票軟件的使用方法和使用流程。
第7單元:對開源股票軟件Stock進行分析講解,并帶領學生將Stock源碼編譯成可執行的二進制碼,要求學生學會處理編譯和連接過程中出現的各種問題,特別是強類型問題。
第8單元:對應用軟件國際化和本地化相關知識和技術進行講解,對Stock軟件的Gtk+1.2界面實現方法進行分析,并帶領學生解決Stock軟件中文顯示問題,要求學生掌握在Gtk+的界面控件上和繪圖區中正確地顯示中文、英文及數字方法。
第9單元:對Stock軟件的數據庫應用編程、網絡通信編程等實現方法進行分析,帶領學生解決股票數據庫的建立、股票數據的導入等問題,要求學生掌握Stock軟件中用MySQL C API進行股票數據庫應用、用Socket進行網絡通信的開發技術。
第10單元:對Gtk+2.0特點進行講解,帶領學生解決Stock軟件從Gtk+1.2到Gtk+2.0升級中遇到的各種問題,要求學生掌握確保軟件能夠升級的軟件設計思想和問題解決方法。
第11單元:對在Windows上進行Gtk+應用程序設計的方法進行講解,帶領學生將Stock軟件從Linux上移植到Cygwin和MS VC上,并解決移植過程中的問題,要求學生掌握一般軟件移植的基本要點和基本方法。
第12單元―第13單元:學生按分工要求開展獨立實踐活動,并撰寫實踐報告。
第14單元―第15單元:學生按分工要求進行PPT的實踐匯報和實踐成果的演示。
5.3課程設計組織
課程設計以課題組形式開展,6人一組,每組必須完成6篇報告(Linux虛擬機使用總結報告、Linux下GCC編程總結報告、MySQL數據庫應用總結報告、基于TCP/IP的Socket編程總結報告、用Gtk+設計圖形用戶界面總結報告以及股票分析軟件實現技術總結報告),指定課題組長(完成報告6),課題組其他成員分別完成報告1~5,每人1個,不能重復。
課程設計以實踐為主,完成教材中所布置的實驗習題。作業以電子方式交付。
5.4課程設計考核
對每位學生,課程設計考核包括四部分:
1) 電子版課程設計報告(40分),對于報告其撰寫要求如下:
① 每個報告不少于1萬字(不能以圖表代文,論述為主);
② 報告的基礎是每章的實驗習題;
③ 報告可分4~5章(第一章概述,最后一章總結,其他章節自行組織);
④ 報告以教材為樣式進行排版;
⑤ 報告不要出現網上拷貝的痕跡,網上摘錄的要進行相應處理,嚴禁聊天用語、博客用語以及混亂的控制符和全角符號;
⑥ 圖表要清晰,重要的圖表要親自畫或截,不要拷貝。
2) 每位同學要準備總結報告的PPT匯報(10分鐘的匯報),匯報成績20分。
3) 每位同學要進行所選報告的成果演示,演示成績20分。
4) 考勤成績20分。考勤10次,每次2分,考勤缺席5次的無成績。
5.5基于案例的“界面設計”實踐教學效果
“界面設計”課程自2006年開設以來,學生普遍反映良好,口碑頗佳,軟件開發的綜合實踐能力得到了明顯的提升。
最近,我們對學生學習該課程的體會和感想進行了調查,學生普遍認為案例內容和實驗方案豐富、實用和生動,大大地開拓了他們的眼界。通過基于復雜圖形用戶界面的大型應用軟件開發方法和技術的學習和實踐,對現代軟件開發方法學和現代程序設計思想有了更進一步地理解,增強了軟件綜合開發和解決復雜問題的工程實踐能力。特別是對軟件開發有了大局觀,對軟件開發中軟件設計和高質量代碼編寫的重要性有了新認識,對優秀開源軟件和開源技術有了極大的興趣。下面是部分學生在課程設計實驗報告中對“界面設計”的案例教學談到的心得體會:
1) 通過這門課的學習,我基本掌握了Linux虛擬機的使用,以及Linux下的GCC編程,應用軟件圖形用戶界面GUI的界面設計,網絡數據庫應用技術和網絡通信技術,并能進行具有圖形用戶界面程序的開發,提高了應用C/S模式、管理數據庫數據等實際應用能力。由于平常主要都是理論課程,實踐機會比較少,大家組隊進行開發就更少了。通過此次實踐,我體驗到了團隊開發的重要性,學會了如何合作開發,并大大提高了我解決問題的能力,為以后工作學習增加了豐富的經驗。
2) 以前學習Linux時僅把它當作一種單純的操作系統,沒有在上面做開發,導致對Linux了解不多。經過半個學期基于Linux的股票案例學習后,我收獲頗多。我主動收集和閱讀了大量資料,并鍛煉了實際動手能力。我學到了如何在Linux環境下搭建開發環境、進行編程和開發,并對MySQL,GCC,Gtk+等開源軟件在Linux下的應用有了初步的認識,加深了對Linux下編程整體流程和工作細節的理解,知道了Linux下調試程序的方法,真正了解了程序在Linux下從編譯到運行以及排錯的全過程。
3) 這次課程設計我們的收獲非常多的,首先大家對于一款良好的軟件應該具有什么樣的功能和性能有了比較清楚的認識,這對于我們以后在軟件開發乃至今后的工作都是有益處的。其次,這次復雜的課程設計鍛煉了我們各方面的能力,包括團隊合作、資料查找、學習、融會貫通以及查錯能力,等等。可以說對我們的綜合能力是一次極大的考驗。在整個工程的過程里,大家接觸了很多以前沒有觸及過的知識并對其有了較為深切的理解。最后,本次課程設計溝通了我們幾位同學之間的感情,在辛苦工作的同時,也留下了難忘的回憶。
4) 我覺得這門課對我很有幫助,讓我學會了一個我以前不會也沒接觸過的有用的軟件,學會了如何使用Gtk+來進行圖形界面的設計。通過這一學期的學習,課上聽老師對一些知識的講解,對Linux更加熟識了,對如何在Linux下安裝各種有用的軟件更加清楚。在課后我們組成小組,分工明確,每個人認真地負責自己的那部分的工作,查資料,學相關的知識,然后再給小組的每個組員講,使組內的成員對大家的工作都很熟識,這樣合作起來就更加的融洽,而且也可以互相討論和幫助。在這門課上學到了很多知識,也鍛煉了動手能力,最后作報告培養了大家的語言表達能力。總之,我覺得這門課很有意義。
5)Stock股票軟件的成功運行讓我們對自己的能力充滿了信心。從最開始我們興致勃勃地組成一個小組,憧憬著成功的那一天開始,一路磕絆,直到今天我們看到一個完整的軟件,這里的每一個細小的環節都有著我們為之付出的艱辛努力。這與我們小組成員的團結努力是密不可分的,尤其是負責編譯、調試和排錯的組員。課程設計中遇到的問題,不但沒有將我們擊垮,而且在問題解決過程中,使得我們對許多知識又有了新的理解。感謝學院給我們提供了這樣一門自己動手的課程,它對提高我們的編程能力非常有幫助。
6) 這次課程設計使我建立起一種堅持到底不放棄的精神。之前的我總是缺乏恒心,一旦進展不順即想放棄。這次強迫我接觸很多不會的新東西,而且時間上有限制,令我不得不一次次與失敗和不順打交道。在翻越這一道道“溝壑”的過程中,我覺得自己的毛躁在逐漸退去,變得越來越穩健。我想精神上的成長可能比知識的增多對我來說意義更大。
6結語
我校專家對這種模式的案例實踐教學給予了充分肯定,指出計算機學院或軟件學院學生的軟件開發綜合能力培養一直是高等院校軟件人才培養的一個“短板”,一直缺少好的實踐教學方案、好的實踐教學案例和好的實踐教學教材。因此,軟件開發綜合能力培養的案例教學在傳統實踐教學的基礎上做了很有意義的探索和實踐,其成果顯著、資源完整,具有很好的推廣和普及基礎。學校為了強化該項成果在軟件工程專業學位研究生能力培養上的轉化和推廣,將研究生的“高級軟件編程技術”課程列為學校重點建設的精品課程。因此,我們相信,隨著精品課程建設的深入開展,軟件開發綜合能力培養的案例教學基礎將進一步夯實,其成果將會進一步凝練、宣傳和推廣。
參考文獻:
[1] 蔡建平. 軟件綜合開發案例教程[M]. 北京:清華大學出版社,2011:序
[2] 陳紅霞,毛京一,滕月鵬. 計算機藍領到軟件藍領:高職軟件開發人才培養模式探討[J]. 計算機教育,2010(1):135-137.
[3] 教育部辦公廳關于進一步加強示范性軟件學院建設工作的通知[S]. 教高廳(2007)4號.
The Comprehensive Ability Training for Software Developments Based on Case Teaching
CAI Jianping
(School of Software Engineering, Beijing University of Technology, Beijing 100124, China)