国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于敏捷技術(shù)的敏捷開發(fā)辨析與應(yīng)用研究オ

2015-05-30 10:48:04戴洪蕾王建國
中國市場 2015年21期

戴洪蕾 王建國

[摘要]高效便捷的輕量型軟件開發(fā)模式是管理信息系統(tǒng)開發(fā)的新方法和新思路,作為敏捷開發(fā)模式基石的面向?qū)ο蠹夹g(shù)為這一方法提供了可行性。簡單三層將系統(tǒng)邏輯分為三層保證了系統(tǒng)的安全性和擴展性,配合抽象工廠模式和Net反射機制,以及時下新興的Web開發(fā)技術(shù)ASPNet MVC的優(yōu)勢,使得敏捷開發(fā)模式在實施中變得更加高效。本文以敏捷開發(fā)模式為基礎(chǔ),研究如何將簡單三層、抽象工廠模式和ASPNet MVC等技術(shù)相結(jié)合,從敏捷技術(shù)角度完善敏捷開發(fā)模式。

[關(guān)鍵詞]敏捷開發(fā);抽象工廠模式;ASPNet MVC

[DOI]1013939/jcnkizgsc201521.053

伴隨著世界經(jīng)濟和技術(shù)的大力發(fā)展,計算機技術(shù)得到了更加廣泛的應(yīng)用,越來越多的工作需要依賴計算機的智能和高效。新的軟件的出現(xiàn)都伴隨著新的軟件開發(fā)模式的出現(xiàn),新的軟件開發(fā)模式出現(xiàn)的原因就是解決在固定模式中出現(xiàn)多變的需求。而傳統(tǒng)的開發(fā)模式存在著面對需求變化困難,維護和擴展性差導(dǎo)致系統(tǒng)的二次開發(fā)成本較高,敏捷開發(fā)模式應(yīng)運而生。因為人們的需求各種各樣,為了使人們的需求得到解決,軟件技術(shù)也在進行不斷更新完善,所以敏捷技術(shù)的產(chǎn)生也為敏捷開發(fā)模式的實施提供了有效的保證和可行性。

1敏捷開發(fā)

敏捷開發(fā)是由15個科學(xué)家共同提出來的,其中包括來自思特沃克公司(Thought Works)著名的軟件大師馬丁·福勒(Martin Fowler)[1]。敏捷開發(fā)即一種全新而快捷的軟件開發(fā)模式,是把人放在第一位,以滿足用戶不同需求為導(dǎo)向的開發(fā)模式[2]。應(yīng)用敏捷開發(fā)的方法,要求團隊成員具有很強的主動性,滿足了高內(nèi)聚、松耦合的原則把項目分成了若干個小組。較少的文檔準(zhǔn)備和分組的新方式縮短了軟件開發(fā)周期,開發(fā)過程中的多次迭代和測試提高了軟件的質(zhì)量[3]。

2敏捷技術(shù)的重要性

從目前敏捷開發(fā)的研究現(xiàn)狀中,我們可以看到在任何一個軟件的開發(fā)過程中,任何的一種模式都不是能解決所有問題的萬能鑰匙,所以在軟件開發(fā)過程中應(yīng)全面考慮所有的問題,不管是開發(fā)方法、設(shè)計模式還是設(shè)計架構(gòu)都是必須考慮的重要因素,而就目前敏捷開發(fā)的應(yīng)用研究來看,敏捷開發(fā)的過程,對技術(shù)并沒有明確的指導(dǎo)思想,這也正是多數(shù)項目在應(yīng)用敏捷開發(fā)過程中失敗的重要因素。

