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