基于Agile方法的軟件架構設計與實現(xiàn)_第1頁
基于Agile方法的軟件架構設計與實現(xiàn)_第2頁
基于Agile方法的軟件架構設計與實現(xiàn)_第3頁
基于Agile方法的軟件架構設計與實現(xiàn)_第4頁
基于Agile方法的軟件架構設計與實現(xiàn)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

基于Agile方法的軟件架構設計與實現(xiàn)劉建峰,王翠茹,劉偉達,張振興,韓立森(華北電力大學計算機科學與工程系,河北保定071003摘要:介紹了一種新興的Agile軟件開發(fā)方法及其特點,提出了基于Agile的軟件架構設計思路和開發(fā)方法。在此基礎上,結合事例實現(xiàn)了基于Agile方法的軟件架構設計與開發(fā),指出了在Agile方法的發(fā)展過程中需要解決的一些問題。關鍵詞:Agile方法;軟件架構;架構設計中圖法分類號:TP311文獻標識碼:A文章編號:100123695(20040820217203DesignofSoftwareArchitectureBasedonAgileMethodologyLIUJian2feng,WANGCui2ru,LIUWei2da,ZHANGZhen2xing,HANLi2sen(Dept.ofComputerScience&Engineering,NorthChinaElectricPowerUniversity,BaodingHebei071003,ChinaAbstract:Firstly,thispaperintroducesanewsoftwaredevelopmentmethodofAgileanditscharacters,andprovidesthedesignthoughtsanddevelopingmethodofSoftwareArchitecturebasedonAgile.Onthisbase,itrealizesthedevelopmentanddesignofsoftwarearchitecturebasedonAgilewithanexample.Atlast,itindicatesthattherearesomeproblemstobesolvedinthedevel2opmentofAgile.Keywords:AgileMethodology;SoftwareArchitecture;ArchitectureDesign1引言隨著計算機技術的迅速發(fā)展和經(jīng)濟的全球化,軟件開發(fā)出現(xiàn)了新的特點,即在需求和技術不斷變化的情況下實現(xiàn)快節(jié)奏的軟件開發(fā),這就對生產(chǎn)率提出了很高的要求。質(zhì)量和生產(chǎn)率是軟件工程的兩個核心目標,這兩個目標相互作用相互影響,在具體的軟件開發(fā)實施中要作具體的權衡。在此情況下,出現(xiàn)了一些新的開發(fā)方法:eXtremeProgramming(XP,SCRUM,CrystalMethodologies,FeatureDrivenDevelopment(FDD,Dy2namicSystemsDevelopmentMethodology(DSDM,AdaptiveSoftwareDevelopment(ASD,PragmaticProgramming等,統(tǒng)稱為Agile輕載(Lightweight方法,以區(qū)別于傳統(tǒng)的重載方法(Heavyweight開發(fā)方法[1]。目前,Agile方法還沒有一個明確的定義,其特點是對軟件生產(chǎn)率的高度重視,主要適用于需求模糊或快速變化下的、小型項目組的開發(fā)。有人稱,Agile方法是在保證軟件開發(fā)有成功產(chǎn)出的前提下,盡量減少開發(fā)過程中的活動和制品的方法,籠統(tǒng)地講就是“剛剛好”(JustEnough,即開發(fā)中的活動及制品既不要太多也不要太少,在滿足所需的軟件質(zhì)量要求的前提下,力求提高開發(fā)效率[1]。Agile方法的基本思想是試圖在項目范圍、成本、時間和質(zhì)量之間達成一種平衡,其關鍵是用足夠的管理可見度,足夠的靈活性和足夠快的開發(fā)速度來完成工作并找到這種平衡。2Agile方法的特點(1較低的管理成本和高質(zhì)量的軟件產(chǎn)品[2]。軟件開發(fā)存在兩個極端:一個是沒有任何的管理成本,所有的工作都是為了軟件的產(chǎn)出,但是這種方式卻往往導致軟件開發(fā)過程的混沌,產(chǎn)品的低質(zhì)量;另一個是大量管理活動的加入,評審、變更管理,缺陷跟蹤,雖然管理活動的加入能夠在一定程度上提高開發(fā)過程的有序性,但是成本卻因此提高。因此,Agile方法試圖尋找一個平衡點,用低成本的管理活動帶來最大的產(chǎn)出,即軟件的高質(zhì)量。(2Agile方法尊重人性,強調(diào)效率[2]。軟件開發(fā)可以說是一種腦力的投入,如果不能保證開發(fā)人員的自愿投入,產(chǎn)品就肯定要打折扣。事實多次的證明,一個愿意投入的開發(fā)人員和一個不愿意投入的開發(fā)人員效率相差在三倍以上,對組織的貢獻更是在十倍以上。(3溝通和反饋是一切的基礎[2]。溝通在軟件開發(fā)中是非常重要的,而即時的反饋是擁抱變化的前提條件。3基于Agile方法的軟件架構設計架構設計是一種權衡(Trade2off設計。一個問題有多種解決方案,要確定唯一的架構設計解決方案,就意味著要在不同的方案之間作出一個權衡。如果希望軟件簡單明了,就會增加設計的復雜度。沒有一個軟件能夠滿足所有的要求,因為這些要求之間帶有天生的互斥性。而評價架構設計的好壞依據(jù),只能是根據(jù)不同要求的輕重緩急,在其間作出權衡的合理性。311Agile軟件架構設計的需求軟件開發(fā)工程分為三層:最底層是軟件過程,上一層是軟件方法,最高層是CASE工具[3]。對于軟件項目的開發(fā),在軟件過程中從需求到最后的維護都充滿了各種各樣的方法。需求過程是軟件過程的一個很重要的部分,因此,這里把需求分析的這個過程稱為需求工程,其過程如圖1所示。?712?第8期劉建峰等:基于Agile方法的軟件架構設計與實現(xiàn)收稿日期:2003205216;修返日期:2004203201圖1需求分析的過程架構設計就是鋪設軟件的主管道,一般來說,功能需求決定業(yè)務架構、非功能需求決定技術架構,變化案例決定架構的范圍[4]。開發(fā)軟件產(chǎn)品時,需要根據(jù)業(yè)務上的需求來設計業(yè)務架構,以使得未來的軟件能夠滿足客戶的需要。非功能需求定義了一些性能、效率上的一些約束、規(guī)則。變化案例是對未來可能發(fā)生的變化的一個估計,結合功能需求和非功能需求,就可以確定一個需求的范圍,進而確定一個架構的范圍。例如,城市中自來水管的架設是一項復雜的工程。為了滿足每家每戶的需要,應將自來水管系統(tǒng)組成一個網(wǎng)絡結構。在這樣一個復雜的網(wǎng)絡中,如何完成鋪設的任務呢?一般的做法是,先找出問題的根源,也就是水的源頭。從水源鋪設一條管道通至城市,然后根據(jù)城市的區(qū)域劃分,設計出主管道,剩下的就是使用的問題了,每家每戶的管道最終都是連到主管道上的。因此,雖然自來水網(wǎng)絡龐大復雜,但是真正的主管道的架設卻非常簡單。對應到相應的軟件設計,城市的各因素就是軟件中的各種需求:功能需求、非功能需求、變化案例等。架構就是來自于需求,有什么樣的需求就有什么樣的架構。312Agile軟件架構設計的模式針對需求的特點,采用相應的模式來設計架構。通常認為模式都是用在軟件開發(fā)、架構設計上的,但這只是模式的一個方面。模式的定義描述了一個特定環(huán)境的解決方法,這個特定環(huán)境往往重復出現(xiàn),制定出一個較好的解決方法有利于將來能有效地解決類似的問題。所以,完全可以把模式的思想用在其他方面,而目前最佳的運用就是過程模式和組織模式,在這里僅討論過程模式。Agile架構設計的過程模式有四種:源自需求、團隊設計、簡單設計、迭代設計,如圖2所示。圖2Agile架構設計過程模式源自需求提供了架構設計的基礎,在軟件過程中,架構設計是承接于需求分析的。如果沒有良好的需求分析活動的支持,再好的架構設計也沒有用,因此把這一模式放在首位,作為架構設計的目標。有了確定的目標,還需有組織的保證,這也是第二種模式———團隊設計。Agile方法提倡優(yōu)秀的溝通,因此團隊設計是必要且有效的。而團隊設計的另一個意圖,是保證架構設計的下游活動得以順利地進行,如詳細設計、編碼、測試等。由于開發(fā)團隊中的人大都加入了架構設計,因此最大程度地減小了不同活動間的信息損耗和溝通效率低下的問題。在設計中,設計信息轉換為編碼信息需要一定的時間,這個時間包括設計的組織時間、設計被理解的時間。如果設計比較復雜,或者說設計的文檔比較復雜,編碼人員花在理解上的時間就會大大增加。因此,權衡后的結果是,相對于詳細的設計說明書而言,簡單的設計說明書再配合一定程度的面對面溝通能夠起到更好的效果。“簡單要比復雜有效”,這就是簡單設計模式的基本思路。有了以上的思路之后,還有一個現(xiàn)實的問題:需求的變化將會導致設計的不穩(wěn)定,而需求的復雜性又會導致簡單架構設計的困難。為了解決這個問題而引入了迭代的方法,即將問題分割為多個子問題(把一個復雜的問題分解為多個較簡單的子問題是計算機領域最常見的處理方法。這樣,問題的范圍和難度都大大降低了,而更關鍵的是,由于對用戶需求理解不充分或用戶表達需求有錯導致的設計風險被降到最低點,從而使架構設計逐步達到最佳。313從需求到架構設計該架構設計階段的主要工作是把這些需求階段的中間產(chǎn)物轉換為架構設計階段的中間產(chǎn)物。其架構設計就是要完成兩項工作:分析和設計。分析是分析需求,設計則是設計軟件的大致結構[4]。在Agile方法中,需求是迭代進行的,也就是說一點一點地做需求,這種做法在那些需求變化快的項目中尤其適用。如果采用的流程是一種迭代式的流程,那么將會出現(xiàn)如何對待上一次迭代的中間產(chǎn)物的問題。如果每一次迭代都需要修改已存在的中間產(chǎn)物,那么這種維護的成本未免過大。因此,Agile方法的基本做法是扔掉那些已經(jīng)沒有用處的中間產(chǎn)物。中間產(chǎn)物生成的目的都是為了生成最終的程序,對于這些已經(jīng)完成作用的模型,沒有必要付出額外的維護成本。隨著項目的進行,需求還可能細化、可能變更,原先的架構肯定會有不足或錯誤的地方。因此,在設計中應采用迭代設計,迭代設計是一種軟件開發(fā)的生命周期。在簡單設計模式中,有人從來不進行架構的設計,采用的方式是一開始就進入代碼的編寫,然后用Refactoring來改進代碼的質(zhì)量,解決未經(jīng)設計導致的代碼質(zhì)量低下的功能。從某種程度上來說,它強調(diào)了代碼對軟件的重要性,并通過一些技巧(如Refactoring來解決缺乏設計的問題,這對小型軟件產(chǎn)品的開發(fā)是適用的。但是對于大中型軟件產(chǎn)品,在軟件設計初期,投入精力進行架構的設計是很有必要的,因為這個架構是后續(xù)設計、編碼過程中依賴的基礎,對提高軟件的質(zhì)量、可靠性以及可維護性意義重大。在架構模式的底層中,架構愿景的建立能夠提供軟件全局視圖:它定義了各個部分的責任和之間的關系,而且還定義了軟件設計需要滿足的原則。而這個架構愿景的設計要滿足源自需求模式的,即部分的劃分和部分的設計都是根據(jù)需求而進行的。同時,架構愿景要能夠滿足架構的其他各種特點,如簡單、可擴展性、抽象性。架構愿景共分為三層:軟件全局級、子模塊或子問題級、代碼級[5]。①軟件全局級的架構愿景隨著實現(xiàn)平臺和開發(fā)人員的不同而不同;②子模塊或子問題級的架構愿景比較明確,如界面的設計、領域模型的設計、持久層的設計等;③代碼級的架構愿景已經(jīng)具體設計了,它一般用類圖、接口等來表示。設計細分到這個粒度,主要工作在于問題如何分解、精化和合并。分解主要是從兩個維度來考慮:一個是問題大小維,一個是時間長短維。也即把問題分給不同的開發(fā)人員進行精化研究,再把它們的解決方案組合起來,從而實現(xiàn)代碼質(zhì)量的改進,使架構設計趨于穩(wěn)定并能逐步達到重用、透明、延展、簡明、高效和安全,同時還需要對代碼進行可靠性和安全性的測試,以確保架構的設計成功。4設計與實現(xiàn)傳統(tǒng)的MIS系統(tǒng)的開發(fā)方法有:生命周期法、快速原型法和面向?qū)ο蠓ǖ萚6]。以上方法各有其優(yōu)缺點:“生命周期”法開發(fā)周期長,所使用的工具落后,缺乏靈活性和適應性;快速原型法是一種有利于實現(xiàn)逐步投資、增量開發(fā)模式且投資少、風險小、周期短、見效快、成本低的信息系統(tǒng)開發(fā)方法,但其系統(tǒng)開發(fā)過程中的管理手段不夠規(guī)范;面向?qū)ο蠓ㄒ詫嶓w對應著的對象為基礎,把信息和操作封裝到對象里去,利用特定的軟件工具直接完成從對象客體的描述到軟件結構之間的轉換,雖然具有明顯的優(yōu)越性,但因其依賴于特定工具的支持,又不能不令許多系統(tǒng)開發(fā)者望而卻步。因此,基于上述對使用Agile方法來開發(fā)軟件系統(tǒng)架構設計的討論,在開發(fā)某企業(yè)車輛綜合管理系統(tǒng)時,就采用了這種架構設計的模式和思路來開發(fā)設計系統(tǒng)的架構。從需求上來看,這個車輛綜合管理系統(tǒng)有如下特點:它不是一個單獨的系統(tǒng),需要和外部的其他系統(tǒng)進行交互,如維修廠管理系統(tǒng)、材料倉庫管理系統(tǒng)、網(wǎng)上查詢系統(tǒng)等。車輛調(diào)度、油料管理(油耗統(tǒng)計計算、費用管理(費用的計算等需求比較復雜。因此,架構設計首先是從系統(tǒng)的全局來考慮。通過需求的調(diào)研,系統(tǒng)的交互分為三種:①與企業(yè)外部的系統(tǒng)交互,此系統(tǒng)需要和維修廠管理系統(tǒng)、材料倉庫管理系統(tǒng)等連接;②企業(yè)內(nèi)部系統(tǒng)之間的交互,能夠為網(wǎng)上查詢系統(tǒng)提供數(shù)據(jù);③此系統(tǒng)內(nèi)模塊之間的交互,車輛管理、交通安全、車輛維修、計劃合同、油料管理、費用管理、人員機構、工資獎金財務等模塊之間的數(shù)據(jù)交互。考慮到該系統(tǒng)的結構比較復雜,因此在系統(tǒng)結構的處理上,采用了層模式作為系統(tǒng)的基本結構。此外,在每層定義了幾個子模塊來處理特定的問題,這樣就可以將復雜的功能有序地組織起來。限于篇幅,具體的實現(xiàn)策略本文不再贅述,但是架構策略的制定是以需求為基礎的,把這部分的需求歸納為技術架構或平臺架構。其架構的基本框架如圖3所示。圖3車輛綜合管理系統(tǒng)架構的基本框架經(jīng)上述的分析,對此系統(tǒng)的架構設計雖然有了一定的認識,但一個架構還應該包括系統(tǒng)的各個基本部分。因此,還要考慮各個模塊的處理、報表、財務處理等環(huán)節(jié),這將在后續(xù)的開發(fā)過程中把這個架構逐步完善起來,此車輛綜合管理系統(tǒng)的開發(fā)主界面如圖4所示。采用這種架構設計技術進行軟件開發(fā),有如下特點:領域內(nèi)的軟件結構一致性好;便于建立更加開放的系統(tǒng);重用的代碼大大增加,軟件生產(chǎn)效率和質(zhì)量也同時得到了提高;軟件設計人員專注于對領域的了解,使需求分析更充分;可以存儲經(jīng)驗,讓經(jīng)驗豐富的開發(fā)設計人員不必限于低層編程;有利于在一個項目內(nèi)多人協(xié)同工作。圖4車輛綜合管理系統(tǒng)的主界面5結束語經(jīng)濟和科學技術的迅猛發(fā)展,對軟件開發(fā)來說意味著需求的迅速變化。因此,研究并實踐Agile方法對軟件開發(fā)意義重大。目前,基于Agile方法的一些設計思想已滲透到了部分行業(yè)和領域,這無疑給Agile方法的發(fā)展注入了新的活力。但是,Agile方法也面臨一些亟需解決的問題:如對過程管理“剛剛好”的尺度在實踐中不易把握,需要進一步研究;另外,Agile方法只局限于小型開發(fā)組織,此方法能否應用于大型組織,仍有待研究;由于目前大多數(shù)軟件開發(fā)組織采用的是傳統(tǒng)方法,可否通過Agile方法的實施來幫助整個企業(yè)提高能力成熟度,也有待研究和實踐;Agile方法特別強調(diào)軟件開發(fā)中相關人員間信息的交流,這種信息的交流必然要受到不同人文化差異的制約??傊?Agile方法的設計思想在今后對于軟件的快速開發(fā)具有十分重要的意義。參考文獻:[1]錢樂秋,張敬周,朱三元.Agile方法研究綜述[EB/OL]./expforum/yjzs/yjzs.htm,2002201.[2]胡健.新方法學[EB/OL]./forum/showthread.php?threadid=2181,2002207230.[3]PressmanRS.SoftwareEngineering:APractitioner’sApproach[M].NewYork:Mc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論