從根本來說,敏捷開發(fā)不僅是一個軟件開發(fā)過程的方法論,準(zhǔn)確地說它更是一種思想,但這種方法是建立在敏捷技術(shù)上的,敏捷技術(shù)為這一方法的實施提供了可行性,只有敏捷的技術(shù)才能支撐敏捷開發(fā)的實施[4]。真正的敏捷開發(fā)不只是管理層次的敏捷、項目參與人員的敏捷,架構(gòu)的設(shè)計也應(yīng)該是敏捷的,編程思想也應(yīng)該是敏捷的,這才是實至名歸的敏捷開發(fā)。在項目真正進行過程中,為了能更好地發(fā)揮敏捷開發(fā)的優(yōu)勢應(yīng)做到管理與技術(shù)同步規(guī)范。管理與技術(shù)是不可分割的,二者相輔相成,技術(shù)的敏捷使得敏捷開發(fā)方法的實施具有一定可操作性,是敏捷開發(fā)方法的基石,如果沒有相關(guān)技術(shù)的支持,敏捷開發(fā)是不能完全發(fā)揮效應(yīng)的甚至是不可行的。只有做到管理與技術(shù)同步敏捷,在管理的過程中得到相應(yīng)技術(shù)的支撐,敏捷開發(fā)方法才能發(fā)揮真正的敏捷,才是真正的敏捷思想。

2.1簡單三層

敏捷開發(fā)方法要求在敏捷開發(fā)實施過程中,如何保證開發(fā)團隊的每個開發(fā)人員能夠獨立地進行系統(tǒng)模塊開發(fā)是敏捷開發(fā)能否成功的關(guān)鍵因素。而以往的傳統(tǒng)開發(fā)技術(shù),并沒有將系統(tǒng)模塊化,整個系統(tǒng)的耦合性較高,依賴性較強,使用傳統(tǒng)的開發(fā)技術(shù)并不能實施敏捷開發(fā)方法,使得敏捷開發(fā)提倡的系統(tǒng)各模塊之間并行開發(fā)成為空想。簡單三層卻為這一要求提供了可行性。

三層架構(gòu)由底層至上層分為數(shù)據(jù)訪問層(Data Access Layer,DAL),業(yè)務(wù)邏輯層(Business Logic Layer,BLL),用戶界面(User Interface,UI)[5]。簡單三層將界面的呈現(xiàn)、業(yè)務(wù)邏輯的處理以及訪問數(shù)據(jù)庫很好的分離開來,因此在系統(tǒng)實現(xiàn)編碼過程中不僅可以實現(xiàn)系統(tǒng)各模塊的并行開發(fā),而且不要求全能型的開發(fā)人員,只需精通其中一層即可參與到項目當(dāng)中,在保證工作高效且代碼質(zhì)量的同時節(jié)約了開發(fā)成本[6]。在測試方面,三層也可同步進行,可以解決敏捷開發(fā)在測試環(huán)節(jié)中給項目帶來的成本偏高問題,在支持敏捷開發(fā)實施的同時,又保證了整個系統(tǒng)的安全,降低了系統(tǒng)的復(fù)雜性,無形之中也提高了項目參與人員的積極性,使得敏捷開發(fā)能夠順利進行。

2.2抽象工廠模式

敏捷開發(fā)提倡的是擁抱變化,要求在開發(fā)過程中進行多次的迭代,項目團隊進行周期性的交流溝通,隨時應(yīng)對客戶的需求變化,勇敢地面對變化,對于用戶的反饋,程序員要有勇氣對已經(jīng)編寫好的代碼進行適當(dāng)?shù)男薷腫7]。敏捷開發(fā)里所說的勇于接受變化并不是簡單的要求項目團隊在客戶提出新的要求時,就將之前的系統(tǒng)全部放棄,從頭再來,這并不是真正意義上的敏捷開發(fā)。但是面對這樣的需求敏捷開發(fā)只是單純的提出了要求,并沒有對此有進一步的說明和指導(dǎo),而為了滿足更換數(shù)據(jù)庫的需求重新編譯數(shù)據(jù)操作類就相當(dāng)于項目從頭開始,又不是最好的解決辦法。如何在面對客戶需求的時候,盡可能地減少代碼的修改量,代碼的復(fù)用性是一個關(guān)鍵因素。想要提高代碼的復(fù)用性,就想到了設(shè)計模式,在當(dāng)前的設(shè)計模式中,抽象工廠模式很好地解決了這一問題。

