許躍穎
(北京師范大學(xué)珠海分校,廣東珠海,519000)
Web應(yīng)用程序開發(fā)實(shí)踐需要全面了解多個(gè)課程,例如前端,數(shù)據(jù)庫,編程語言和框架。對(duì)于計(jì)算機(jī)專業(yè)的學(xué)生而言,整個(gè)系統(tǒng)的開發(fā)過程為他們提供了實(shí)踐機(jī)會(huì)?,F(xiàn)階段,項(xiàng)目實(shí)踐內(nèi)容執(zhí)行形式依然沿用傳統(tǒng)的SP+Java bean+servlet,而對(duì)現(xiàn)如今在程序開發(fā)方面應(yīng)用率不斷增加的框架技術(shù)了解不足,應(yīng)用率較低。
除此之外,系統(tǒng)開發(fā)時(shí),傳統(tǒng)的瀑布式開發(fā)模型效率并不高,流程雜亂,在質(zhì)量管控方面存在嚴(yán)重不足。本文在系統(tǒng)開發(fā)時(shí),嘗試在Web應(yīng)用程序中采用SSM輕量級(jí)框架,并在開發(fā)過程管理工作中采用敏捷開發(fā)模型,將規(guī)定鏈接應(yīng)用于項(xiàng)目開發(fā)流程中,引導(dǎo)學(xué)生有序進(jìn)行開發(fā)。
在企業(yè)級(jí)開發(fā)的早期,SSH框架很普遍,但是由于struts安全問題,該框架逐漸被企業(yè)放棄,并由輕量級(jí)的SSM框架將其取代,該輕量級(jí)的SSM框架的組成結(jié)構(gòu)包括Spring,Springmv,Mybatis。
其組成框架包括三項(xiàng)。Web開發(fā)過程中,它們各自發(fā)揮自身作用。Spring是業(yè)務(wù)邏輯的依托,Mybati則協(xié)同數(shù)據(jù)庫完成交互。Spring MVC中存在MVC模式,且非常完整,該模式可以將用戶請(qǐng)求轉(zhuǎn)換成數(shù)據(jù)模型。結(jié)果將返回到weh頁面。
SSM是標(biāo)準(zhǔn)的MVC模型,它將整個(gè)系統(tǒng)分為4層:視圖層,控制器層,服務(wù)層和DA0層。 Spring MVC的作用包括視圖管理以及請(qǐng)求轉(zhuǎn)發(fā), spring的作用為管理業(yè)務(wù)對(duì)象,MyBatis的作用則是數(shù)據(jù)對(duì)象。受到DA0與Service層耦合特性不高的影響,在開發(fā)時(shí)不得共同運(yùn)行。二Controller與View層耦合特性正好相反,所以在開發(fā)時(shí)二者可以相關(guān)聯(lián)。
現(xiàn)階段,SSM框架具有較高的應(yīng)用可行性,由于其理解難度低,在各大公司普遍使用。
瀑布模型是傳統(tǒng)的軟件開發(fā)較常使用的模型之一,在體系結(jié)構(gòu)設(shè)計(jì)時(shí),離不開需求文檔。需求和設(shè)計(jì)確定后,開始編碼,并根據(jù)先前的設(shè)計(jì)開始開發(fā)。該模型的應(yīng)用,使開發(fā)過程獨(dú)立存在與用戶需求。在用戶需求發(fā)生改變時(shí),需承擔(dān)較高的變化成本,并且相對(duì)復(fù)雜。敏捷開則以用戶需求為出發(fā)點(diǎn),通過迭代的方式來完成軟件開發(fā)。其更加追求開發(fā)速度,漸進(jìn)式的完成工作軟件交付。
Scrum和XP作為敏捷開發(fā)的方法,其應(yīng)用率較高,本文即是用的Scrum敏捷開發(fā)法。Scrum搭建了流程框架,內(nèi)含大量預(yù)定義及實(shí)踐角色。它是用于有效開發(fā)軟件的過程,包括計(jì)劃和模式。敏捷開發(fā)方法中的Scrum流程如圖1所示。
圖1 Scrum開發(fā)流程
項(xiàng)目功能需求經(jīng)分解后,形成不同的用戶故事,分幾個(gè)不同的迭代周期完成項(xiàng)目開發(fā),任何迭代周期(sprinf)選擇實(shí)施一個(gè)或兩個(gè)用戶故事。每個(gè)用戶故事都分為幾個(gè)迭代任務(wù),開發(fā)人員需要按時(shí)將這些任務(wù)完成。整個(gè)迭代過程有2—6周實(shí)踐,其特征表現(xiàn)為可操作性、可見性等。團(tuán)隊(duì)成員對(duì)每天的工作任務(wù)進(jìn)行討論總結(jié),并回顧上一次的結(jié)果。
敏捷開發(fā)需收集方式為迭代收集,敏捷軟件開發(fā)全程均存在原始軟件開發(fā)的體系結(jié)構(gòu)設(shè)計(jì)。Scrum的迭代開發(fā)使得開發(fā)難度降低。而大部分學(xué)生缺乏開發(fā)經(jīng)驗(yàn),在項(xiàng)目開發(fā)時(shí)反而更容易遵循規(guī)范引導(dǎo),有利于學(xué)生開發(fā)和學(xué)習(xí),熟悉系統(tǒng)開發(fā)流程[1]。
在開發(fā)Web應(yīng)用程序時(shí),對(duì)校友管理系統(tǒng)的開發(fā)需采用SSM框架,Scrum敏捷開發(fā)模型用于管理整個(gè)開發(fā)過程。有望實(shí)現(xiàn)下列目標(biāo)內(nèi)容:①熟悉SSM框架并予以掌握,采用SSM框架完成Web系統(tǒng)的設(shè)計(jì)與開發(fā);②參與從需求分析,用戶界面設(shè)計(jì)到業(yè)務(wù)邏輯和數(shù)據(jù)存儲(chǔ)的完整系統(tǒng)開發(fā)過程;③發(fā)達(dá)專業(yè),嚴(yán)格遵守相關(guān)規(guī)范操作,合理應(yīng)用開發(fā)工具完成編程輔助性工作,糾正錯(cuò)誤并測試;④掌握正確的迭代開發(fā)方法,學(xué)習(xí)掌握將相對(duì)復(fù)雜的系統(tǒng)分解后,獲得執(zhí)行度高的子任務(wù),以迭代形式將目標(biāo)暫存;⑤團(tuán)隊(duì)成員可以互相積極合作。
校友管理系統(tǒng)中包含多種功能,涉及前臺(tái)校友信息收集、電子校友卡注冊(cè)、事件注冊(cè)等;還包括校友信息查詢、事件發(fā)布、審閱、后臺(tái)統(tǒng)計(jì)。其系統(tǒng)框架分為四層。其中包括View層,Conlroller層,Service層和DAO層。View層的接口設(shè)計(jì)采用了Bootstrap框架,是目前較流行的框架結(jié)構(gòu), Dao層則對(duì)器層進(jìn)行控制。服務(wù)層和Dao層數(shù)據(jù)經(jīng)封裝后進(jìn)行傳輸,到達(dá)Pojo對(duì)象,詳見圖2所示。
圖2 SSM框架流程
整個(gè)實(shí)現(xiàn)過程View層和Controller層聯(lián)系緊密,無論是編譯還是開發(fā)時(shí),二者共同參與。
Scrum開發(fā)時(shí),軟件需求分為一個(gè)用戶故事(用戶故事,縮寫為US),所有用戶有屬于自己的故事描述:說明為達(dá)到目的所要做的事情,也就是說,從用戶的角度描述產(chǎn)品功能的不同角色的特定需求。根據(jù)這種拆分原則,可以將校友信息管理系統(tǒng)拆分為多個(gè)用戶故事。
團(tuán)隊(duì)共同開發(fā)時(shí),尤其是Scrum開發(fā)時(shí),為提高項(xiàng)目管理與控制的有效性,需要采取下列措施:①任務(wù)進(jìn)度管理;②開發(fā)商提交和合并代碼;③版本控制。為了解決這些問題并有效提高開發(fā)過程的管理效率,需要有效使用相關(guān)工具。
在項(xiàng)目管理工具中,TFS和Jira的應(yīng)用率較高,在工作領(lǐng)域中通常會(huì)使用事務(wù)跟蹤工具,包括客戶服務(wù)、任務(wù)跟蹤、缺陷跟蹤、項(xiàng)目跟蹤、需求收集、敏捷管理等。通過上述管理工具的使用,可提高迭代計(jì)劃制定、任務(wù)跟蹤、任務(wù)分解的便利性,從而獲得更高的開發(fā)與管理效率。校友管理系統(tǒng)在開發(fā)時(shí),使用的管理工具為Jira[2]。
所有開發(fā)團(tuán)隊(duì)都無法逃脫代碼版本控制問題。這與是否選用敏捷開發(fā)或者相關(guān)項(xiàng)目管理工具沒有直接關(guān)系,版本控制并不會(huì)受這些因素的影響。該系統(tǒng)在開發(fā)時(shí),選用的版本控制工具為Git。
為了更好的對(duì)項(xiàng)目進(jìn)行管理和控制,有幾個(gè)問題必須解決,尤其是在團(tuán)隊(duì)Scrum開發(fā)下,比如①團(tuán)隊(duì)任務(wù)的進(jìn)度條;②團(tuán)隊(duì)開發(fā)人員在任務(wù)中提交的代碼;③內(nèi)容的版本。現(xiàn)在TFS和Jira這兩種工具普遍采用率高,這樣的工具可以提高開發(fā)流程的效率,例如跟蹤任務(wù),跟蹤缺陷,服務(wù)客戶和管理審批等項(xiàng)目,實(shí)時(shí)跟蹤并快速制定方案提高了開發(fā)的速度。項(xiàng)目開發(fā)中代碼很重要,代碼的版面控制更重要,雖然版面控制的工具不止一個(gè),但是現(xiàn)在運(yùn)用最多的版面控制工具還是Git,并且還使用Gitlab來搭建代碼庫。
以往項(xiàng)目開發(fā)時(shí),收到學(xué)生開發(fā)經(jīng)驗(yàn)不足的影響,其代碼編寫習(xí)慣不良,編寫標(biāo)準(zhǔn)以及管理流程混亂,所以項(xiàng)目代碼質(zhì)量通常很差且很困難。
3.5.1 維持
Scrum開發(fā)過程更加注重質(zhì)量控制。開發(fā)人員被要求使用新代碼,融合于自己的本地代碼,便可展開新的開發(fā),讓開發(fā)工作可以持續(xù)下去。任務(wù)完成后,先對(duì)自己的代碼進(jìn)行測試,確定其可以正常運(yùn)行方可向代碼庫提交,避免對(duì)團(tuán)隊(duì)其他成員的開發(fā)工作造成影響,從而影響整個(gè)系統(tǒng)的正常運(yùn)行。迭代時(shí),堅(jiān)持下列步驟完成迭代,為項(xiàng)目代碼質(zhì)量提供保障,其中包括編碼統(tǒng)一規(guī)范性,代碼樣式;靜態(tài)代碼審查;單元測試;持續(xù)集成;代碼審查和重構(gòu)(審查和重構(gòu))。
3.5.2 主要內(nèi)容
(1)任務(wù)的完成量以及完成難度。通過項(xiàng)目管理工具Jira完成迭代計(jì)劃的開發(fā)時(shí),所有任務(wù)的執(zhí)行人員以及估計(jì)時(shí)間都處于非保密狀態(tài)。
(2)信息上傳。您可以在GiIlab存儲(chǔ)庫中查看每次上傳的時(shí)間和人員。
(3)代碼質(zhì)量。在檢查代碼時(shí),通過問題數(shù)量統(tǒng)計(jì)結(jié)果結(jié)合代碼靜態(tài)分析方式來測試代碼質(zhì)量。
(4)項(xiàng)目進(jìn)度。記錄實(shí)際用時(shí)時(shí)長與預(yù)估時(shí)長進(jìn)行對(duì)比,二者之間的差異可通過Jira系統(tǒng)中的老化圖表得到反饋。
(5)軟件功能的實(shí)現(xiàn)。評(píng)估以上四項(xiàng)內(nèi)容之后,評(píng)價(jià)開發(fā)團(tuán)隊(duì)的綜合表現(xiàn)。由于整個(gè)開發(fā)過程時(shí)團(tuán)隊(duì)共同完成的,需要將其按照學(xué)生各自的任務(wù)完成情況進(jìn)行評(píng)分,評(píng)價(jià)內(nèi)容包括任務(wù)完成量、開發(fā)時(shí)長、代碼質(zhì)量。
采用敏捷開發(fā)流程后,考核涉及整個(gè)開發(fā)流程的多方面內(nèi)容:
(1)完成的任務(wù)數(shù)量和難度。在項(xiàng)目管理工具Jira里制定的迭代計(jì)劃,每個(gè)任務(wù)的執(zhí)行人和預(yù)估時(shí)間都是公開的。
(2)提交(commit)的信息。在版本庫GiIlab里面可以看到每次commit的時(shí)間、人員等信息。
(3)代碼質(zhì)量??筛鶕?jù)代碼評(píng)審時(shí)發(fā)現(xiàn)的問題數(shù)量及利用代碼靜態(tài)分析T具時(shí)的評(píng)分等作為考核參考。
(4)項(xiàng)目進(jìn)度。實(shí)際花費(fèi)時(shí)間和預(yù)估時(shí)間的差,在Jira系統(tǒng)中可通過燃盡(bum out)圖體現(xiàn)。
(5)軟件功能實(shí)現(xiàn)情況。
綜上所述,在Web應(yīng)用軟件開發(fā)過程中,采用SSM輕量級(jí)框架,實(shí)施案例教學(xué)時(shí)選用校友系統(tǒng)的案例,幫助學(xué)生更好的了解企業(yè)級(jí)架構(gòu)框架,并全面理解并申請(qǐng)多個(gè)專業(yè)課程。提高專業(yè)知識(shí)水平和系統(tǒng)開發(fā)技術(shù)。系統(tǒng)開發(fā)采用敏捷開發(fā)Scmm模型。按照用戶故事分解、任務(wù)分解、迭代計(jì)劃的流程,分解復(fù)雜程度較高的項(xiàng)目,形成不同的子項(xiàng)目后更好的迭代。