软件工程课的分数系统,和打分方法
考考考,老師的法寶;分分分,學生的命根。?以《構建之法》為核心的軟件工程課已經(jīng)在全國幾十個學校開展了好幾年,由于采用 Learning by doing (做中學) 的方法, 同學們通過實際的作業(yè)獲得分數(shù),逐漸累積并轉(zhuǎn)換為最終分數(shù),而不是等到期末的考試得到一個分數(shù)。 這種方式有很多好處,但是也引起一些困惑,每次開課的后期,大家都會對分數(shù)系統(tǒng)有一些疑問。 這里講一些分數(shù)系統(tǒng)的設計理念,和如何對付一些新問題 (有很多同學根本不做作業(yè)怎么辦, 同學開始浪蕩,最后想及格怎么辦, 異常差的學生導致分數(shù)系統(tǒng)的映射有偏移怎么辦...) 。 這個博客就是想解答這些問題。
分數(shù)系統(tǒng)設計的理念:
- 每次發(fā)表的作業(yè)都有分數(shù),在學期的任何時候,都可以根據(jù)公式,從已有的分數(shù)中推算出所有學生的期末成績 (這樣學生就不會說:啊老師!我從來不知道我有不及格的風險啊...)
- 獎勤罰懶,分數(shù)要拉開優(yōu)秀作業(yè)和一般作業(yè)的差距,遲交 0 分,過期不交作業(yè),倒扣分。
- 鼓勵交流。作業(yè)不是一次交了就完事,再也不看, 而是學生和老師的一個交流途徑。 老師和助教給學生博客的評論,學生應該積極回應。 回應就有分數(shù),不回應就會被扣分。?
? 師生要互相質(zhì)疑,問答,就像培根說的:
? ? ? ? 真理之川從它的錯誤之溝渠中流過;像萌芽一般,在一個真理之下又生一個疑問,真理疑問互為滋養(yǎng)。
- 分數(shù)規(guī)則對所有人開放,盡量保持簡明。 用Excel 表就和一些簡單公式可以統(tǒng)計好。- 允許學生花額外的努力獲得更多分數(shù)。- 最后的分數(shù)是個人努力和全班同學相對排名的體現(xiàn), 但是少數(shù)學生的異常情況 (分數(shù)特別高、特別底)不會對其他同學的分數(shù)產(chǎn)生大的影響。?
這個分數(shù)系統(tǒng)是建立在:“全班同學都至少付出了一定程度的努力” 的假設上的。如果少數(shù)同學什么作業(yè)都不做,那么這個分數(shù)系統(tǒng)不是為這樣的學生設計的,這些同學不必參加后面提到的映射等操作。??
《構建之法》里的分數(shù)設計中的概念和詞匯定義:
學生要做項目(個人項目,結對項目,團隊項目),項目有作業(yè), 作業(yè)分代碼作業(yè)和博客作業(yè)。 每個作業(yè)都會打分,基本上每個作業(yè)滿分都是 10 分,最低分是 (-10) 分。? ?學生在團隊項目中要做兩次階段性的展示(alpha 發(fā)布 和 beta 發(fā)布),這兩次發(fā)布非常重要,體現(xiàn)了一個團隊一段時間的努力成果。團隊通常是寫一個博客,把展示內(nèi)容都組織成為一個博客,同時團隊可以現(xiàn)場展示他們的成果。這個作業(yè)的滿分是 100 分。 ?
分數(shù)轉(zhuǎn)換的流程是:?
? ? 原始分數(shù) --> 累積并映射到各自區(qū)間 --> 歸一化為百分制 --> 加上可選的個人附加分 --> 老師的調(diào)整 -->成績單上的分數(shù)?
原始分數(shù)的累積和區(qū)間映射
原始總分=? ? ?? 個人項目成績 ? ? ? ? ?? (20%)? + 結對項目成績 ? ? ? ? ?? (20%)?? + 團隊項目Alpha成績 ?? (25%)? + Alpha階段個人貢獻分? (5%)? + 團隊項目Beta成績 ? ?? (25%)? + Beta階段個人貢獻分 ? (5%)
個人項目成績 (占原始總分的 20%) =
? ? ? ? ? ? ? 每次作業(yè)成績的累加,再把全班同學的最高成績映射 20分,這個最高的累加分數(shù)到 20 分的比例為 R, 其他同學的成績按 R 做映射。????????????? 作業(yè)成績累計是負分的同學,映射為 0 分。
? ? ? ? ? ? ? 例如:三個同學 A, B, C 在個人項目中分別得了 50, 30, 10 的原始分, 這個項目的滿分是20 分。 最高的原始分50 要映射到 滿分20 , 比例是 50 / 20 = 2.5, 所以 ?R = 2.5
? ? ? ? ? ? ? 這樣我們就可以用 比例R 推出, B 得分=30 / 2.5 = 12, C得分 10 / 2.5 = 4
結對項目成績 (占原始總分的 20%)= 每次作業(yè)成績的累加,再把全班同學的最高成績映射 20 分,這個最高的累加分數(shù)到 20 分的比例為 R, 其他同學的成績按 R 做映射。????????????? 作業(yè)成績累計是負分的同學,映射為 0 分。
團隊項目成績 = 每次作業(yè)成績的累加,再把所有項目組的最高成績映射為 25 分, 其他小組根據(jù)映射比例做同樣的映射。????????????? alpha, beta 兩次團隊項目同樣處理,各占 25%?
個人貢獻分 = 和個人項目成績類似,最高分映射到 5 分,其余按比例映射。????????????? alpha, beta 項目同樣處理
為什么要區(qū)間化?因為團隊項目在進行過程中會有很多次作業(yè)(項目啟動,需求,設計,WBS, 每日例會報告, 展現(xiàn)博客, 測試,復審得分...) 這個原始分會遠遠超過個人項目的原始分,這兩種分數(shù)必須分別歸類到各自的區(qū)間中,以保證各種努力在最終分數(shù)有適當?shù)谋壤?/p>
歸一化
得到原始總分之后,原始總分要做一個歸一化處理,回歸到百分制。 原始分最高的獲得100 分,其他人按照 ?最高原始分/100 的比率做相應的映射。這個方法和個人項目原始分映射類似。?
注:既然映射的參數(shù)是受到最高分的同學影響, 那么班級里有一個非常優(yōu)秀的學生,他的原始分特別高,會導致其他學生的分數(shù)被映射得比較低,這公平么? 我們用軟件業(yè)的瀏覽器市場做例子,原來的瀏覽器IE 是成績比較好,但是后來班里面來了Chrome,Firefox 等學生,原始分最高的同學,映射到了100 分,遺憾的是,IE 不是最優(yōu)秀的同學,那么IE 的最終分數(shù)就降低了,這有道理吧? IE 要獲得高分,應該自己努力,而不是埋怨別的同學作業(yè)做得更好,對吧?
原來采用的是高限和底限都有的映射, 例如原始分分布是 [20 .. 90], 要映射為 [50.. 100], 這個兩端都要照顧到的映射方式有一個巨大的缺點 -- 如果班級里面有一個較差的學生,那么其他人的分數(shù)就要被映射得比較高。 ?那么,為何一個同學的最終分數(shù)會受到班里面最差的同學的影響呢? ?在軟件市場上,最爛的軟件不會影響優(yōu)秀軟件的市場占有率,對吧? 因此,在實驗了幾年之后,最低端的映射就不考慮了。?
那么,一些同學原始分低怎么辦? 整體分數(shù)的分布比較奇怪怎么辦?請繼續(xù)看。
通過附加項目做最后調(diào)整
最后,每個同學有機會做額外的附加項目 (動機可能是:提高自己水平,獲得更高分數(shù), 避免不及格,等等), 個人附加項目分數(shù)的最高分是 10 分, 這樣,如果有本科生同學的原始總分是全班最低的,映射為 50 分,那么,他可以通過掙這個附加項目分數(shù)的滿分 10 分來避免不及格的命運。
附加項目做什么呢?例如,幫助老師做一些教學輔助工作,再做一個有難度個人項目,寫深入的讀書/論文筆記,等等。在學期過程中,和老師/助教有深入交流的學生(例如看博客的問答)也可以獲得一些附加分數(shù),這個由助教掌握。?
一些老師出于種種原因,還想加一個筆試環(huán)節(jié)。那么,筆試可以作為這個課程的附加分數(shù),筆試的最高分映射為10分,當然,根據(jù)學校的要求和具體情況,筆試的最終分數(shù)也可以提高。?
分數(shù)分布奇怪怎么辦
在少數(shù)情況下,一個班的分數(shù)會出現(xiàn)奇怪的分布,例如,有一兩個特別優(yōu)秀的學生,他們得到非常高的分數(shù),會導致其他同學的相對分數(shù)太低;或者學校對分數(shù)段的人數(shù)有規(guī)定,或者領導要求把某個不及格的分數(shù)變成及格(我聽說過兩次這樣的情況)。
把過于離散的分數(shù)分布變換到比較集中,靠近100 分: ?把所有的分數(shù)都開平方,再乘以 10. ?這個過程讓所有非零的分數(shù)向 100 分靠近。
把過于集中的分數(shù)分布變換到比較離散,遠離100 分: ?把所有的分數(shù)都和自己平方,再除以 10. ?此過程讓所有小于 100 的分數(shù)向 0 分靠近。
團隊項目的展示評審階段如何打分
為什么要研究各種打分方法,制定詳細的規(guī)則?因為要解決實際問題,我們在實踐中碰到什么問題呢?
問題1:同學們的團隊項目往往拍腦袋就想出來,并沒有很嚴肅地做各種軟件工程的調(diào)查。中途拍大腿后悔, 最后拍屁股走人,項目爛尾。 ?問題2:每個軟件項目都可能是很好的軟件工程案例, 但同學們對于其他團隊的項目不太關心, 只是最后評審的時候看看別人軟件的界面,草草給一個分數(shù),浪費了很多的學習機會。??
解決:把點評做成有趣的場景, 讓同學們專注于分析各個項目的成功的可能性, 讓同學們自己用批判的眼光分析問題,跟蹤項目的進展。?
?具體方法:
評審階段的打分安排:
1) 每個團隊寫一個alpha/beta 階段的總結展示博客 (不要寫 PPT),具體要求請看老師的說明。有些項目暫時還沒有實際用戶,或者面臨各種問題, 那團隊可以深入分析失敗的原因,并總結“我學到了什么軟件工程的原理,獲得了什么經(jīng)驗教訓”,這也達到了學習的目的。?
2) 每個復審人看所有團隊的總結展示博客,以及代碼質(zhì)量,實際測試結果, 決定名次(沒有并列),說明項目的優(yōu)點和缺點分析(見下表)
? ? ? 誰來做復審人:老師,助教,每個團隊選一個本團隊的代表
? ? ? ? ? ? ? ? ? ? ? ? ? 團隊博客列出團隊的排名,和對這些團隊的點評(不包括本團隊)
? ? ? 復審人看什么:
? ? ? ? ? ? -?基本要求:團隊成員都到場了么(無理由不到的,要倒扣分),現(xiàn)場講解、回答問題水平如何? 是否各個角色都有發(fā)言和回答問題的機會?
? ? ? ? ? ? - 軟件的質(zhì)量:解決原計劃解決的問題了么,軟件運行質(zhì)量如何?用戶有多少,用戶反饋如何?
? ? ? ? ? ? - 軟件工程的質(zhì)量:代碼在哪里? 代碼能在新的機器上構建成功么? 軟件的架構如何 (下表有更詳細的說明)?代碼可維護性如何?每日構建有么?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 項目如何管理的?燃盡圖反映真實狀態(tài)么?老師和助教的點評有回答或改進么?
? ? ? 復審怎么做:
? ? ? a) 面對面集中做,老師和所有在場的復審人現(xiàn)場提問,排名次
? ? ? b) 不能面對面的,通過看博客和代碼,博客評論交流的方式平均并排名次。 大家都是學過軟件工程,做過項目的人了,評論要有點專業(yè)性,不能光談感性認識 (“這個小組做的App 看起來還可以...”), 而是要點評這個產(chǎn)品和軟件工程相關的地方,書上提到下面的公式:?
軟件 = 程序 + 軟件工程
軟件(的質(zhì)量) = 程序(的質(zhì)量)+ 軟件工程(的質(zhì)量)
我們要好好測試一下程序的質(zhì)量,給出明確的,定量的評定。同時我們要觀察這個小組軟件工程的質(zhì)量(通過他們的每日例會,燃盡圖,以及其它博客)點評他們項目的目標實現(xiàn)了么?項目的風險是如何應對的?找到用戶的痛點并解決了么? 對主要和次要的需求是如何取舍的?如果換成我來領導這個小組,我會做什么不一樣的事情?
有不少團隊的項目看似功能都有,但是一具體使用就出現(xiàn)很多問題;當然還有不少團隊項目具體功能不行, 但是項目成員號稱:“我們的架構好!”, 一個軟件的功能性特質(zhì)比較好評判,那么那些 “非功能性” 的特質(zhì),如何評判呢?我們看看如下幾個方面,它們也有各自的? “非功能性測試” (參見《構建之法》相關章節(jié)):
高性能
從測試的角度看:系統(tǒng)最快能有多塊?支持最多的用戶,能有多少?換句話說,系統(tǒng)必須滿足預期的性能目標,在并發(fā)用戶數(shù)(Concurrent Users)、并發(fā)事務數(shù)(Transactions per Second,TPS)、吞吐量(Throughout)等指標方面達到預估值,支撐使用人群的正常使用操作。團隊項目考察:團隊有測試數(shù)據(jù)或真實運行數(shù)據(jù)說明軟件達到了哪些高性能指標?
可靠性 & 穩(wěn)定性 & 可用性
很多軟件是客戶業(yè)務系統(tǒng)一部分,它直接影響到用戶的經(jīng)營和管理,客戶希望軟件在使用周期內(nèi)長期穩(wěn)定運行,這要求系統(tǒng)具有一定的容錯能力。可用性是指系統(tǒng)在指定時間內(nèi)的提供服務能力的概率值。我們一般采取集群、分布式等手段提升系統(tǒng)的可用性。我們不能認為所有軟件都像一些消費類型的手機App那樣 - 閃退多,重啟一下就好。 團隊項目考察:團隊是否有壓力測試,是否收集程序崩潰、閃退記錄?MTTF?是多少?
安全性
用戶的業(yè)務數(shù)據(jù)是具有非常高的商業(yè)價值,如果被泄露或篡改將會帶來重大損失。安全性是軟件系統(tǒng)的一個重要的指標,也是架構設計的一個重要目標。團隊項目考察:軟件是怎么保護用戶隱私的?軟件能防止外力入侵系統(tǒng)么?
靈活性 & 可擴展性
軟件系統(tǒng)應該具備滿足不同特點的用戶群和目標市場的能力,更靈活。業(yè)務和技術都在不斷的發(fā)展變化,軟件系統(tǒng)需要隨時根據(jù)變化擴展改造的能力。一個簡單的例子:用戶想把App 的界面都換成另外一種語言,軟件如何做到?是要重啟App,還是要下載一個不同的App? 一個稍微復雜的例子:一個團隊號稱做了 A大學校園周邊的 “美食指南”App,如果讓這個軟件也支持另一個城市的 B大學的周邊美食, 程序要全部重新寫呢,還是只需簡單換一些數(shù)據(jù)、配置信息就可以?我們軟件工程經(jīng)常講的高內(nèi)聚,低耦合就發(fā)揮作用了!團隊項目考察:看源代碼,分析它的模塊化、內(nèi)聚、耦合、可擴展性。
易用性
軟件系統(tǒng)必須擁有較好的用戶體驗,便于用戶使用。團隊項目考察:請按照《構建之法》第十二章 “用戶體驗”的建議來測試易用性。
可維護性
軟件系統(tǒng)的維護包括修復現(xiàn)有的錯誤,以及將新的需求和改進添加到已有系統(tǒng)。因此一個易于維護的系統(tǒng)對于用戶提出的問題或改進,可以及時的實現(xiàn)高效的反饋和響應支持,同時有效降低維護成本。團隊考察:代碼注釋、文檔,代碼質(zhì)量。問自己:你愿意接受這樣質(zhì)量的源代碼么?
經(jīng)常有人說:“架構是系統(tǒng)非功能性需求的解決辦法的集合”,如果同學們自稱“架構好”,那就用數(shù)據(jù)來證明。
| 小組的名字和鏈接 | 優(yōu)點 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 缺點,bug 報告(至少140字) | 最終名次 (無并列) |
| team 1 | ?... | 程序有什么具體的bug? 項目的目標實現(xiàn)了么?項目的風險是如何應對的?找到用戶的痛點并解決了么? 對主要和次要的需求是如何取舍的? 源代碼管理如何? “非功能性質(zhì)量”如何? 選擇至少 3 個方面來測評 如果換成我來領導這個小組,我會做什么不一樣的事情? | ? |
| team 2 | ?... | ?... | ? |
3) 助教收集所有復審人的名次信息, 按平均名次排列, 并給予分數(shù)(再次強調(diào):小組互相評名次,不打分,助教最后打分)。
4) 這個展示作業(yè)的滿分是 100 分,其余名次按照階梯遞減(例如,每個階梯是 10 分或 5 分),取決有多少團隊參加了評比,階梯要拉開,也要保證付出了努力的團隊獲得相當于及格的分數(shù)。 也可以分類評比,例如,所有自選項目在一類,所有做學校老師布置的項目在一類,所有 “微信小程序”類型在一類,等。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的软件工程课的分数系统,和打分方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样保存python源程序_五分钟教会你
- 下一篇: java获取当前电脑的ip_使用Java