作為創(chuàng)建型模式的抽象工廠模式是23種設(shè)計模式中的一種,所謂創(chuàng)建型模式就是不需要自己實例化對象,而是由創(chuàng)建型模式來代替新操作[8]。抽象工廠模式指的是提供一個創(chuàng)建一系列相關(guān)或者相互依賴對象的接口,而不需要指定它具體的類[9]。該類設(shè)計模式是專門針對需求的變化來達到提高代碼復(fù)用性目標(biāo)的一種模式,它就相當(dāng)于一個實實在在的工廠,只不過與我們現(xiàn)實生活中的工廠不同的是現(xiàn)實生活中的工廠是用來生產(chǎn)產(chǎn)品,但是這里的工廠是用來管理變化的。

使用抽象工廠模式將可變的進行封裝,以接口的形式呈現(xiàn),在三層中應(yīng)用抽象工廠模式,在不需要修改以前代碼的前提下輕松地解決了更換數(shù)據(jù)庫類型這一需求,并且在系統(tǒng)開發(fā)完成之后甚至是使用過程中,都可輕松地更換數(shù)據(jù)庫類型,有效地解決了由于需求變化導(dǎo)致開發(fā)周期延長,并且為系統(tǒng)的后期維護降低了成本。

2.3ASPNet MVC

客戶的需求貫穿于整個項目中,雖然敏捷開發(fā)中采取先測試再編碼的方式有效地應(yīng)對了客戶需求的變化,但是并不排除客戶對測試滿意,開發(fā)完成之后又提出了新要求的可能性存在。對于大多數(shù)客戶來說需求的變化主要體現(xiàn)在系統(tǒng)功能和界面展示方面,針對這一可能性傳統(tǒng)的敏捷開發(fā)并沒有很好的解決辦法,只能重新編寫,重新測試,但是這一問題是周而復(fù)始的,這樣的做法治標(biāo)不治本。應(yīng)對這一狀況就應(yīng)考慮到從技術(shù)方面入手。

在通常情況下,系統(tǒng)的頁面開發(fā)都是用網(wǎng)頁表格(Web Form)進行,雖然網(wǎng)頁表格(Web Form)操作簡單,可以直接拖控件對頁面完成布局工作,但是它的頁面展示與后臺邏輯代碼的耦合度較高,在遇到客戶對頁面布局要求變更的時候,不僅要進行頁面布局的修改,還要將相應(yīng)的頁面邏輯進行修改,這無疑多做了很多沒有必要的工作,這時ASPNet MVC框架成了解決這一問題的第一選擇。

ASPNet MVC是微軟在2009年對外公開發(fā)布的第一個開源的表示層框架[10]。ASPNet MVC模式是一種表現(xiàn)模式,它可以將表現(xiàn)層分成模型(Model)、控制器(Controller)和視圖(View)三個組件,有效地分離了頁面展示與用戶界面(UI)邏輯代碼,所以ASPNet MVC是一個更加傾向于用戶界面層(UI)的表現(xiàn)層框架,是網(wǎng)頁表格(Web Form)的另一種選擇[11]。在面對客戶對頁面展示需求變化的時候,只需更改相應(yīng)頁面的展示效果即可。

3敏捷技術(shù)應(yīng)用實例

3.1項目簡介

本校的博士研究生招生工作在2013年之前均是通過工作人員手工的錄入以及核對完成的,因此,本校博士招生工作存在效率低下,管理無序,數(shù)據(jù)安全性較差等諸多問題,實施辦公自動化對于我校的博士招生工作具有重大意義。本項目將采用本文所提及的融合敏捷技術(shù)的敏捷開發(fā)方法對系統(tǒng)進行開發(fā)。

3.2敏捷技術(shù)在開發(fā)中的具體應(yīng)用與實現(xiàn)

根據(jù)上述分析,博士研究生招生系統(tǒng)的整體架構(gòu)見下圖。

系統(tǒng)整體架構(gòu)

從上圖中我們可以看到,本系統(tǒng)結(jié)合了簡單三層架構(gòu)、抽象工廠設(shè)計模式和ASPNet MVC框架三大技術(shù),本系統(tǒng)使用2011年發(fā)布的ASPNet MVC3.0版本[12]。本論文主要從這三個技術(shù)的應(yīng)用上進行詳細(xì)論述,來論證敏捷技術(shù)對敏捷開發(fā)的重要性。

