王四云,任洪敏
(上海海事大學信息工程學院,上海201306)
基于敏捷方法的軟件任務管理系統設計與實現
王四云,任洪敏
(上海海事大學信息工程學院,上海201306)
闡述敏捷軟件開發方法及核心思想,采用迭代開發,增量產生成果持續的交付,保證每次發布和迭代交付的產品均是可運行的代碼。詳細介紹任務管理系統的總體設計與功能分析,并對任務進度的時間管控方式進行分析研究。軟件任務管理系統的實現,對中小型軟件開發公司產品開發任務進行嚴格管控,保證項目按時完成并達到預期目標。
敏捷方法;迭代開發;任務管理
隨著計算機技術的快速發展與互聯網時代的來臨,人們已經進入了信息化的時代,或者稱為數字化時代。信息化的發展和日趨激烈的商業競爭,使軟件開發公司在產品開發過程中不再滿足于采用傳統的方式進行任務管理,因此,開發一款輕量級、敏捷、高效的任務管理系統是必然的。同時國內很多中小型軟件開發公司在產品開發過程中面臨開發時間緊迫、任務管理混亂、需求不斷變化的困難。在項目開發過程中通常會面臨如下問題:
(1)用戶即使很明確自己想要的功能,卻不能把項目具體需求明確描述出來,需求在項目研發過程中時常變更。
(2)在項目開發過程中,如果技術人員突然離職,新招聘的開發人員不清楚產品的開發進度及任務的需求等,這常常會影響到項目按時完工的進程。
(3)由于軟件開發是一個團隊協作的項目,如果一個開發團隊不能即時了解項目的進展情況,信息封閉,會嚴重影響項目經理對產品任務的有效管理。
與傳統的軟件開發方法不同,敏捷軟件開發方法強調在開發過程中對未來可能出現的不確定性作出全面反應,它也是一種輕量級的開發方法。傳統的軟件開發方法針對項目制定長時間跨度的詳細計劃并嚴格依照計劃進行工作,而敏捷型軟件開發方法善于迎接需求變更,使軟件項目開發過程隨需求的變更而改變。敏捷方法的核心價值概括如下:個體和交互勝過過程和工具;可工作的軟件勝過面面俱到的文檔;與客戶協作勝于合作談判;適應變化勝于按部就班。敏捷方法(Agile)是一種迭代-增量交付相結合的項目開發方法,其核心是通過不斷交付可運行的產品來滿足客戶的需求。
迭代-增量方法將傳統的開發周期分割成若干個循環往復的迭代周期,保證軟件以進化的方式逐漸推進。迭代開發實施的是重復與半并行化的開發活動,作為一個經驗方法來說,迭代周期越短越好,迭代開發優點如下:在項目研發初期就可減少或避免高風險的發生;隨著迭代次數的增加,對計劃與評估也更加有信心;根據迭代的結果可以決定完成日期的趨勢。采用迭代-增量開發,能立即帶來不可估量的效益,圖1所示是局部迭代敏捷過程管理框架。

圖1 局部迭代敏捷過程管理框架
本系統以中小型軟件開發公司針對軟件開發過程的任務管理為研究內容,構建了在B/S結構下的任務管理系統,系統針對中小型軟件開發公司的業務需求與項目開發過程中任務進度管理的問題進行分析設計,通過對任務時間進行嚴格的管控,保證項目產品能按照預期目標交付出用戶滿意的產品。系統在開發過程中,采用敏捷迭代-增量的開發方法,快速地產生成果,持續地交付,保證項目能夠按照預定的進度、質量和成本順利完成。
2.1系統總體的功能設計
采用敏捷迭代-增量開發的方法,設計一款高效的任務管理系統,該系統主要為任務管理者和執行者提供工作平臺,具有管理權限的成員通過任務管理系統可以及時準確地了解項目組成員的分工狀況、項目開發進度和項目子任務的具體執行情況等。在軟件開發過程中,傳統的任務管理系統主要是管理者對整個項目進展情況進行管理,本系統采用自頂向下與自底向上相結合的管理方式對項目開發過程中的任務進度進行嚴格管控,即具有權限的組織機構管理者與項目開發人員之間的協作。
對中小型軟件公司的組織機構進行層級式管理,按組織機構等級大小進行權限分配,即具有較高等級的組織結構可以添加比它等級低的組織,而低等級的組織結構下面不能再添加比它等級高的組織機構,例如公司下面可以添加部門,而部門下面就不可以添加公司組織。組織機構的主要需求是添加組織信息、修改組織信息、刪除組織信息及維護其組織機構的權限等,不同的組織結構擁有自己獨特的圖標識。當對某一組織機構設置管理權限時,其組織機構權限升級,從普通的組織結構轉換到管理部門,同時其所在成員權限也得到提升,對所在部門的項目任務進行管理。管理者與開發成員的用例圖如圖2所示。

