?

軟件工程課程實踐教學研究

2012-09-25 09:34范慶春周秋平
合肥師范學院學報 2012年6期
關鍵詞:成員建模系數

范慶春, 周秋平, 王 凡

(合肥師范學院 計算機科學與技術系,安徽 合肥230061)

1 引言

軟件工程是指導計算機軟件開發和維護的一門工程學科,采用工程的概念、原理、技術和方法來開發與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發出高質量的軟件并有效地維護它[1]。軟件工程除涉及計算機科學技術專業知識外,還涉及眾多其他的領域,如數學與管理學、經濟學、人機工程學等,因此,它是一門多學科的交叉學科,課程內容抽象、系統,理論性強。如何在高等院校中更好地開展這門課程的教學,尤其是實踐教學,發揮學科優勢,突出能力培養,使計算機軟件專業的學生切實具備軟件工程的實踐能力,更加緊密地結合國家信息化人才培養的需求,正確地把握軟件工程領域的發展趨勢,是擺在我們面前的一項非常緊迫的重要課題。

2 軟件工程實踐教學的現狀與分析

軟件工程是高等學校計算機及相關專業教學中的一門核心課程,也是一門理論性和實踐性都非常強的課程,然而在實際教學中,這門課程的教學效果往往不是很理想。學習軟件工程這門課,既需要掌握軟件工程理論,又需要具備一定的實踐經驗,這使得大多數沒有項目實踐的學生在課程學習的過程中普遍感到困難,對概念、原理、方法的理解不深。如何有效開展軟件工程課程教學,成為當前廣大教育工作者思考和探索的問題[2]。

當前高校軟件工程課程教學存在著許多突出問題,如教材內容陳舊,教學內容與實際相脫節[3],教材重理論而輕實踐,大部分教材過分強調軟件工程理論的教學,不能有效地培養學生的軟件開發技能。教學大多是純理論的介紹,缺乏具體案例的分析。由于學生沒有參與過軟件開發的具體過程,因此對課程中講述的開發模型、分析和設計方法等內容的理解不夠深刻,學生很難理解和掌握所學的課程內容。盡管教材所舉的案例對相關的理論有一定的支持作用,但由于案例之間缺乏完整性、實用性和一貫性,往往無法幫助學生全面了解軟件開發的一般過程和其中每個環節應該做哪些工作[4]。

目前軟件工程的項目實驗基本上都是以小組的形式來開展實驗的,分組實驗以增強團隊精神、方便小組成員之間討論為出發點,但是小組中也有部分同學不愿意為項目出力,使得整體的項目實驗教學效果得不到保證。本文針對這種情況展開討論,在統計實驗成績時給出了具體的解決方案。

3 對軟件工程實踐教學的探索

實踐教學是培養學生工程能力和解決問題能力的重要方法和途徑。軟件工程專業理應以實際需求為向導,以培養學生能力為核心,創建一套完整的工程化實踐教學體系。

鑒于以上軟件工程實踐教學的困境,我們結合長期以來的軟件工程課程教學經驗,對實踐教學中的軟件工程實驗體系的設計、軟件工程實驗成績統計方法的革新、軟件工程實驗講義的改革以及案例教學在軟件工程教學中的應用等四個方面進行了探索。

3.1 軟件工程實驗體系的設計

軟件工程的三要素是方法、工具和過程。理論教學注重對學生進行軟件工程方法和理論上的培養,而實踐教學注重對軟件工程工具和過程的學習和培養。整個軟件工程的實驗體系是實踐教學的具體實施,大致分成三個部分:第一部分的實驗偏重對軟件工程的“工具”的學習,第二部分和第三部分的實驗側重對軟件工程的“過程”的學習。

第一部分的實驗是課內實驗。課內實驗共計12個課時,主要學習結構化的方法建模的基本應用、面向對象的方法建模的基本應用、軟件測試以及軟件項目管理等四個方面的內容。在做這些實驗的時候,更注重對軟件工具的學習、安裝和使用,如學習Visio、Rational Rose、WinRunner和Project等工具的應用。

