賴均
【摘要】軟件工程作為工程技能培養的重點課程,如何有效地把實踐能力培養與基礎理論結合起來,是軟件工程實踐教學中需要急切解決的問題。本文結合課程設計的教學實踐與教學經驗,總結出“課程設計與科技競賽相結合”的軟件工程課程實踐教學方法。從教學的效果表明,它是能夠強化學生對軟件工程基礎理論系統理解并轉化為軟件工程基本技能的有效實踐教學方法。
【關鍵詞】實踐教學 課程設計 科技競賽
【中圖分類號】G642 【文獻標識碼】A 【文章編號】2095-3089(2014)02-0243-02
一、軟件工程課程實踐教學現實情況
長期以來,由于軟件工程課程偏重于方法學理論的講授,其中心是軟件生命周期的工程技術方法。然而這些技術和方法,對于缺乏工程開發經驗和管理知識的在校學生來說非常難以理解。在實踐教學中學生感覺軟件工程理論對軟件開發的幫助作用不大[1]!盡管實踐教學對學生有嚴格的要求,但是他們往往為了能完成任務的考核,只能按照要求粗略地完成或者收集現成的文檔來充數,而未能通過實踐對所學的知識進行理解與消化。此外,靠死記硬背的知識、概念常常未能得到有效理解,從而難以轉化為軟件工程技能。多年來,各個學校在不斷地探索和改進其實踐教學方法,當前也有些對傳統實踐教學改進的方法并且取得了一些效果[2][3]。經過對這些方法的分析,可知其大致可分為兩類:一類是直接套用軟件工業界的要求,但學生缺乏技能和實踐條件對任務根本無法完成,只能敷衍了事,達不到對軟件工程知識理解和應用的目的;而另一類則是要求不明確且缺乏規范,因要求過于簡單而無法達到增強對軟件工程理論應用的目的。
鑒于這樣的情況,學校迫切需要對軟件工程實踐教學加以改革,逐步建立實踐與理論緊密結合的教學方法,著力培養學生的工程化開發能力,進而形成一個融基礎理論、實踐教學和參加軟件科技競賽的一種培養機制。因此,使課程設計成為對課堂教學的有效補充是實踐教學改革的一個重要任務[4]。
二、“課程設計與科技競賽”相結合的實踐教學方法
課程設計與科技競賽相結合就是要打破傳統實踐教學法的不足,充分調動學生學習的積極性和主動性,極大地激發學生的學習興趣,以實踐教學活動帶動軟件工程理論的學習。這樣實踐教學就能改變成為對理論知識的鞏固應用和對工程實踐能力培養的主動學習方式,從而使教學出現可喜的變化。它能把教師要求轉變為以學生自主要求,把常規工程文檔寫作轉變為以任務為驅動的分析、設計和實現的學習。
該實踐教學是在教師的指導下由學生實施的一個較為完整的“項目”而進行的實踐教學活動。參照科技競賽題目的特點,并依據軟件工程理論、方法的特點,制定了本課程設計的知識要求結構如圖1所示。在軟件工程理論知識的基礎上,挑選某種易于擴展、應用的工程技術方法,在軟件工程規范文檔的要求下進行課程設計。從而使其按需求分析、總體設計、詳細設計、實現和測試的流程來開發軟件。這樣,經過課程設計較為完整的項目訓練,能有助于對學生工程技能的培養和對工程理論的理解,最終使學生在有限的時間內,對軟件工程的核心理念有較好的把握。它能幫助學生有效地參與各級軟件類科技競賽,提高自己就業時的信心和社會競爭力,使其畢業后能夠順利過渡到實際的軟件應用開發中,并在實踐中對軟件工程理論加以檢驗和完善并逐步鍛煉成為社會急需的各類軟件人才。
課程設計與科技競賽相結合的教學方法是以學生為主體,教師為輔助,在課程設計實踐中加深對軟件工程理論的理解,培養學生在工程實踐中發現知識與分析、解決問題的能力。要達到這樣的實踐教學目的,軟件工程課程設計要做到以下的要求。首先,關于課程設計與科技競賽相結合的教學內容的設計上,要以學生興趣為中心自由選擇題目。針對實踐教學要求,學生選擇合適的題目是保證該實踐教學順利開展的關鍵。因此,題目要以理論教學內容為依據,同時要考慮學生的知識結構特點和實踐教學的要求。此外,題目要注重以解決身邊的軟件需求為背景,充分使其既包含教學知識點,又能激發學生軟件開發的興趣,達到培養學生軟件工程能力的目的。其次,實踐指導老師要提供合適的示范案例,并不斷地引導學生向正確的方向前進。由此,在課程設計的準備階段需要對為完成設計所需的基本知識進行明確且扼要地講透。這樣學生在遇到困難時,才知道行進的方向而不至于迷茫和不知所措!在課程設計中,要使學生明確課程設計的要求,并盡快地掌握工程的基本方法和使用工具的基本技能。同時,應盡量使學生獨立地解決設計中所遇到的問題,而教師則需要對學生進行全程的指導和監督。再次,應確定合適評價標準,客觀考核學生的學習效果。主要方法是以學生完成課程設計的情況來評價學生的學習效果,要求各課程組定時匯報開展的進度和情況,并及時地對各階段性成果進行評價。
三、課程設計的教學實施
根據實踐教學的具體要求,對課程設計與科技競賽相結合的教學方法開展了研究,并總結出該方法的大致流程如圖2所示。其基本指導思想是以案例示范為核心,不斷地引導學生對其選定的課程設計進行改進,使其能滿足掌握需求分析、軟件設計與實現以及測試的基本技能,并把不斷改進貫穿到整個設計中。由此,課程設計應從課程設計準備,精選小項目案例文檔示范,課程設計題目的選定,課程項目的設計與改進,教師和學生一起對設計結果的評價與改進進行精心地組織。因此,準備階段就是對訓練內容所涉及的工程知識進行精煉概括與總結,使學生知道如何去應用這些知識。此外,示范的項目案例要進行精心的選擇,使其能夠覆蓋課程設計實踐教學要求,又要精干有效,易于參照與模仿學習,切忌過于龐雜。教師應把課程設計準備知識與項目案例進行參照講解,讓學生徹底了解訓練的要求。在題目的選擇上,可以適當地提供一些精選的小應用軟件題目,讓學生參照選擇或根據生活經驗自擬題目。并在項目設計中進行全程的監督和引導,并隨時指出其設計和參照示范項目和實踐要求的差距。對各階段結果,應組織一些志愿學生和做得好的學生對各階段結果進行評價并給出改進建議。如此不斷地迭代改進,能夠使學生較好地掌握軟件工程的基本技能,并鞏固對應的軟件工程理論知識,從而取得舉一反三的示范效果。這樣就能夠使學生理解并掌握一些基本的需求獲取與分析、系統分析與設計等軟件生命周期的技能,并學會軟件工程規范文檔的編寫與應用。
在與科技競賽相結合的問題上,可根據學院、學校和省市以及全國舉辦的一些科技競賽題目來進行課程設計。通過小組成員的共同努力,把課程設計完成的作品,加以整理、改進并完善作為參賽作品,這樣參賽作品往往在各類軟件競賽中具有較強的競爭力。而且,獲獎對于學生在就業市場上信心的形成具有巨大的影響力,而且對于他們今后走向社會,對自己的發展定位有著較好促進和幫助作用!
總之,實踐教學的目的是通過軟件工程課程教學的軟件知