圖2 管理者和開發成員的用例圖
在項目開發過程中,開發人員依照需求進行任務計劃的制定。一個完整的項目,在開發過程中會被創建多條任務,并且主任務下面可以包含多條子任務。一個任務一般有“未開始”、“進行中”和“已完成”三種狀態。一個新任務被創建時,該任務的狀態默認為“未開始”;新任務一旦被執行,其狀態被修改為“進行中”;當任務被完成時,具有任務權限的執行者將其狀態改為“已完成”。具有管理權限的項目管理者在創建一條開發任務后同時可以為此任務指派執行者。任務管理系統的總體工作流程圖如圖3所示。
2.2項目開發時間管控分析
從總體上說,項目在開發過程中對進度的管理主要分兩方面,一方面是按組織機構分層級自頂向下的方式進行時間管控,另一方面是項目開發人員自底向上的進度反饋方式。把分層級具有管理權限的成員自頂向下的方式與普通開發成員自底向上的方式巧妙結合起來,從而保證項目組能夠交付出客戶滿意的產品。每一個軟件產品都有自己的計劃開始時間、計劃結束時間、實際開始時間和實踐結束時間,項目的完成進度可以通過進度條一目了然。而項目的整體開發進度與項目任務完成比率有重要關系,計劃完成進度和實際完成進度是項目產品的2個重要屬性。計劃完成進度依賴于計劃開始時間、計劃結束時間和當前日期。

圖3 任務管理系統的總體工作流程圖
計劃完成進度=(當前日期—計劃開始時間)/(計劃結束時間—計劃開始時間)
項目的實際完成進度是項目開發過程中任務的完成比率,如果計劃完成進度大于實際完成進度,項目信息欄中的進度條顏色為紅色,這種顯示提醒項目開發者項目實際完成進度已落后與計劃完成進度。項目實際進度落后與計劃完成進度的原因有很多種,有些原因不需要調整,如任務接受者反饋進度過于保守等;而有些原因是需要調整的,如某條任務中途放棄了,項目管理者就要及時調整任務了。需要注意的是在任務調整時,一定要在迭代周期確定的完成日期范圍中調整。
2.3任務數據表的設計分析
任務管理系統采用MySQL數據庫對數據信息進行存儲。任務管理系統的數據庫(manager)主要由以下表組成:組織信息表(organ Infor)、員工信息表(userInfor)、產品信息表(productInfor)及任務信息表(task Infor),表與表之間存在相互依賴的關系,如圖4所示。組織機構是一個樹形結構,organID為自動增長型,當組織結構為根節點時,其parentId設置0。由表的依賴關系圖可以看出,組織結構信息表中的主鍵是員工信息表及產品信息表的外鍵,產品信息表中的產品名是任務信息表的外鍵。組織信息表存儲的是組織機構的信息,不同的組織機構都有自己特有的標識,在數據庫表中用organType來標識,organAdmin的值用來判斷組織機構是否具有權利權限。

圖4 數據庫中表之間的依賴關系
本系統采用敏捷迭代開發方法,增量地產生成果、持續地交付,優先完成高優先的需求。采用敏捷開發方法可以滿足用戶需求的不斷變更,保證每次迭代交付的產品都是可運行的。任務管理系統是基于Web的實現方式,在具體的技術實現上,考慮到企業的應用場合和將要部署的環境,系統采用流行的B/S結構,如圖5所示。按照應用層、業務層和數據層的標準三層架構進行分層開發,也使系統具有良好的弱耦合性,方便未來的擴展和整合。系統開發過程中,追求高效、簡潔和美觀,在程序前端方面使用HTML顯示數據信息,使用jQuery、jQuery Easy UI兩個JavaScript框架來實現前端與后臺的數據傳輸及HTML頁面的布局,使用CSS表現數據信息在HTML頁面的顯示效果。在程序后臺方面使用Servlet作為后臺程序的基本框架,使用Java語言對數據信息進行處理。在數據庫方面使用MySQL存儲更新數據。

