王 敏, 賈百強, 李 翔, 李小軍
(中遠海運科技股份有限公司, 上海 200135)
基于JIRA的全生命周期軟件開發(fā)管理平臺
王 敏, 賈百強, 李 翔, 李小軍
(中遠海運科技股份有限公司, 上海 200135)
針對目前企業(yè)級軟件開發(fā)管理過程中企業(yè)管理者、項目管理者及項目成員等面臨的問題,依照當(dāng)前軟件開發(fā)管理的前沿理念,基于JIRA商業(yè)軟件套件及其他開源的工具軟件集群,提出高效、可靠及一體化的全生命周期軟件開發(fā)管理平臺方案。在此基礎(chǔ)上,闡述平臺的設(shè)計目標(biāo)、總體架構(gòu)設(shè)計及功能設(shè)計與實現(xiàn)等。該平臺已在軟件開發(fā)管理中得到部分使用和驗證,可為軟件開發(fā)生命周期內(nèi)的各部門、各角色提供從需求、開發(fā)、測試到發(fā)布的基于任務(wù)驅(qū)動全流程、全方位的跟蹤和綜合管理。
軟件開發(fā)管理; 全生命周期; JIRA軟件; 任務(wù)驅(qū)動; 持續(xù)集成
當(dāng)前IT企業(yè)面臨著軟件項目復(fù)雜度高、時間進度慢、質(zhì)量要求和開發(fā)成本高及外部市場競爭激烈等諸多挑戰(zhàn)。因此,通過不斷提升軟件開發(fā)管理水平,提高軟件的開發(fā)效率和質(zhì)量,降低軟件的開發(fā)成本,使公司保持長久的活力和市場競爭力,是當(dāng)前最緊迫的任務(wù)之一。通過從人、方法及工具等3個核心維度對軟件開發(fā)管理過程進行分析,發(fā)現(xiàn)企業(yè)管理者、項目管理者及項目成員等面臨著逐多問題。
1) 企業(yè)管理者面臨的問題主要有:不能及時、全面地掌握公司所有正在執(zhí)行項目的整體進度、質(zhì)量及資源使用情況;不能有效沉淀項目過程中形成的寶貴經(jīng)驗和知識,形成組織資產(chǎn)財富;不能很好地滿足外部審計對項目管控的要求。
2) 項目管理者面臨的問題主要有:不能準(zhǔn)確把控其所管理項目的整體進展情況;不能實時、動態(tài)地根據(jù)項目成員的空閑狀況進行最優(yōu)化的任務(wù)分配;不能準(zhǔn)確獲取項目成員的績效考核數(shù)據(jù);不能盡早發(fā)現(xiàn)項目存在的質(zhì)量問題;不能有效保證項目按時按量發(fā)布。
3) 項目成員面臨的問題主要有:開發(fā)管理工具多,無統(tǒng)一的管理平臺和使用標(biāo)準(zhǔn),使用不夠便捷;項目文檔和資料多點分散,與其所執(zhí)行的任務(wù)之間缺乏有效的關(guān)聯(lián)及相應(yīng)的版本控制;項目成員間的溝通通過郵件、電話和各種IM(即時通信)工具實現(xiàn),溝通效率低,溝通過程和結(jié)果無法進行記錄和追溯。
基于以上問題,依照當(dāng)前軟件開發(fā)管理的前沿理念和實踐方法論,采用成熟的軟件和工具,為軟件開發(fā)生命周期內(nèi)的各部門、各角色提供從需求、開發(fā)、測試到發(fā)布的高效、可靠及一體化的平臺。該平臺可為不同類型、規(guī)模和復(fù)雜度的項目提供統(tǒng)一的工作環(huán)境和溝通平臺,使項目的規(guī)劃、執(zhí)行和監(jiān)控能力及團隊的溝通效率得到提高,從而提高做出各種決策的效率。
1) 統(tǒng)一用戶管理、認證和單點登錄集成,并提供一站式訪問門戶。
2) 對基于任務(wù)驅(qū)動的全生命周期進行管理,覆蓋從需求分析、項目規(guī)劃、項目實施、配置管理、測試管理最終被交付發(fā)布的軟件開發(fā)全過程。
3) 平臺中各種工具軟件之間實現(xiàn)基于文檔、任務(wù)、代碼、消息和流程的有機集成。
4) 形成一套可用于項目進度、項目質(zhì)量、項目成員工作量和績效管理的報表模板庫。
JIRA是Atlassian公司推出的項目與事務(wù)跟蹤工具,被廣泛應(yīng)用于缺陷跟蹤、客戶服務(wù)、需求收集、流程審批、任務(wù)跟蹤、項目跟蹤和敏捷管理等工作領(lǐng)域中。其主要功能有缺陷與事務(wù)跟蹤、項目跟蹤、源代碼集成、工作流定制、報表與分析和敏捷項目管理支持等,平臺基于JIRA軟件套件及其他眾多開源的工具軟件集群來構(gòu)建,可實現(xiàn)JIRA與Confluence(團隊協(xié)同與知識分享工具),SVN(集中式版本控制工具)或GIT(分布式版本控制工具),F(xiàn)ishEye(源代碼查看工具),Crucible(代碼評審工具)及HipChat(團隊溝通工具)等工具的無縫集成,可支持任務(wù)與文檔和源代碼的實時關(guān)聯(lián),便捷地執(zhí)行代碼評審及基于任務(wù)的實時交流。平臺的核心是基于JIRA的任務(wù)驅(qū)動工作流引擎,貫穿于整個軟件開發(fā)的生命周期內(nèi)從需求、開發(fā)、測試到發(fā)布的全部環(huán)節(jié)。任務(wù)流程中任何節(jié)點的執(zhí)行結(jié)果都可通過郵件等方式實時地通知相關(guān)干系人。
平臺還分別針對需求管理、開發(fā)管理、測試管理及發(fā)布管理等各環(huán)節(jié)提供相應(yīng)的工具軟件,并通過與JIRA任務(wù)關(guān)聯(lián)實現(xiàn)流程集成。
知識管理模塊可為整個軟件開發(fā)過程中的各環(huán)節(jié)提供各種類型的文檔知識庫管理;溝通交流模塊可為整個軟件開發(fā)過程中的各成員提供多種便捷溝通方式。
此外,平臺基于Java Web技術(shù)單獨開發(fā)一套Portal(門戶)提供統(tǒng)一的訪問入口,并通過OpenLDAP(開源目錄協(xié)議工具)與Crowd(單點登錄和用戶認證工具)的組合,實現(xiàn)用戶資料的統(tǒng)一管理、認證和單點登錄(見圖1)。
3.1統(tǒng)一認證和單點登錄
通常平臺中使用的每個工具軟件都有其獨立的用戶資料管理、認證授權(quán)及訪問地址,使用者須牢記這些信息,尤其是當(dāng)用戶需進行修改密碼和更改郵箱地址等用戶信息維護操作時,需分別到各系統(tǒng)中進行,給使用者造成極大的不便,不利于平臺的推廣使用。
對此,平臺基于Java Web技術(shù)單獨開發(fā)一套Portal來提供統(tǒng)一的訪問入口,使平臺用戶有一站式使用的良好體驗,無需記住眾多的訪問地址,且無需安裝任何客戶端軟件。此外,采用OpenLDAP與Crowd組合來建立統(tǒng)一的用戶認證中心,實現(xiàn)基于安全策略的統(tǒng)一用戶管理、集中認證及平臺內(nèi)多個系統(tǒng)間的單點登錄集成,用戶只需在登錄時進行一次注冊,即可進入平臺的多個系統(tǒng),不必重復(fù)輸入用戶名和密碼。
OpenLDAP是基于輕型目錄訪問協(xié)議(Lightweight Directory Access Protocol,LDAP)實現(xiàn)的。LDAP目錄服務(wù)規(guī)定統(tǒng)一的身份信息數(shù)據(jù)庫、身份認證機制和接口,實現(xiàn)資源和信息的統(tǒng)一管理,保證數(shù)據(jù)的一致性和完整性,可有效地解決眾多系統(tǒng)應(yīng)用的用戶集中管理問題。
Crowd是JIRA套件中用于統(tǒng)一用戶管理和單點登錄的產(chǎn)品,將其與OpenLDAP進行無縫集成,利用其提供的管理維護界面,可高效便捷地進行用戶信息的維護和管理。同時,還可利用其提供的用戶組維護功能建立用戶和平臺中各系統(tǒng)間角色的對應(yīng)關(guān)系,進一步簡化平臺管理員的日常權(quán)限維護工作。此外,通過Crowd的簡單配置或利用第三方插件,可實現(xiàn)平臺內(nèi)絕大多數(shù)主流工具系統(tǒng)的單獨登錄。
3.2任務(wù)管理
軟件開發(fā)生命周期涵蓋從需求、開發(fā)、測試到發(fā)布的各階段,每個階段的工作本質(zhì)上都是由多種項目角色參與的眾多任務(wù)構(gòu)成的,整個軟件開發(fā)管理的核心是對任務(wù)進行管理。平臺基于JIRA的任務(wù)驅(qū)動工作流引擎來實現(xiàn)高效的任務(wù)管理,可根據(jù)不同的項目需求配置定制化流程。任務(wù)操作主要包括分解、創(chuàng)建、分配、處理、解決、關(guān)閉及監(jiān)控審計等,任務(wù)類型主要包括需求任務(wù)、開發(fā)任務(wù)、測試任務(wù)、發(fā)布任務(wù)、缺陷處理任務(wù)及軟件增強任務(wù)等,同樣支持根據(jù)不同項目的需要進行定制化配置(見圖2)。
基于平臺運行所產(chǎn)生的數(shù)據(jù)主要包括任務(wù)數(shù)據(jù)及相關(guān)的工作日志記錄,可方便地生成多維度的可視化管理報表,實現(xiàn)項目進度的跟蹤、員工工作量及績效的評定等。該管理報表主要包括單次分組報告、解決時間報告、平均周期報告、問題持續(xù)時間報告、已創(chuàng)建與已解決問題對比報告、最新創(chuàng)建的問題報告、項目工作量報告和人員工作量報告等。同時,其還支持二次開發(fā)符合各自管理需求的定制化報表。此外,JIRA還提供豐富的可擴展插件(如甘特圖、團隊日志和屏幕錄像截屏等),可極大地提高軟件開發(fā)的效率。
3.3需求管理
整個需求管理可分為需求過程管理和需求文檔管理兩大部分,其中:需求過程管理主要包括需求的確認、跟蹤及變更控制;需求文檔管理則主要包括需求調(diào)研、需求分析及最終形成需求文檔。
Confluence是一個專業(yè)的企業(yè)知識管理與協(xié)同軟件,也可用于構(gòu)建企業(yè)維基。通過該軟件可實現(xiàn)團隊成員之間的協(xié)作和知識共享。Confluence使用簡單,具有強大的編輯和站點管理特征,能幫助團隊成員間實現(xiàn)共享信息、文檔協(xié)作和集體討論。發(fā)布文檔變得極為簡便,提供快速搜索、權(quán)限控制、版本管理和導(dǎo)入導(dǎo)出等功能,并支持對Office文檔的搜索、在線查看及在線編輯功能,無需安裝Office軟件。
平臺利用JIRA實現(xiàn)需求過程中的任務(wù)管理,Confluence實現(xiàn)需求文檔管理,實現(xiàn)任務(wù)和文檔的無縫鏈接。同時,Confluence提供豐富的文檔模板,方便快捷地進行各種類型需求文檔的編寫,并可根據(jù)項目的需求進行自定義模板的開發(fā)、存檔和共享。
3.4開發(fā)管理
3.4.1 統(tǒng)一集成開發(fā)環(huán)境
平臺用戶采用統(tǒng)一的IntelliJ IDEA(集成開發(fā)環(huán)境工具),是目前業(yè)界公認最好的開發(fā)工具之一,尤其是在智能代碼助手、代碼自動提示、重構(gòu)、J2EE(企業(yè)版Java)支持、各類版本工具支持、JUnit(單元測試工具)整合、代碼分析及創(chuàng)新的GUI(圖形用戶界面)設(shè)計等方面優(yōu)勢明顯。
3.4.2 集中資源管理
平臺采用Nexus(資源倉庫管理工具),該工具無需數(shù)據(jù)庫,使用文件系統(tǒng)加Lucene(全文檢索引擎)來組織數(shù)據(jù),可極大地簡化內(nèi)部倉庫的維護和外部倉庫的訪問,可提供Maven(項目對象模型)、NPM(nodejs的包管理和分發(fā))及Docker(應(yīng)用容器引擎)等多種類型倉庫的支持,能節(jié)省中央倉庫的帶寬,部署第三方組件并加速項目構(gòu)建。
此外,平臺還利用虛擬桌面基礎(chǔ)架構(gòu)(Virtual Desktop Infrastructure, VDI)實現(xiàn)開發(fā)機資源的集中管理,有效提高開發(fā)管理的安全性和可靠性。
3.4.3 軟件配置管理
軟件配置管理(Software Configuration Management, SCM)已成為軟件開發(fā)和維護工作中的重要組成部分,主要是指對軟件開發(fā)生命周期內(nèi)產(chǎn)生的數(shù)據(jù)和文檔進行標(biāo)識、存儲和控制,以維護其完整性、可追溯性及正確性。
平臺從歷史數(shù)據(jù)兼容、不同項目類型及團隊組織形式等多方面考慮,提供集中式的SVN和分布式的GIT 2套版本配置工具的支持。此外,考慮到配置管理的便捷高效,采用SVNAdmin和GitLab 2套基于Web的管理工具分別提供對SVN和GIT配置庫的在線查看及維護操作。
3.4.4 代碼評審管理
代碼評審又稱代碼復(fù)查,是指通過閱讀代碼來檢查源代碼與編碼標(biāo)準(zhǔn)的符合性及代碼質(zhì)量,是軟件開發(fā)過程中早期發(fā)現(xiàn)缺陷、提高代碼質(zhì)量的重要的環(huán)節(jié),通常有代碼走查和會審2種形式。
平臺采用FishEye和Crucible的組合工具實現(xiàn)代碼評審過程的規(guī)范、高效、流程化和可視化。FishEye提供代碼評審過程中的源代碼瀏覽和搜索功能,并可通過可視化的方式了解源代碼的變更情況。而Crucible則提供創(chuàng)建,執(zhí)行和管理基于工作流評審的功能。此外,其還可與JIRA進行有機集成,實現(xiàn)基于JIRA任務(wù)的源代碼瀏覽及從JIRA任務(wù)中創(chuàng)建代碼評審和查看代碼評審結(jié)果。
3.4.5 源代碼靜態(tài)質(zhì)量檢查
源代碼靜態(tài)質(zhì)量檢查在項目質(zhì)量保障方面有一定的重要性和必要性,平臺采用SonarQube在內(nèi)的通過插件形式支持包括 Java,C#,C/C++,PL/SQL,Cobol,JavaScript和Groovy等在內(nèi)的編程語言,并可與持續(xù)集成工具Jenkins集成實現(xiàn)定期和基于構(gòu)建流程的檢查,主要支持代碼語法規(guī)范性、注釋不足或過多、代碼重復(fù)程度、糟糕的復(fù)雜度、單元測試覆蓋率、潛在的代碼架構(gòu)風(fēng)險等維度的源代碼檢測工作,并可生成相應(yīng)的質(zhì)量報告。
3.5測試管理
軟件測試是保證軟件質(zhì)量的關(guān)鍵步驟,越早發(fā)現(xiàn)軟件中存在的問題,則修改軟件缺陷及軟件發(fā)布后的維護成本就越低。因此,建立有效、規(guī)范的軟件測試管理體系并提供自動化工具支持十分重要。測試管理體系主要包括測試計劃、測試任務(wù)、測試用例及測試過程中生成的測試報告和測試記錄等結(jié)果文檔。
平臺利用JIRA實現(xiàn)測試過程中的任務(wù)管理,Confluence實現(xiàn)測試需求、計劃及測試結(jié)果等文檔管理,并實現(xiàn)任務(wù)和文檔的無縫鏈接;而采用基于Web的測試管理系統(tǒng)TestLink實現(xiàn)測試用例及用例執(zhí)行管理。
3.6發(fā)布管理
軟件項目的發(fā)布管理通常環(huán)節(jié)眾多,存在大量的重復(fù)勞動,導(dǎo)致費時費力、發(fā)布周期長、效率低下,發(fā)布質(zhì)量不能得到有效保障。依據(jù)當(dāng)前主流的持續(xù)集成和持續(xù)交付思想,采用基于Java Web的自動化構(gòu)建工具Jenkins,可將這些重復(fù)的發(fā)布工作變?yōu)樽詣踊墓ぷ髁?見圖3),無需太多人工干預(yù)。
3.6.1 持續(xù)集成
持續(xù)集成是指開發(fā)人員提交新代碼之后,立刻進行構(gòu)建、單元測試。根據(jù)測試結(jié)果,可確定新代碼和原有代碼能否正確地集成。其目的是使產(chǎn)品可快速迭代,同時保持高質(zhì)量。其核心措施是在代碼集成到主干之前,必須通過自動化測試,只要有1個測試用例失敗,就不能集成。
3.6.2 持續(xù)交付
持續(xù)交付可看作是持續(xù)集成的下一步,將集成后的代碼部署到更貼近真實的類產(chǎn)品環(huán)境中進行測試,如果代碼沒有問題,可繼續(xù)手動或自動部署到生產(chǎn)環(huán)境中。
3.7知識共享
Confluence可為團隊提供1個協(xié)作環(huán)境(見圖4),團隊成員協(xié)同地編寫文檔和管理項目,打破不同團隊、不同部門及個人之間信息孤島的僵局,真正實現(xiàn)組織資源共享。
1) 簡化文檔編寫和團隊協(xié)作??稍贑onfluence中記錄和共享項目計劃、需求文檔、設(shè)計文檔、會議記錄、工作周報及相關(guān)項目過程文檔,告別無休止的郵件和雜亂無章的網(wǎng)絡(luò)文件共享,并能自動跟蹤需要關(guān)注的事務(wù)。此外,Confluence能實現(xiàn)遠程頭腦風(fēng)暴、持續(xù)的異步交流,從而減少費時費力的會議,以便快速做出決策。
2) 形成組織的知識財富。寶貴的經(jīng)驗總結(jié)和辛勤的勞動成果通常散落在郵件中,隨著時間的推移,舊郵件不斷被新郵件淹沒。利用Confluence可將知識聚集起來,形成有組織的知識庫。
3.8溝通交流
高效的溝通和暢通的信息交流能使加強項目成員對問題的理解,對問題的解決、項目的發(fā)展及人際關(guān)系的改善等俱有良好的促進作用。HipChat是該平臺中用于用戶協(xié)同的工具,支持多人群組文本、語音及視頻聊天和屏幕共享等高效協(xié)同功能,尤其可為需要遠程協(xié)同開發(fā)的團隊提供良好的支持和保障。
HipChat 支持幾乎所有主流操作系統(tǒng)平臺,并有獨立的Mac和iOS應(yīng)用客戶端。此外,其還可與JIRA和Confluence等應(yīng)用實現(xiàn)無縫集成,實現(xiàn)自動通知、團隊文件分享及保存等功能。
目前,該平臺已開始在多個軟件項目開發(fā)管理中進行使用和驗證。實踐結(jié)果表明,平臺可為軟件開發(fā)生命周期內(nèi)的各部門、各角色提供從需求、開發(fā)、測試到發(fā)布的基于任務(wù)驅(qū)動全流程、全方位的跟蹤和綜合管理。但是,平臺在使用過程中也存在一些不足,目前其內(nèi)置的管理報表不夠完善,無法滿足更精細化的管理需求,尚需進一步的增強和完善。
[1] 阮俊杰.軟件開發(fā)方法與管理教程[M].北京:北京希望電子出版社,2003.
[2] ROTHMAN J.項目管理修煉之道[M].鄭柯,譯.北京:人民郵電出版社,2009.
[3] DOAR M B.Practical JIRA Administration[M].Sebastopol:O’Reilly Media.2011.
[4] 熊瑛.問題管理工具JIRA在中小企業(yè)項目中的應(yīng)用[EB/OL].(2008-08-25)[2017-03-08].http://www.paper.edu.cn/releasepaper/content/200808-333.
[5] 蘭洋,溫迎福.持續(xù)集成實踐[M].北京:電子工業(yè)出版社,2015.
[6] SMART J F.Jenkins權(quán)威指南[M].郝樹偉,譯. 北京:電子工業(yè)出版社,2016.
DesignandImplementationofJIRA-BasedPlatformforLifeCycleManagementofSoftwareDevelopment
WANGMin,JIABaiqiang,LIXiang,LIXiaojun
(COSCD SHIPPING Technology Co., Ltd ., Shanghai 200135, China)
A platform is proposed to support the management of enterprise level software development with special attention to fulfill the requirements of involved personnel, such as company managers, project managers and project team members. The integrated platform is designed for efficient and reliable life cycle management of software development based on JIRA business software set and other open source software clusters. The design objectives, the architecture and the function design are elaborated. The platform has been used practically for software development management in the company the author worked for. It is proved that the platform allows all aspects tracking throughout the process and comprehensive management based on task driven principle, from requirement identification, planning, programming and testing to delivery and after services.
software development management; full life cycle; JIRA; task driven; continuous integration
2017-03-30
王敏(1975—),男,安徽南陵人,工程師,碩士,主要從事航運信息化研究。
1674-5949(2017)02-0078-05
TP311.52
:A