許躍穎
(北京師范大學珠海分校,廣東珠海,519000)
Web應用程序開發實踐需要全面了解多個課程,例如前端,數據庫,編程語言和框架。對于計算機專業的學生而言,整個系統的開發過程為他們提供了實踐機會?,F階段,項目實踐內容執行形式依然沿用傳統的SP+Java bean+servlet,而對現如今在程序開發方面應用率不斷增加的框架技術了解不足,應用率較低。
除此之外,系統開發時,傳統的瀑布式開發模型效率并不高,流程雜亂,在質量管控方面存在嚴重不足。本文在系統開發時,嘗試在Web應用程序中采用SSM輕量級框架,并在開發過程管理工作中采用敏捷開發模型,將規定鏈接應用于項目開發流程中,引導學生有序進行開發。
在企業級開發的早期,SSH框架很普遍,但是由于struts安全問題,該框架逐漸被企業放棄,并由輕量級的SSM框架將其取代,該輕量級的SSM框架的組成結構包括Spring,Springmv,Mybatis。
其組成框架包括三項。Web開發過程中,它們各自發揮自身作用。Spring是業務邏輯的依托,Mybati則協同數據庫完成交互。Spring MVC中存在MVC模式,且非常完整,該模式可以將用戶請求轉換成數據模型。結果將返回到weh頁面。
SSM是標準的MVC模型,它將整個系統分為4層:視圖層,控制器層,服務層和DA0層。 Spring MVC的作用包括視圖管理以及請求轉發, spring的作用為管理業務對象,MyBatis的作用則是數據對象。受到DA0與Service層耦合特性不高的影響,在開發時不得共同運行。二Controller與View層耦合特性正好相反,所以在開發時二者可以相關聯。
現階段,SSM框架具有較高的應用可行性,由于其理解難度低,在各大公司普遍使用。
瀑布模型是傳統的軟件開發較常使用的模型之一,在體系結構設計時,離不開需求文檔。需求和設計確定后,開始編碼,并根據先前的設計開始開發。該模型的應用,使開發過程獨立存在與用戶需求。在用戶需求發生改變時,需承擔較高的變化成本,并且相對復雜。敏捷開則以用戶需求為出發點,通過迭代的方式來完成軟件開發。其更加追求開發速度,漸進式的完成工作軟件交付。
Scrum和XP作為敏捷開發的方法,其應用率較高,本文即是用的Scrum敏捷開發法。Scrum搭建了流程框架,內含大量預定義及實踐角色。它是用于有效開發軟件的過程,包括計劃和模式。敏捷開發方法中的Scrum流程如圖1所示。

圖1 Scrum開發流程
項目功能需求經分解后,形成不同的用戶故事,分幾個不同的迭代周期完成項目開發,任何迭代周期(sprinf)選擇實施一個或兩個用戶故事。每個用戶故事都分為幾個迭代任務,開發人員需要按時將這些任務完成。整個迭代過程有2—6周實踐,其特征表現為可操作性、可見性等。團隊成員對每天的工作任務進行討論總結,并回顧上一次的結果。
敏捷開發需收集方式為迭代收集,敏捷軟件開發全程均存在原始軟件開發的體系結構設計。Scrum的迭代開發使得開發難度降低。而大部分學生缺乏開發經驗,在項目開發時反而更容易遵循規范引導,有利于學生開發和學習,熟悉系統開發流程[1]。
在開發Web應用程序時,對校友管理系統的開發需采用SSM框架,Scrum敏捷開發模型用于管理整個開發過程。有望實現下列目標內容:①熟悉SSM框架并予以掌握,采用SSM框架完成Web系統的設計與開發;②參與從需求分析,用戶界面設計到業務邏輯和數據存儲的完整系統開發過程;③發達專業,嚴格遵守相關規范操作,合理應用開發工具完成編程輔助性工作,糾正錯誤并測試;④掌握正確的迭代開發方法,學習掌握將相對復雜的系統分解后,獲得執行度高的子任務,以迭代形式將目標暫存;⑤團隊成員可以互相積極合作。
校友管理系統中包含多種功能,涉及前臺校友信息收集、電子校友卡注冊、事件注冊等;還包括校友信息查詢、事件發布、審閱、后臺統計。其系統框架分為四層。其中包括View層,Conlroller層,Service層和DAO層。View層的接口設計采用了Bootstrap框架,是目前較流行的框架結構, Dao層則對器層進行控制。服務層和Dao層數據經封裝后進行傳輸,到達Pojo對象,詳見圖2所示。