第二部分的實驗是項目示范實驗。鑒于許多學生剛開始做項目實驗時,總感到無從下手,所以我在某個計算機本科班上挑選一些學習能力較強、有主動精神,并有一定的編程基礎的學生組成了一個具有示范性作用的項目小組,共同完成一個綜合性的項目實驗。比如做公寓房出租管理系統項目,這個項目小組的工作階段成果會在上理論課時定期公布。而公布時,我會肯定這個項目小組做得比較好的地方,引導有待改善的地方,并讓班上其他的學生來共同評判和討論,起到了示范性教學的良好效果。

第三部分的實驗是課程設計實驗。在結束理論教學的學習和前兩個部分的實驗后,我把班上非項目小組成員的學生按每4~6人分成一個小組,開展一系列的課程設計實驗。每個小組可以任選課程設計指導書中的題庫里的題目,也可自擬題目。在做分組實驗時,原先參與項目示范實驗的學生分別安排在各個小組里面,作為該小組項目的顧問,協助小組其他成員,更好地完成課程設計實驗。

3.2 軟件工程實驗成績統計方法的革新

軟件工程的實驗課都是以小組的形式來開展的。在我指導實驗的過程中,發現存在著不少問題。比如,有的學生總以不會編程為由,或者以正在看程序設計的書作為搪塞的理由,不積極主動地配合和參與項目。小組實驗本來是為了方便交流和溝通,彰顯團隊精神的,而事實上小組卻成了這些不主動參與項目實驗的學生的“保護傘”。往往在一個小組中認真完成實驗工作的僅僅是組長一人而已,組長工作得特別辛苦,但小組成員卻不知道自己該做什么,最后大家的實驗成績又都是差不多的,這就導致了軟件工程課程實驗的真實效果難以得到確保。為了避免這種吃“大鍋飯”的現象出現,我們對小組的實驗成績統計方法進行了革新。

首先,我們采取給每個小組一個綜合評分Z,然后把這個小組的綜合得分乘以一個班級系數B,作為每個小組的最終得分。這個班級系數B由指導老師對整個班級的表現進行評價后給出。小組中的成員按照其對小組實驗的貢獻大小來進行評定,由小組中的所有成員集中協商后,給每個成員都分配一個個人系數P,這個系數介于0.0到1.0之間,小組中所有成員的系數之和為1.0,小組中每個成員的最后得分X是小組最終得分(Z×B)乘以小組的總人數G再乘以個人系數P,如公式(1)所示;約束條件為所有人的個人系數之和為1.0,如公式(2)所示。如果某個小組成員的實驗成績最終得分超過了100分,則實驗成績以100分記。

比如給出a小組的綜合得分Z是80分,班級系數B為0.9,則這個小組的最終得分是Z×B=80×0.9=72(分)。若該小組的成員共6名,即G=6,則這個小組中成員的個人平均系數為1.0/6≈0.167。

我們在a小組中選出兩名成員a1和a2,假定在小組所有成員集中協商后a1的個人系數P1為0.2(高出小組個人平均系數),a2的個人系數P2為0.1(低于小組個人平均系數),則成員a1的最終成績應該是72×6×0.2=86.4(分),成員a2的最終成績為72×6×0.1=43.2(分)。這樣一來,同一個小組學生的實驗成績就拉開了。

不同小組的總人數G也不一定相同。假定給定a小組和b小組的綜合得分Z都是80分,班級系數B為0.9,那么這兩個小組的最終得分都是Z×B=80×0.9=72分。比如說a小組的成員共6名,即G=6,則該小組中成員的個人平均系數為1.0/6≈0.167。b小組的成員共4名,即G=4,則該小組中成員的個人平均系數是1.0/4=0.25。假定a小組和b小組各有一名成員(a1和b1)經各自小組的所有成員集中協商后,a1和b1的個人系數P均為0.2,則a1的最終成績應該是72×6×0.2=86.4(分),b1的最終成績應該是 72×4×0.2=57.6(分)。這樣的差異是小組總人數G不同所造成的。

