玉溪師范學院信息技術工程學院 楊 揚 韓 杰
敏捷軟件開發過程建側重于開發成員的協作開發、協作機制的建立和實際的開發步驟,是基于構想、探討和適應的基礎之上。敏捷開發的目標不是“重復”的過程,而是“可靠”的過程[1],以上特性使得如今敏捷開發頗受中小型開發團隊的青睞。
早期的軟件開發充滿著個人主觀色彩,缺乏相關規范標準,但經歷了60年代的軟件危機之后,采用軟件工程原理來組織開發軟件項目成為業內一種重要手段。但在隨后的時間里,軟件工程知識體系正被不斷發展和完善,在進入90年代以后,卡耐基梅隆大學軟件學院推出CMM[2],為軟件開發過程提出了明確的管理衡量標準。許多人認為,隨著軟件開發的各個方面中不斷增多的規則和方法,程序員能更好的開發出軟件產品。但隨著越來越多的規則和方法的加入,軟件工程變得龐大和復雜,在現行的實際環境下,軟件開發如果遵循那些詳細制定的規則和方法是非常困難的,過于復雜且難以理解的開發流程和規則,使得完全使用傳統軟件工程方法來開發軟件產品變得越來越難以實現。為了完成開發計劃,開發者往往會省略一些流程以節省時間,程序員越來越希望制定出一套更簡潔的開發流程和規則,刪除一些不必要的步驟以應對不同的開發需求,從而讓軟件開發變得更靈活、快速,而敏捷開發正是因此而誕生的。
敏捷方法是一種在面對不斷變化的需求中,采用以人為本、迭代、循序漸進的方式快速開發軟件產品的方法。為獲取這種敏捷性,在開發過程中應把軟件項目分割為多個子項目,采用必要的紀律和反饋實踐,保證每個子項目的完整性,具備集成和執行的特性,從而體現讓整個軟件項目具有靈活、適應性的設計原則和設計模式。
當前,常見的敏捷方法有極限編程(XP eXtreme Programming)、SCRUM、動態系統開發方法(DSDM Dynamic System Development Method)、水晶方法(Crystal Methodologies)、自適應軟件開發(ASD Adaptive Software Development)、特征驅動軟件開發(FDD Feature Driven Development)、開放式源代碼(Open Source)等[3]。其中XP以它特有方式,大受青睞。
1999年,Kent Beek提出了“極限編程(XP)”這一創新理念[4]。進入21世紀以來,極限編程成為最流行的敏捷方法,多使用于為中小企業開發需求處于快速變化的軟件。XP提供了一個全局的、價值驅動的開發過程視圖,體現了4個價值目標:交流(communication),簡單(simplicity),反饋(feedback)和勇氣(courage),并遵循5個原則:快速反饋、簡單假設、逐步修改、提倡更改和優質工作[5]。
本次校友網站的開發是玉溪師范學院2011年大學生科研立項的項目之一,筆者作為指導教師首先考慮到的問題就是組員均為缺少實際開發經驗的學生,若采用傳統的軟件開發方式,極有可能讓學生在冗長復雜的開發流程中失去興趣,從而影響項目進度與質量。而極限編程作為一種輕量、高效、低風險、可預測且充滿樂趣的軟件開發方式,更適合作為本次校友網站的開發模式。校友網站的開發目的,是為建立一個能讓各級校友溝通交流的平臺。因此開發出的校友網系統應貼切符合學生的應用需求,但在校學生對校友網的功能需求是一個籠統而模糊的概念,并且人數眾多、喜好各異,若要能短期獲得符合公眾真實意愿的需求分析是非常不現實的。而XP中快速反饋、逐步修改的理念正好讓組員能不斷收集完善學生需求,并修改反饋到系統中去。

圖1 需求分析流程圖

圖2 校友網基本業務流程

圖4 后臺系統管理展示