圖2 SSM框架流程
整個實現過程View層和Controller層聯系緊密,無論是編譯還是開發時,二者共同參與。
Scrum開發時,軟件需求分為一個用戶故事(用戶故事,縮寫為US),所有用戶有屬于自己的故事描述:說明為達到目的所要做的事情,也就是說,從用戶的角度描述產品功能的不同角色的特定需求。根據這種拆分原則,可以將校友信息管理系統拆分為多個用戶故事。
團隊共同開發時,尤其是Scrum開發時,為提高項目管理與控制的有效性,需要采取下列措施:①任務進度管理;②開發商提交和合并代碼;③版本控制。為了解決這些問題并有效提高開發過程的管理效率,需要有效使用相關工具。
在項目管理工具中,TFS和Jira的應用率較高,在工作領域中通常會使用事務跟蹤工具,包括客戶服務、任務跟蹤、缺陷跟蹤、項目跟蹤、需求收集、敏捷管理等。通過上述管理工具的使用,可提高迭代計劃制定、任務跟蹤、任務分解的便利性,從而獲得更高的開發與管理效率。校友管理系統在開發時,使用的管理工具為Jira[2]。
所有開發團隊都無法逃脫代碼版本控制問題。這與是否選用敏捷開發或者相關項目管理工具沒有直接關系,版本控制并不會受這些因素的影響。該系統在開發時,選用的版本控制工具為Git。
為了更好的對項目進行管理和控制,有幾個問題必須解決,尤其是在團隊Scrum開發下,比如①團隊任務的進度條;②團隊開發人員在任務中提交的代碼;③內容的版本?,F在TFS和Jira這兩種工具普遍采用率高,這樣的工具可以提高開發流程的效率,例如跟蹤任務,跟蹤缺陷,服務客戶和管理審批等項目,實時跟蹤并快速制定方案提高了開發的速度。項目開發中代碼很重要,代碼的版面控制更重要,雖然版面控制的工具不止一個,但是現在運用最多的版面控制工具還是Git,并且還使用Gitlab來搭建代碼庫。
以往項目開發時,收到學生開發經驗不足的影響,其代碼編寫習慣不良,編寫標準以及管理流程混亂,所以項目代碼質量通常很差且很困難。
3.5.1 維持
Scrum開發過程更加注重質量控制。開發人員被要求使用新代碼,融合于自己的本地代碼,便可展開新的開發,讓開發工作可以持續下去。任務完成后,先對自己的代碼進行測試,確定其可以正常運行方可向代碼庫提交,避免對團隊其他成員的開發工作造成影響,從而影響整個系統的正常運行。迭代時,堅持下列步驟完成迭代,為項目代碼質量提供保障,其中包括編碼統一規范性,代碼樣式;靜態代碼審查;單元測試;持續集成;代碼審查和重構(審查和重構)。
3.5.2 主要內容
(1)任務的完成量以及完成難度。通過項目管理工具Jira完成迭代計劃的開發時,所有任務的執行人員以及估計時間都處于非保密狀態。
(2)信息上傳。您可以在GiIlab存儲庫中查看每次上傳的時間和人員。
(3)代碼質量。在檢查代碼時,通過問題數量統計結果結合代碼靜態分析方式來測試代碼質量。
(4)項目進度。記錄實際用時時長與預估時長進行對比,二者之間的差異可通過Jira系統中的老化圖表得到反饋。
(5)軟件功能的實現。評估以上四項內容之后,評價開發團隊的綜合表現。由于整個開發過程時團隊共同完成的,需要將其按照學生各自的任務完成情況進行評分,評價內容包括任務完成量、開發時長、代碼質量。
采用敏捷開發流程后,考核涉及整個開發流程的多方面內容:
(1)完成的任務數量和難度。在項目管理工具Jira里制定的迭代計劃,每個任務的執行人和預估時間都是公開的。
(2)提交(commit)的信息。在版本庫GiIlab里面可以看到每次commit的時間、人員等信息。
(3)代碼質量??筛鶕a評審時發現的問題數量及利用代碼靜態分析T具時的評分等作為考核參考。
(4)項目進度。實際花費時間和預估時間的差,在Jira系統中可通過燃盡(bum out)圖體現。
(5)軟件功能實現情況。
綜上所述,在Web應用軟件開發過程中,采用SSM輕量級框架,實施案例教學時選用校友系統的案例,幫助學生更好的了解企業級架構框架,并全面理解并申請多個專業課程。提高專業知識水平和系統開發技術。系統開發采用敏捷開發Scmm模型。按照用戶故事分解、任務分解、迭代計劃的流程,分解復雜程度較高的項目,形成不同的子項目后更好的迭代。