1、軟體生產力資料收集分析系統 鍾乾癸教授 長庚大學資訊工程系系主任 cgchung@mail.cgu.edu.tw 8917088黃志鴻 交通大學資訊工程系 jhhwnag@csie.nctu.edu.tw 8917082蔡佳宏 交通大學資訊工程系 chiahung@csie.nctu.edu.tw 摘要 本研究建立一套學生軟體程式能力資料收集分析系統,提供同學每日記載其學習、寫作業 、寫程式之生產力資料及錯誤資料狀況,一方面可供學生了解自己學習成效與能力,另一方面可讓老師不只知道學生程式作業對錯,而可以進一步針對同學常犯的錯誤予以導正及加強,且
2、學生可由所記錄之程式錯誤,整理出個人的錯誤提醒表(CheckList)。以提高個人軟體生產力與品質。此外本系統提供學生個人的元件庫,學生可由程式作業挑出所完成的元件,而存入本系統,以供日後(甚至就業時)重覆利用,提高寫程式的效率。 Ⅰ. 前言 研究背景 由於軟體產業是一腦力密集產業,參與工程師的個人能力與工作習慣對團隊的效率影響甚鉅,甚至影響計劃的成效。 因此,卡內基美隆大學軟體工程研究所(Software Engineering Institute簡稱SEI)的Watt S. Humphrey先生提出Personal Software Process(簡稱PSP)的概念及執行方法來評量
3、及提昇工程師個人的軟體發展嚴謹度。 Humphrey先生認為一工程師均應在指定時間內 ,交出符合要求的高品質的軟體產品及文件,此有賴每日詳實記載工作量、錯誤次數及錯誤提醒表(CheckList)等資料,方能準確預測新軟體開發工作所需完成時間,且能在預定時間完成指定的高品質軟體。此一概念迅速獲得業界迴響而推廣,且證實對軟體發展人員的生產力提昇有良好助益。Humphrey先生所提的方法是要每一工程師用筆記本記載每一日的工作量,且在一工作完成時,另記載所發生錯誤的次數,由一工作的累積工作時間工作量,及錯次數可推算其生產力及錯誤誤率,此對其預估新工作的完成時間有重要助益。且要求對每一錯誤情況建立錯誤
4、提醒表,以提醒發展者可能產生之錯誤,對個人工作品質的提昇確有助益。 國內已有眾多大學設有資訊工系所,資工系學生於求學期間寫過數十至近百的程式,但仍有部份學生的程式設計能力不足,甚至有些學生並不了解其程式設計能力已落後同學甚多,需自我加強訓練;而老師對同學的程式作業只知其對錯,無法針對同學常犯的錯誤之處予以導正及加強,甚至反應至來年授課內容的調整;此現象已累積多年,但國內尚未有人提出改善方法。 研究動機 有鑒於此,本研究認為可採用PSP方法來量度及改善學生程式設計生產力與錯誤率,然而PSP方法是要求每一個人用筆記本來記載其每日工作情況,對個人而言雖有助益,但不易與同儕相較、激勵;且老師也不
5、易迅速掌握學生的學習情況。 現今校園網路已非常普遍,資工系學生非常方便地使用電腦及上網,若能於校園網路系統中建立一套學生PSP系統供同學每日記載其學習情況,對於在校園內推動PSP制度的阻力將大為降低。因此本研究之目的是設計一套專供資工系學生使用之PSP系統,透過Server分析統計學生狀況,可以讓學生了解自己在班上的學習狀態,而老師也可以針對此資訊了解教學上的缺失,提高教學品質。除此之外,本系統還融入了元件庫,元件庫可以收集學生自己的元件,當之後程式須用到類似功能的元件時,可達到程式再利用的效能,提高撰寫程式的效率。 研究方法 Humphrey先生的PSP系統是以軟體工程師的角度建構出來
6、的,其中包含了個人行程安排與紀錄,程式評估與分析再加上自己所參與的專案開發行事曆,都有其適用性。但以我們學生的角度來看的話,似乎不是那麼合適,所以我們以學生、老師的角度來探討這個系統。就以兩者的互動方式而已,我們必須以Client-Server的形式來設計此系統。再者,我們要重新設計學生要填寫的表格,與前者比較的話,專案開發的行事曆不適用,而且表格之間的關聯性不大,所以我們以針對學生上課、寫程式、寫作業、閱讀等項目來建立所需的評估及紀錄表格,並且設計一個使用者介面,讓使用者花最少的功夫便能將事項填寫完畢,並由系統分析整理其資料,且還可透過Server讓老師知道學生的學習狀況,進而給予幫助。因為
7、我們是把重點放在程式學習方面,所以我們也打算使用BUG分類表、錯誤提醒表及元件庫的設置,讓學生在撰寫程式能夠提昇程設效率。 預期效益 本研究是開發一實用軟體系統以提供評估學生學習效果之用,對提升本系大學生教學效果將有實質效益。唯正確的資料輸入才能得到真實之使用結果數據;因此,需有相關配合管理措施才可獲實質收益。本系統完成後,對各使用者所得之效益有: (一)學生 1.了解自我的實力。 2.提升撰寫程式之品質及效率。 3.建立自我的元件庫,可供日後就學或就業撰寫程式之主要來源。 (二)教師 1.可了解學生學習效果勤惰及常犯錯誤,並反應於教學。 (三)管理者
8、 1.可了解系內各課程之學習情況及詳細資料。歷屆學習情況之比較,以作為系內教學內容及方法改善之主要依據。 分工情形 在這次的研究中,一開始我們先分別了解Introduction to the Personal Software Process這本書的主要內容,然後由黃志鴻負責學生的介面設計,蔡佳宏主要撰寫IO function和mask功能,而等學生部分做出大部分的架構後,蔡佳宏便開始著手Server端的程式設計及DataBase的架構和管理,而由黃志鴻主要負責老師和管理者的部分,最後再一起把Server和Client端進行溝通,完成這次的研究。 Ⅱ. 系統架構與系統規格 為了達到師
9、生互動的效果,所以本系統以Client-Server的架構建立,Server端主要做為資料的儲存及分析,而Client端分為學生、老師、和管理者三類:學生可紀錄自己的學習狀況,老師則可到Server端拿取修課學生相關學習資訊,而管理者須建立學生和老師的登入帳號和密碼 ,並且可以觀看歷屆學生的學習情形(如下頁圖一)。 (圖一) 系統架構 我們的系統主要都是在Client端處理事情,Server只儲存重要的資訊並整理分析。當使用者輸入資料時,就在自己的電腦做處理紀錄的動作,把資料變成檔案儲存在自己的電腦上,只要定時將有用的資料上傳給Server分析統計即可,因為若所有資料都交由Se
10、rver處理的話,資料的流動量會很大,所以我們採用了分散式管理的方式,可以減輕Server的負擔且增加系統的可行性。但這行為只會在學生的介面出現,老師和管理者存取資料都是透過Server,因為他們需要的資料都是由Server分析統計過的,所以就略掉了這個動作。而在Client與Server的溝通上,本系統採用Socket方式建立連線,且連線方式為即時傳輸,當要存取資料時才連立連線,存取完畢便關閉連線,因為系統開啟的Socket個數有限,這樣才不會造成Client端佔用Socket連線,使其他使用者無法和Server溝通。本系統可分為四個部分來討論~ 學生部分 每日登錄此系統時,可紀錄當日上
11、課、寫作業、寫程式、閱讀的項目、時間及工作量,並可安排明日工作時間預定表。當完成一項作業或程式後,學生將工作時間及工作量存入Server,系統自動計算其工作效率,以作為預估做作業或程式所需完成時間的參考依據。對程式作業而言,學生還需要對常犯錯誤作記錄及建立錯誤表。學生也可自己建立元件,可以存入系統的元件庫中,增加程式的再利用性,同時也能提高程設的效率。 老師部分 老師可以在本系統上指派作業項目,並且可觀看修課學生資訊及學習狀態:每週上課時數 、每週閱讀時數、每週寫作業時數、及每週寫程式時數,也可查詢作業或程式的完成度,比較學生之間的差異。除此之外,老師也可根據修課學生常犯之程式錯誤,加
12、以整理分析,提升教學品質。 管理者部分 管理者部分,可以新增、刪除、及修改學生和老師資訊,也可新增一課程,並指定其授課老師,以供學生選課之用。同時,也能觀看某課程之修課學生資訊。除此之外,管理者也可查詢歷屆學生的修課資訊,比較各屆學生,從中了解教授教課情形。 Server部分 Server 端主要負責資料的儲存,而存取的權限根據帳號分成三個等級:學生、老師、及管理者。Server端也負責做各個課程學生資料的分析統計,以提供給老師和學生查詢,而且若學生沒有使用本系統,將寄信於予通知,並且告知管理者未使用名單,還有當老師指派作業時,Server就會通知所有修課學生作業內容。而Serve
13、r端的資料收集是透過資料庫來儲存的,而其資料庫的Schema Diagram如下圖所示: 系統規格 Client的程式以Windows介面呈現,使用Borland C++ Builder和裡面的VCL元件來撰寫,建構出使用者介面,在連線方面則是利用WinSock來跟Server溝通。以使用者的類別分別撰寫出三個不同的User Interface供學生、老師、管理者使用。 (一)學生使用者介面外觀如下所示~ (登入會先彈出一視窗讓學生輸入帳號密碼,接著就會進入學生PSP系統,可分為五個部分) 主畫面:是登入系統第一個看到的畫面,有【每日提醒】、【今日行程表】。
14、在每日提醒裡,學生可以知道自己是否已經填寫了固定行程表(功課表,meeting time)、每日紀錄及明日行程表。而今日行程表會列出你今天預定要完成的事項。 預估畫面:可分為【行事曆】、【程式評估】。 行事曆包含了行事曆預覽、預定行程表、預定工作排程表及固定排程,在行事曆預覽畫面中,學生可以查詢自己安排的行桯,也可新增排程直接跳到預定行程表畫面來安排此天的要做的事情,若是作業、程式有一定的時間限制或是需要數天才能完成的工作,則必須到預定工作排程表中填寫此項工作的的期限、預定所花時間和工作量。若為作業則要加上老師所指定的題號,以便日後的紀錄追蹤;若為程式時,在預估工作量時就會跳出一個相同於
15、程式評估的畫面,學生估計這個程式要寫那幾個函數、寫幾行、花多少時間、會產生多少錯誤,加總後再放入工作量中,這樣可以提高預測的準確度。而最後的固定排程則是讓學生更方便使用其系統,比如說每週的上課時間都是固定的,所以在填寫預定行程表時就不用再填寫而系統會自動產生。 表格名稱 表格欄位 預定行程表 類別、課程名稱、工作名稱、預定開始時間、預定結束時間、預定所花時間、工作量、說明 預定工作排程表 類別、課程名稱、工作名稱、預計開始日期、預計結束日期、預計所花時數、預計工作量、預計速率、說明 固定排程 固定日期、開始時間、結束時間、生效日期、失效日期、類別、課程名稱、工作名稱、說明
16、 BUG評估 預計產生個數、預計解決個數 函式評估 函數名稱、所花時間、行數、說明 紀錄畫面:紀錄學生每日的行程,【紀錄事項】 學生每日都要詳實紀錄自己所做的事項,有沒有去上課、有沒有唸書、有沒有練習程式,有沒有寫作業,這些所花的時間,所完成的工作量都要紀錄在每日紀錄裡,而系統會自動處理其中的數據資料而將其歸類到上課紀錄、閱讀紀錄、程式紀錄、作業紀錄裡。並且於紀錄表格中都含有學生之前預定今天的行程表,學生可以和實際做個比較。工作紀錄則是當每日紀錄裡的完成選項被勾選時(只有類別為作業跟程式才會有作用),系統會自動的把此項工作所花的時間、工作量加總然後填入工作紀錄中。而BUG紀錄和
17、函式紀錄都是要學生於撰寫程式時要一邊紀錄的,學生寫程式時犯了什麼樣子的錯誤,而最後寫出來的程式裡包含的函數有那些,都要詳細紀錄。 表格名稱 表格欄位 每日紀錄 類別、課程、工作名稱、預定開始時間、預定結束時間、預計所花時間、實際開始時間、實際結束時間、實際所花時間、中斷時間、中斷原因、預計工作量、實際工作量、說明、完成/複雜度 工作紀錄 類別、課程、工作名稱、預計開始日期、預計結束日期、預計所花時數、實際開始日期、實際結束日期、實際所花時數、預計工作量、實際工作量、預計速率、實際速率、說明 上課紀錄 課程名稱、預計所花時間、實際所花時間、說明 閱讀紀錄 課程名稱
18、工作名稱、複雜度、預計所花時間、實際所花時間、預計完成頁數、實際完成頁數、說明 程式紀錄 課程名稱、工作名稱、預計所花時間、實際所花時間、預計完成行數、實際完成行數、說明 作業紀錄 課程名稱、工作名稱、預計所花時間、實際所花時間、預計完成題數、實際完成題數、說明 BUG紀錄 BUG類別、原因描述、產生階段、移除階段、解決時間 函式紀錄 函數名稱、預計所花時間、實際所花時間、預計完成行數、實際完成行數 、說明 分析統計畫面:包含【時間分析統計】、【程式分析統計】、【作業分析統計】、【班上分析統計】 系統於每週的星期一都會把上星期的上課、閱讀、寫程式、寫作業所花的時數
19、分別依照課程來個別加總放到這四個項目的時間分析統計表中。而程式分析統計則是當有一項程式工作於每日紀錄時勾選完成,則系統會整理收集此項工作的資訊~時間、工作量、行數及所犯下的錯誤而加入到此表中。同樣地作業分析統計也是當有一項作業工作勾選完成後,系統會自動整理其時間、工作量、完成與未完成之紀錄而加入到表中。最後的班上分析統計則是連線到Server查詢學生於此項工作在班上的排名,也可得知班上的平均值。 表格名稱 表格欄位 時數分析統計 第一週到第十八週 程式分析統計 名稱、所花時間、完成行數、BUG總數(所犯BUG列表) 作業分析統計 名稱、所花時間、完成題數(所完成的題號)
20、班上分析統計 程式~名稱、平均時間、平均行數、平均BUG數、排名 作業~名稱、平均時間、平均題數 其他畫面:【管理資料】和【元件庫】 學生於安排課程中可以自己加選課程,本系統沒有建置選課系統的功能,由學生自行挑選 ,當然必須跟實際上的相符合,因為若為管理者介面來加選的話,則管理者會很麻煩。所以我們設計成學生自己選課以減輕管理者的負擔且增加其便利性。這裡也可取得學生所修課程所指派的作業數。學生可自己撰寫元件,分為元件文件跟元件程式碼。因為元件日後的再使用性很高,所以必須清楚填寫元件的功能及使用方法、演算法、外部介面、及測試檔。這樣學生每次查詢時就能很快的找出適用的元件來用。 表
21、格名稱 表格欄位 安排課程列表及作業數 課程名稱、紙筆作業數、程式作業數 全部課程列表 代碼、課程名稱、開課老師 (二)老師使用者介面外觀如下所示~ (登入先彈出一視窗讓老師輸入帳號密碼,連線成功後即可進入管理畫面,分為三個部分) 學生課業統計:根據課程可分為【學生資訊】、【時數統計】及【選擇作業】三大項 當老師選擇課程時,首先會先看到修課學生的資訊;選擇時數統計時,就可觀看修課學生對於此課程在上課、閱讀、寫作業、寫程式方面所花費的週統計時間;若選擇作業時,則可看出修課學生在這項作業所花的時間及其完成度,來追蹤老師教學方式是否適合。學生是否了解透徹,可由時數統計
22、和作業的平均值分析審查。 表格名稱 表格欄位 學生資訊 學號、科系、年級、班別、名字、E-mail 時數統計 學號、科系、年級、班別、名字、第一週到第十八週的時數 作業統計 程式~學號、科系、年級、班別、名字、所花時間、完成行數、產生BUG數 作業~學號、科系、年級、班別、名字、所花時間、完成題數、未完成題號 備註~於時數統計及作業統計最後都會計算平均值以供觀看 程式BUG整理:老師可查詢學生所分類出的程式錯誤種類、依據程式語言(C語言、C++、JAVA)再以歸納整理出教師專屬的BUG分類表,以供教學使用。 表格名稱 表格欄位 教師BUG種類總整理 B
23、UG編號、類別、描述 學生BUG程式錯誤分類表 BUG編號、類別、描述 指派課程作業:老師可指派作業內容,或是告知同學課程相關訊息(課程網頁或下載位址),當送出訊息傳送給Server時,Server會發送郵件通知道學生這項訊息,並更新課程指派作業數。 (三)管理者使用者介面外觀如下所示~ (登入先彈出一視窗讓管理者輸入帳號密碼,連線成功後即可進入管理畫面,分為三個部分) 管理人員部分:可分為【系所資訊】、【老師資訊】、【學生資訊】,在此管理者可以新增、修改及刪除系所、老師及學生的資訊,並設定使用者登入系統的帳號密碼及權限。 表格名稱 表格
24、欄位 系所資訊 系所名稱、老師人數、學生人數、E-mail 老師資訊 老師名字、E-mail、帳號、密碼 學生資訊 學號、名字、E-mail、密碼 管理課程部分:可分為【老師-課程】與【學生-課程】,若老師有開設課程,管理者要自行在老師-課程裡新增課程,設定其開課老師的資訊,讓學生能拿到正確的課程資訊,而在學生-課程方面,讓管理者了解其課程修課學生人數的情形。 歷屆分析比較:管理者可向Server查詢歷年來此課程修課學生的學習狀況。 表格名稱 表格欄位 歷年學習狀況 程式~學年、平均所花時間、平均行數、平均BUG數、平均速率 作業~學年、平均所花時間、平均
25、題數 本系統的Data Server建立於Unix-like的作業系統上,而DBMS採用MySQL,透過所撰寫的C語言程式來存取資料庫,且完成和Client之間的互動。而這項工作主要由SERVER.C和CHEKCUSER.C這兩隻程式負責~ SERVER.C負責確認登入帳號密確是否正確,當連線成功後,便可透過此程式來存取資料庫。而此程式所提供的功能很多,所提供的服務命令格式如下表所示: 命令 說明 CMD_SEND_CLASS 學生上傳上課時數統計 CMD_SEND_READ 學生上傳閱讀時數統計 CMD_SEND_PROG 學生上傳寫程式時數統計 CMD_SE
26、ND_WORK 學生上傳寫作業時數統計 CMD_SEND_BUGTYPE 學生上傳程式錯誤分類 CMD_GET_HWK_NUM 學生查詢各科指派作業數 CMD_SEND_PROGANA 學生上傳程式分析統計 CMD_SEND_HWKANA 學生上傳作業分析統計 CMD_ADD_CLASS 學生加選課程 CMD_DEL_CLASS 學生退選課程 CMD_GET_HWK_AVG 學生查詢各科作業平均 CMD_GET_PROG_AVG 學生查詢各科程式平均及排名 CMD_TEA_GET_CLASS 老師查詢修課學生資訊 CMD_TEA_CLASS_TIME
27、老師查詢修課學生上課時數統計 CMD_TEA_HWK_TIME 老師查詢修課學生寫作業時數統計 CMD_TEA_PROG_TIME 老師查詢修課學生寫程式時數統計 CMD_TEA_READ_TIME 老師查詢修課學生閱讀時數統計 CMD_TEA_CLASS 老師查詢所授課科目列表 CMD_TEA_HWK 老師查詢修課學生程式作業分析統計 CMD_TEA_GET_BUG 老師查詢修課學生的程式錯誤分類列表 CMD_TEA_BUG 老師查詢程式錯誤分類整理列表 CMD_TEA_SEND_BUG 老師上傳程式錯誤分類整理列表 CMD_TEA_ASSIGNHWK 老
28、師指派課程作業數 CMD_ADMIN_SENDDEP 管理者修改科別系所資訊 CMD_ADMIN_GETDEP 管理者查詢科別系所資訊 CMD_ADMIN_ADDTC 管理者新增老師資訊 CMD_ADMIN_MODTC 管理者修改老師資訊 CMD_ADMIN_DELTC 管理者刪除老師資訊 CMD_ADMIN_GETTC 管理者查詢老師資訊 CMD_ADMIN_ADDST 管理者新增學生資訊 CMD_ADMIN_MODST 管理者修改學生資訊 CMD_ADMIN_DELST 管理者刪除學生資訊 CMD_ADMIN_GETST 管理者查詢學生資訊 CMD
29、ADMIN_ADD_TCCLASS 管理者新增課程資訊 CMD_ADMIN_MOD_TCCLASS 管理者修改課程資訊 CMD_ADMIN_DEL_TCCLASS 管理者刪除課程資訊 CMD_ADMIN_GET_TCCLASS 管理者查詢課程資訊 CMD_ADMIN_GET_STCLASS 管理者查詢修課學生資訊 CMD_ADMIN_PASSWD 更改密碼 CHECKUSER.C 這隻程式主要是配合Crontab一起執行,於每天零點時執行,當時間到達時便到資料庫查詢使用者今日的連線狀態,若學生於今日尚未使用本系統,則此程式便會向資料庫查詢此學生的電子郵件位址,寄予
30、提醒信件,告知使用者今天並未使用本系統,除此之外,也會將未使用此系統的學生名單寄給管理者,使管理者能了解學生的使用狀態,以便掌握學生的學生狀態。 除了上述兩個主要程式外,SERVER端還有ROTATE.C,這隻程式主要是將資料庫內的資料以學年方式備份,由管理者輸入當年學年,這主要是為了提供歷年分析統計功能所用。 而在資料庫中的表格可分為使用者列表、修課學生列表、課程作業分析統計列表、上課時數統計列表、閱讀時數統計列表、寫程式時數統計列表、寫作業時數統計列表、課程作業指派列表、及全部課程列表。而命名法則如下: 表格名稱 資料庫對應的table name 使用者列表 auth
31、 課程作業指派列表 assignment 全部課程列表 classlist 上課時數統計列表 class 寫作業時數統計列表 homework 寫程式時數統計列表 program 閱讀時數統計列表 reading 課程作業分析統計列表 class_課號 修課學生列表 c_課號 而每一個統計列表中,都有修課學生的學號當成Foreign Key,可以指向使用者列表來查詢所須的資訊,而每個學生的學號為一主鍵(Key),不可重覆。除此之外,管理者所建立的科別系所和學生的程式錯誤分類及老師的程式錯誤整理表,在Server端都是以檔案的形式儲存,因為這些資訊都時常變更
32、為了不造成資料庫的存取負擔,所以以檔案的形式儲存。 Ⅲ.目前成果 而目前本系統對上述規格都已建構完畢,包含學生、老師、及管理者的所有需求,根據目前的結果,學生能清楚知道如何安排自己的行程,且透過詳實的紀錄,能上傳至Server,進一步和班上同學做個比較,了解自己的程度,如下圖所示,同學就能清楚的了解班上同學在作業上所花的平均時間,也能知道自己在這次的作業中在整班中的排名情形,能讓自己更清楚的了解自己和別人的學習狀況,不再是盲目的自我學習了。 而且除了能了解和他人之間的差異外,本系統也能幫助學生建立出自己專屬的程式錯誤提醒表 (如下圖所示),非但能使學生便清楚自己撰寫程式
33、時常犯的錯誤,更能提高撰寫程式的速率,減少程式所犯錯誤,提高個人軟體生產力。 對於老師而言,的確可以清楚的看出修課學生的盲點所在,能針對此分析給予學生適時的幫助,不再和以前一樣,只知道學生作業完成與否,可以進一步了解學生學習上的疏忽,也能針對修課學生常犯之程設錯誤分類,了解學生的程式垢病。而管理者更能透過本系統了解學生學習狀態和歷屆學生學習分析比較,清楚的了解學生成長曲線。 而且本系統除了促進了師生之間的互動外,元件庫對學生在撰寫程式時,提供了莫大的幫助,當學生實作出自己的元件時,可以透過本系統做適當的管理儲存,日後撰寫程式需要用到相關元件時,便能透過本系統查詢使用(如下圖所示
34、而且本系統除了幫學生做元件的程式碼收藏外 ,同時也會儲存學生對此元件的相關檔案,如元件簡述和測試資料等,提高元件的可利用性。 Watt S. Humphrey先生提出Personal Software Process的概念後,也設計一套PSP登錄工具 ,不過此工具只供個人使用,而且此工具為供軟體工程師所用,但從教學角色來看,實有必要將學生之工作記錄作統計分析,以供老師及時修正學生錯誤觀念或反應於未來教學,甚至藉這些數據了解學生的能力與差異,而予以加強。所以本系統除了採用Humphrey之PSP外,便是採取教學的觀點來設計,非但能提高學生之軟體生產力,還能達到師生互動效果,提高教學品質
35、 Ⅳ.結論與討論 軟體生產力資料收集分析系統實用於教學上可以達到教學相長的效果。對學生而言,除了可以更容易掌握自我行程外,更能清楚知道自己的時間花費所在,可以和同儕互相比較,知道自己的缺失,了解自己在班上的學習情形。建立錯誤提醒表,能提高自己的軟體生產力。利用本系統元件庫,能提高程式速率,同時也使維護更加簡單。老師方面,除了可以指派作業習題外,更能透過本系統清楚的看出修課學生在本課程的學習狀況,並可針對學生的弱點再加以教導,彌補學生之不足的知識。而且根據學生的程式錯誤分類表,老師更能於授課時加以提醒之,提高同學寫程式之效率。管理者除了建立每位學生和老師之帳號密碼,及課程資訊外,還能比較
36、歷屆學生的進步曲線,除了了解學生學習狀況外,也能清楚的看出老師在授課上的用心,提昇整個學習的品質。 而在實際應用方面,本系統雖已建構完成,不過目前測試資料皆以少數人為對象,沒有就針對一個系來實驗,不過就大體而言,詳實的紀錄能反應自我的學習,這點是無庸置疑的。而且在實用上詳實紀錄的依賴性很大,必須依靠完善的管理制度來約束學生,才能發揮此系統的最大功效。 而未來本系統希望還能加入知識庫的功能,能夠將學生所使用過之演算法、資料結構等加以收集管理,存入系統知識庫內,當撰寫程式時遇到類似問題時,便能到知識庫內尋求相關解法。此知識庫非但對個人助益很大,學弟妹若有相關問題時,仍能透過本系統尋求協助。
37、而且若能將學生的完成作業及程式,透過上傳的方式,由Server端的測試程式來評量,並回應給學生錯誤題號及所犯之程式錯誤分累和簡單說明,如果更能使學生的資料更客觀更有用,更能改進學生的盲點所在,發揮本系統的最大效能。屆時非但可透過本系統來批改作業程式,更能回傳錯誤訊息告知學生,讓學生即時改進,更能使學生之評判標準一致,同時也能連立整個學院,甚至是整個學校的元件庫即知識資產,使本系統更趨完善。 而目前雖然本系統的目標放於一個系內的使用,但若能擴展到一個院內,甚至一所學校,更能使校內學習風氣煥然一新,此時的學習更不是自我的學習了,而是整校師生一起學習,甚至是整個世界。 Ⅴ.參考文獻 [1]
38、Watt, S. Humphrey “Introduction to the Personal Software Process” Addison Wesley Longman 1997 [2] Shamkant B. Navathe and Ramez Elmasri ”Fundamentals of Database Systems” Third Edition Addison Wesley Longman 2000 [3] George Reese and Randy Jay Yarger and Tim King “MySQL & mSQL” O’Reilly 1999 [4] Ivor Horton's “Beginning C++ The Complete Language” Wrox Press 2000 [5] 方盈 “TCP/IP 通訊協定-入門與應用” 博碩文化2002 [6] 王俊斌 “FreeBSD 入門應用” 博碩文化 2002 [7] [8] .tw/default.asp (Delphi K.Top討論區)