3.2.1抽象工廠模式在數(shù)據(jù)訪問層的應(yīng)用

對于本系統(tǒng)的開發(fā)主要是針對學(xué)生各種信息的管理與操作,并且錄取的學(xué)生信息數(shù)據(jù)庫要與我?,F(xiàn)有的各種學(xué)生工作系統(tǒng)進行銜接,而所用數(shù)據(jù)庫并不相同,對現(xiàn)在已經(jīng)使用的系統(tǒng)進行修改并不是一個好辦法,只有針對目前著手開發(fā)的博士研究生招生系統(tǒng)進行完善,來迎合不同數(shù)據(jù)庫的需求。解決這一需求的辦法就是抽象工廠模式。本文以考生登錄功能為例進行技術(shù)應(yīng)用說明。

創(chuàng)建抽象工廠類,利用Net的反射機制獲取數(shù)據(jù)訪問層的程序集和命名空間的名稱,通過數(shù)據(jù)訪問接口層來創(chuàng)建user_infor數(shù)據(jù)表的實體類,并采用緩存技術(shù)來提高系統(tǒng)性能,設(shè)置當(dāng)前應(yīng)用程序指定CacheKey的Cache值的核心代碼如下:

SystemWebCachingCache objCache=HttpRuntimeCache;

由于數(shù)據(jù)訪問層融合了抽象工廠設(shè)計模式的思想,所以業(yè)務(wù)邏輯層調(diào)用數(shù)據(jù)訪問層是通過數(shù)據(jù)訪問接口層創(chuàng)建相對應(yīng)的數(shù)據(jù)工廠實例,并沒有指定具體的數(shù)據(jù)操作類,因此,在面對更改數(shù)據(jù)庫類型時,只需修改配置文件的程序集和命名空間的Value值即可,配置文件代碼如下:

由此可見,應(yīng)用了抽象工廠模式和反射機制加上配置文件的使用,在不需要修改系統(tǒng)代碼的前提下輕松實現(xiàn)了異庫移植操作,并且為本項目實施敏捷開發(fā)時適應(yīng)了需求且縮短了開發(fā)周期。

3.2.2ASPNet MVC框架的應(yīng)用

在ASPNet MVC中UI邏輯在Controller組件中進行編譯,Controller負(fù)責(zé)將數(shù)據(jù)從Model取出傳遞給View[13]。在本系統(tǒng)里,ASPNet MVC代替網(wǎng)頁表格(Web Form)作為三層中的用戶界面層(UI),所以在界面展示編譯中,ASPNet MVC框架中的控制器(Controller)組件則負(fù)責(zé)與業(yè)務(wù)邏輯層進行對話,從業(yè)務(wù)邏輯層調(diào)用校驗用戶的方法來獲取數(shù)據(jù)庫中的考生登陸信息。判斷登陸是否成功的部分代碼如下:

IBLLIuser_inforService user_inforService=new user_inforBLL();

public ActionResult ProcessLogin()

{

string loginid=Request[“LoginCode”];

string password=Request[“LoginPwd”];

user_infor model=user_inforService.Getuserinforbyloginid(loginid,password);

if(model[FY=]null)

{

return Content(“用戶名不存在,請確認(rèn)是否注冊!若沒有注冊請先進行注冊”);

}

if(modelpwd !=CommonHelperGetMd5stringFromString(password))

{

return Content(“密碼錯誤”);

}

Session[“LoginUser”]=model;

return Content(“ok”);//登陸成功,前臺調(diào)用Ajax進行頁面跳轉(zhuǎn)

}

前臺的頁面布局交由視圖(View)組件負(fù)責(zé),由于它與控制器(Controller)組件的低耦合性,視圖(View)的頁面展示只需單純的Html標(biāo)簽即可實現(xiàn),并且不需要將標(biāo)簽ID傳到后臺,實現(xiàn)了UI展示與UI邏輯的徹底分離。登錄頁面的視圖(View)核心代碼如下所示:

身份證號:

密碼:

