【原】『軟體工程』教學思路

來源:互聯網
上載者:User

標籤:

軟體工程是一門很難教的課程,究其原因,無非幾點:

1. 軟體工程是在工作中打磨幾年,才可能有切身體會的。在學校學並沒有強大驅動力,因為好像用不著,又不像一門語言課,它是“硬”本事。另外,軟體工程的理論知識並不像高數或者演算法那麼深奧,學起來感覺沒學到什麼高深的知識。簡而言之,就是學生很難get到一種驅動力。

2. 軟體工程要實操,就得有比較好的基礎,比如熟悉一門語言,編過一些程式,在裡面折騰過。可是,前面的基礎學得好不好呢?有時候只能哭笑不得,物件導向都不知道是什麼。這就大大影響了本門課的教學,搞得上軟體工程課的老師什麼都得教什麼都得會,即便老師會,學生在短短一個學期裡面也不可能補上前面幾年的基礎。

3. 說是說軟體工程專業,可大部分學生是對這個方向上的就業興趣不大的,一個班能有四分之一有這個想法就很不錯了。於是,當老師告訴學生軟體工程有多麼重要時,得到的反饋就是:好,重要,但與我何關,我只想過個關。

 

教了幾年軟體工程,有點心灰意冷,特別是學生的學習慾望簡直讓人失望。老師都願意教,可得有人願意學啊。於是,願不願意學習自然也成為了老師要解決的問題。讓大家做實踐項目吧,大部分人就是拷貝粘貼,反正就是一個平時成績,最終還是試捲成績作為主導。不做項目吧,這門課確實索然無味,很多時候就是另一種形式的心靈雞湯,聽一聽可以,但沒用。

 

如何在短短一個學期內,在學生基礎都很差的情況下,在大家還願意配合不鬧到教務處的狀況下,教出有點效果的軟體工程課呢?

 

首先,得要跟院領導爭取平時成績佔比至少達到60%,這是前提。考試也考,不違背學校教學基本範式。

 

再次,必須要降低要求和工作量。

軟體工程必須得依靠個人項目,結對項目,Team 專案三個項目的轟炸才會有效果,這就是『構建之法』鄒老師的核心理念:做中學。做了東西,對於激發學習興趣很重要,對於體會軟體工程核心思想更重要。傳統教學可能看重的是DFD中的對象是圓形還是方形,但做中學的思路根本不是注重這個。一個圓形一個方形與軟體工程到底有什麼關係?沒關係。如何畫一個有價值的DFD才是軟體工程思想的體現。可這些東西不在實踐中,不在項目中,怎麼才能教的好?

 

對於大三的學生,三個項目必須到位,對於大二的學生(學習軟體工程概論)必須做一個Team 專案。

 

如何規劃教學就很重要了,下面是我的一些想法:

1. 平時學業,每次總分十分,打分為三擋,10分,有自己經過實踐的,有價值的觀點;5分,有自己的闡述,未經過實踐,應付居多;0分,未交或遲交或引用不說明來源或全盤拷貝。平時作業佔比平時分的50%。平時作業每盩厔少一次,也可以自行多做,但以後給一個平均分作為作業成績,計算公式:score=50%*10*(s1+s2+s3+...+sn)/n,n>=8。當自己平時有一次沒有交作業,就多做點有價值的作業,拉高平均分。不再考量附加分,全部歸納到作業分中。

2. 平時作業從實際項目中提取題目,結合實踐做,比如黑箱測試有幾種方法,你在你的項目中是怎麼採用邊界值法來測試的,舉例說明,並有測試結果。這樣,就將項目中的某些工作移至作業中了,工作量降低了,也很好的全面學習了理論。

3. 個人項目在立項時要能融入結對項目,結對項目在立項時要能融入Team 專案。這樣,做的代碼和文檔就不會浪費,大大降低了工作量,但還能保證學習效果,畢竟軟體工程是一種理念,通過實踐才能更好的去理解,它不是編程課,不能把這門課上成了JAVA實訓課。比如Team 專案是一個遊戲,那結對項目就可以做遊戲中情境與角色程式設計,那個人項目就可以做角色自身動畫程式實現。結對雙方最好在團隊中選取。

4. 個人項目主要是帶入,讓學生走入這這門課,結對項目主要是偏重知識點實踐,比如UML怎麼做,代碼複查怎麼做,白盒測試怎麼做等等,Team 專案是主打傳遞或更深入理解軟體工程的核心理念,比如迭代升級,團隊溝通等。

5. 因為平時作業做了項目中很多事情了,所以個人項目佔比平時成績10%,結對項目佔比20%,Team 專案佔比20%,結對項目中分數分配由兩人協商,不可相同,Team 專案中分數分配由團隊協商,不可相同。三個項目都是百分制。Team 專案必須有一個隊長,隊長全盤負責。

6. 不太建議個人項目和結對項目採用命題作文,一般一個老師會同時教三個班,大概100多人,這麼多人採用命題作文,基本上會出現拷貝的情況,老師也沒有辦法一一排查誰抄的誰,即便你要求多具體和詳細,拷貝是忽略這個的。目前,都是採用開放式的。個人項目評分為三等,100分,完全自己做的,可以運行,有項目說明;50分,自己修改了一部分,也看懂了,可以運行,有項目說明;0分,沒交,遲交,拷貝的,丁點修改。結對項目對文檔要求低點,Team 專案必須要有所需的全部文檔。

7. 這樣的教學方法,考試出題是個大難題。這裡提供一種方法,不出純記憶力題目,出幾個大題即可,大題就是平時作業,比如出一道白盒測試題,寫一小段程式,請寫出路徑覆蓋的測試案例。如果平時認真做了作業的,考試完全沒有問題,意思也就是實際上沒有考試環節了,只是形式上有。

 

終上所述,軟體工程的核心還是在於“做”,但通過手段將複雜的教學流程簡化,簡化的目的是讓教學取得更好的效果。這門課的核心目的我認為是通過“做”來理解軟體工程的核心思想,這門課無法覆蓋語言課、演算法課、創新創業課、資料庫原理課、JAVA課程實踐等。

【原】『軟體工程』教學思路

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.