圖5 系統體系結構圖
用戶在登錄界面需要對其用戶名及密碼進行身份驗證,通過與后臺數據庫中的信息進行匹配,在通過身份驗證成功后也需要對其權限就行驗證,判斷其所在組織機構是否具有管理權限。對權限的驗證及數據庫訪問代碼如下:
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(url," root","123456");
String sql="select*from userinforwhere userName=?and password=?";
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1,userName);
ps.setString(2,password);
ResultSet rs=ps.executeQuery();
在項目中,組織機構是一個樹形層次的結構,每個樹形結點的id在后臺是自增生成的,要想在插入新的組織結構立刻獲得在數據庫中生成的id用到JDBC的一種技術,具體核心代碼如下:
Statement st=conn.createStatement();
String sql="insert intomanager.organinfor(text,type,admin,parentId)
value('"+getText()+"','"+getType()+"','"+getAdmin()+" ','"+getParentId()+"');";
st.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS);
ResultSet rs=st.getGeneratedKeys(); !if(rs.next()){
int selectId=rs.getInt(1);
String sid=String.valueOf(selectId);
}
在項目管理過程中,如何縮短產品開發周期以及任務信息的獲取、展現與核實,對項目按計劃完成具有非常關鍵的作用,同時把握項目進度估算也很重要。在敏捷開發任務管理中,項目組根據開發團隊自身特點和項目需求進行管理,同時采用管理者分層級自頂向下與開發成員自底向上相結合的方法值仍然得繼續研究下去,充分發揮項目組軟件開發的潛力,以及對進度進行高效管理的策略。
[1]K.Conboy.Agility from First Principles:Reconstructing the Conceptof Agility in Information Systems Development[J].Inform.Syst.Res, 2009,20(2):329~336
[2]劉華清.敏捷開發中進度管理的策略[J].數字通信,2013,40(4):78~82
[3]張曙晟.基于局部迭代的敏捷過程管理研究[J].軟件導刊,2011,10(9):20~25
[4]胡喬.基于JSF框架的權限管理系統的研究與實現[J].計算機技術與發展,2010,20(11):22~28
[5]關忠誠,程剛.基于敏捷方法的軟件項目管理研究[J].重慶大學學報,2005,11(6):86~92
[6]賈郭軍.軟件項目實施過程中的進度管理研究[J].西安科技學院學報,2004,24(2):78~85
[7]張琦,林碧英.淺談軟件開發過程管理中的進度管理[J].管理論叢與教育研究專刊,2008,36(8):90~96
[8]劉華清.敏捷開發中進度管理的策略[J].數字通信,2013,40(4):78~80
[9]曹質樸.基于Rally平臺的敏捷項目進度追蹤系統的設計與實現[D].北京:北京交通大學,2012
[10]徐建軍.軟件缺陷跟蹤系統的設計與實現[D].大連:大連理工大學,2005
Agile Methods;Iterative Development;Task Management
Design and Im p lem entation of Task Management System Based on Agile Method
WANG Si-yun,REN Hong-min
(College of Information Engineering,ShanghaiMaritime University,Shanghai201306)
Expounds the agile software developmentmethods and core idea,the method of iterative development,generating incremental delivery lasting results,to ensure the delivery of each release and iterative product all is to run the code.Introduces the overall design and function analysis of the taskmanagement system in details,analyzes and researches on the progress of the task time controlmanner.The realization of the software task management system,strict control of small and medium sized software development company product development task,to ensure the project completed on time and to reach the expected goal.
1007-1423(2015)16-0069-05
10.3969/j.issn.1007-1423.2015.16.016
王四云(1989-),女,河南開封人,碩士研究生,研究方向為軟件開發方法與軟件項目管理
任洪敏(1969-),男,上海浦東人,博士,副教授,研究方向為軟件體系結構、軟件復用、軟件項目管理
2015-04-16
2015-05-20