圖3 校友網系統功能模塊
按照敏捷建模的思路,設計了圖1所示的需求分析以及總結流程。通過對各個模塊的建模應用,作為下一階段的建模基礎。通過模塊間的相互舉證,確保需求獲取的準確和高效。用戶故事(Story)是極限編程(XP)中的重要方法之一,體現了交流、反饋、簡單等原則,它通過精簡、獨立、可靠的素材替代描述,提高溝通效果。
在校友網系統的需求收集過程中,為了使學生能夠更好地表達他們的需求,需求獲取分為兩個階段:第一階段采用問卷調查方式,對不同專業和年級的學生以及部分教師發放問卷,并抽取問卷中類似需求的學生進行歸類;第二階段,通過整體分析問卷,隨機抽取同一類的部分學生完成設計人員所設計的任務,期間不斷溝通,詢問用戶的想法和意圖,完善用戶需求。業務流程建模在需求獲取后,對需求信息進行分析與細化,將業務流程進行提取與整理讓其能體現的整個系統的業務處理過程,使用戶理解全局的邏輯。用戶也能確認是否存在遺漏和特殊流程,從而生成了如圖2所示校友網基本業務流程。
建模作為敏捷開發的核心,體現在這里就是關于角色的規劃。通過對基本業務流程進行收集整理后,按照特定的角色對操作整理從而對產品經行實例建模,根據圖2進行角色設計,并分析設計該系統的三類角色:系統管理員、游客、注冊校友。
游客,未進行系統注冊的校友或其他在網絡上瀏覽該系統的人員,游客可以正確瀏覽系統前臺所有模塊。
注冊校友,游客通過在校學號進行系統注冊成為注冊校友,注冊校友享有游客權限外,應具有個性化的個人空間,并且能進入后臺進行個人信息的管理。系統管理員,系統管理員是保障校友網系統運行所需要的技術支持和管理維護人員,應具有對各管理模塊的管理權限,從而對系統前臺各模塊的內容進行添加、編輯、刪除。
通過對業務流程進行整理后,按照特定的角色實施操作整理,就可對產品的進行實例建模,實例模型是利用對實例和角色的簡單描述并對產品需求進行模型化解釋,從而確定問題領域的作用。在實例建模過程后,不需給出任務操作細節,含有基本的描述即可。在校友網系統業務流程建模后可以發現,除特定的角色的實例復雜之外,其余角色用例建模都較為簡單,在后續功能模塊的設計進行上,能夠得到充分的利用,提高效率。最終我們得出了圖3所示整個校友網的功能流程圖。
在系統開發過程中考慮到今后服務器負載和開發與維護成本,以及基于XP中逐步修改、提倡更改的原則,對平臺設計采用了基于B/S應用的.NET三層架構。.NET三層架構,是在客戶端與數據庫之間加入一個“中間層”。實際項目開發過程中,整個項目分為三層架構分別包含:表示層(UI)、業務邏輯層(BLL)和數據訪問層(DAL)。
表示層(UI):負責數據展示,將數據傳遞給業務邏輯層,為用戶提供交互操作界面。
業務邏輯層(BLL):負責關鍵業務處理和數據傳遞。復雜邏輯判斷和數據庫的數據驗證都需要在此進行處理,并反饋用戶數據和相關邏輯處理。
數據訪問層(DAL):實現數據保存與讀取,負責數據庫數據訪問。主要為業務邏輯層提供數據,根據輸入數據來操作數據庫。
為了保證項目開發效率,我們在項目中建了BLL,DAL,DBUtility,Model四個類庫和一個web界面。命名為:業務邏輯層(Business Logic Layer):BLL,命名空間設置為Maticsoft.BLL數據訪問層(Data Access Layer):DAL,命名空間設置為Maticsoft.DAL數據層基類:DBUtility,命名空間設置為Maticsoft.DBUtility,此外為了保證了數據傳遞的效率,添加了一個類庫,貫穿于整個三層架構中的,命名為Model為實體類。其中封裝的每個類對應著一個實體類,通常為數據庫中的一個表,將表中字段都封裝成共有屬性。這樣三層架構的搭建完成并有著如下關系:表示層←業務邏輯層←數據訪問層,他們之間的數據傳遞是雙向的,并且通常借助實體類傳遞數據。這樣設計有幾個優點:
(1)易于項目修改和維護。
(2)易于擴展,今后如有改動只需將原有類庫添加即可。
(3)易于合并和代碼的重復使用。
圖4展示了開發完成后的后臺管理系統界面,其余界面由于篇幅關系不作展示,目前該項目處于結題階段,未對外開放。結題后可登陸玉溪師范學院網站(www.yxnu.net)進行訪問。
本文介紹了使用敏捷開發思想快速開發校友網系統的過程,確保系統開發按期完成,并通過用戶故事和原型迭代分析,完善了系統功能模塊,保證軟件質量。實踐證明:應對開發過程中學生不斷反饋引發的需求不斷變化,敏捷開發及極限編程的思想不失為一種明智選擇,由于篇幅關系,本文未能反映采用敏捷思想的軟件測試環節的過程,但作為敏捷開發中一個重要環節,不斷的測試與反饋才能促使系統的改進才能保證軟件質量。
[1]趙熙朝.敏捷軟件開發過程改進的行動框架[J].Software Engineering and Standardization.2007.
[2]RobertC.Martin.敏捷軟件開發:原則、模式與實踐[M].北京:清華大學出版社,2003.
[3]張友生.系統分析師技術指南[M].北京:清華大學出版社,2007.
[4]Kent Beck.Extreme Programming Explained[M].北京:機械工業出版社,1999.
[5]Sillitti A Succi G.Source Code Repositories and Agile Methods .Extreme programming and Agile Processes in Software Engineering:6th International Conference XP[C].2005.