李雅彬
〔中國石化天津石油分公司 天津 300100〕
敏捷開發(fā)在油品銷售行業(yè)軟件開發(fā)中的應(yīng)用
李雅彬
〔中國石化天津石油分公司 天津 300100〕
介紹了敏捷開發(fā)進(jìn)行軟件開發(fā)的原理方法和開發(fā)流程,對瀑布模型與敏捷開發(fā)模型進(jìn)行了比較,闡述了目前在互聯(lián)網(wǎng)環(huán)境下油品銷售行業(yè)信息系統(tǒng)及軟件開發(fā)中應(yīng)用敏捷開發(fā)的軟件開發(fā)管理方法,搭建符合目前業(yè)務(wù)發(fā)展需要的信息項目平臺。
互聯(lián)網(wǎng) 敏捷軟件開發(fā) 油品銷售行業(yè) 應(yīng)用 探討
在當(dāng)今互聯(lián)網(wǎng)環(huán)境下,經(jīng)濟(jì)全球化、經(jīng)濟(jì)信息化的潮流在不斷壯大,各行各業(yè)的經(jīng)營管理模式都在經(jīng)歷巨大的轉(zhuǎn)變,油品行業(yè)自然也不例外。中石化目前正在大力開發(fā)各種新型經(jīng)營方式,那么如何建立業(yè)務(wù)經(jīng)營可以依托的信息平臺,如何利用信息資源解決更多的用戶需求成了需要研究的課題。作為時下非常流行的軟件開發(fā)的方式方法,敏捷開發(fā)的各種特點也許能帶來一些啟發(fā)。
敏捷開發(fā)(Agile)不是指某一種軟件開發(fā)的方式方法,而是一系列價值觀和原則的體系。敏捷開發(fā)誕生于2001年,當(dāng)時17位軟件開發(fā)領(lǐng)域的領(lǐng)軍人物聚集在美國猶他州的雪鳥(Snowbird)滑雪場,經(jīng)過討論,最終得出著名的敏捷開發(fā)宣言。適用于敏捷開發(fā)的方法有很多,這些開發(fā)方法擁有共同的特征:迭代式開發(fā)、增量交付、開發(fā)團(tuán)隊和用戶反饋推動產(chǎn)品開發(fā)、持續(xù)集成以及開發(fā)團(tuán)隊的自我管理。
1.1 Scrum
Scrum是Agile軟件開發(fā)管理方法中的一種。“Scrum”這個詞是美式橄欖球中的術(shù)語,代表“爭球”的意思,因此以此命名的軟件開發(fā)管理方法也帶著快速的、充滿激情的特質(zhì)。Scrum的核心思想和關(guān)鍵特性在于迭代,它將整個開發(fā)周期分為若干個迭代期間,每個迭代期間通常持續(xù)2~4周,稱為“Sprint”。在每個Sprint的末尾,團(tuán)隊需要向客戶交付一個潛在的產(chǎn)品版本。
在Scrum這種軟件開發(fā)組織方式中,有三個主要的元素,分別為:角色、產(chǎn)品和會議。
Scrum中有三個主要的角色:產(chǎn)品負(fù)責(zé)人、主持人和團(tuán)隊。其中,產(chǎn)品負(fù)責(zé)人在Scrum中負(fù)責(zé)定義產(chǎn)品特性,擁有可以轉(zhuǎn)化為產(chǎn)品的想法與方案。主持人負(fù)責(zé)保證整個團(tuán)隊的工作不受外界的干擾,主持日常會議并保證各項事務(wù)的正常運行。團(tuán)隊通常由開發(fā)人員、測試人員及文檔人員組成,為了保證項目進(jìn)展,團(tuán)隊中的每個成員一般需要擔(dān)任多重角色。
其中Scrum產(chǎn)品或者文檔包含:產(chǎn)品列表、Sprint列表和燃盡圖。產(chǎn)品列表是產(chǎn)品負(fù)責(zé)人創(chuàng)建的一個具有優(yōu)先權(quán)的產(chǎn)品特性列表,就是人們所熟知的用戶故事,這些具有優(yōu)先特性的用戶故事將會變成產(chǎn)品。在每個Sprint期間,列表中的用戶故事優(yōu)先權(quán)會隨著項目進(jìn)展情況而發(fā)生變化和調(diào)整。用戶故事,可用來描述產(chǎn)品特性的方式,采用“作為一個用戶,我需要____,因此我才能實現(xiàn)____”的格式,這種描述用戶故事的方式使得產(chǎn)品負(fù)責(zé)人能夠分清任務(wù)的總量和細(xì)節(jié),并且方便評估交付給團(tuán)隊的工作量。具有最高優(yōu)先權(quán)的用戶故事將會轉(zhuǎn)化為Sprint backlog,這些用戶故事已經(jīng)被評估過工作量,并且會被提交至下一個Sprint。燃盡圖,顯示Sprint 列表的進(jìn)度和完成情況,燃盡圖在工作完成后的值應(yīng)該是0。
在Scrum中有五個基本的會議形式: 待辦事項梳理會議、Sprint計劃會議、Scrum每日例會、Sprint回顧會議和Sprint 評審會議。
待辦事項梳理會議是一個貫穿整個Sprint項目始終的活動,為了給即將到來的Sprint做準(zhǔn)備,也為了保持產(chǎn)品待辦事項有序,需要對產(chǎn)品待辦事項進(jìn)行優(yōu)先級調(diào)整、增減、分解、歸并及估算等工作。
Sprint計劃會議是一個Sprint的開始,固定時長,在一個特定的time box內(nèi),團(tuán)隊共同選擇和理解即將到來的Sprint中要完成的工作,內(nèi)容包含在Sprint中要完成哪些工作,如何完成等。
開發(fā)團(tuán)隊通過每日Scrum會議來確認(rèn)人們?nèi)匀豢梢詫崿F(xiàn)Sprint的目標(biāo),會議每天在同樣的時間和同樣的地點召開。會議時長建議在30 min之內(nèi),每一個團(tuán)隊成員需要提供以下三點信息:從上一個每日Scrum會議到現(xiàn)在,我完成了什么; 從現(xiàn)在到下一個每日Scrum會議,我計劃完成什么; 有什么阻礙了我的工作進(jìn)展。
Sprint評審會議發(fā)生在每個Sprint的結(jié)束,由產(chǎn)品負(fù)責(zé)人、Scrum Master及團(tuán)隊成員共同對本次Sprint工作進(jìn)行評價,是一個非正式分會議,來探討目前產(chǎn)品的進(jìn)展情況和下一步如何推進(jìn)工作。
在每個Sprint結(jié)束后,Scrum團(tuán)隊共同進(jìn)行Sprint回顧會議,會議目的是回顧團(tuán)隊在流程、溝通以及管理方式方面的做法。團(tuán)隊每位成員提出在本次迭代中哪些做得好,哪些做得不好,并找出潛在的可改進(jìn)事項,為將來的改進(jìn)制定計劃。
整體來講,Scrum流程大概如圖1所示。
圖1 Scrum概括
首先,產(chǎn)品負(fù)責(zé)人將產(chǎn)品待辦事項列表進(jìn)行優(yōu)先級排序,并將優(yōu)先級高的事項交付給團(tuán)隊,團(tuán)隊、產(chǎn)品負(fù)責(zé)人及Scrum Master在Sprint計劃會議上對高優(yōu)先級的用戶故事進(jìn)行討論,并決定哪些可以進(jìn)入到下一個Sprint里, Sprint計劃會議的產(chǎn)出是將會被提交至下一個Sprint的Sprint待辦事項列表。整個團(tuán)隊和產(chǎn)品負(fù)責(zé)人基于Sprint計劃會議上的討論對涉及到的每個用戶故事充分的理解和溝通。一個Sprint是一個固定時長在2~4周的時間盒子,用來完成Sprint待辦事項列表, 在整個Sprint期間,每日Scrum會議作為一個站立會議對團(tuán)隊正在進(jìn)行的事務(wù)和困難今天討論, 一個Sprint的產(chǎn)物是一個潛在的可發(fā)布的產(chǎn)品增量。 在Sprint的結(jié)尾,發(fā)生的是Sprint評審及回顧會議,Sprint團(tuán)隊在評審會上向產(chǎn)品負(fù)責(zé)人展示本次迭代的工作成果 ,在回顧會議上討論如何優(yōu)化工作流程。重復(fù)以上工作流程作為產(chǎn)品解決方案的方法即稱為Scrum。
1.2 Kanban
看板(Kanban)開發(fā)方式是近年引起很多討論和注目的一種敏捷開發(fā)實施,用于精益管理軟件開發(fā)流程的新技術(shù)??窗宸椒ㄔ醋载S田的“及時生產(chǎn)”系統(tǒng)。盡管生產(chǎn)軟件是一項創(chuàng)造性活動,與批量生產(chǎn)汽車有所不同,但是生產(chǎn)線管理背后所蘊含的原理仍然適用軟件開發(fā)及項目管理,David J. Anderson是將看板應(yīng)用到軟件開發(fā)和項目管理中的先驅(qū)者。
看板的核心思想是可視化及工作流程的形象化。簡單來說,就是把工作細(xì)分成任務(wù),寫在貼在墻上的白板上,把任務(wù)按階段命名好任務(wù)欄,每個任務(wù)欄都分兩種狀態(tài)——“進(jìn)行中”和“已完成”。限制“在制品”(work in progress,簡稱 WIP)的數(shù)量,即明確設(shè)定限制在每個狀態(tài)下同一時間能有多少工作任務(wù)。
組成一個看板(圖2)的幾個元素:任務(wù)清單,項目需要完成的任務(wù)集合;進(jìn)行步驟,項目開發(fā)至完成需要進(jìn)行的流程或步驟,步驟的名稱通常是自定義的,按照當(dāng)前項目的內(nèi)容及形式確定。列,列是看板中非常重要的元素,通常分為兩列——進(jìn)行中和已完成,列表示了每一個看板步驟的質(zhì)量。完成原則,每個步驟任務(wù)完成的原則由團(tuán)隊成員一起討論確定。在制品限制是每一個步驟中允許存在的最大任務(wù)數(shù),同時限制進(jìn)行中和已完成兩種狀態(tài)的任務(wù)數(shù)量。
圖2 看板示意
與Scrum不同的是,在當(dāng)前Sprint中未解決的問題可延伸至下一個Sprint中,而在看板中,如果在某一階段的問題存在未解決的,那么所有的任務(wù)都不能繼續(xù)到下一個階段,需要將當(dāng)前階段所有任務(wù)完成才能進(jìn)階到下一個節(jié)點。
在看板中,通常不以頻繁的會議方式解決問題,因為整個進(jìn)程完全是可視化的,團(tuán)隊中的成員每天通過看板可以認(rèn)清自己的工作進(jìn)度,做好如何完成工作的計劃,節(jié)省了一定的項目時間,提升了效率,這也是一個可以警示和督促團(tuán)隊成員解決問題的優(yōu)點。同時,看板方法更靈活,因為在看板中不存在時間盒子的限制,最終時間以項目結(jié)束時間為準(zhǔn),不遺留問題,保證了項目質(zhì)量。
在瀑布模型中,通常來講,僅僅需求調(diào)研階段及項目計劃的制定就需要幾個月的時間,隨后的產(chǎn)品建設(shè)階段同樣會花費幾個月的時間,再后面就是產(chǎn)品測試、回顧及產(chǎn)品部署階段?;诖?,在整個項目進(jìn)行中,如果市場上的主流技術(shù)發(fā)生了變化,那么很有可能最終以向市場提供了并不被需要的產(chǎn)品而結(jié)束。然而,由于最初的計劃已經(jīng)被開發(fā)完成了,所以這種模型下的開發(fā)方式存在著很多問題。
首先,需求調(diào)研及項目計劃必須在所有工作開始之前得到確認(rèn)。多數(shù)情況下,有些工作在沒有完全被理解透徹的情況下就已經(jīng)完成,一旦后續(xù)過程中后出現(xiàn)新的需求或者問題,那么返工工作需要退回至計劃階段,整個工作就要全盤重新開始,否則開發(fā)人員無法很好的理解項目的整體計劃。類似的循環(huán)在一個軟件開發(fā)過程中有可能重復(fù)出現(xiàn)多次,如果測試階段遇到問題,那么工作點就會彈回至開發(fā)階段,甚至計劃階段。
在多次的回退步驟和重復(fù)工作下,在帷幕拉開之前,需要數(shù)月甚至數(shù)年才能向用戶提供一個可以閃亮登場的產(chǎn)品。瀑布模型的工作方式見圖3。
圖3 瀑布模型的工作方式
大家可以利用敏捷開發(fā)中的Scrum,一個用來提交復(fù)雜產(chǎn)品的可迭代的增量開發(fā)方法,將整個流程拆分成多個小的碎片,稱作特性。首先,只需要計劃如何開始建立一個最小單元的特性集,用來實現(xiàn)所計劃的內(nèi)容;接著,測試、回顧這個小的特性集,使它達(dá)到待交付的狀態(tài)。當(dāng)整個循環(huán)結(jié)束,會得到一個潛在的可交付產(chǎn)品。這個過程通常發(fā)生在2~4周的時間段里,之后就是不斷重復(fù)這個過程,每個循環(huán)的末尾都會釋放一定的產(chǎn)品增量,直到客戶看到可交付的產(chǎn)品。在這個固定周期中的每個環(huán)節(jié),都減少了客戶見到可交付產(chǎn)品的時間,同時,特性集的小規(guī)格保證了每個過程的計劃都被開發(fā)人員充分理解,并且由于迭代開發(fā)的靈活性,當(dāng)新的需求或者問題出現(xiàn)時,使得項目調(diào)整的計劃對整體以及其他迭代周期的影響降到最低。
敏捷開發(fā)用于瀑布開發(fā)見圖4。
圖4 敏捷開發(fā)用于瀑布開發(fā)
綜上所述,相對于瀑布模型,敏捷開發(fā)具有以下特點:①更早也更快的獲得客戶反饋;②采用適應(yīng)性的項目計劃;③開發(fā)人員與業(yè)務(wù)人員之間的聯(lián)系更緊密;④需求的變更可以發(fā)生在整個過程的任意時點;⑤為當(dāng)前項目提供持續(xù)改進(jìn)的機會;⑥高透明度。
3.1 敏捷開發(fā)方法論的應(yīng)用要點
敏捷開發(fā)的應(yīng)用,有三個主要的必要條件,也是應(yīng)用難點。第一個就是應(yīng)用環(huán)境,時下不斷擴(kuò)張的互聯(lián)網(wǎng)環(huán)境提供了越來越多的多樣、急迫的客戶化需求,而Scrum快速迭代的特點正好滿足了軟件開發(fā)中的該類需求。由于可以快速地獲取客戶反饋,所以Scrum更適合中小型項目的開發(fā)與管理。第二個難點在于團(tuán)隊建設(shè),筆者認(rèn)為這是Scrum可以順暢運行的最重要的保障,團(tuán)隊中的每位成員必須對Scrum的基本原則達(dá)成共識,遵守這些原則,并且擁有共同的目標(biāo),即是將整個項目按照客戶的需求做好。Scrum的關(guān)鍵原則是每個團(tuán)隊成員必須共同遵守的:溝通機制的建立、減少不必要的工作量以及出席率。團(tuán)隊成員之間,團(tuán)隊成員與項目經(jīng)理之間都要建立良好的溝通渠道和方式,探索該項目中可以改進(jìn)和提升的部分,以保證問題解決的時效性和項目進(jìn)展的高透明度;為了確保產(chǎn)品可以及時交付,團(tuán)隊要減少大量與該項目無關(guān)的工作,不受外界的打擾;要保證Scrum會議的出席率。
3.2 油品銷售行業(yè)應(yīng)用敏捷開發(fā)的條件分析
以S.W.O.T的視角分析,從優(yōu)勢上來講,擁有高度重視信息化建設(shè)的領(lǐng)導(dǎo)班子,信息化認(rèn)識水平較高,同時,經(jīng)過多年的積累與發(fā)展,己擁有了一定規(guī)模的信息化基礎(chǔ)和強大的開發(fā)管理團(tuán)隊,可以支撐信息化道路走得更深遠(yuǎn);其次,說到弱點,目前石油行業(yè)可開發(fā)以及正在開發(fā)的信息項目越來越多,而缺乏一個集成化的平臺,一個可以高效的管理多個項目進(jìn)展情況的平臺,在這個平臺上,可以收集、整理、解決、跟進(jìn)用戶的需求與反饋。
在互聯(lián)網(wǎng)環(huán)境下,各企業(yè)的經(jīng)營形式發(fā)生了巨大的轉(zhuǎn)變,作為成品油銷售企業(yè),為了適應(yīng)市場的發(fā)展和變化,在業(yè)務(wù)經(jīng)營方式上也需要進(jìn)行一系列的創(chuàng)新。諸如微信營銷平臺、網(wǎng)上非油品電子商城以及一些基于網(wǎng)絡(luò)的大數(shù)據(jù)分析系統(tǒng)等,這類基于互聯(lián)網(wǎng)軟件在管理上要求產(chǎn)品的交付時間短、變更及時,采用適應(yīng)性的計劃等,而迭代開發(fā)正好滿足了以上的需求,這是應(yīng)用Scrum的機遇。如果在軟件開發(fā)與管理上采取Scrum的方式,仍存在著一些自身問題及挑戰(zhàn)(Threat),那么,首先就是觀念的轉(zhuǎn)變,需要加強團(tuán)隊建設(shè),在敏捷管理方法中,團(tuán)隊成員堅守敏捷開發(fā)原則的素質(zhì)是至關(guān)重要的,加強對團(tuán)隊成員關(guān)于敏捷開發(fā)方式方法培訓(xùn)的同時要加強團(tuán)隊責(zé)任感。其次要建立團(tuán)隊之間積極溝通的機制,充分的溝通可以確保團(tuán)隊對需求的理解,可以吸取更多利于團(tuán)隊建設(shè)的建議,使整個團(tuán)隊可以目標(biāo)一致,更高效率的完成工作。
3.3 如何實踐敏捷開發(fā)
在實際的應(yīng)用中,可以依據(jù)當(dāng)前項目的大小、類型將Scrum和看板兩種方法論結(jié)合在一起。從關(guān)鍵用戶參與度考慮,整體信息項目及信息系統(tǒng)建設(shè)可以按照Scrum的方式分幾段進(jìn)行管理,具體任務(wù)的劃分由項目的總體負(fù)責(zé)人依據(jù)項目的規(guī)模及時間要求把握,這樣可以避免產(chǎn)品交付周期長、用戶需求理解不透徹并存在誤解,一旦出現(xiàn)錯誤變更需要返工的工作量巨大等不足。同時在每個階段中,團(tuán)隊成員的管理結(jié)合看板模式,每個成員的任務(wù)以可視化的方式展現(xiàn),每個Sprint內(nèi)的任務(wù)計劃完成情況由指定團(tuán)隊負(fù)責(zé)人負(fù)責(zé),每日由團(tuán)隊負(fù)責(zé)人參加每日Scrum例會,向產(chǎn)品負(fù)責(zé)人匯報本團(tuán)隊工作完成情況,以及遇到的瓶頸和問題。這樣,由于看板的在制品限制原則,可以避免過多的用戶需求再轉(zhuǎn)到下一個Sprint,保證項目整體的完成質(zhì)量。
綜上所述,作為傳統(tǒng)行業(yè)的油品銷售行業(yè),想要在經(jīng)濟(jì)形勢發(fā)生巨大變化的今天占有一席之地,必須適應(yīng)當(dāng)今瞬息萬變的互聯(lián)網(wǎng)環(huán)境。為了對客戶多樣、多變的需求做出及時、快速、準(zhǔn)確的響應(yīng),就必須在信息平臺及信息系統(tǒng)建設(shè)上融入敏捷開發(fā)的管理思想與模式,讓信息化建設(shè)過程更加靈活開放,發(fā)揮油品銷售行業(yè)軟件對油品業(yè)務(wù)強有力支撐的現(xiàn)實作用,更好地為油品銷售企業(yè)經(jīng)營和管理服務(wù)。
2017-05-03。
李雅彬(1982-)女,本科,畢業(yè)于天津工業(yè)大學(xué),工程師,現(xiàn)從事信息系統(tǒng)管理工作。