蘭剛 甘濤 管慶 傅翀
[摘 要] 目前軟件類綜合設計課程存在設計過程缺乏規范性、對軟件工程相關能力訓練不足、小組不同成員的能力鍛煉不均衡等問題。通過教學設計,強調系統能力的培養,加強過程管理,強化綜合設計任務執行過程的規范性,并采用翻轉課堂等方式,引導學生按軟件工程的規范進行綜合設計項目開發,有效加強了軟件工程思維訓練,提高了學生軟件工程能力。
[關鍵詞] 綜合設計;軟件工程;過程管理;翻轉課堂
綜合設計課程屬于提升專業工程能力的實踐類課程。通過綜合設計,學生可以把所學知識應用于具體的工程問題解決,在鞏固相關知識的同時,提升工程能力。我院作為軟件工程學院,早已實施了卓越工程師計劃,并且通過了工程教育專業認證[1-3]。我院尤其重視綜合設計,把其列為核心實踐課程,并對綜合設計課程進行了持續改進。
綜合設計實驗是一項重在過程的教學工作,相對于設計成果和設計報告,更應該強調設計過程對學生能力的培養,因此綜合設計更應該注重設計過程管理。綜合設計過程涵蓋從設計開始到結束的各個環節,設計過程進行管理則包含了設計流程規范性管理、設計過程教學指導管理、設計過程考核方式、設計過程對學生能力的培養以及對學生主動性積極性促進方面的考量。本文闡述了綜合設計過程管理的具體實施方案。
一、目前綜合設計I執行中存在的問題
我院的綜合設計由綜合設計I,II,III三個階段組成。時間跨度從第2學期到第7學期,是一個難度和工作量都逐步提升的過程。其中綜合設計I在大二上學期進行,是學生首次綜合應用所學的知識進行一個工程項目的設計。此前綜合設計I在設計過程管理中,存在以下問題。
(一)設計過程缺乏規范性,對軟件工程相關能力訓練不足
由于綜合設計I是學生初次接觸的工程設計,而且大二上學期的學生所掌握的知識有限,因此設計題目相對簡單。這樣導致的結果是很多組的學生拿到任務后,簡單梳理下思路,在大致劃分系統的模塊之后,就開始進行編碼設計,而不是遵循軟件工程的要求,按需求分析、可行性分析、概要設計、詳細設計、編碼設計、測試這樣一個規范流程來完成設計[4]。雖然指導老師也會強調按軟件工程規范進行設計,但大多數同學還是在完成設計最后寫總結報告的時候才補充需求分析、可行性分析、概要設計等方面的內容,而不是嚴格按軟件工程規范進行設計,設計過程的隨意性較大,導致相當一部分同學對軟件工程相關能力訓練不足,對軟件工程規范在實際工程中的應用掌握不夠全面,理解不夠深刻。
(二)小組不同成員的能力鍛煉不均衡
由于綜合設計I的設計任務相對簡單,可能導致一個組的不同學生在完成設計任務時所承擔的任務量差距較大。比如可能由一個能力相對強的學生完成整個設計的編碼任務,而其他成員完成查找資料、論文排版等一些相對簡單的任務,使得一個組的不同組員得到的能力鍛煉差別較大,部分成員得到的鍛煉不夠,一些學員甚至存在“混”和吃“大鍋飯”的想法[5]。
二、研究的基本思路
綜合設計I是整個綜合設計課程體系中的基礎階段。此時學生已經完成了C語言課程的學習,并同步進行軟件工程課程的學習。因此綜合設計I需要在學生初次進行一個軟件工程項目設計的時候,能夠正確的引導學生應用軟件工程的方法和工具進行軟件項目的設計,強化學生的軟件工程思維,為后面的綜合設計II、綜合設計III兩個階段的設計以及以后工作中參與大型項目設計打下堅實的基礎。我們擬采用以下思路來進行綜合設計I實驗建設。
(一)強調系統能力的培養
系統能力的培養具有突出的工程教育特征,是解決復雜工程問題的直接體現。與其他專業學生的計算機基礎和應用能力相比,計算機軟件類專業學生更應突出強調計算機軟件系統能力的培養[6]。而軟件工程相關的知識、方法和工具,是軟件類工程項目實施的基礎,是學生必須掌握的基礎系統能力。在綜合設計整個過程中,都需要重視對軟件工程思維及相關技能的培養。
(二)加強過程管理
加強設計過程的管理,使得指導老師對綜合設計的指導和管理從偏向結果的管理方式,轉變為過程管理和結果并重的管理方式。加大對教學過程的關注,使教育真正轉向素質教育,形成持續提升的教育發展趨勢是教育的必然選擇[7],因此需要通過對實驗管理過程進行頂層設計、優化過程實施及過程管理[8],提高綜合設計的效果。
(三)強化綜合設計任務執行過程的規范性
強化綜合設計任務執行過程的規范性,引導學生嚴格按照軟件工程的規范來進行設計,從學生第一次進行軟件工程項目開發起,就培養其軟件工程思維習慣,為以后學生走向工作崗位,成為高端軟件設計人才打下堅實的基礎。
(四)通過教學設計增強學生自主學習和主動合作學習的積極性
自主學習能力的培養是創新人才實踐教學的重要內容[9]。自主學習能力有助于提高學生獲取知識的積極性和自覺性。主動合作學習,是指學生在學習過程能夠主動開展合作,共同學習、探討、分享所學的知識、方法和技巧[ 10 ]。需要通過教學設計和管理,讓學生自覺認識到合作的積極效應。
三、綜合設計I改革實踐
根據以上思路,我們在綜合設計I的建設時,做了以下調整和改革。
(一)框架性設計任務
在綜合設計I階段,設計題目和任務都是框架性的,沒有具體的設計目標。而具體的設計目標,由學生在任務框架下自行確定。
比如其中一個題目是“基于MSP430F5529的小游戲開發”。該題目規定設計的任務是開發一個小游戲,但具體是什么樣的小游戲,游戲需要具備哪些功能,該如何操作等,都是由學生經過小組討論后自行確定。經過指導老師審核通過后,每個組根據自己提出的具體目標去完成設計任務。
這樣做的一個優點是在同一個任務框架下,不同組所選擇的具體設計目標不同,不同組之間的具體設計內容并不重復。這樣2~3個老師可以共同負責同一個設計任務的4~6組學生進行設計。所有組都可以詳細介紹自己的設計思想、方法和具體實現等,以翻轉課堂的方式進行交流,而不用擔心這樣的交流可能會導致自己的設計內容可能被其他組“抄襲”。
(二)按軟件工程規范流程進行設計過程管理
為了強化學生的軟件工程意識,使得每個組的設計過程能按照軟件工程的規范嚴格執行,本次綜合設計實驗課的建設,按軟件工程規范流程來設計指導,以這種方式加強學生軟件工程相關能力的訓練。為此,選取了部分指導課,專門用于軟件工程相關內容的研討,具體設計如下。
1.第一次指導,部署任務,主要是對任務進行詳細講解,使學生對任務有更深的理解。對任務實現的方向和主要技術路線做探討,講解需要學生自學掌握的一些基礎知識和開發工具。
詳解介紹評價和考核方式,以及對設計過程管理的要求。布置后面幾次研討內容和時間節點,讓同學提前準備。
2.第一次研討,進行可行性分析和需求分析相關技術討論。主要內容是可行性分析該如何做,應該從哪些角度進行可行性分析,闡述對需求分析相關知識和方法的認識和理解,如需求分析可以采用哪些方式來描述,常用工具有哪些,確定具體的設計內容,并對具體的設計目標進行描述;準備用什么方式來對本次設計的需求分析進行描述,給出小組完成設計任務的進度計劃表。
3.第二次研討,軟件可行性分析和需求分析闡述、概要設計方法研討。主要內容是就選定設計目標闡述具體的可行性分析和需求分析。闡述對系統概要設計相關知識和方法的了解和認識,如系統總體設計(概要設計)可以采用哪些方式來描述,常用工具有哪些,準備用什么方式來進行本次設計的系統概要設計。
4.第三次研討,系統總體設計闡述、系統詳細設計方法研討。主要內容是根據每組所做的需求分析,給出系統的概要設計和模塊劃分,通過討論,確定不同組員負責模塊的分工。原則除專職測試外,每個組員都需要承擔相應模塊的設計任務。闡述對詳細設計相關知識和方法的認識和理解。針對示例程序的學習有什么心得體會和收獲。
5.第四次研討,復雜工程問題和關鍵知識點的討論。主要內容是就系統的概要設計,闡述對設計題目所需的關鍵知識點的理解。闡述設計相關的復雜工程問題及解決方案。
6.第五次研討,系統詳細設計介紹。具體要求是根據系統概要設計和模塊劃分,每個組員分別闡述自己所負責模塊關鍵部分的詳細設計。闡述設計過程中遇到的復雜工程問題及解決方案。
7.第二、第三次指導。檢查設計進度,輔助解決學生設計中遇到的問題。
8.第六次研討,中期檢查。主要內容是每個組介紹目前設計的進度;介紹設計中遇到的復雜工程問題及解決方案;講解后續進度安排和計劃。
9.第四、第五次指導,檢查設計進度,輔助解決學生設計中遇到的問題。
10.第七次研討,系統測試方法討論。每個組就系統測試方法和使用工具進行討論,并且介紹準備采用的測試方法和工具。
11.第六次指導,總結報告撰寫、答辯準備指導。檢查學生最后的完成情況,指導學生撰寫總結報告、撰寫總結報告的注意事項,指導學生準備答辯材料。
(二)學生對設計進度的把控更嚴格
在第一次指導課進行任務講解時,指導教師就把整個設計過程要進行的主題研討內容以及時間節點安排告知學生,并要求學生制定本組的項目實施計劃,嚴格按計劃執行。而每周的研討和進度檢查,可以督促學生按計劃進度執行。尤其是研討課,學生需要詳細講解具體的設計方法和實現,指導教師會根據每次同學匯報和講解的表現給出設計過程分,這也將促使學生嚴格按計劃執行設計任務。
(三)翻轉課堂設計
從上文可以看出,整個設計過程安排了7次軟件工程相關主題的研討。這7次研討以翻轉課堂的方式進行,以學生匯報、師生討論、教師點評、解答的模式實施。通過翻轉課堂設計,把設計指導變為了主題研討。
每個組根據每次研討課的主題,自主查閱資料準備PPT,上講臺講解。講解的重點是對相關主題內容的理解、具體實現的詳細描述、目前遇到的問題、解決問題的技術手段等。
每組學生講解完成后,指導教師會對該組學生講解中存在的問題和講解不清楚之處進行提問,和學生一起探討,并指導學生解決設計中遇到的技術難題。在此期間,其他組的同學也可以提問,一起討論,這樣有助于學生梳理相關的知識點,使得學生對相關知識點的掌握更清晰。
最后,指導教師會對該組學生講解的內容進行點評,包括存在的問題、遺漏和不完善之處、與其他組相比較所具備的優點、改進建議等,使得學生通過翻轉課堂形式的研討后,除了能鞏固他們所掌握的知識外,還能夠得到提升。
由于加強了綜合設計過程的管理,并采取了翻轉課堂的研討方式,使得指導老師對每個小組的執行情況和執行進度有較為清晰的了解,并且對一個組內每個學生所承擔任務的工作量、出力多少、學習能力和態度等,有一個直觀的了解和感受,可以相對客觀的對小組內的每個同學的設計過程成績進行評定。通過對每次研討進行考評的方式,實現了對設計過程相對客觀的考核評價。
(四)增加設計過程考核的權重
由于加強了對綜合設計過程的管理,使得指導老師可以相對客觀的對一個組的每個同學的平時成績進行評定。在這種情況下,我們增加了設計過程考核分數占總成績的權重,使其從原來的10%提升為40%,而且評價方式也由原來的組內互評,改為以指導老師評價為主,同學組內互評為輔的評價方式。每次研討課都給予了相應的分數,通過這種方式實現了對設計過程的考核評價。
四、綜合設計改革成果分析
本次綜合設計改革是整個綜合設計實驗課程平臺建設項目的第一階段,該部分在2018—2019年度的第一學期進行了實施,取得了較為明顯的效果。
(一)強化了學生對軟件工程相關方法和工具的掌握
通過上述主題研討課的安排,使得學生的整個綜合設計過程都嚴格按照軟件工程的規范流程進行。而主題研討方式,一個組講解他們對研討主題的理解以及具體實施方案時,其他組的同學在旁聽,且可以提問探討。不同組對同一個問題的理解可能有差異,而且針對本組設計任務采用的具體實施技術和方法也不同,這樣的探討容易在不同組之間形成思維碰撞,使得學生對相關主題的理解更加深刻、更加全面。