?;

從以上代碼我們可以看出,視圖(View)頁面都是由Html標(biāo)簽實現(xiàn),所以在更換頁面布局的時候就不需要考慮前臺標(biāo)簽與后臺邏輯的綁定問題,不需要修改用戶界面(UI)邏輯代碼。

4結(jié)論

敏捷開發(fā)是一種以需求為導(dǎo)向的驅(qū)動開發(fā)方法,需求的變化會給整個系統(tǒng)帶來副作用,所以需要自動化去支持變化,在應(yīng)對變化的同時保證敏捷開發(fā)方法在項目實施的成功率和系統(tǒng)質(zhì)量,縮短開發(fā)周期,解決敏捷開發(fā)在管理上不能解決的問題。結(jié)合了簡單三層、抽象工廠模式和ASPNet MVC開源框架的敏捷開發(fā)使得開發(fā)團隊在多變的環(huán)境下按時按質(zhì)按量地完成了本校博士研究生招生系統(tǒng)的開發(fā)。由此可見,結(jié)合了敏捷技術(shù)的敏捷開發(fā)將敏捷開發(fā)方法發(fā)揮到極致甚至在敏捷開發(fā)方法的基礎(chǔ)上進一步縮短項目周期,提高軟件質(zhì)量和軟件的維護性、擴展性。

參考文獻:

[1]James Shore,Shane WardenThe Art of Agile Development[M].Sebastopol:OReilly Media,2009

[2]High Smith JAgile Software Development Ecosystems[M].Beijing:China Machine Press,2004.

[3]王世安基于敏捷開發(fā)的構(gòu)件化軟件可靠性研究[J].微電子學(xué)與計算機,2011(3):119-122.

[4]陳楠,陳文培敏捷開發(fā)中相關(guān)技術(shù)的應(yīng)用[J].計算機應(yīng)用與軟件,2011(4):202-204.

[5]CThilmanyNET Patterns:Architecture,Design,and Process[M].Boston:Addison-Wesley Professional,2003.

[6]Eric JBraudeNEW Software Design:From Programming to Architecture[M].Beijing:Publishing House of Electronics Industry,2005:23-26

[7]Alistair CockburnAgile Software Development[M].Boston:Addison Wesley2001:30-45

[8]Markus Aleksy,Axel KorthausSupplementing the Well-Known Factory Pattern for Distributed Object Oriented Systems[C].Symposium on Distributed Computing and Applications for Business Engineering and Science,2002(12):105-108

[9]武光明設(shè)計模式在全球化軟件開發(fā)中的應(yīng)用[J].計算機應(yīng)用與軟件,2014(1):9-17

[10]Sanderson SPro ASPNET MVC Framework[M].Berkeley:Apress,2009

[11]Connery R,Hansel man S,Hack P,et alProfessional ASPNET MVC 1.0[M].Hoboken:Wiley Publishing,2009

[12]Steven Sanderson,Adam FreemanPro ASPNET MVC 3 Framework[M].Berkeley:Apress,2011.

[13]周文紅基于ASPNET MVC框架的Web應(yīng)用開發(fā)[J].計算機與現(xiàn)代化,2013(10):197-199

[作者簡介]戴洪蕾,碩士研究生,主持內(nèi)蒙古自治區(qū)科研創(chuàng)新項目“基于工廠模式的敏捷開發(fā)的辨析與應(yīng)用研究”(S20141012814);王建國,副教授。研究方向:信息管理與信息系統(tǒng)、項目管理。

涞水县| 泸西县| 公安县| 安达市| 南宫市| 普格县| 南昌县| 德昌县| 来安县| 黄大仙区| 桐柏县| 定结县| 如皋市| 什邡市| 秦皇岛市| 类乌齐县| 磐石市| 新民市| 瑞安市| 连城县| 巩义市| 南平市| 云和县| 康乐县| 丰顺县| 汶上县| 额济纳旗| 安西县| 邹城市| 土默特右旗| 济源市| 宣武区| 临邑县| 精河县| 稷山县| 郯城县| 广安市| 吴堡县| 宁强县| 凤庆县| 东兴市|