比較而言,在同一個小組中,P的意義更大,它決定了一個小組內成員的貢獻率,只有高于小組成員的個人平均系數的成員,個人成績才能最終高于小組綜合得分。而在總人數不同的小組之間比較,個人系數的大小沒有顯示更大的意義,只有小組內部成員的個人系數的差異才能造成最終個人成績的差距。因此,我們以這種統計方法的革新促使每個學生在小組中都要盡可能地發揮積極作用。

3.3 軟件工程實驗講義的改革

在長期的課內實驗的教學過程中,我們選用了不少實驗教材,有的僅僅是各種軟件工具使用方法的羅列,有的只是針對軟件工程實驗的各個階段進行闡述,我們發現這些實驗教材都不是很適合實驗教學,并與我院軟件工程的具體情況也不切合。我院的軟件工程的實驗課時比較少,如果按照所選用的實驗教材做實驗,無法有效保證學生的實驗質量,所以我們決定編制適合本院學生內部使用的實驗教材。

我們編制的實驗教材把軟件工程的主流工具和兩種范型(即結構化范型和面向對象范型)的建模學習結合起來,一方面學會使用軟件項目中常用的工具的應用,另一方面學會結構化方法建模和面向對象方法建模等知識?;谏鲜鲆?,我們將課內實驗的12個課時分成四個實驗:結構化方法建模的基本應用、面向對象的方法建模的基本應用、軟件測試和軟件項目管理。前兩個實驗分別為4課時,后兩個實驗分別為2課時。在第一個實驗中,一方面要求學生對具體的一個項目進行結構化建模,建立數據流圖、實體——關系圖和狀態轉換圖,這三種模型圖都是對軟件需求的不同側面進行描述,要求學生把這三種模型作為一個整體來梳理項目需求,另一方面要求學生學會使用 Microsoft Visio工具創建這三種模型圖。在第二個實驗中,要求學生使用Rational Rose對一個具體的項目進行面向對象建模,創建用例圖和對象圖,使學生在掌握面向對象方法建立模型的同時,掌握好Rational Rose工具的基本操作與建模過程。在第三個實驗中,學習軟件的自動化測試的同時,熟練掌握使用軟件測試工具WinRunner進行對象識別、腳本錄制,掌握腳本的執行及查看結果方法。在第四個實驗中,要制訂一個具體的項目進度計劃,了解現有軟件項目管理工具的主要特點和功能,掌握使用Project工具的基本應用。這四個實驗涉及結構化范型、面向對象范型、軟件測試和軟件項目管理四個軟件工程課程主干知識,同時十分重視軟件工具的運用,為學生以后從事軟件行業工作打下堅實的基礎。這些課內實驗也為軟件工程的課程設計做了較為充分的準備工作,不管后面的實驗學生是采用面向對象方法還是結構化方法都不會覺得陌生,都會比較容易上手。

在軟件工程的課程設計中,我會安排那些難易程度適度的課程設計實驗題目讓學生自己去選擇,學生也可以自擬題目,但一定要事先與指導老師協商,只有指導老師認可之后方可實施。課程設計指導工作特別重視軟件工程的“過程”,強調各個階段結束時一定要提交相應的文檔資料,做到對每個階段都有很好的可控性。通過階段評審后才能進入下一個階段,每個項目小組都要制訂好詳細的項目進度表,項目小組每周都要展開兩次以上的會議討論,每次討論都要做記錄,記錄下當前遇到的問題,用來解決這些問題的可選方案,等等。最后項目結束時召開項目結項會議,項目成員作項目陳述和運行演示,由指導老師給出小組的綜合成績。

3.4 案例教學在軟件工程教學中的應用

