摘 要: 將軟件工程課件放到網(wǎng)上讓學生通過計算機來學習,可以使學生更好地理解軟件工程這門課程的真諦,以此培養(yǎng)學生開發(fā)計算機應用系統(tǒng)的實際能力。為此設計了一個軟件工程課程實踐教學互動平臺,給出了其各功能的詳細設計。該平臺結合了Java、HTML語言與Struts2框架,提供了一種軟件工程新的學習方法。案例提供者將案例傳到網(wǎng)上,學生即可對其進行模擬實踐,并對實踐的分析結果進行記錄,以便再次學習或者提供給他人學習。學生還可以在平臺上互相交流,互相幫助。
關鍵詞: Web; Struts 2; Java; HTML; 軟件工程; 模擬實踐
中圖分類號:TP311.1 文獻標志碼:A 文章編號:1006-8228(2013)12-35-03
Implementation of software engineering practice teaching interaction platform based on Web
Gu Liang1, Chen Jinyuan2, Xu Jincai2, Yan Meng2
(1. Hangzhou Dianzi University, Hangzhou, Zhejiang 310018, China; 2. Zhejiang Topcheer Information Technology Co.,Ltd)
Abstract: It is necessary to make a reform of the teaching ways in order to achieve the higher efficiency. Putting the materials of software engineering on the website and letting students learn on computers will make students have a better understanding of the course and a stronger skill of developing the computer applications. In this paper, a software engineering practice teaching interaction platform is designed, which combines the language of Java and HTML with the framework of Struts2 well. When case providers submit cases to the websites, students can make a simulative practice of the cases and note down the analysis results of practice. All these records can be studied again as well as be offered for others. Students can also communicate with each other on the websites. All the functions of this system are so simple and developed in detail that students can study it easily.
Key words: Web; Struts 2; Java; HTML; software engineering; simulation practice
0 引言
軟件工程是計算機專業(yè)一門重要的專業(yè)核心課程,對學生今后從事計算機軟件相關工作崗位具有很強的實踐性。該課程著眼于從全局角度出發(fā)分析和解決問題,對于培養(yǎng)學生的工程能力、系統(tǒng)能力、實踐創(chuàng)新能力、規(guī)范化工作能力、溝通能力、表達與文檔能力、自我學習能力有著極其重要的意義。
目前,國內(nèi)高校對于該類課程的傳統(tǒng)做法是以教師課堂授課為主,學生被動地聽課,教學內(nèi)容一般是重理論而輕實踐[1]。即使配備課程實驗,學生也只是編寫一些規(guī)定的文檔,其開發(fā)方式和手段基本上與軟件工程的要求脫節(jié)。很多學生在學習該課程時,感到內(nèi)容抽象枯燥,常常是似懂非懂,甚至覺得本課程沒什么實用價值,不太喜歡學。因此必須對該課程進行改革。采用案例教學和研究性教學模式,能突出實踐環(huán)節(jié),培養(yǎng)學生開發(fā)計算機應用系統(tǒng)的實際能力[2]。本文設計了一個基于Web開發(fā)的軟件工程課程實踐教學互動平臺,將教學與實踐很好地結合起來,并增加了互動交流的環(huán)節(jié)。學生將通過軟件開發(fā)實踐實驗真實地體會到軟件開發(fā)的整個過程,通過貼近自己的命題更能夠激發(fā)興趣,同時可以增強團隊意識,提高交流及溝通能力。通過項目管理意識和內(nèi)容的引入,可以使學生真正感受到軟件開發(fā)的復雜性和所需要的嚴謹思維及態(tài)度。
1 技術簡介
1.1 JSP技術
JSP(Java Server Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術標準[3]。JSP技術有點類似ASP技術,它是在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。用JSP開發(fā)的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統(tǒng)上運行。
1.2 JavaScript技術
Javascript是一種由Netscape的LiveScript發(fā)展而來的面向?qū)ο蟮目蛻舳四_本語言,主要目的是為了解決服務器端語言所遺留的速度問題,為客戶提供更流暢的瀏覽效果。
1.3 XML技術
XML(Extensible Markup Language)即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標準通用標記語言)。Xml是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術,是當前處理結構化文檔信息的有力工具。XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標記描述數(shù)據(jù),而這些標記可以用方便的方式建立。雖然XML比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡單,易于掌握和使用。XML與HTML的設計區(qū)別是:XML是用來存儲數(shù)據(jù)的,重在數(shù)據(jù)本身;而HTML是用來定義數(shù)據(jù)的,重在數(shù)據(jù)的顯示模式。
1.4 Struts2框架
Struts 2是一個成熟的支持MVC模式的Web應用程序開發(fā)工具,利用它開發(fā)MVC模式的Web應用時可以大大降低開發(fā)難度,加快開發(fā)速度[4]。同時,Struts也是一個可重用、易擴展、成熟的軟件開發(fā)框架。它的優(yōu)點主要體現(xiàn)在兩個方面:TagLib和頁面導航。TagLib是Struts的標簽庫,其目的是簡化JSP表現(xiàn)層代碼,提高表現(xiàn)層的開發(fā)效率;頁面導航是Struts的核心思想,它使得Web應用系統(tǒng)的脈絡更加清晰(通過一個配置文件,即可把握整個系統(tǒng)各部分之間的聯(lián)系),這正是MVC模式的體現(xiàn)形式。Struts 2的體系結構如圖1所示。
圖1 Struts 2的體系結構圖
1.5 JQuery技術
JQuery[5]是繼prototype之后又一個優(yōu)秀的Javascript框架。它是輕量級的js庫(壓縮后只有21k),它兼容CSS3,還兼容各種瀏覽器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。JQuery使用戶能更方便地處理HTML documents、events,實現(xiàn)動畫效果,并且方便地為網(wǎng)站提供AJAX交互。JQuery還有一個比較大的優(yōu)勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。JQuery能夠使用戶的html頁保持代碼與html內(nèi)容分離。
1.6 Mybatis框架
MyBatis是支持普通SQL查詢、存儲過程和高級映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設置以及結果集的檢索。MyBatis使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJOs(Plain Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。
2 軟件工程課程實踐教學互動平臺的設計
2.1 系統(tǒng)結構設計
MySQL教學互動平臺基本可分為案例學習模塊,F(xiàn)AQ模塊,角色扮演模塊,上傳資料模塊,師生交互模塊和登錄、退出等七大塊功能。上傳資料模塊可以進行資料上傳;角色扮演模塊可以讓學生扮作各種身份,如工程師、架構師等;網(wǎng)上評審模塊學生以所扮演的身份對他人的實踐進行評審;案例學習的六塊功能是對案例進行的操作;添加問題與添加回復分別是實現(xiàn)提問與回答的功能;師生交流能讓學生和教師在平臺上進行交流,與提問、回答類似。
2.2 系統(tǒng)架構設計
2.2.1 系統(tǒng)總體架構設計
本系統(tǒng)采用MVC模式,分為模型(Model)層、視圖(View)層和控制(Controller)層。三層體系將業(yè)務規(guī)則、數(shù)據(jù)訪問等工作放在中間層處理,客戶端不直接與數(shù)據(jù)庫交互,而是通過控制層與中間層建立連接,再由中間層與數(shù)據(jù)庫交互。以下就是MVC的三層結構:
⑴ 模型層
模型表示企業(yè)數(shù)據(jù)和業(yè)務規(guī)則。被模型返回的數(shù)據(jù)是中立的,就是說模型與數(shù)據(jù)格式無關,這樣的模型能為多個視圖提供數(shù)據(jù)。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。具體包括PO(persistant object,持久對象),DAO(存放方法的接口與實現(xiàn)該接口的實現(xiàn)類)。
本系統(tǒng)中,包括6個PO包與6個DAO包,分別為學生、問題、回答、項目、實踐、個性思考。PO包中存放兩個文件:一個是*.java的持久化對象類,即與表中字段名字相同的變量以及它們的get()、set()方法;另一個是*.xml的這些變量的映射文件,映射文件會加載持久化對象類。DAO中存放*DAO.interface的接口與*DAOImpl.java的實現(xiàn)類,接口中寫需要用到的方法,實現(xiàn)類則實現(xiàn)接口中的方法。
⑵ 視圖層
視圖是用戶看到并與之交互的、由HTML元素組成的界面,通俗地說,就是能在瀏覽器上看到的,本系統(tǒng)中用到的是JSP文件。由于功能的需要,本系統(tǒng)設計的頁面相對來說不多,主要包括登陸界面和主界面。其中有一個公共頁面即導航欄,需要包含在各個頁面中,讓它在每個頁面中存在,以方便點擊鏈接。
⑶ 控制層
控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發(fā)送HTML表單時,控制器本身不輸出任何東西,不做任何處理。它只是接收請求并決定調(diào)用哪個模型構件去處理請求,然后再確定用哪個視圖來顯示返回的數(shù)據(jù)。
本系統(tǒng)中,控制層為struts.xml與action包里的action類,根據(jù)不同的功能寫不同的action方法,有些為了方便起見,比如,一個鏈接要實現(xiàn)多個功能,那么會將多個功能寫在一個action方法中,但是一般而言,為了看得明白,一個action方法對應一個功能。
2.2.2 系統(tǒng)總體流程
本系統(tǒng)中,通過使用Struts 2,提供了良好的MVC模式,所有的用戶請求都由Struts 2的Action負責攔截,進入相應的Action類中的方法,在該方法內(nèi)實例化DAO接口中某個實現(xiàn)類,實現(xiàn)類中通過session工廠加載Mybatis配置文件,然后再用之前實例化的那個對象調(diào)用實現(xiàn)類對應的方法,再調(diào)用相應的增、刪、改、查語句,進入數(shù)據(jù)庫進行操作,最后通過Action返回給頁面。
2.3 數(shù)據(jù)庫設計
2.3.1 E-R圖設計
通過分析本系統(tǒng)所涉及到的主體主要為學生信息、教師信息、問題信息、案例信息,分析這些實體之間的關系和聯(lián)系,得出系統(tǒng)的簡易E-R圖,如圖2所示。
[回答][老師] [提問][問題][學生] [操作][名字][密碼][案例][需求][技術][步驟][名字][密碼][主題][內(nèi)容] [m][n][m][n] [l][n]
圖2 E-R圖
圖2中的矩形表示實體,橢圓表示該實體所具有的屬性,如一個問題信息應具有主題、內(nèi)容等屬性,菱形表示實體之間的關系,而用夾著數(shù)字的實線表示它們之間的對應關系。
2.3.2 數(shù)據(jù)庫物理結構
對上面的E-R進行詳細的分析,尤其是對每個實體的屬性進行合理的設置,得到簡單的表結構,然后對各個表之間的依賴關系進行分析。
表里面的字段代表E-R圖里面的屬性,表中的帶實線的箭頭代表表之間的依賴。
2.3.3 數(shù)據(jù)庫表結構
⑴ 學生表字段名包括:studentid、studentname、studentpsw、studentbirth、college和major,相應的字段描述為:學生id、姓名、密碼、生日、學院和專業(yè)。其中主鍵為studentid。
⑵ 問題表字段名包括:questionid、qtitle、qcontent、qdate和studentname,相應的字段描述為:問題id、標題、內(nèi)容、提問日期和提問者。其中主鍵為questiontid。
⑶ 案例表字段名包括:projectid、xuqiufenxi、process、head、introduction、goal和technical,相應的字段描述為:案例id、需求分析、開發(fā)步驟、標題、引言、系統(tǒng)目標和設計技術。其中主鍵為projecttid。
⑷ 需求分析表字段名包括:xuqiufenxiid、projectid、xstep1和xdetail1,相應的字段描述為:需求id、案例id、步驟一和詳細一。其中主鍵為xuqiufenxiid。
3 軟件工程課程實踐教學互動平臺的實現(xiàn)
3.1 系統(tǒng)框架搭建
⑴ 搭建struts框架
創(chuàng)建一個Web Project之后在Web.xml中會自動生成Struts2的配置信息。
在scr目錄下,會生成Struts.xml的配置文件,定義攔截器,攔截器就好像一個過濾器,可以把不想要或不想顯示的內(nèi)容過濾掉,可以減輕代碼冗余,提高重用率。設置內(nèi)容如下:
Struts.xml會加載com.pub.InstanceInterceptor類中的intercept方法,該方法的作用是生成實現(xiàn)類對象、銷毀實現(xiàn)類對象。
⑵ 設置數(shù)據(jù)庫連接文件
創(chuàng)建datebase.properties國際資源化文件,加入如下代碼:
driver=oracle.jdbc.OracleDriver url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
username=rwb password=rwb
添加oracle的驅(qū)動與url以及自己數(shù)據(jù)庫用戶名和密碼,連接到Oracle數(shù)據(jù)庫。
⑶ 設置Mybatis框架
創(chuàng)建mybatisconfig.xml的配置文件,在文件中加入Mybatis的頭元素,這樣就可以進行Mybatis的配置了,代碼如下:
<!DOCTYPE configuration PUBLIC
\"-//mybatis.org//DTD Config 3.0//EN\"
\"http://mybatis.org/dtd/mybatis-3-config.dtd\">
之后添加配置信息,在properties中加載數(shù)據(jù)庫連接文件;添加數(shù)據(jù)源,就是把database.properties的值傳進來,driver,url,username,password分別對應database.properties中的數(shù)據(jù);mappers用來加載po的映射文件,映射文件必須放入mappers中才能被系統(tǒng)讀取。
⑷ 創(chuàng)建InstanceInterceptor類
在Src目錄下創(chuàng)建一個包com.pub,創(chuàng)建一個InstanceInterceptor.java的類,進行攔截器的配置,該類的方法在加載struts.xml文件的時候會被執(zhí)行。首先在開頭創(chuàng)建一個接口的對象,如LoginDAO ldao。
該類中有三個方法:destory()方法用于銷毀這個對象 ldao=1;init()方法用于實例化該對象ldao=LoginDAOImpl();intercept()方法用于設置request來進行傳值,如request.setAttribute(\"ldao\",ldao);第二個參數(shù)為之前實例化的對象,第一個參數(shù)用來調(diào)用第二個參數(shù)。
創(chuàng)建MybatisSQLSessionFactory類。
在com.pub包中創(chuàng)建MybatisSQLSessionFactory.java,該類用于加載Mybatisconfig.xml文件。
這樣,兩個框架跟數(shù)據(jù)庫的配置都基本完成了。
3.2 功能實現(xiàn)
3.2.1 登陸模塊
啟動系統(tǒng)程序后,首先進入系統(tǒng)登錄界面。
在登錄平臺的時候,系統(tǒng)會要求用戶輸入賬號密碼及身份作為驗證信息,這是為了防止非法用戶輸入正常信息后便可以使用本系統(tǒng),若用戶輸入有誤,將提示錯誤信息。
3.2.2 導航欄
導航欄顯示了整個系統(tǒng)具有的功能模塊,并有各功能的鏈接。
3.2.3 各功能模塊
⑴ 添加案例:案例添加共分為六個部分,分別為:標題、引言、系統(tǒng)目標、需求分析、開發(fā)步驟、涉及技術,分別填寫其內(nèi)容。重置鍵將清空所用內(nèi)容,所以應謹慎使用。
⑵ 顯示案例:顯示系統(tǒng)中自帶的案例,可以點擊詳情查看具體信息,通過foreach顯示所有案例。
⑶ 查看案例:點擊案例后面的“詳細”,即可查看案例的詳細內(nèi)容。
⑷ 案例分解:在案例詳細內(nèi)容的界面中,點擊“項目分解”,即可對案例進行分解,就能查看各部分內(nèi)容。進入頁面時所有內(nèi)容都是隱藏的,點擊“詳細”才能看到該部分的詳細內(nèi)容,這樣以便清楚觀察每個步驟。詳細內(nèi)容后面點擊“細節(jié)分析”可以查看作者對該步驟的細節(jié)分析。繼續(xù)點擊“實踐”,則觀察者可對該步驟進行實踐。
⑸ 模擬實踐:點擊“實踐”,會彈出一個小窗口,該窗口用JQuery實現(xiàn),學生可對該步驟進行模擬實踐。
⑹ FAQ:點擊導航欄中的知識管理庫-->FAQ,可進入FAQ庫,里面羅列了所有的問題,在下面的文本框中,可以添加所需要的問題,實現(xiàn)方法跟案例的顯示一樣。點擊“詳細”,可進入查看問題的詳細信息以及該問題對應的回答,下面的文本框可對該問題進行回答。
⑺ 資料庫:資料庫中存放著一些文件,學生可以對其進行下載。
4 結束語
本文設計實現(xiàn)了一個基于Web開發(fā)的軟件工程課程實踐教學互動平臺。通過該平臺學習,學生將能夠較好地理解并掌握軟件工程項目的開發(fā)理論和方法。通過參與完成一個具體的工程項目,將極大地激發(fā)學生的學習興趣,提高學習的主動性,使得從事軟件項目開發(fā)的專業(yè)能力得到增強。該系統(tǒng)將教學與實踐很好地結合起來,并增加了互動交流的環(huán)節(jié)。學生通過軟件開發(fā)實踐實驗真實的體會到軟件開發(fā)的整個過程;通過貼近自己的命題激發(fā)學習興趣,增強團隊意識,提高交流及溝通能力;通過項目管理意識和內(nèi)容的引入使學生真正感受到軟件開發(fā)的復雜性和所需要的嚴謹思維和態(tài)度。
參考文獻:
[1] 白小軍,史璇,羅鈞妟.基于Web的學校網(wǎng)絡管理平臺設計[J].教學與
管理(理論版),2007.
[2] 邢東山,沈鈞毅,原野.基于Web使用挖掘技術的個性化教育網(wǎng)站構
筑[J].計算機應用與軟件,2002.8.
[3] 張波,張福炎.基于JSP技術的Web應用程序的開發(fā)[J].計算機應用
研究,2001.18(5):99-101
[4] 劉斌,王最.Struts,Spring,Hibernate框架在OA開發(fā)中的應用[J].計
算機技術與發(fā)展,2010.20(1):151-154
[5] 李峰,劉彥隆.基于SSH框架與jQuery技術的JavaWeb開發(fā)應用[J].
科技情報開發(fā)與經(jīng)濟,2010.6:106-108