時間:2022-11-15 19:58:59
開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇軟件工程課程設計總結,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。
關鍵詞:軟件工程 教學改革
“軟件工程”是一門理論與實踐并重的基礎課程,在教學實施方面存在較大的難度。現有的軟件工程課程存在著體系不統一、定位不明確、知識與現實脫離等問題,課程內容比較龐雜和抽象,教學實踐環節薄弱。因此,如何使教學內容先進、講授生動實際、實踐效果良好,一直是軟件工程課程教學需要解決的難點問題。
1.軟件工程課程教學改革現狀
普通高校傳統的實驗教學過于強調理論知識的積累,這限制了學生個性的發展、技能的培養和創新素質的形成。其課程設置與實踐教學內容都嚴重滯后,實踐教學學時占總學時也很少;在實踐教學內容方面對理論內容進行驗證的實踐教學環節占較大比例,而有利于培養應用能力的綜合性、設計性實驗等實踐性教學比例偏少;在實踐教學安排上仍采取先理論,后實踐的順序來確定實踐教學環節。特別是對實踐教學內容、方法及過程與創新性應用型軟件人才的培養目標是否相適應等問題的研究還相當不夠。具體體現在:
(1)實踐教學體系設置不夠完善,缺乏對實踐教學的過程管理,沒有建立配套的質量監控與評價體系。
(2)對實踐教學的認識不到位,存在著重理論,輕實踐;重課內,輕課外的傾向,缺乏對實踐教學內容的總體設計,實踐教學的內容及形式陳舊。
(3)實踐教學教學方法單一,仍舊采用以教師為主以灌輸為主的教學方法,使學生的主觀能動性、動手能力和創新精神的培養受到了很大的限制。
(4)不重視工程化思想的培養,普遍缺少對學生工程能力和職業素質的訓練,沒有很好利用先進的實踐教學管理平臺跟蹤管理學生實踐項目。
(5)實驗設備和計算機專業教師嚴重不足,目前的實驗室設備與管理模式已很難滿足實踐教學的要求,缺乏具備行業工程領域背景和國際化背景的高水平創新實踐教學團隊。
2.改革教學方式
在計算機科學與技術專業的四個專業方向中“軟件工程”課程都是重要的專業必修課,該課程的教學效果直接影響到專業的發展,因此有必要從課堂教學、實驗教學、實踐教學這三個環節入手探索“軟件工程”課程的一種新的教學模式。
2.1案例輔助教學
“軟件工程”課程主要內容涉及指導軟件開發的原理、方法、工具。若脫離了軟件開發實踐,這些原理、方法、工具會變得枯燥、難懂。在“軟件工程”課程教學中引入案例輔助教學能有效地提高教學質量。課程中的每個重要知識點都應配備若干相關案例。在整個課程的教學中應有1到2個貫穿始終的綜合案例。綜合案例應為一個較為實際的軟件系統的開發過程,包括問題定義、可行性研究、需求分析、總體設計、詳細設計、編碼、測試。綜合案例中應包含各開發階段中涉及的任務、技術、方法及工具。學生應在課余時間認真閱讀案例,并進行分析,老師同步在課堂上講授案例,然后學生在實驗課中,按照案例中的步驟重視案例中的系統開發過程,最后總結歸納。
2.2實訓式實驗
實訓式實驗是通過實例演示及模擬、課堂練習、課后作業這三個環節使學生通過實驗訓練很好地掌握相關技術及方法。實訓式實驗包含如下三個環節:
(1)實例演示及模擬
每個實驗,教師應先講解實驗步驟及要求。之后教師講解并演示一個案例,在此過程中學生同步模擬每個實驗步驟。教師做一步,學生跟一步,若有學生出現問題,教師及實驗員應及時輔導使其能跟上大家的進度。
(2)課堂練習
案例講解演示之后,教師應布置1到2個類似練習題學生參照前面所講解的案例,按步驟完成這些練習。學生練習過程中教師應全程指導,實驗課結束時學生應將實驗結果以電子郵件形式發給教師,并書寫實驗報告。
(3)課后作業
實驗課結束時,教師應布置一個相關作業,學生在課下參照教師講解的實例及課堂練習完成作業,以鞏固相關知識。
2.3綜合實踐
“軟件工程”課程的教學中應注重綜合實踐環節的建設。綜合實踐環節包括以下三個方面:
(1)“軟件工程”課程設計
“軟件工程”課程應設置兩周左右的課程設計。課程設計的目標是讓學生體驗軟件開發的全過程,且學會與他人合作,培養團隊精神。課程設計過程中,學生分成若干小組,每個小組選擇一個項目,該項目的規模應與課程綜合案例的規模類似。每個小組應完成項目的問題定義、可行性研究、需求分析、總體設計、詳細設計這些階段。各個小組由組長負責組織、分工、控制進度等,對小組成員的最終課程設計成績有一定的分數浮動調整權;組長帶領全組順利完成任務,總評可加一定分數。小組完成項目之后,應提交項目開發各階段文檔及課程設計報告。
(2)與其它課程的課程設計相結合
計算機專業的很多課程(如數據庫原理、信息系統開發、數據結構、C語言等)的課程設計都與軟件開發相關,可將這些課程的課程設計作為“軟件工程”課程的輔助課程設計。在這些相關課程的課程設計中,可通過恰當地選擇設計題目,將軟件工程的原理、方法、工具應用于這些課程設計中,使學生體會到軟件工程方法與各種軟件開發的關系。
(3)與畢業設計相結合
計算機專業的畢業設計主要是進行實際的軟件開發。目前畢業設計中學生一般面臨全新的題目,設計過程中學生既要分析研究系統又要熟悉開發工具,這樣很多學生會覺得頭緒太多,忙不過來,最終不能完成一個理想的系統。鑒于此可將畢業設計作為“軟件工程”課程設計的延續,延用課程設計中的分組,每個小組延用課程設計中的題目。由于課程設計時間較短,課程設計時各小組只進行了粗略并且簡化的項目開發,在畢業設計的半年中,各小組可在課程設計的基礎上進一步完善擴充已有成果,按照軟件工程的步驟最終得到比較理想的系統。
參考文獻:
關鍵詞: 軟件工程課程教學 問題 對策
一、引言
軟件工程是建立在計算機科學基礎上、指導計算機軟件開發和維護的工程學科。本課程已成為計算機及信息學科相關專業最重要的專業基礎課之一,在計算機科學專業和軟件工程專業的人才培養上發揮著非常重要的作用。
軟件工程是一門研究研究軟件開發與維護的普遍原理和技術的工程學科,其研究的范圍非常廣泛,包括技術方法、工具和管理的等多個方面,軟件項目的過程、組織和管理涉及面廣,理論性、技術性、工程性都很強。軟件工程自身的抽象性與應用性都很強,在目前教與學的雙向過程中存在不少問題,致使教學效果很不理想。如何提高“軟件工程”的教學水平和學生的學習效果,是國內外學者廣泛探討的話題。我從軟件工程教學中存在的問題出發,在更新教學內容、激發學生的學習興趣、改進教學方法與手段、加強實踐環節、改革考試方式等方面提出了一些具體的建議。
二、目前教學中存在的問題
1.教學內容陳舊。
近年來,軟件工程中的WEB應用開發技術、軟件重用技術、原型開發方法、軟件構件、集成化CASE工具與環境等領域取得了顯著的進展,而國內各高校使用的教材,因編寫時間的限制,在先進技術的跟進、知識結構、內容取材及實踐環節等方面或多或少存在缺陷,有的甚至還停留在對面向過程的結構化方法上,卻忽略了目前更適用更流行的面向對象方法,有的教材連項目組織、軟件成熟度、軟件構架、項目風險等十分重要的內容都未給予足夠的論述。同時,軟件工程作為一門正在飛速發展的學科,目前大部分教材難以及時、全面、準確地反映當前一些新方法新技術和新工具。
2.教學方法不當。
目前有些高校仍然把軟件工程列為純理論課程,教學的工具就是一張嘴、一支粉筆和幾乎是教課書內容翻版的教學課件,使得學生往往是被動地接受知識,非常地枯燥乏味,很難激發學習興趣。另外軟件工程課程的教學內容是針對較大規模的軟件項目開發而設計的,十分龐雜,涉及面非常廣,很多知識建立在實踐經驗基礎之上,這種“填鴨式”的教學方法,對于尚未踏入社會、沒有項目經驗的學生而言,很難理解該課程的精髓,很容易對該課程產生虛無縹緲的感覺,使整個教學過程流于形式,該課程變成需要死記硬背的課程,學生在學習完課程后將一無所獲。
3.學生學習中存在的問題。
在傳統的教學過程中,軟件工程往往是一門獨立的理論性課,學生對軟件工程的抽象理論容易感到枯燥乏味。這門課不涉及具體軟件項目,不怎么涉及軟件算法,沒什么邏輯推理,不像程序設計課程那樣能帶給學生智力上的,激發學生的學習興趣和熱情。不少學生認為軟件工程就是一些條條框框,由于缺乏實踐經驗,缺乏合作開發軟件的感性體會,他們在學習過程中難以理解軟件工程的精髓,很難在頭腦中將軟件工程的抽象理論和實際聯系起來,因此較難對這門課程產生學習興趣。
4.教學實踐環節薄弱。
軟件工程的理論并不是空洞的理論,它的許多理論及規范均來自于實際需要和前人的經驗總結,它的目標是實實在在地做出一個滿足用戶要求的系統出來,這是一個很具體的實踐過程。通過學習,學生應該具備從事工程實踐的技能,包括軟件項目的系統分析、編寫文檔、源碼設計與控制、使用工具等基本技能。因此,教師需要將基本概念、原理和實現技術與具體的軟件項目相結合,以實例增進學生理解,以實踐鍛煉學生的工程能力。然而,在當前的教學中,普遍存在理論教學與具體實踐脫節的現象,有時甚至缺乏進行教學實踐的場所與環境,這樣勢必造成學生無法真正理解軟件工程的精髓,更難以做到學以致用。
三、軟件工程教學改革建議
以上分析了當前軟件工程課程在教學中存在的一些問題。隨著教學改革的不斷深入,軟件工程的教學改革在迫在眉睫。下面我就軟件工程課程的教學改革談一些建議。
1.更新教學內容。
在教學實踐中,應該結合軟件工程的發展和國內外軟件企業的人才需求現狀,不斷更新教學內容,更要注重一些新方法新技術的講授。例如,關于軟件工程方法學,重點講授面向對象方法學,略講傳統的結構化方法,注重面向對象方法在內的一些新方法新技術,讓學生盡快熟悉和掌握軟件重用、快速原型、集成化CASE環境等,同時要保持教學內容對先進技術的跟進,介紹一些目前已經推出或比較成熟的新方法,如:基于組件的方法、面向Agent方法、敏捷軟件方法等。而對一些沒有長久生命力的,并且在今后的項目實踐中又很少用到的知識,盡量少講,這樣既有助于開拓學生的視野和培養創新意識與開發能力,又能使他們步入工作崗位的時候而不落伍。
2.提高學生的學習興趣。
“興趣是最好的老師”,是學生求知欲的源泉,是思維發展的動力。教師應從教材實際出發,講究教學方法,激發出學生對本課程的學習興趣,這對于教學效果的保障具有重要的意義。“軟件工程”包含了較多的理論內容,且大多數學生都是第一次接觸,是一門理論聯系實際的綜合性很強的課程。所以教師應通過多媒體動畫等教學手段生動地剖析基本概念和基本原理,并以基本概念和基本原理貫穿軟件工程知識體系的方式組織教學內容,讓學生深入理解基本概念和基本原理背后的深刻內涵,并讓學生系統地掌握各知識點之間的邏輯關系。要鼓勵學生主動地提出問題、分析問題、解決問題,激發學生的主動學習興趣。
課堂討論也是一個提高學生學習興趣的有效途徑。教師在每堂課講完之后應該給學生留出5分鐘時間,要求學生通過討論對所學知識進行總結歸納,然后進行評價。評價方式可以是學生相互交換自己總結的內容并進行討論,最后由教師補充、糾正和提煉知識點。這種方法不僅能提高學生總結歸納能力,而且能激發出學生的學習興趣,使學生主動地參與到教學當中。
3.加強實踐和工程訓練,提高學生的實踐能力。
軟件工程是一門實踐性很強的課程,實踐環節能使學生對整門課程中的方法、技術、工具等有親身的體驗和系統理論知識的梳理,對整個教學質量的檢驗具有舉足輕重的作用。抓好實踐環節,對培養新型的合格的軟件人才具有十分重要的意義。因此在努力提高課程教學質量的同時,還應該加強實踐環節的管理。
軟件工程的實踐以課程設計為主,教師可根據學生的能力,設計一套完整的課程設計方案。課程設計的目標是通過在課程實踐的一系列環節中,如需求分析、設計、編碼和測試,讓學生提高其綜合運用軟件工程的方法、技術、工具、過程進行軟件開發和軟件項目管理的能力,并培養其團隊協作的精神。
課程設計要求完成的項目必須具有一定的規模和復雜性,教師可將學生劃分為6―8人的項目小組,項目組成員相互合作共同來完成一個項目。各項目小組應嚴格按軟件工程各階段的要求來完成該項目,在項目開發的各關鍵階段(可行性研究、需求分析、總體設計、詳細設計、測試和項目開發總結),各小組都要進行報告,由老師和其他小組現場提問,最后教師給出點評,這種階段評審有利于各小組開發進度和質量的保障。
在課程設計結束時,每個項目組應提交軟件產品和規范的軟件開發文檔(項目開發計劃、需求說明書、總體設計說明書、詳細設計說明書、測試分析報告和項目開發總結報告等)。課程設計完成后必須進行現場答辯,在答辯過程中,不僅對學生進行評分,而且指出學生的不足,提出改進的意見和建議。通過現場答辯的方式可以讓學生進一步明確今后需要改進的方向,使自身在分析問題、解決問題、交流溝通、團隊協作、談判溝通、適應發展等方面的能力獲得較大的提高。
4.教學方式與教學手段的改革。
軟件工程的原理、方法、技術若不與實際項目結合,學生往往難以有深刻的體會。因此,為增強授課效果,提高學生學習的積極性,課堂講授應引入項目式教學法。教師可設計一個完整的、規模適中、難易適度的軟件項目,在講授軟件工程基本知識點時結合該項目進行重點講解,即以該項目作為貫穿整個軟件工程授課的主線。
為了提高課程教學質量,激發學生的學習興趣,不僅可以采用多媒體教學方式,而且可以建立軟件工程課程的教學網站。軟件工程課程網站中不僅有該課程的介紹,而且有大量的教學資源(多媒體課件、實驗指導、自測題、試卷庫、常用軟件工程新技術介紹、新工具介紹和演示、有價值的參考書籍和網址等),學生還可在網站上提出自己在學習過程中遇到問題或者對本課程的教學好的建議,教師或其他學生則可進行回答或共同探討,為廣大師生學習、交流、提高提供很好的途徑。
5.考核方式的改革
很多高校軟件工程課程傳統的考核方式以期末書面理論考試為主,但軟件工程是一門實踐性非常強的課程,原有的考核方式使學生不注重實踐能力的提高,傾向于被動地接受理論知識,學習缺乏興趣和主動性,只是在考試前突擊復習來應付考試。理論考試成績不是重點,主要是看學生能否在軟件開發過程中貫徹軟件工程學的思想和方法。因此,要加大實踐考核的比重,如課堂出勤占10%;課堂表現占10%,為力避學生考前突擊現象,本課程在平時課堂教學中采取課堂提問方式或者進行一些基礎理論的測驗,幫助學生循序漸進地鞏固基礎知識點;課程設計占40%;期末考試占40%。采用以上考評方法,學生們將非常重視課堂上的發言,以及知識的運用和創新,主動學習的積極性將會大大地提高。
總而言之,要改進軟件工程的課程教學,除了要遵循教育學的普遍規律、合理安排好課程內容外,還要培養學生的學習興趣,重視理論與實踐的結合。
參考文獻:
[1]張海藩.軟件工程導論(第五版)[M].北京:清華大學出版社,2008.
[2]曹薇.高職院校軟件工程課程改革探析[J].高教論壇,2008,(02).
[3]陳麗萍,張芳.軟件工程教學方法探討[J].教學園地,2009.3.
浙江大學計算機學院在專業課程中實施課程設計(project)已有10多年的歷史,積累了豐富的經驗和資料。為全面總結專業課程設計的建設經驗,推廣建設成果,學院特別組織相關課程的骨干任課教師編寫了一部以課程設計內容為主的“高等院校計算機專業課程綜合實驗系列規劃教材”,并于2007年下半年起由浙江大學出版社陸續出版。
該系列教材的作者不僅具有豐富的教學經驗,也具有豐富的科研經驗,是浙江大學計算機科學與技術學院和軟件學院的教學核心力量。這支隊伍目前已經獲得了四門國家精品課程(C語言程序設計基礎及實驗、操作系統、嵌入式系統、計算機輔助工業設計)以及六門省部級精品課程,出版了幾十部教材。該系列教材涵蓋了計算機和軟件專業絕大部分專業必修課程和部分選修課程,是一部比較完整的專業課程設計系列教材,也是國內首部由研究型大學計算機學科獨立組織編寫的專業課程設計系列教材。
系列教材由《C程序設計基礎課程設計》、《軟件工程課程設計》、《數據結構課程設計》、《數值分析課程設計》、《編譯原理課程設計》、《邏輯與計算機設計基礎實驗教程與課程設計》、《操作系統課程設計》、《數據庫課程設計》、《Java程序設計課程設計》、《面向對象程序設計課程設計》、《計算機組成課程設計》、《計算機體系結構課程設計》、《計算機圖形學課程設計》等十三門課程的綜合實驗教材所組成。
下面舉例介紹其中幾本教材的主要內容及特點。
《C程序設計基礎課程設計》:在分析C語言高級編程技術的基礎上,通過對“通訊錄”、“計算器”、“俄羅斯方塊”等3個完整案例的解析,指導讀者按照軟件工程的生命周期開發過程,從問題分析、設計、編碼到測試,循序漸進地完成大型程序的開發。教材還提供了9個大型程序訓練的題目及簡要分析,供讀者練習。本教材還針對教學需要,提供了可參考的實施過程說明、開發文檔模版、考核方法和評價標準,特別強調學生團隊合作精神的培養。
《數據結構課程設計》:針對堆棧、樹、圖、排序、哈希查找、算法設計等方面的內容提供了8個課程設計案例,分別從基本知識回顧、設計題目、設計分析、設計實現、測試方法、評分要點等幾個方面進行分析。教材還提供了8個課程設計習題,并對實現要點進行了簡要的分析。
《計算機組成課程設計》:要求實驗者用硬件描述語言(Verilog HDL)設計單元電路、功能部件和指令條數有限而功能較齊全的單時與多時鐘CPU。在計算機功能單元仿真模擬正確后, 實驗者能把自己設計的結果寫入到Spartan-3 Starter Kit Board開發板的FPGA可編程芯片上, 并能直接實驗自己的設計(芯片)是否達到預期目標。實驗設計由淺入深, 內容豐富。
《數據庫課程設計》:以圖書管理系統的開發為例,從需求分析開始,到數據庫設計、數據庫應用和應用開發等過程。其中應用開發的環境和工具包括MySQL數據庫和ODBC接口技術,以及SQL Server和JDBC等。本書側重于介紹“怎么做”和做的過程,而非原理性和全面性的闡述。
《軟件工程課程設計》:主要圍繞軟件工程的基本知識點,通過詳細分析一套典型的實際案例――銀行系統的開發,指導學生應用軟件工程生命周期的理論以及使用相應工具完成實際項目的開發。同時提供了一系列練習項目,供者進一步練習。
《編譯原理課程設計》:主要圍繞設計、實現一個簡單的程序設計語言SPL(Simple Pascal Language)及其編譯器;涵蓋了編譯原理的詞法分析、語法分析、中間代碼生成、代碼優化和目標代碼生成等各階段的內容。通過對該語言編譯器的分析,使學生們對編譯原理有一個形象、直觀和透徹的認識和感受,以便更深入了解和掌握編譯原理的內容和實現方法,進而提高分析問題與解決問題的能力。
關鍵詞:高校教學;計算機軟件工程;課程改革
1前言
我國的各大高校開設計算機這一學科,主要目的就是為社會培養能夠熟練應用計算機的專項人才.在高校的學習過程中,學生能夠掌握理論知識以及一些基本的技能.而計算機專業必學的軟件工程這門課程,能夠拓寬學生的視野,幫助學生從多角度思考問題,因為這門課程的綜合性很強.但是隨著時代的進步,課程教學卻沒有與時俱進,這難免會影響學生的學習,所以為了給社會培養更多專業人才,應該與時俱進改革計算機課程.接下來先闡述軟件工程的含義及特點.
2軟件工程的含義及特點
2.1軟件工程含義
SE是軟件工程的簡稱,軟件工程這門學科主要研究的就是如何用工程化的辦法來搭建或者運營維護高質量的軟件的.軟件工程這門課程涉及到了很多方面,比如:數據庫、設計語言模式等;而且在當下該種軟件運用在很多地方,即我們日常用的電子郵件、經常玩的游戲等都用到了該種軟件,另外在工作中常常也會用到該軟件.對于此軟件的合理運用,不僅能夠提高工作效率,還能間接的提高工作的質量.所以在大學計算機專業中設置軟件工程這一課程是至關重要的.
2.2軟件工程特點
軟件工程這門課程自身具備很多的特點,而比較突出的有三個:①比較抽象,之所以說具有抽象性,是因為軟件工程這門學科所講授的原理技術等都必須置于具體的工程項目上,并沒有披露單個項目的一些信息資源,所以說是抽象的.另外在校學生的知識水平并沒有達到學習軟件工程理論的高度,或者說兩者間存在很大的間隙.而會出現這種情況,是因為要想學好軟件工程這門課程,那么必須投入實踐投入到工作項目中,在做項目的過程中理解軟件工程的原理,只有這樣學到的知識才會更加印象深刻.②總結前期工程項目.軟件工程非常擅于總結,而總結的內容是前期大型軟件開發成功或者失敗的例子,對于成功的例子,羅列出好的地方并證明實踐的過程;而對于失敗的例子,則找出錯誤點,警醒后來的研究者.另外,軟件工程常常指導大型的且相對比較復雜的軟件,這樣容易發揮其價值展現其功能,而對于小型的項目進行指導不易發揮其意義.③能夠展現軟件開發的整個過程.眾所周知軟件的生命周期包含很多階段,比如:對于問題的定義、進行可行性研究、對需求進行分析、設計、維護等.但是每個階段的成果并不會立竿見影的影響工程項目也不會在本階段體現,所以要想把軟件工程的技術方法原理等熟練的運用到實際工作過程中,那么必須要進行深度學習,透徹了解每個階段的特點,并將每個階段聯系起來.以上就是軟件工程的含義及特點.
3軟件工程課程教學改革策略
3.1著手營造良好的學習環境
軟件工程這門學科涉及的學科領域比較廣泛,而且知識體系也比較錯綜復雜,再加上計算機這門學科更新的速度飛速,所以說要想在短暫的課堂上對其進行全面講述,相對來說比較困難.而要想改善這一情況,那么學生就應該具有主動學習的意識,應該意識到自身是認知的主體,要積極主動地去探索學習,進而拓展知識層面;此時的老師要充當指導者的角色,并要努力為學生營造良好的學習環境,而在營造學習環境的過程中,可以采取以下幾種形式:其一,建設教學網站.目前我國的互聯網技術比較發達,所以高校計算機教師為了能夠給學生構建高效的學習環境,可以把網絡技術給充分的利用起來,比如:可以建設教學網站,并在此網站上利用超鏈接的形式來學習跟此學科有關的知識.再者,利用網絡技術開設網站具有兩個顯著的優勢,即知識更新速度快以及能夠包含大容量的信息,基于這兩個優勢,能夠輔助學生更好的對軟件工程這門學科進行自主的學習.除此之外,建立網站也能夠給學生提供交流溝通的平臺,在此平臺上學生可以暢所欲言的跟教師進行探索,學生間也可以彼此切磋,進而充分地調動學生自主學習的熱情.其二,加強校企合作.軟件工程是一門實踐性比較強的課程,要想學好這門課程僅僅依靠課上認真聽講是遠遠不夠的,必須要動手實踐.所以各大高校為了促使學生更好的學習,應該時刻洞悉該行業的動態并給學生提供實踐的地方.而要想實現這一目標,目前最可取的辦法是:各大高線應尋找實力雄厚的軟件公司進行合作,并通過合作的公司來獲取該行業發生的風吹草動,進而有方向的變革教學內容以適應時展.另外,也可以邀請合作企業有名的軟件工程師來校給學習做演講,讓學生進一步了解軟件工程這一行業的目前狀況以及發展前景等,并現場指導學生,進而提高學生學習的積極性.還有在寒暑假期間,學校可以組織學生去合作企業實習,提高學生的動手能力.
3.2創新改革考核體系
由上面我們可以得知:軟件工程這門學科本身就具有很強的實踐性,所以學校、任課教師在設置考核體系時,要認識到本門學科的特點,制定合理的考核體系.比如:軟件工程這門課程偏重實踐,所以在考核時要重點考察學生的動手實踐能力,而不是重點關注對這門學科的理論考察.另外,教師也應意識到制定考核制度不單單是為了檢驗學生對此門課程的了解掌握程度,更是為了督促學生對此課程的學習以及提高學習的熱情.所以為了實現這一目標,就應該創新改革考核體系,鄙棄傳統的通過一張試卷定成績以及評價一切的標準,而是重視學生應用能力的考核,畢竟當今社會需要的不是紙上談兵之人.而現階段能夠良好使用的方案是:平時作業+課堂表現+案例分析+筆試+實踐,這五個模塊所占的比例,每個學校可以根據本校情況而定,之所以要提倡這種考核方式,是因為這種方式能夠有效改善學生對知識死記硬背的情況,進而轉向實踐與應用;再者也可以調動學生的積極性,所以各大高校一定要根據實際情況創新變革考核體系.
3.3要科學合理的安排實踐環節
軟件工程這門課程實踐性、綜合性很強,所以不能跟其它的課程一概而論,而是應獨辟蹊徑結合具體的項目或者實際應用展開教學,只有這樣才能真正的促進學生的進步.而在我國大多高校在軟件工程的課堂上,一般會把課程設計安排在授課結束后,這樣不利于學生鞏固已學的知識.所以要想改變這一情形,應重新合理安排課程設計,比如可以在不影響授課進度的同時搜集一些資料或者提早指導學生設計課程題目,進而達到既聽課又實踐的目的,這樣一來也能及時的消化課上的內容并把其運用到實際的應用中.以上的這一實踐環節是小打小鬧,等到課程結束后就需要大動干戈了,也就是集中的組織學生進行課程設計,并在這一階段也要完成對上一階段的總結并記錄在案.在進行課程設計的時候,為了能夠取得良好的效果,在實施時最好采取小組合作的形式,小組成員不能過多也不能太少,應保持在6個人左右,并給每個人安排在這個團隊中扮演的角色以及承擔的主要責任.等做完以上工作后,指導教師應該虛擬一些項目分配給不同的小組,并給其提出具體要達到的目標以及要求,通過這一虛擬的實踐項目能夠啟發學生的思維,使其獲得更好的發展.另外在實踐的過程中也應注意:在整個過程中教師扮演的是指導者的角色,所以不要過多的干涉學生應讓其獨立的完成,等學生遇到無法解決的問題時教師再適當的點撥指點迷津.由此可知:采用雙管齊下的教學方式,即一邊授課一邊指導學生設計課程題目,能夠很好的解決實踐與理論相脫節的問題,進而更好的促進學生的學習同時也能夠使課程設計達到事半功倍的效果.
3.4創新并嘗試多種教學手段
高校計算機中的軟件工程這門課程,涉及的內容廣泛復雜且相關技術理論也很多,再加上實踐性很強,對于剛接觸此課程的學生來說是有一定難度.如果此時學生的意志不堅定,就極有可能會被枯燥乏味的學習所擊退,進而放棄對其的學習.所以為了避免這一現狀的出現,教師就應該創新并嘗試多種教學手段,進而激發學生學習的興趣,畢竟興趣是最好的老師.比如在日常的教學過程中,教師可以充分采用以下兩種教學手段進行授課:其一,在板書授課的過程中合理運用CAI.隨著科技的發展,CAI技術也越來越趨于完善并運用在社會的各個領域中,再加上CAI具有諸多優勢,比如:運行速度很快、可容納的信息、內容多,把其運用到軟件工程的課程中,能夠很好解決軟件工程這門課程課時少但內容頗多的難題.另外,把CAI技術運用到軟件工程課程的教學過程中,也能夠吸引學生的目光引起其興趣,雖然這種新興的教學設計手段可以通過視、聽覺來充分的調動學生的興趣,但是也不能完全放棄傳統板書的教學方式,因為這種方式能夠時刻的觀察學生的課堂反應,反應良好則接著深入;反應不好則詢問學生哪里不懂,等學生掌握后再進行下一步,這樣的教學手段能夠兼顧班里的每一位學生.由此可知:上述提到的這兩種教學手段各有各的優勢,所以在軟件工程課程的課堂上應該根據本堂課所講授的內容合理的選擇授課手段,進而營造良好的課堂氛圍,達到教學目的.其二,可以嘗試場景模擬的教學手段.在高校計算機專業中開設的軟件工程這一課程,要想實現其價值那么就應把其放在具體的實踐過程中,如果僅讓學生一味地學習理論知識技術而不付諸實踐無異于紙上談兵、緣木求魚.但是只在課堂上通過口述的方式給學生講解實際的項目也不能起到很好的效果,因為大多數學生并沒有真正的接觸過項目實踐,也就不能感同身受,反而會覺得教師所講授的內容夸大其實.所以為了避免以上這一情況的出現,教師在授課的過程中可以根據課程內容適當的給學生虛擬場景,雖然不能一比一的完全還原實際項目,但是在授課的過程中可以模擬實際項目的簡單場景,通過師生合作的方式來完成這一項目,并在完成項目的過程中可以把課堂上講授的理論技術運用其中,這樣一來不僅能夠鞏固課堂上學習的理論技術,還能激發學生自主學習的興趣.可謂一舉兩得.所以為了培養真正的有用人才,就應該在授課的過程中合理利用多種教學手段,給其營造良好課堂氛圍,進而激發學生學習的興趣,達到提高學生綜合能力的目的.
4結束語
由上述內容可知:要想改革高校計算機教學中的軟件工程課程,那么就應該在透徹了解其基礎上進行,畢竟知己知彼方能百勝不殆.而軟件工程這門課程顯著的特點就是實踐性超強,所以在改革軟件工程課程時就應該圍繞這一特點開展,只有這樣才能設計出適合學生學習的課程,才能真正的促進學生的進步.而在以上篇幅中,本人主要研究了高校計算機教學中軟件工程課程的改革,希望對大家有所幫助.
參考文獻:
〔1〕蔣輝.軟件工程與高職計算機軟件專業[J].中國科學教育,2015(10).
〔2〕孫涌.現代軟件工程[M].北京:希望電子出版社,2012.
〔3〕陸惠恩.軟件工程基礎[M].北京:人民郵電出版社,2015.
關鍵詞:雙語教學;軟件工程;計算機專業;獨立學院
中圖分類號:G642 文獻標識碼:A
1引言
由于軟件國際化和本地化研發、國際交流和學習先進計算機開發技術的需要,英語在IT行業的地位越來越重要。重點和一般本科院校的計算機專業普遍開設雙語課程,以達到提高學生的英語應用能力的目標。
軟件工程學科涵蓋軟件開發、維護和管理的基本概念、基本原理、開發軟件項目的工程化方法和技術以及開發過程中應遵循的流程、準則、標準和規范等。因此,在軟件工程課程實施雙語教學,能夠有效地規范課程、革新教法、重新定位培養目標和改善教學效果,實現計算機軟件專業人才培養進入國際化軌道。
目前,大多數獨立學院都開設了計算機專業,獨立學院的人才培養基本目標是培養創新應用型本科人才,因此,在獨立專業教學中開展雙語教學是大勢所趨。獨立學院計算機專業學生的英語水平與重點或者一般本科院校學生的相比有較大差距,開展雙語教學時面臨一些新問題。
某獨立學院在2007年春季學期對2004級計算機專業軟件工程課程進行雙語教學改革,總結經驗教訓后,決定在2008年春季學期對2005級計算機專業軟件工程課程恢復普通教學。本文介紹了具體情況。
2教學目標
軟件工程課程教學的主要目的是使學生通過課程學習掌握開發高質量軟件的方法、有效管理軟件開發活動并為參加大型軟件開發項目打下堅實的理論基礎。課程教學
包含課堂教學、實驗教學和課程設計三個環節。課堂教學側重于講授軟件工程的相關原理和概念;實驗教學要求學生了解并掌握常用軟件開發工具;課程設計主要通過適當規模的軟件系統的需求分析、設計、實現、測試與部署,培養學生軟件工程實踐能力、遵循軟件工程規范撰寫軟件開發文檔的能力、團隊協作精神和軟件項目管理能力。
3教學實施
3.1基本情況
該學院計算機專業2004級和2005級學生人數、通過大學英語四級考試人數和第一次問卷調查時學生對雙語教學持贊成態度的比率、Java與數據結構課程的平均成績見表1。另外,2004級和2005級分別有24%和20%的學生在軟件工程課程開課前參加了IT培訓機構舉辦的軟件設計培訓。筆者此前擔任這兩個年級Java、數據結構課程的教學,試卷難度和知識覆蓋情況基本保持一致。
上述基本情況表明兩個年級學生的平均水平不顯著。
3.2雙語教學
課堂教學選用Ian Sommerville編著《Software Engineering》(Eighth Edition),參考教材為該教材的中譯版。課程實驗與設計教學采用自制的講義。
該學院計算機專業人才培養計劃規定,軟件工程課程課堂教學是40學時、實驗課時16學時、課程設計40學時(2周×5×8)。2008年春季學期的軟件工程教學依然沿用該教學計劃。2004級和2005級軟件工程課堂教學均采用案例教學法,課程實驗內容與課程設計的課題要求基本相同。
開展雙語教學前,我們得到學院教務管理部門的大力支持,但未與學生協商。開課時,學生曾不愿意領發學院訂購的《軟件工程》教材,原因是學生擔心教材看不懂和主講老師會中途放棄該教材而換用其他教材。經過細致的解釋工作,80%的學生領購該教材,20%的學生購買中譯本。
在教學過程中,及時根據學生反饋調整教學形式。因多數學生感覺不適應“英語講授+英文教案”形式,第9~20學時,調整成“漢語講授+英文教案”形式;第21~34學時,調整成“漢語講授+英文教案(中文對照)”形式;第35~3時,以小組為單位,學生報告自學教材部分章節。第40學時,點評學生自學情況和課程總復習。作業以中文或英文方式完成。
3.3普通教學
計算機專業課程教學中,專業課程教育應當是主線,“雙語教學”只是給學生提供一個應用英語的機會,英語只是一個載體,實質還是應當培養學生掌握計算機專業的知識和技能。根據2005級計算機專業學生的基本情況和2004級雙語教學的經驗,我校2005級軟件工程課程教學是采取普通教學形式。
教材采用《軟件工程理論、方法與實踐》(孫家廣主編)。課堂教學課時安排和實驗教學內容與2004級的基本相同,課程設計教材選用韓萬江主編的《軟件工程案例教程》。
3.4教學效果評價與分析
以兩個年級工程課程的筆試成績為依據,評價雙語教學與普通教學的教學效果。自制試卷時,確保兩個年級的試卷覆蓋知識點和難度相同。被考察知識點分布、課時分配、平均成績( , 表示第 個學生的成績)和均方差( )見表2。第一列A~J分別表示概述、軟件過程、需求工程、面向對象基礎、面向對象分析、面向對象設計、軟件實現、軟件測試、項目管理各章和課程設計。“總計”行依次是總學時、總分、2004級和2005級的平均成績、均方差。
表2中2005級的平均考試成績比2004級的高,且均方差比2004級的小。顯然,采取普通教學方式教學效果更好。
課程結束時進行第二次問卷調查(表3)。由表3可知:2004級使用英語教材的學生因為英語基礎差,大部分精力浪費在對教材中的英語詞句的理解上,平均每次課的復習時間比2005級學生多花費0.76小時;在回答對雙語教學是否支持問題時,2004級計算機專業60%的學生贊成在專業課程教學中采取雙語教學形式,比2005級的高。表明2004級學生在經歷過雙語教學后,清楚地認識到專業英語方面的差距,具有提高英語水平的強烈需求;兩個年級有超過70%的2004級學生建議提前C/C++和Java語言程序設計等課程開展雙語教學;近六成的學生建議“計算機導論”進行雙語教學。2005級課程設計的教學效果好的主要原因是,他們能夠在課余根據課程指導設計教材,進行自主學習。
4解決方案
獨立學院確定在計算機專業課進行雙語教學時需要重視如下問題:
(1) 應該對初次開設雙語課程的學生進行雙語教學的實質、教學形式以及意義等宣傳,讓學生從思想上與老師保持一致,這才有可能在教學過程中達到教學相長。
(2) 應盡力避免學生將主要精力浪費在對英語語句的學習方面。在雙語教學前,需對學生進行英語水平調查,如果學生普遍英語水平不高,建議慎重考慮選擇雙語教學。
(3) 在開展計算機專業課程(如軟件工程等)雙語教學之前,建議在“計算機導論”、“C/C++”或“Java程序設計”等先導課程中先開展雙語教學,并在第一學年第二學期開設專業英語選修課,以提高學生的專業英語閱讀和應用水平。
(4) 應根據學生的實際英語水平靈活選擇“漢語講授+英語教材+中、英文作業”、“漢、英講授+英語教材+中英文作業”或者“英語講授+英語教材+英文作業”等形式。
關鍵詞:實踐性教學;軟件設計;課程改革;計算機專業;項目實訓
中圖分類號:G642
文獻標識碼:B
文章編號:1672-5913(2008)02-0082-04
0引言
從1956年哈爾濱工業大學率先開辦“計算裝置與儀器”專業算起,到現在普遍采用的“計算機科學與技術”專業,計算機專業教育在中國的大學里已經走過了50年的歷程。70%以上的本科學校開設了計算機專業,在校學生近30萬[1],其規模居所有本科專業的首位。加上專科、高職、中職在內,其數量還要大得多。計算機專業人才在信息化建設過程起著舉足輕重的作用。然而,企業面對十里挑一的大好形勢,卻經常會找不到合適的人才,造成這種局面的主要原因是學校培養與單位需要存在一定的脫節現象,主要表現為重理論輕實踐,動手能力差,因而改革實踐環節提高學生的操作技能成為高校計算機類專業的必經之路。
1軟件設計類課程實踐性教學的內涵
實踐性教學是指為配合理論教學,培養學生分析問題和解決問題的能力,加強專業訓練和鍛煉學生實踐能力而設置的教學環節,通常有兩種落實途徑:一是隨堂實踐,即課程作業、實驗、上機操作等;二是集中實踐,即社會調查、各類實習及見習、課程設計以及畢業論文或畢業設計。教學計劃中規定的作業、實驗、實習等環節和集中實踐環節是學生必修的內容,在課程和專業學習中具有突出的地位。不同專業的實踐性教學方式,教學管理和考核辦法也不相同,但都是以專業培養目標作為前提。對于計算機(包括軟件工程)專業的軟件設計類課程,其教學目的就是培養合格的軟件工程師,適應軟件設計和項目管理崗位的需要。
1.1軟件工程師崗位需求
任何一個軟件企業,開發團隊都需要這樣三類人才:一是既懂技術又懂管理的軟件人才即系統分析師(高級),二是軟件工程師(中級),三是程序員(初級),這三類人員在軟件企業的正常比例應該是呈金字塔結構,根據國際經驗,高、中、初級軟件專業人才的比例應基本維持在1:4:8。通常系統分析師由研究生承擔,軟件工程師由本科生承擔,程序員則由大專生以及專門培訓機構的學員完成。如圖1所示。
從圖1可以看出,計算機專業的本科生對應軟件工程師崗位,在軟件開發團隊中處于中間層,優秀者可以上升到系統分析員層次。同時,軟件工程師也要兼任程序員角色,因為不少軟件企業規模較小,難以按照軟件工程的規范細化分工,需要能做分析、能寫代碼、能做實施甚至用戶培訓的“多面手”。作為高校,必須充分考慮這種情況,以培養軟件工程師為主線,也要提高系統分析能力,同時還應該加強代碼編寫的訓練。
1.2軟件設計類課程實踐性教學的內涵
軟件設計類課程主要包括計算機語言類、開發類、設計類、制作類和工程類課程,共同的特點都是經過系統學習,既能夠按照規范獨立設計小型軟件,組成團隊后又能夠設計出具有實用價值的中大型軟件。
軟件設計類課程實踐性教學標目的是培養學生兩個方面的能力:即獨立編程能力和項目合作開發能力。一方面,能夠利用所學語言和平臺設計小型軟件,同時能夠按照項目分工,在項目經理(負責人)的統一安排下,在技術上服從既定的設計方案完成模塊的開發,并做好相應的文檔。良好的責任心、解決問題的獨立編程能力和分工合作制的團結協作精神是必須重點培養的內容。軟件設計類課程實踐性教學的內涵如圖2所示:
2軟件設計類課程實踐性教學的組織
按照軟件設計類課程實踐性教學的內涵,一般應包括3個環節:課堂實驗實訓、課程設計、項目實踐,分階段實施。其具體安排如圖3所示:
2.1課堂實驗實訓環節
如果一門課程的教學任務規定在一個學期內完成,課堂實驗實訓環節應該安排在學期的前半部分進行,以講授語法、數據類型、常用類庫、開發平臺為主。學生所學知識和編程技術有限,難以形成完整的程序思路,實踐環節只能是練習基本功單獨完成,以每一次堂或者每一個章節為單位安排學生進行相關的訓練,以熟練掌握語法的基本用法,為后一階段的課程設計做準備。老師指導時,要注意培養學生良好的編程習慣,包括標識符的規范化命名、注釋語句的廣泛運用、編程語句的縮進格式、幫助文檔的使用方法,逐漸形成編程思想。
為了配合實踐性教學,教材的選擇也十分關鍵,最好是采用基于案例教學法或者項目驅動教學法的教材,這種教材往往會通過一些典型的實例或企業項目組織內容,大部分章節的主題相對集中,圍繞項目展開講述,特別適合于實踐性教學。如果采用實踐性較弱的教材,老師需要自行補充一些實習實訓內容讓學生當場消化吸收。
2.2課程設計環節
這一階段十分關鍵,完全模擬軟件企業的開發流程組成小組共同完成一個中小型項目的設計,一般安排在后半學期進行。這時要求學生停止其它課程的學習,每天八小時工作制,甚至晚上可以加班加點,專心設計項目,其最終成果包括軟件和文檔以及用戶操作手冊。以每班30人為例,可以考慮分為5個小組,每組6人,每個小組安排組長(項目負責人或稱項目經理)一人,組長的職責是:組織成員實地項目調研、模塊劃分與任務分工、接口的確定、進度的監督與協調、集成測試等,組長直接接受指導老師的安排。鑒于組長在在項目設計過程所處的重要地位,老師在確定組長時,至少考慮三個方面:一是組織能力,二是專業技能的基本功,三是責任心。
這一過程通常安排兩周到三周集中在校內機房(實訓中心)進行,老師每天針對總體要求及當天的任務進行講解,然后分小組實施。選擇課題時,不宜太復雜,應盡可能讓大多數課題組可以在規定的時間內做完。一般選取學生們比較熟悉的內容,如學生成績管理系統、班級管理系統、教材管理系統、倉庫管理系統、工資管理系統、就業反饋跟蹤系統、水電費管理系統等,這些課題的要求大家都比較清楚,在校內即可進行客戶調研和需求分析,同時也具有較強的推廣價值,為將來的職業奠定基礎。這時每個人同學都應該至少準備一本項目開發類指導書作為參考,因為涉及到數據庫、界面、網絡通信、硬件編程等方面的知識,僅僅靠教材還不夠。
2.3項目實踐環節
項目實踐環節是學生到軟件研發企業(校外實訓基地)全程參與項目開發的過程,一般應安排在學期的最后一到兩周或者利用假期頂崗實習,因為經過了課程設計,學生基本掌握了軟件企業的開發流程和一般方法,進入軟件公司后就能夠較快地進入程序員角色,而不至于膽怯,也不會無所適從。完成本部分實踐內容要做好以下三個方面的工作:
確定好項目指導老師:企業開發與在學校進行課程設計并不盡相同,軟件公司具有自己的風格,往往更加愿意采用自己熟悉的開發工具,以達到客戶的需求作為目標,并不一定會使用最新技術,這點與教學理念不同。理想的方案是由任課老師帶隊進入軟件企業(校外實訓基地),并選擇目前正在開發的項目經理擔任總負責人(校外實踐指導老師),任課老師也參與項目實踐并組織學生實施,因為一個優秀的項目經理不一定是優秀的老師,能做軟件不見得會上課,項目負責人與任課老師共同配合更能發揮各自的優勢,便于學生理解項目思想和相互溝通。經過簡短的培訓后,由模塊責任人指導學生設計或者由學生獨立完成,一切按照企業的開發規范進行。考慮到軟件企業一次難以容納過多實習生的特點,也可考慮將項目拿到學校來做,或者將項目經理請到學校現場指導,以節省時間和費用。
確定項目指導方法:開發應用項目沒有現成的教材,需求分析、概要設計說明書、詳細設計說明書、數據庫和數據字典就是設計的依據,老師必須嚴格按照這些文檔指導學生進行設計,定期檢查學生的進度及過程,一旦發現偏差,及時糾正,將錯誤消滅在萌芽狀態。
及時組織項目總結:每天規定一個時間,將同組學生集中起來,針對當天完成的任務進行總結,交流自己的想法,提出存在的問題,集體討論,這樣就能夠做到日日有收獲,天天有提高,從而鍛煉自己的實戰水平和組織經驗。
3軟件設計類課程實踐性教學效果的考核
軟件設計類課程實踐性教學效果的考核也是一個較難把握的環節,既要考核學生的獨立編程能力,也要考查其團隊協作精神,同時還要考慮其組織能力、表達能力、文檔編寫能力、紀律性等內容。為了客觀科學地評價學生的實際效果,最好是分階段考核,各部分按照一定的比例綜合得到總成績,可以等級表示,也可以用分數反映。
在課堂實驗實訓階段,可以由任課老師根據每一次操作任務的完成情況進行登記評分,重點考察其規范程度,對于具有創新性的作品,可以適當加分,并在全班展示,讓設計者講解思路,為其它同學提供啟示。
課程設計階段的考核由指導老師和項目組長組織學生共同進行,首先由組長匯報課題的設計思想、主要技術、任務分工等情況,并演示軟件,大家可以相互提問。老師根據項目完成效果確定這個組的等級,然后由各位成員介紹自己所設計的模塊,老師重點檢查此模塊的功能、難易程度、技術含量、界面美觀等因素,再確定其成績或者等級,這時還要充分考慮組長對成員在設計階段各方面的綜合表現。
項目實踐階段的考核由校外指導老師和校內老師組成考核小組,利用項目匯報加平時表現的形式評定,既要考察項目的完成情況,也要考察各位學生在企業實習期間的領悟能力、工作主動性、團隊合作情況、算法的復雜性、程序的規范性等方面,其主要依據是提交的軟件(包括源代碼)以及各種文檔。
實際上,對于實踐性教學的考核可以采用靈活的方式進行,不拘一格,比如聘請行業專家、現場答辯、隨機抽題、項目論文等形式,只要能夠檢查學生的真實技能即可。
4我們的實踐
我們學校十分重視實踐性教學,長期堅持強化學生的動手操作能力和實戰水平、力爭與企業零距離接軌的做法。為了提高程序設計類課程的實踐性教學效果,主要采取了以下措施:
4.1嚴把教師關
教師是實踐性教學效果的基本保證,學生的水平在一定程度上反映了教師的水平,既具有扎實的理論功底,也擁有豐富的項目經驗是優秀教師的標準。一方面,我們積極將已有教師定期送到企業實地參加項目開發實踐,積累經驗,另一方面,不斷從軟件企業引進專業技術人才,將他們的成功案例帶回學校,同時,每年組織專業教師進行實踐性教學能力考核,通過考核者才能承擔課程設計和項目實踐的教學任務,并頻發相應證書,作為教師晉升職稱和評先評優的重要指標。
4.2實踐性教學環節流程化
改革原來的學期一貫制,將一個學期分為兩個階段,前一階段以學習基礎理論為主,隨堂考試,在學期的最后幾個禮拜專門安排做課程設計,一般開設兩門小課,專心實踐,在項目指導老師的統一安排下,綜合運用本學期所學的程序設計工具,結合前面所學內容,以項目小組的形式,完成一個小型軟件的設計,成績計入學生檔案,完成者才能獲得相應的學分。暑假或者寒假以及最后一個學期,老師分批帶領學生前往校外實訓基地或軟件企業從事項目開發,作為社會實踐或畢業設計的成績,并要求撰寫項目總結或論文。
4.3實驗室環境企業化
聘請軟件企業技術人員設計實驗室(實訓中心)建設方案,將原來的布局改造成軟件研發中心或者工作室模式,服務器、網絡設備、數據庫完全仿真企業的環境,將開發流程和軟件文檔國家標準打印并懸掛在墻上,并購置專業書籍存放在實驗室,讓學生一旦進入實驗室,就能迅速感受到真實的企業氛圍,還能方便查閱相關資料。
4.4實踐項目規范化
教師和軟件企業合作開發一整套實踐教材,采用項目驅動、案例教學作為主要方法,將常用軟件項目的全部開發過程編寫到教材中,源程序存放在服務器,供學生編程參考。每次課程設計或者項目實踐后都要評比出優秀作品,將其全部程序及文檔資料保存下來,供以后教學和低年級學生使用。
經過近幾年學生的反饋情況,我們的改革收到了良好的效果,學生在校期間已經具備了一定的經驗,走入社會即可迅速融入開發團隊,勝任軟件工程師職責,深受單位的好評,不少畢業生特別是原來擔任過項目小組長的學生很快即可成為業務骨干或者項目經理。
5結束語
高校教學與行業脫節是普遍存在的現象,程序設計類課程實踐性教學更是一個永恒的話題。所幸的是,學校和企業都充分意識到了這一點,各高校正在采取積極的舉措消除這一段距離,企業已變得越來越務實,不斷細化崗位職責。隨著校企合作的深入,訂單培養方式的持續,相信在不遠的將來,這種差距會越來越小,直到完全消失,那時學校、企業、學生三方都能成為實實在在的受益者。
收稿日期:2007-10
參考文獻:
[1]教育部計算機科學與技術專業教學指導分委員會. 中國計算機本科專業發展戰略研究報告[OL]. , 2005,05.
作者簡介:胡伏湘(1967-),男,湖南益陽人,副教授,博士研究生,專業帶頭人。主開方向是網絡技術,信息工程。
通信地址:湖南 長沙市 雨花區 香樟路22號 長沙民政學院 軟件學院,410004
課程設計能夠培養訓練學生綜合運用知識解決復雜問題的能力,學科競賽可以提升學生運用所學知識解決實際問題的綜合實踐能力。將學科競賽的內容和形式引入到傳統課程設計中,再從課程設計中選擇優秀團隊和作品進行進一步的培養,二者的有機結合,不但可以提高實踐教學效果,激發學生的創新意識,增強創新能力,而且可以為參加科技競賽打下堅實的基礎。
關鍵詞:
學科競賽;課程設計;計算機學科;創新實踐
大學生創新實踐能力培養是高校人才培養中的重要工作之一[1],各高校師資和學生水平不同,培養目標也不完全相同,所采取的方法也各有千秋。西南交通大學曾采取制訂創新人才培養計劃、建設創新人才培養基地、培養造就教學創新團隊等措施[2];武漢大學提出計算機學科拔尖創新人才小班制培養方法[3]。課程設計能夠培養訓練學生綜合運用知識解決復雜問題的能力,學科競賽可為優秀人才脫穎而出創造條件,沈陽工業大學計算機科學與技術專業采取了二者相結合的方法提高學生創新實踐能力,取得了一定的效果。
一、計算機學科競賽簡介
近年來各個學科都陸續出現了不同類型的學科競賽,和計算機學科相關的競賽分為3類,分別是算法類、軟件應用開發類和硬件開發類。其中算法類競賽的典型代表是ACM國際大學生程序設計競賽,可以提高學生的計算思維能力[4,5];軟件應用開發類包括中國大學生計算機設計大賽、普通高等學校本科大學生移動應用開發大賽、全國大學生信息安全競賽[6,7]、中國軟件杯大學生軟件設計大賽等;硬件開發類代表是全國大學生電子設計競賽[8,9]。上述競賽由國家教育部門、地方政府和相關公司多方主辦,競賽項目涉及本學科的研究熱點和前沿技術,對提高學生實踐能力并激發創新精神有很大的幫助。但由于多數學生缺少參賽經驗,缺乏自信,導致學生積極性不高,參賽學生人數并不多,失去了提高自身能力的非常好的機會。如何將學科競賽引入到日常教學中,讓更多的學生受益,而不是僅局限于極少一部分學生,培養學生創新實踐能力是值得探索的課題。
二、計算機專業的課程設計現狀
課程設計是實踐教學中的重要組成部分,是對理論教學的一個有益補充,是對學生進行的比較全面、系統的綜合性工程設計訓練,是培養學生實踐動手能力、創新能力和綜合素質的一個主要環節,不同的課程設計有不同的方法,例如中山大學提出計算機信息類綜合實驗課程設計方法[10],湖南大學提出基于ISP技術的嵌入式系統課程設計實施方法[11]。教育部高等學校計算機科學與技術專業教學指導分委員將計算機科學與技術一級學科本科專業分成四個方向,分別是計算機科學、計算機工程、軟件工程和信息技術,對各個方向分別給出了6個課程設計范例[12],見表1。不同學校計算機科學與技術專業特點不一樣,開設的課程設計也不完全相同,我校根據教學目標和學生特點從第2學期至第7學期各有一門作為單獨課程開設的綜合性課程設計,分別是計算機程序設計實踐、計算機組成原理課程設計、操作系統課程設計、數據庫與軟件工程課程設計、算法課程設計及專業課程設計。傳統的課程設計存在題目比較陳舊、學生合作意識差、成績評定主要由教師決定等問題。
三、學科競賽和課程設計融合方法
課程設計是學科競賽的基礎,學生只有掌握了相應課程知識,才能有機會參加學科競賽,競賽能夠使學生進一步鞏固所學知識,具有更多的創新思想。例如數據結構和算法課程設計與ACM國際大學生程序設計競賽相互促進。下面以我校《數據庫與軟件工程課程設計》為例,說明學科競賽與課程設計相融合提高學生實踐創新能力的實施過程。該課程設計是學習完《數據庫原理》和《軟件工程》課程后實踐性和綜合性比較強的實踐教學環節,要求學生能在3周時間內將理論知識加以綜合運用,開發一個小型信息系統。
1.團隊成員取長補短的優化組隊原則。
計算機學科的競賽通常以團隊的方式組織,如果團隊成員能充分發揮各自的優勢,整體的力量將會更加強大。組長要負責總體協調,需要有良好的組織協調能力;技術人員要負責解決關鍵技術問題;文檔編寫人員要具有較好的文字表達能力;答辯人員要具有較好的語言表達能力。這樣的組合方式可以使學生互相學習別人的長處,彌補自己的不足。所以在課程設計中我們也采取這種優化組隊方式,學生根據自身情況自愿組合,教師考查各組學生情況后,再進行適當調整。
2.精選歷屆競賽題目或自選創新題目。
題目確定有兩種方式:一是從以往的計算機學科競賽中挑選出符合課程培養目標和學生水平的競賽題目;二是鼓勵學生根據興趣愛好自己確定題目,教師把關確認題目的合理性、實現的可行性和工作量等問題。要求每隊一題,題目不能相同。
3.項目組給出切實可行的設計方案。
學生根據所選題目通過網絡和書籍查找相關資料,結合所學理論知識對課題進行仔細分析,同時需要了解軟件用戶實際需求,可以把同學或教師當作用戶,進行需求調研,在此基礎上提出切實可行的實施方案,并進行方案論證,包括需求分析、總體設計、詳細設計、測試方案等幾個方面。
4.組間互評,論證設計方案的合理性與可行性。
每個小組以答辯的方式進行方案匯報,教師和其他小組成員一起對方案進行分析、評價和指導。組間的互評目的是調動學生的積極性,讓其有主人的感覺,他們既是參賽者又是評委,這樣大家可以取長補短,意見也更加全面。
5.以團隊為單位的項目研發與測試。
即設計方案的具體實施階段,根據設計方案進行編程和系統測試。教師定期為學生提供技術支持,和組內學生一起討論,對學生出現的普遍問題,進行講解,為學生提供解決問題的新思路。
6.以團隊為單位的項目展示與組間評價。
學生完成整個項目后,各個小組將撰寫項目報告,提交最終作品并進行答辯,接受包含指導教師在內的驗收教師組和學生組間互評。這個環節主要考查學生對基礎知識的掌握程度、項目研發水平、總結表達等能力,觀察團對成員實踐過程中在設計、編碼、測試等方面的亮點。此過程主要強調以團隊為單位的評價,按照科技競賽比賽規則,通過比較各組作品以及答辯過程評出小組等級。
7.以個人為單位的組內成員互評、自評。
每個學生在小組內發揮的作用和大小不同,貢獻也不同,課程設計最后的成績也不同。小組成員要根據每個人的實際情況公正地給出每個成員(包括自己)在小組中的位置,清晰地意識到自己及他人在組中發揮的作用,互相了解優勢和劣勢。
8.選拔優秀學生團隊和作品。
評選出優秀作品,在教師指導下進一步進行完善,準備參加計算機學科相關科技競賽。
四、學科競賽和課程設計融合成果
采取上述方法進行的學生培養,既可以使優秀團隊脫穎而出,為參加上一級比賽做好準備,使其能在激烈的競爭中取得好成績,提高學校參與競賽的人數,提高獲獎數量和等級,也可以使絕大多數普通學生在各個方面得以鍛煉,提升專業能力,如方案設計能力、系統開發能力和集成調試能力等,提升非專業能力,如表達能力、文檔撰寫能力、PPT制作能力和組織能力等,并讓其感覺到只要通過努力并做好充分的準備,競賽的難度是沒有那么大的,提高參賽的積極性和自信心。中國大學生計算機設計大賽由教育部高等學校計算機類專業教學指導委員會、軟件工程專業教學指導委員會等聯合主辦,包括軟件應用與開發類、軟件服務外包類等小類,我校在2012年只報名參加了一項省賽,2013—2014年,我們將課程設計和中國大學生計算機設計大賽相結合,取得了如下成績,如表2所示。可見學科競賽和課程設計的融合,促進了參賽數量和獲獎等級的提高。
五、結語
計算機學科競賽和課程設計相融合的方法不僅改變了傳統課程設計模式,而且改變了傳統科技競賽校內推薦方法。傳統的推薦模式是學生接到競賽通知后,自行組隊參加比賽,存在的問題是競賽準備時間短、作品不完善,另外沒有經過訓練的學生直接參加競賽,對比賽的規則和要求沒有經驗,獲獎的概率小,獲獎的等級低。通過課程設計系統地創新性培養,提前選拔優秀團隊并進一步重點培養代表學校參加校外競賽,可增強學生的核心競爭力,提高學校的競爭力。在課程設計成績評定時綜合了組間評價、組內成員互評和自評,改變了傳統的以教師為主導的評價方式,提高了學生學習的積極性,同時促進了組內和組間學生的交流合作。
作者:邵虹 崔文成 單位:沈陽工業大學信息科學與工程學院
參考文獻:
[1]孫莉,朱國進,石秀金.計算機學科創新人才培養模式的研究與實踐[J].計算機教育,2010,(7):15-18.
[2]楊燕,張翠芳,曾華燊.國家創新體系下計算機學科創新人才的培養[J].計算機教育,2009,(19):21-23.
[3]余琍,王麗娜,代永平.計算機學科拔尖創新人才小班制培養[J].計算機教育,2014,(15):31-33.
[4]楊松濤,李晶.ACM/ICPC程序設計競賽中的計算思維培養[J].黑龍江高教研究,2014,(10):174-176.
[5]琚生根,廖勇,周剛,等.ACM競賽與實驗教學創新[J].實驗技術與管理,2009,26(5):125-126,131.
[6]崔杰,仲紅,石潤華.依托信息安全競賽培養大學生創新實踐能力[J].計算機教育,2013,(7):92-94.
[7]李雪梅,曹晟,周世杰,等.以信息安全競賽為平臺培養學生創新能力[J].實驗科學與技術,2012,10(6):320-322.
[8]刁鳴,王松武,李海波.大學生電子設計競賽的實施與思考[J].實驗技術與管理,2010,27(9):127-129.
[9]蔣力立,彭端,杜宇上.電子設計競賽培訓的探索與實踐[J].實驗科學與技術,2015,13(1):156-159.
[10]王變琴,劉樹郁,許海州,等.計算機信息類綜合實驗課程設計與實踐[J].實驗技術與管理,2015,32(4):213-215.
關鍵詞:任務驅動教學法;軟件工程
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2007)17-31474-01
The Application of Teaching Method Driven by Task in the Teaching of Software Engineering
LI Hai-hua
(Changchun Taxation College, Changchun 130117, China)
Abstract:The paper studies the application of teaching method driven by task in the teaching of software engineering. For teaching character of much theory, abstract content etc, applying to teaching method driven by task in software engineering teaching can make students initiative studying. Student can more master teaching content by understanding task, thereby primely improve teaching effect.
Key words:teaching method driven by task; Software Engineering
1 軟件工程學的教學特點及難點
軟件工程學是從管理和技術兩方面研究如何更好地開發和維護計算機軟件的一門新興學科。開發軟件的過程不是簡單的編寫程序,不是簡單的若干人編寫的多段程序的組合。軟件開發過程融合了計算機科學、數學、管理科學、心理學、社會學等學科的知識。開發過程中,你不僅僅要考慮程序的優劣,更要考慮程序與軟件的區別,軟件與軟件產品的區別,軟件軟件產品的市場前景,如何去更好的與人交流,等等。
由于軟件工程課涉及的面很廣,因此,僅僅54課時只能是入門教育。講授的重點不是某些技術細節,而是通過過程、方法、工具等幾個層次的講解教會學生軟件工程學的思想和方法,使學生學會從系統的、工程的角度來看待軟件開發過程,并能將所學的知識主動應用在實際的軟件項目開發中。
通常,在上軟件工程課程的學生幾乎沒有軟件開發的經驗,對于一些涉及管理學、心理學的課程內容更是不知所已然。因此,給授課帶來一定的難度。學生普遍的反應是,軟件工程課理論太多,內容太抽象,不好理解,感覺枯燥乏味。這就要求教師在講授時,要多舉實例,使講解盡可能生動。但是,即使如此,學生可能依然是一種被動學習的狀態,很難體會到軟件工程學的層次性和實用性。那么如何來提高學生對課程的理解,提高學生的學習熱情呢?
一般來說,學生在學期末的課程設計中通常會取得比較好的學習效果,原因是,有課程設計任務驅動學生去主動完成課程設計。同樣,教學過程也可以采用如下的步驟:先由教師提出一個任務,從而引導學生去主動思考如何完成任務,然后教師講解完成任務的方法,最后歸納結論。由此,筆者認為任務驅動教學法可能是解決這個問題的一個途徑。
2 任務驅動教學法介紹
所謂任務驅動教學模式,是教師把教學內容設計成一個或多個具體的任務。讓學生通過完成一個個具體的任務,掌握教學內容,達到教學目標。它是一種以學生主動學習,教師加以引導的一種教學方法,它打破了傳統教學方法中注重學習的循序漸進和積累的老套路,不再按照教學內容的從易到難的順序,而是以完成一個任務作為驅動來進行教學,完成教學任務。
任務驅動教學法的優勢在于:
2.1 使學生更易掌握教學內容
采用任務驅動教學模式進行教學,教師教學和學生學習都是圍繞如何完成這個具體的任務進行。教師教學思路清晰,學生學習目的明確,更容易掌握學習內容。
2.2 提高學生的主動參與意識
采用任務驅動教學模式,每節課教師都要求學生完成一個具體任務,學生在思想上就有緊迫感,在教師講解過程中,就不再是被動地接受。
2.3 提高學生發現問題、解決問題和綜合應用能力
采用任務驅動教學,學生的學習過程是圍繞完成一個具體任務進行的,這個具體任務將教學內容融合在一起,這使得學生在完成任務的過程中,即是學習教學內容的過程,也是綜合應用教學內容的過程。
2.4 培養學生注重掌握方法的意識和創新意識
采用任務驅動教學,有利于培養學生注重掌握方法的意識和創新意識。在布置任務后,教師不限定實現任務的方法和思路及完成作品的形式和內容,僅僅是提供完成任務所需的素材,這就為學生發揮想象力和自由創作留有充分的余地。
3 如何在軟件工程教學中應用任務驅動教學法
那么如何在軟件工程的教學中使用任務驅動教學法呢? 任務驅動教學方法大致可分為五個階段。第一階段是教師引導期,第二階段是學生操作應用期,第三階段是交流討論期,第四階段是鞏固提高期,第五個階段是總結期。
第一階段,教師主要是提出具體任務和要求,并對如何完成這一任務作一些方法上的闡述。這一階段的特點是:教師主要是方法上的指導,還可結合實際應用作一些啟發性的提問,使學生知道從哪里入手做,以及從哪些方面可以作些變化。這一階段的關鍵是教師引而不發,充分調動學生的操作欲望和好奇心。
第二階段,以學生具體操作為主。在教師引導后,很多學生已經躍躍欲試了。這時候,教師應留給學生充足的操作時間,讓學生大膽去試,使他們在使用中體會、感受和領悟。這期間,學生會遇到一些問題。對學生存在的共性問題,可由教師統一示范,集體解決;對個別學生的個別問題可作單獨輔導。這是學生消化和吸收知識的階段,是學生由不會到會,由初識到熟練掌握的階段,也是學生充分調動各種感官,發揮各種能力的階段,時間上可占整個教學進度的一半左右,在教學進程中是一個緊張的期。
第三階段進入交流討論期,主要是教師查漏補缺,講解一些共同的難點和重點,并觸類旁通給出大量應用實例,進一步加深學生對所學知識的理解。這一階段特點是教師點評為輔,盡可能開展一些熱門問題的討論,還可以進行作品欣賞或方法交流,讓學生在思路上能否得到一些啟發,看一看其它同學是如何完成該任務的,在方法上和自己有什么不同。這一階段的特點是:集思廣益,開拓思路,鼓勵創新。在教學節奏上給學生一個放松的時間。
第四階段進入鞏固創新期。學生在看了別人的作品或方法之后,又會涌起再度嘗試的欲望,在這一個階段,學生進一步鞏固所掌握的知識,同時在得到啟發后作一些調整和創新,進一步使掌握的知識熟練應用,同時提高創作水平。
第五階段是總結期。采用任務驅動教學模式,由于教師主要是在方法上進行引導,學生主要時間花在動手摸索上。這就存在學習能力不同的同學,在同一節課內所掌握的知識多少也不同,容易造成學生成績兩極分化和教學知識點的疏漏。針對這些問題,就要求教師在采用任務驅動模式進行教學的同時,要加強課堂小結和知識點的回顧,使學習能力差的同學或操作有疏漏的同學能通過教師的總結和回顧,跟上教師的教學進度,全面掌握知識點,達到教師的教學要求。
下面通過一個實際的例子來說明在軟件工程教學中如何應用任務驅動教學法。比如在講述結構化分析和設計時,按任務驅動教學模式不是單純地介紹問題定義、可行性研究等階段的概念、過程和方法,而是將所有內容設計為“開發工資支付系統”這一具體的任務,教師通過講解工資支付系統的開發過程讓學生掌握教學內容。首先,教師可以先演示一套開發完成的工資支付系統給同學。同學們看到這套系統,頭腦里對有一個初步的完整的印象。這時候,教師再分析這個系統的問題定義、項目目標、項目規模、初步設想、可行性研究、需求分析等等。通過教師的分析,學生對如何澄清系統規模和目標、如何研究現有系統、如何導出高層邏輯模型、如何導出供選擇的方案、如何畫系統數據流圖、如何寫文檔初稿等過程有了直觀的認識。然后教師可以接著使用該系統分析結果,作為結構化設計階段的任務繼續介紹該系統的設計過程。而且由于教師備課時教師事先做過一遍,對學生難以理解或容易出錯的地方容易把握,重點難點突出。這樣教學,不論教師教還是學生學,整個教學過程都顯得條理清楚、層次分明、順理成章。當然,由于軟件工程的內容較抽象,學生不容易知道怎么下手,因此,教師在教學過程中應注意多提問題啟發和引導學生,把教學內容充分貫穿到實際的任務中。總之,采用任務驅動模式教學,有利于學生掌握學習內容,提高多方面能力。
4 結束語
從上面對任務驅動教學法的介紹可以看出,任務驅動教學法符合軟件工程教學的層次性和實用性,按照由表及里、逐層深入的學習途徑,使學生可以循序漸進地學習軟件工程學的知識和技能。最大可能地降低學生依賴教師的心理,使學習由被動變主動。在這個過程中,學生會不斷地獲得成就感,更大地激發起求知欲望,從而培養出獨立探索、勇于開拓進取的自學能力。必須承認,軟件過程是持續改進的過程,軟件工程學的內容也在隨著實踐的深入而不斷完善,因此,培養學生主動學習、自我學習的能力是軟件工程教學的一個重要目標。
但是,這里要特別強調的是:任務驅動教學法的關鍵是把好“任務”設計關。“任務”直接影響教學效果,因此,“任務”設計、編排非常關鍵。這就要求教師在采用任務驅動法進行軟件工程教學時要特別注意“任務”的設計。
參考文獻:
[1] 李鋒, 孫莉. 任務驅動式方法在離散數學教學中的運用[J]. 計算機教育, 2006.3:27-29.
摘要:為加強學生軟件設計能力,本文對計算機專業軟件設計能力培養模式進行了探索與實踐,對教學內容優化,構建新型四層遞進式課程體系;強化實踐能力培養,構建立體化實踐教學體系,在提高計算機專業學生的軟件設計開發能力上取得了比較明顯的效果。
關鍵詞:軟件設計能力;內容優化;實踐教學
一、優化教學內容,構建新型課程體系
1.優化教學內容。計算機軟件技術應用領域廣泛,知識更新快,實踐性強,既要求扎實而廣博的理論基礎又要求良好的實踐動手和自我學習能力。針對這一特點,以計算機科學與技術本科人才培養方案為基礎,以基本素質和工程能力培養為主線,以面向信息領域市場、面向區域經濟建設為需求,堅持“基礎、應用、實踐”的原則,突出軟件開發與設計的能力培養,在專業教學中強調理論與實踐并重,知識、能力和素質協調發展,對教學內容進行了大幅優化設計。在基礎能力方面優化了程序設計基礎課程,新增了算法分析與設計、面向對象分析與設計課程;在軟件設計高級理論方面優化了軟件工程課程,新增了軟件測試與質量保證、軟件體系結構與中間件技術課程;在綜合實踐應用方面新增了Java程序設計、系統集成與項目管理、xml與電子服務課程。通過一系列教學內容的改革和優化,兼顧了軟件設計理論的深度、廣度和實用性,更加符合以軟件設計能力培養為核心的教學主線要求。2.構建新型四層遞進式課程體系。軟件設計和開發是計算機科學與技術專業本科人才能力培養的核心和基礎。通過深度剖析計算機軟件設計能力的培養特點,總結以往教學經驗,以培養學生軟件設計能力為核心,構建了從程序設計基礎到軟件開發綜合實踐的四層課程體系,每層都有相應課程群以及階段性培養目標。(1)基礎理論層。以計算機導論、操作系統、數據結構、編譯原理、計算機組成原理為核心課程群,目標是奠定計算機系統的基礎理論知識。(2)基礎訓練層。以程序設計基礎、數據結構與算法等為核心的課程群,目標是打牢程序設計基本能力,并初步掌握面向對象軟件設計方法。(3)高級理論層。以軟件工程、軟件測試與質量保證、軟件體系結構與中間件技術為核心課程群,目標是系統掌握軟件體系結構、軟件設計開發和軟件項目管理的理論知識,為高級應用實踐打下堅實基礎。(4)綜合應用層。以系統集成與項目管理、xml與電子服務、Java程序設計為核心課程群,目標是面向應用,全面提高軟件項目設計開發的綜合能力。四個層次之間環環相扣、互為基礎、由低到高、循序漸進,逐步培養學生良好的軟件理論素養和扎實的設計開發功底,為國家和社會培養合格的IT人才。3.強化實踐能力培養,構建立體化實踐教學體系。良好的軟件設計能力不僅需要深厚的理論基礎,也需要較強的實踐功底。鑒于計算機軟件技術具有實踐性強、知識更新快的特點,我們設計了立體化三層實踐教學體系,包括基礎訓練層、綜合訓練層、實踐應用層。(1)加強課內實踐教學,培養學生基本編程應用能力。基礎訓練層是由程序設計基礎、數據結構、Java程序設計、編譯原理和操作系統等課程的課內實驗組成。在課程實驗設計中加大了綜合設計類實驗的比例,減少了基礎驗證性實驗比例。其中基礎驗證性實驗與課堂講授同步,加深對某個知識點的理解,緊跟老師引導完成練習。綜合設計類實驗對多個知識點進行綜合訓練加深對課程內容的整體認識,還需要提交實驗報告。注重綜合設計能力的培養。綜合訓練層是由程序設計基礎、數據結構和軟件工程等課程的課程設計組成。通過設計小型綜合項目,培養知識的綜合運用能力。課程設計的實施分為開題、系統設計、編碼實現、系統測試、系統評價與驗收,提交課程設計報告。要求分組完成,最后答辯評分、評優。我們對課程設計考核進行了改革,制定了具體的課程設計考核制度與考核方法,將課程設計考核變為答辯方式考核,包括小組答辯和年級優秀課程設計答辯兩個過程和層次進行。(2)引導課外實踐,培養學生創新思維能力。實踐應用層是由各類大學生競賽活動、大學生SRP訓練項目、大學生創新計劃、畢業設計、教師的科研課題、工程實訓和軟件開發小組等各種形式的實踐活動為依托。通過各類競賽,激發學生對軟件設計的興趣和主動性,鼓勵學生積極參與教師科研項目、大學生創新計劃、大學生SRP訓練項目和畢業設計,培養和鍛煉軟件設計開發能力。
二、小結
圍繞計算機基礎、程序設計基礎主線展開教學,使學生能夠具有扎實的基本功,為高層次人才和創新能力的培養打下堅實的基礎。對相關的課程進行整合,形成課程群,突破學期、授課教師、課程各自獨立的局限,實現總體設計、綜合布局、交叉穿插、協同配合的新模式。
參考文獻:
[1]謝中科,肖增良.程序設計系統化思維培養模式的探討[J].計算機教育,2014
[2]戎玫,張廣泉,王輝.強化實踐創新能力突破軟件人才瓶頸[J].實驗室研究與探索,2013.
作者:高攀 郭理 單位:石河子大學信息科學與技術學院
【關鍵詞】軟件工程培養模式“理論+實訓”模式
1引言
軟件工程專業是一個實踐性非常強的專業,其很多的專業課和專業選修課具有很強的實踐性。這些課程,如《軟件工程》、《軟件質量保證與測試》、《基于CMMI的軟件工程》、《群體軟件工程-TSP》、《個體軟件工程PSP》,老師講授的時候覺得是在“空講理論”,而對于沒有任何軟件工程實踐經驗的學生來說是像在聽“天書”。但這些課程開設的成功與否直接影響到畢業生的質量、競爭力和未來發展,直接影響學校的教學質量和學校聲譽。杭州電子科技大學在軟件工程教學改革的過程中提出了“理論+實訓”的培養模式,并搭建了實訓平臺,旨在促進和提高軟件工程專業本科省的培養質量。
2 原有培養模式綜述
IT技術改變了世界,軟件已經無處不在。對于軟件工程師的培養是各個國家IT教育的重中之重。如何培養合格的、優秀的軟件工程師是教育界研究的熱點。在軟件工程專業的教育上,各個國家都在進行不懈的探索,其中比較流行的3個培養模式是:
對軟件人才的培養,傳統的軟件人才培養模式類似于瀑布軟件開發模型,即瀑布型軟件人才培養模式。在我國高等院校軟件工程專業的教學模式中,大學4年的培養周期一般是:公共基礎課―〉專業基礎課―〉專業理論課―〉畢業設計(論文)與實踐。這種單向的、線性的培養模式,缺乏反饋與迭代,這種模式對產業和技術快速發展變化缺乏有效的彈性配合,與產業發展主線難以形成有機融合。
另外有人提出螺旋式軟件人才培養模式,這種模式打破先基礎后產業、先理論后實踐的培養過程,建立理論、實踐、工程的培養過程,整個過程以教學環節、實驗教學環節、工廠實踐環節形成能力培養的螺旋學習環節,見圖1所示。螺旋式培養模式是一個比較理想的IT人才培養模式,但在具體的實踐上卻遇到了重重困難,其主要原因是:一是去企業實習必要性不強;二是軟件人才培養的校企合作存在巨大困難;三是螺旋式培養模式過于重視工廠實踐,不適合培養高水平的軟件分析師和架構師;四是由于擴招,專業學生太多,全部安排去公司實習是不可能完成的任務。
從2000年起,麻省理工學院和瑞典皇家工學院等四所大學組成的跨國研究獲得Knut and Alice Wallenberg基金會近2000萬美元巨額資助,經過四年的探索研究,創立了 CDIO 工程教育理念。CDIO代表構思(Conceive)、設計(Design)、實現(Implement)和運作(Operate),它以產品研發到產品運行的生命周期為載體 ,讓學生以主動的、實踐的、課程之間有機聯系的方式學習工程。CDIO培養大綱將工程畢業生的能力分為工程基礎知識、個人能力、人際團隊能力和工程系統能力四個層面,大綱要求以綜合的培養方式使學生在這四個層面達到預定目標。迄今為止已有幾十所世界著名大學加入了CDIO組織,按CDIO模式培養的學生深受社會與企業歡迎,取得了良好效果。
3 杭電軟工的理論+實訓的模式
杭州電子科技大學從1984年就開設計算機科學與技術專業(軟件方向),2015年以IT特色進入浙江省重點建設的5所大學行列,在中國的IT教育領域具有舉足輕重的地位。為了鞏固及加強我校在培養高質量的軟件工程專業人才方面的領先地位,以培養工程實用創新型人才為目標,前軟件工程學院以先進的教育理念為指導,通過借鑒CMU/SEI軟件工程類人才培養體系,與CDIO教育體系結合,在2010-2014期間進行《基于CMMI的軟件工程》精品課程建設,構建了軟件工程專業課程教學的“理論+實訓”教學方法。
3.1 取得的成果
課程組進行立體化教材的建設和實踐,自主開發了“一個網站,兩個課件,三個平臺”。徹底改革傳統教學結構,實現了有效培養面向企業崗位技能的E-learning教育體系。構建起了一個相對完備的立體化課程體系,建設了一個“教師易教、學生樂學、技能實用”的多元立體化教材系統及內容豐富的網絡資源系統。
為了滿足國家卓越工程師中軟件工程培養的需求,特別是對軟件工程的實踐部分,以微軟的Windows Server 2008 R2、SQL Server 2008作為基礎軟件平臺,對微軟的SharePoint Service 3.0和Team Foundation Server 2010進行深度定制,開發了一套合適于團隊項目開發實訓、班級統一授課(普通專業課)實訓的過程框架。該框架在授課過程中,可以根據不同專業課的需要進行個性化定制,目的是實現教與學的資源共享、知識共享、無障礙溝通。
學生在機房輸入http://10.65.7.81/sites/portal/CMMI/default.aspx(目前該平臺已經轉移到“杭電云研究中心的”云平臺上,網址改為http://),然后依據要求輸入用戶名和密碼即可進入學院的實訓平臺。根據自己所學的課程,可以選擇進入相關的課程網站,在課程網站上可以訪問和下載相關的課程資料,同時也可以進入自己的班級課程網站或實訓小組網站。
在4年的重點課程建設中,嚴格執行“《基于CMMI的軟件工程》課程師資隊伍培養計劃”,培養了一個優秀的教學團隊。教學隊伍共12人,是一支知識結構、年齡結構、職稱結構及學歷結構比較合理的隊伍。其中具有高級職稱教師有6名,占總人數的50%,高級職稱教師平均年齡為45歲,職稱結構合理;課程組教師大部分年齡在40歲以下,均具有碩士以上學位,年齡結構學歷結構合理。《基于CMMI的軟件工程》課程組教師四年來多次參加CMU/SEI舉辦的培訓,有3位教師拿到CMU/SEI認證證書;另外,課程組中有多位教師來自國內知名IT企業,具有豐富的軟件開發經驗。
四年來,課題組成員總共主持教學類項目5項;取得教學成果及榮譽2項;公開發表教改論文7篇;參加SEI及移動應用開發培訓2次;出版了《基于CMMI的軟件工程教程》、《基于CMMI的軟件工程實訓指導》、《案例教程實訓指導》和《基于CMMI的軟件工程及實訓指導》等教材4部,其中《基于CMMI的軟件及實訓指導》為浙江省十一五重點建設項目教材。
2015年6月12日-19日期間我們利用“問卷星”問卷調查網絡進行一次問卷調查,共收集了58份電子調查問卷。首先我們對同學們是否曾經使用過該實訓系統進行調查分析,其中35個同學以前沒有使用過該系統,23個已經使用該系統,對該系統具有一定的了解;然后對實訓課程的總體評價是,27個對該系統評價等級為“優”,其它27個為“良”,4個“中”,如圖2所示。
我們在問卷中設計了“你認為實訓系統有哪些優點”的可多選問題,給出4個勾選項及2個隨意填寫項。4個勾選項目是:能滿足系統實訓要求、系統很實用、功能完整、說明書和系統是匹配。在這58份調查問卷中,同學反饋結果如圖3所示。67.24%勾選了“實訓系統能滿足課程實訓的要求”,51.72%的同學勾選了“系統很實用”。37.93%的同學勾選“功能完整”。22.41%的同學勾選“說明書和系統是匹配的”。可見同學們對本實訓系統是相當滿意的。
3.2 存在的問題
《基于CMMI的軟件工程》在課題組多年的悉心建設下,盡管取得了一定的成績,但仍存在一些課題有待改進,這主要表現在以下幾個方面:
由于軟件工程具有很強的實踐性,課程的實訓內容不但要鞏固理論又要接實踐的地氣,這使得任課教師在確定實訓案例的時候難以把握案例的難度和工作量,實訓案例的吸引力和后續的可繼續利用性也難以保證。部分實踐材料參考了現有的公開資料,學生可以輕易搜尋到答案。所以確定新案例及案例庫的建設是軟件工程實訓的一個重要的課題。目前市面上有很多的相關的圖書,如李龍澍等老師編寫的《軟件工程課程設計》[3]及熊慶宇編寫的《軟件工程實訓項目案例I》[3]及《軟件工程實訓項目案例II》[4]等可以做為重要的參考資料。
教學計劃上規定的課外實訓學時難以落地。以《基于CMMI的軟件工程》課程的實訓為例,實訓內容涉及(1)熟悉開發環境、(2)組建項目小組、(3)項目立項、(4)需求收集、需求分析、(5)項目詳細策劃、(6)建立配置庫、(7)系統設計、(8)系統實現與測試、(9)測試計劃及測試用例、系統測試、(10)項目總結等10項內容。教學計劃安排是32學時,但實際完成則需要76學時。這76個學時是按照項目小組的人數、在大家分工合理密切配合的前提條件下才能完成。32學時實訓效果是可控的,必定有固定的場地,有老師的監督指導。而其余44課時的課外實訓,由于沒有固定的場地和環境,學生只有自找場地。本來在固定的場地固定的群組完成的實訓,由于時間和場地的原因,同一項目組的同學如盤散沙,教師也是鞭長莫及,原本設立的項目小組組長也無力監督本小組的同學,導致實訓時間和效果難以得到保證,學生無暇領會實踐的過程在實踐中的重要意義。
根據教學經驗,《基于CMMI的軟件工程》實踐課程師生比不能超過1:40,即每40個學生配置一名輔導教師。但實際的授課過程中,受到課程教務安排和學生選課傾向的影響,往往大于這個比率,使得教學難度增加、實訓效果很難達到良好的預期效果。
基于傳統的一課一練的思路,我們對《軟件工程》、《軟件質量保證與測試》、《基于CMMI的軟件工程》、《群體軟件工程-TSP》、《個體軟件工程PSP》等分別設置了實訓內容,但實訓內容有很多相同的部分,大多都是開發一個某某系統,需要完成相同的軟件周期,其差別僅在于:(1)系統規模的大小及難度不同;(2)所關注的側重點不同,如基于CMMI的軟件工程關注過程文檔,PSP關注與開發人員自身的相關內容。這些課程的實訓共有的現象是:系統的開發成果粗糙,系統的架構、功能和界面等雷同,實訓時間不足。未來可以通過課程間的整合,多門課程圍繞一個實訓案例開展聯合實訓。
現在“挑戰杯”、“創業大賽”、“服務外包”等創業類競賽種類繁多。那些有想法、學習成績好、動手能力強的學生成了同學中的明星和老師眼中的紅人。他們早早主動或被動的被一些項目導師給“求包”或“被包”了。在課程的實訓中有些學生直接提出不參加工程實訓的申請,理由也很簡單及充分:“我們也在做類似的工作”;有些直接拿出自己的參賽題目直接要求“自我命題”,這類項目往往代碼都有了,倒過來補寫軟件開發過程中的相關文檔。
在2015年6月12日至19日的調查問卷中,我們同時也設計了“你認為系統有哪些缺點”的問項,希望從同學們那里聽到意見、批評和建議。和問題3的設計一樣,我們也是給出4個勾選項目及2個隨意填寫的項目。反饋的結果如圖4所示。結果顯示53.45%的同學對于“進入系統要輸入很長的網址”這個缺點有強烈的共鳴;32.67%的同學認為說明書不清晰;6.9%的同學認為說明書和實際功能不匹配;32.76%的同學認為有些功能和實際不匹配。
我們在問卷調查中專門設置了一項“對于基于CMMI的課程實訓,你的其它建議”來彌補格式化問卷的缺陷,讓參與調查的同學對我們的實訓系統提意見。雖說這是個可選回答項,但我們收到21個同學的反饋,占36%。同學們的回答基本上可歸納如下幾個方向:關于系統功能,有4位同學反映:“實訓系統有很多功能不完善、系統有點太過復雜、一些不必要的功能應該刪去”;關于實訓內容安排方面有3位同學建議:“多些實例講解、多給一些前輩的實訓經驗和例子、可以用一些案例來分析,這樣我們理解的更好!”;關于實訓的組織方面有4位同學對于實訓過程中的分組進行了吐槽,認為“應該合理安排實訓時間及具體任務,應該重視如何分組,不然有些人忙死,有些人“打醬油””;最后關于實訓中實踐和理論進行融合方面有3位同學建議:實訓也要注意加強理論指導,而不是直接“照葫蘆畫瓢”,不是只把模板DOWN下來,機械的填寫內容后再UPLOAD上去。
4 結論和展望
軟件工程專業教學實訓平臺為學生的實訓搭建了堅實的基礎,為杭電的軟件工程人才培養做了很多的開端和鋪墊。目前已經完成了“硬件”建設部分,現在已經進入了“軟件”建設階段,我們認為未來應該在此良好的“硬件基礎”上,著力研究課程群的劃分、各科內容的相互劃分和協調,授課教師小組的建設及案例庫建設等。
參考文獻:
[1]李龍澍,鄭斌.軟件工程課程設計.北京:機械工業出版,2010.
[2]李超,盧軍.螺旋式軟件人才培養模式探索與實踐.北京:科學出版社,2008.
摘要:民辦高校面臨著學生素質不高和對學習缺乏興趣等問題,為了提高學生的學習效率和興趣,文章以《C#程序設計基礎》、《軟件工程》等課程為例,進行了移動學習模式和相關學習資源的研究。根據移動學習的設計原則和計算機專業課的特點,構建適用于民辦高校學生的移動學習方式和學習資源,提高了教學質量和學習效果。
關鍵詞:民辦高校;移動學習;教育技術;計算機專業課
1民辦高校學生移動學習的調研及分析
智能終端在民辦高校擁有龐大的用戶群,已經逐漸成為移動學習的重要工具,移動學習方式也成為一種全新的可以廣泛使用在教育中的學習方式[1]。對于民辦高校的學生這個特殊群體,學生對新鮮事物具有較強的接受能力,思維比較靈活,相對于傳統的教育方法,對于民辦高校的學生來說,新鮮事物更能夠激發起他們的學習興趣,他們對移動學習充滿了好奇,并且有一定的使用需求。目前,筆者所在學校已經完成無線網絡更新,無線WIFI覆蓋整個校園,為移動學習提供了硬件上的保障。在此基礎上,為了獲得學生對移動學習模式的真實想法,課題組向計算機專業不同年級的在校學生隨機發放調查問卷,共發放問卷200份,回收170份。通過對170份問卷進行分析,對于日常學習中使用終端瀏覽和學習內容進行統計說明學生在日常生活和學習中,已經在有意無意的利用移動學習的方法,對于沒有接觸過的知識和實際的程序設計算法,都會通過移動學習終端獲得相應的幫助。分析表明移動學習模式在大學生群體中存在較大的發展空間和較好的使用基礎。
2移動學習方式和平臺的結構研究
課題組研究基于移動終端的自主學習結構和方式,以計算機專業課程中的《C#程序設計》、《軟件工程》、《數據結構》、《計算機網絡》等課程為目標,對移動學習模式需求進行調查分析,為基于移動學習平臺的選擇和設計工作提供必要的參考依據。通過開展移動學習的學習方法以及模式的應用研究,選擇《C#程序設計》和《軟件工程》專業課程作為主要的研究課程,學生可以通過移動平臺學習教師的理論教學視頻、下載教學資源、獲取學習任務、提出學習中遇到的問題、與同學和老師進行探討等活動,對于那些程序設計的課程還可以模擬軟件開發的完整過程,通過實踐方式學習課程,加深理論基礎知識以及方法學上的理解,提高了自身的系統設計、開發和團隊協作能力;同時,很大程度上的自主和逼真性的模擬更能夠增強學習的興趣,全面的提高計算機專業學生系統研發的知識與能力[2]。課題組對移動學習模式的功能模塊設計,包括學習模塊、筆記模塊、資料模塊、測試模塊和任務公告模塊。其中模塊與模塊之間具有一定的相互關系,每一個模塊具有獨特的功能,學習者可以根據自己的興趣、愛好選擇相應的功能進行個性化學習。(1)學習模塊:學生可以自助學習,通過QQ、微信、郵件服務等移動端服務程序與授課教師建立聯系。也可以自由選擇學習的內容進行學習,如學習第4章結構化分析部分的數據流圖的繪制方法,通過平臺獲得該部分的主要學習內容,選擇平臺提供的課后習題進行學習,同時也可看到習題的答案,如果遇到不會的問題,可以選擇向老師求助或者向同時咨詢學習該部分的同學。(2)筆記模塊:提供學習者對學習內容進行記錄,學習者可以記錄學習某一部分的當時心得和學習方法的總結。筆記可作為課后學習的總結,也可以進行交流使用,在期中和期末復習上占據主要的作用。同時,由于筆記模塊記錄當時學習和設計的心得方法,因此可以在后期各門課程的課程實訓、畢業實習和畢業論文中起到至關重要的指導作用。(3)資料模塊:管理與《C#程序設計》和《軟件工程》課程相關的電子資源,包括各章節的PPT、微課學習的小視頻、使用工具的下載包、以及教師學術成果、學生課程設計成果展示等。(4)測試模塊:提供在線各個章節的內容測試,帶有測試答案,完成后可以學習成果加以檢驗。(5)任務公告:提供《C#程序設計》和《軟件工程》實驗課的內容和實驗指導公告,提供課程設計的任務、內容和分組規則,以及自由分組統計。學習者通過該公告模塊獲得任務并按要求完成任務。
3計算機專業課程開展移動學習實踐研究
《C#程序設計》和《軟件工程》教學主要目的,使學生通過學習計算機語言和軟件工程的課程,在應用軟件的設計、研發、維護和測試各方面得到提高,并且通過分組參與項目的實施,使自身成員協作的能力和團隊的精神得到鍛煉,即培養了學生應用軟件開發的理論和工具綜合運用能力,特別是軟件的研發和與人合作能力。在研究過程中,設計研究了以學習參與者為核心,以資源為基礎的移動學習結構模型。同時采取如下措施:(1)采用基礎知識點的學習,《C#程序設計》的原理和類庫的使用相對比較難于掌握,《軟件工程》的理論和概念比較復雜,為了讓學生能夠將編程語言和軟件知識更好的結合起來,掌握已經講授的知識,教師通過平臺的課堂每章知識點功能,向學生提供學習重點、難點和關鍵點內容,學生可以利用移動終端和學習平臺,例如通過QQ、微信等復習知識,很大程度上提高了學生課后按照任務復習的概率,不需要復習教材和參考資料,只需要閱讀學習任務書或項目書即可,傳統學習方式發生的改變,也可以一定程度提高學生的學習效率。(2)采用基于團隊的學習,《C#程序設計》和《軟件工程》在闡述軟件設計和開發的理論時,將軟件生命周期從開始到淘汰分為7個階段,每一部分都不可能只通過一個人完成,因此軟件設計開發的中心思想主要說明,要具備較好的團隊協作意識,項目合作小組是一個非常高效的提高團隊合作能力方式。移動學習平臺的服務端可以添加學生可選擇的學習內容和課程設計題目,每個學生通過學習平臺自由選擇團隊以企業固定資產管理系統小組為例,負責人可以為每個成員分配學習任務,指定哪個成員完成,完成時間是什么時候,項目組成員按照負責人要求,在規定時間內完成學習或設計任務,否則被認為任務延遲。學習組內也可以創建在線編輯文檔,提供所有成員編輯功能。項目組內共享文件分類存放,對每個成員開放,每個成員可以自由的學習參考資料中的內容,如可以查看階段測試中的試卷,在測試后可以查看標準答案。
4結束語
計算機專業課程采用移動學習模式,是將移動互聯網技術與教育教學相結合。實際使用效果具有科學合理性,同時也是與時俱進的。根據采用該模式后的學習結果觀察,提高了《C#程序設計》、《軟件工程》等課程的教學效果。移動學習方式的應用,在一定程度上增加教師的工作量,教師不但要進行理論課程的講解,實驗實訓課的實施,同時也要學習新的工具,使得教師應該不斷的提高自身的業務水平,不斷的學習新的教學方法和工具。教師在教學過程中需要多關注學生的實際使用情況,關注在使用該方法時出現的問題,積極引導學生利用移動學習平臺學會自主學習。基于移動學習的模式在一定程度上培養了學生合作學習能力,同時提高學習成績和學習興趣,對于動手能力、適應能力和團隊合作意識也有一定的促進作用。
關鍵詞:軟件工程;概念和術語;實例;實踐
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)06-10ppp-0c
Designing a Software Engineering Teaching Scheme
WEN Zhi-xiong,CHEN Zhen-ting
(Brief Introduction of Kunming Metallurgy College, Kunming 650033, China)
Abstract: This paper proposes a teaching scheme based on the idea of software engineering, which is teaching together with examples, attaching importance to convey the key concepts, persisting in engineering awareness cultivating and practice training during all the school period.
Key Words: Software Engineering; Concepts and terminology; Example; Practice
1 引言
高職軟件技術專業培養目標是:“能夠從事軟件企業桌面應用開發、軟件生產企業編碼、系統支持、軟件銷售與應用開發、非IT企業事業單位信息化等工作。”
軟件工程是專業培養方案核心課程之一,它是指導計算機軟件開發與維護的一門工程學科。
計算機專業的學生畢業之后,無論從事軟件開發、維護還是銷售,都離不開軟件工程的知識。可以說,軟件工程概論課是他們參加工作后馬上就要直接應用的一門專業課。
但是,由于下述原因:
(1)由于為了推進就業,各學校都采取最后一個學期進行畢業設計和就業實習的做法,所以,學制三年的高職,課堂學習時間兩年半;作為國家緊缺人才培養工程的二年制軟件技術專業,課堂學習時間一年半。而學習軟件工程涉及的前驅課程比較多,學習時間緊。
(2)計算機高職學生對動手解決實際問題的能力較強,但對《軟件工程》理論學習,普遍感到內容比較抽象,不易理解,學生學習的積極性很難調動起來。
因此,如果沒有一整套科學、合理的教學方案設計,就不可能在短時間內,培養出具有較強工程能力的軟件人才。
2 教學方案設計的依據
(1)在軟件工程的理論學習中,有些概念、術語反復出現,它們對內容的理解起著至關重要的作用,所以,我們的教學要重視這些概念的傳達。
(2)Jennifer Niederst Robbins在他的廣受讀者歡迎的著作《學習Web設計》一書中寫到:“很多人通過讀書和理解并修改存在的例子自學JavaScript”[1],等。所以,實例軟件工程教學是一種好方法。
(3)L.G.Alexander在其編著的《新概念英語》教程中,就外語學習的基本原理,致教師和學生:“學習語言與學習樂器十分相似”。同樣,“軟件設計是一個創造性的過程。從書本上學不會設計,只能經過實踐,通過對實際系統的研究和實踐才能學會”[2]。所以,我們的軟件工程教學要加強實踐教學。
總之,通過重視關鍵概念、重點難點內容的講解,實施實例教學以及加強實踐環節,使學生成為教學的主體,通過自主學習來了解、掌握相關知識和技能。
3 教學方案設計
3.1 重視幾個重要概念和術語的傳達
在軟件工程中有幾個出現頻率非常高的術語,理解掌握它們對促進學生的自我學習將起到一兩撥千金的作用。
3.1.1 模型
(1)定義:模型就是為了理解事物而對事物做出的一種抽象,是對事物的一種無歧義的書面描述。通常,模型由一組圖形符號和組織這些符號的規則組成[3]。
(2)建立模型的一般步驟:1)客觀、正確地調查和分析所要解決的問題;2)在明確問題的性質和關鍵所在后,根據知識進行歸納和總結;
(3)抽象地建立起求解問題的模型;4)考察和證實模型是否準確地反映了實際問題運行的規律。
結構化分析主要建立功能模型和數據模型。數據流圖是建立功能模型的基礎,實體-聯系圖是用于建立數據模型的圖形。軟件設計的目標是設計出所要開發的軟件的模型,等等。
3.1.2 抽象
人類在認識復雜現象的過程中使用的最強有力的思維工具是抽象。人們在實踐中認識到,在現實世界中一定事物、狀態或過程之間總存在著某些相似的方面(共性)。把這些相似的方面集中和概括起來,暫時忽略它們之間的差異,這就是抽象。或者說抽象就是抽出事物的本質特性而暫時不考慮它們的細節,即在解決問題的過程中集中考慮與當前目標有關的方面,忽略與當前目標無關的方面。
軟件工程中從軟件定義到軟件開發要經歷多個階段。在這個過程中每前進一步都可以看作是對軟件解法的抽象層次的一次細化。抽象的最低層就是實現該軟件的源程序代碼。
3.1.3 逐步求精
逐步求精是一種求解問題的技術。Miller在他于1956年3月發表的著作"The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Procession Information"中指出,一個人在任何時候只能將注意力集中到7+-2的信息塊上。
1971年,Wirth在他的"Program Development by Stepwise Refinement"中首先提出了逐步求精的開發技術。他指出,逐步求精可以幫助工程師將精力集中到當前的開發階段,而忽略其他細節問題。Miller規則是人類的智力限制,我們不可能戰勝我們的自然本性,所以我們要與之共存,接受自身局限,并在這個前提下盡我們的最大努力。
所以,逐步求精是一種“為了求解重要問題而盡量推遲對細節進行考慮”的基本解題方法。
3.1.4 演繹、歸納
歸納和演繹是人們認識過程中的兩種推理形式。歸納是從個別事實走向一般的結論、概念的思維方法。演繹法是從一般原理、概念走向個別結論的思維方法。
3.2 在校期間持續培養工程意識
針對學制短、時間緊的情況,在前驅的課程中就要讓學生了解軟件工程框架、熟悉模型元素。如在結構化程序設計課程教學中堅持用用流程圖表達算法思想,在面向對象程序設計課程中,表達面向對象的思想時使用UML圖和圖素(基本圖素如角色、用例、類、接口等);在對應的課程設計中,教師以軟件工程框架(目標、過程和原則)來指導學生的設計,并要求同學使用相應的開發工具(如C,VC#.NET)來實現老師給出的(或與同學一道做出的)軟件模型。總之,要求同學要具有按“圖”(模型)施“工”(編碼)的能力,為更深入地學習和今后從事軟件工程打下良好的基礎。