IEEE在2004年發布的《軟件工程知識體系指南》中將軟件工程體系劃分為從軟件需求到軟件質量等十個知識領域[5]。其知識點非常繁多,尤其是對大多數沒有項目經驗的學生來說,學習這門課時會覺得很枯燥、學不進去,做起項目來又會覺得無所適從,不知道從哪里開始。老師上課雖然講解了許多知識點,但是學生不能深入地去體會、理解,教學效果不好,所以在上軟件工程課的時候不能僅僅使用傳統的教學方法和手段,實踐證明采用案例教學法能收到較好的教學效果。

在課堂教學中,如果對所有的知識點進行講解,教學效果反而不好。我們改為對重點的知識點進行講解,其他的知識點簡明扼要地提一下,然后讓學生去自學,這樣就有空余下來的教學時間用來對實際項目的講解,著重是針對第二部分項目示范實驗進行點評,這會讓其他沒有參與這個示范項目中的學生很感興趣,教學效果還是不錯的。比如說我們在某個計算機本科班選擇示范實驗時用的題目是一個實用的項目公寓房出租管理系統,在最初的軟件需求活動中,小組成員也覺得不知道該怎么去做,我們以圖書管理系統為例,先給出項目的需求陳述,并給出如何建立實體——關系圖、數據流圖、狀態轉換圖和數據字典等實例作為參考和啟發,這樣一來,項目示范實驗小組做起接下來的需求工作就比較順暢了。

在使用案例教學法時,我們首先注重對正在進行的項目示范實驗進行點評,既對做得比較好的地方加以肯定和鼓勵,也對做得不夠妥善的部分進行引導完善。如在這個公寓房出租管理系統需求建模時,肯定和鼓勵有的成員提出建立系統日志的方式,但是對實體——關系圖用到了“會計”這個角色,在數據流圖中卻是“管理員”這種前后矛盾的現象進行了批評,指出了大家對這個角色的功能特征還是不夠清楚,需要更加深入的研究。還有一個常見的問題就是文檔和代碼的版本號問題,因為是小組成員分工合作完成同一個項目,一開始小組成員對這個問題都不是很重視,出現了問題后我們再加以指正,課后許多學生都對此表示印象十分深刻。通過與傳統教學方式的對比,學生普遍對引入案例的教學方式比較感興趣,能夠取得較好的教學效果。

4 結束語

本文在分析了軟件工程實踐教學現狀后,結合軟件工程課程的特點,給出了軟件工程實驗體系的設計,提出了一套具有獨創性的軟件工程實驗成績統計方法,在軟件工程實驗講義的改革和案例教學在軟件工程教學中的應用這幾個方面進行了積極探索,這些措施方法在軟件工程實踐教學中的實施取得了良好的教學效果。接下來,在現有的探索基礎上,我們旨在對團隊文化建設、校企合作、構建“產、學、研”一體化平臺等課題開展深入研究。

[1]張海藩,倪寧.軟件工程[M].北京:人民郵電出版社,2010:5-6.

[2]劉竹松.《軟件工程》實踐式教學方法探討[J].現代計算機(專業版),2011(8):38-40.

[3]周秋平,范慶春.軟件工程課程教學改革研究[J].合肥師范學院學報,2008(6):65-68.

[4]霍英.項目驅動教學法在軟件工程課程中的實踐[J].計算機教育,2010(17):123-125.

[5]萬江平,安詩芳,黃德毅.軟件工程知識體系指南綜述[J].計算機應用研究,2006(10):1-3.

猜你喜歡
成員建模系數
主編及編委會成員簡介
主編及編委會成員簡介
主編及編委會成員簡介
主編及編委會成員簡介
聯想等效,拓展建?!浴皫щ娦∏蛟诘刃鲋凶鰣A周運動”為例
這些待定系數你能確定嗎?
打雪仗
基于PSS/E的風電場建模與動態分析
不對稱半橋變換器的建模與仿真
過年啦
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合