軟件質(zhì)量標(biāo)準(zhǔn)助敏捷開(kāi)發(fā)與DevOps更上一層樓
敏捷開(kāi)發(fā)從最初作為革命性的軟件開(kāi)發(fā)管理方法,如今逐漸成為了一種軟件開(kāi)發(fā)的新常態(tài)。由于使得開(kāi)發(fā)工作更有效率,敏捷開(kāi)發(fā)在過(guò)去的十年間優(yōu)勢(shì)盡顯:無(wú)論用戶還是開(kāi)發(fā)團(tuán)隊(duì),都能更快更好地達(dá)成工作目標(biāo)。
為什么說(shuō)敏捷開(kāi)發(fā)與DevOps是天生一對(duì)
隨著DevOps越來(lái)越流行,敏捷開(kāi)發(fā)的吸引力也與日俱增。即使它們并不相同,也始終相輔相成:一個(gè)團(tuán)隊(duì)如果完全沒(méi)有實(shí)踐過(guò)敏捷開(kāi)發(fā),DevOps也很難做得十分優(yōu)秀,反之亦然。
DevOps的確可以被看作是敏捷開(kāi)發(fā)原則的一種延伸。敏捷開(kāi)發(fā)這一概念雖然早于DevOps誕生,但正因?yàn)橛辛薉evOps相關(guān)實(shí)踐,敏捷開(kāi)發(fā)才得以發(fā)揮更大的用途。
敏捷開(kāi)發(fā)的概念在運(yùn)營(yíng)與其他非IT領(lǐng)域中也被反復(fù)應(yīng)用著,近年來(lái)DevOps也展現(xiàn)出了超越開(kāi)發(fā)團(tuán)隊(duì)范疇的優(yōu)勢(shì),而它對(duì)于企業(yè)級(jí)全球IT團(tuán)隊(duì)的幫助還是最為顯著的。Gartner咨詢公司近期就建議,IT部門應(yīng)該采取敏捷開(kāi)發(fā)的實(shí)踐來(lái)幫助聚焦創(chuàng)新,同時(shí)采取DevOps確保新軟件發(fā)布的安全與穩(wěn)定。
因此,對(duì)于新一代軟件的拓展與應(yīng)用來(lái)說(shuō),敏捷開(kāi)發(fā)與DevOps都是密不可分的。
快速與風(fēng)險(xiǎn)的平衡點(diǎn)
敏捷開(kāi)發(fā)與DevOps共有的一項(xiàng)優(yōu)勢(shì)體現(xiàn)在靈活度上,它們能夠讓開(kāi)發(fā)者面對(duì)用戶不斷變化的需求作出響應(yīng),這一點(diǎn)在當(dāng)今的數(shù)字化社會(huì)中彌足珍貴。敏捷開(kāi)發(fā)縮短了從新需求產(chǎn)生到將相應(yīng)新功能交付的周期。DevOps則使交付速度得以提升。
然而,實(shí)踐敏捷開(kāi)發(fā)的團(tuán)隊(duì)?wèi)?yīng)該時(shí)刻牢記,如此快速的更新必須以堅(jiān)實(shí)的IT基礎(chǔ)與牢固的軟件結(jié)構(gòu)作為支撐。不僅如此,軟件的開(kāi)發(fā)還需要在可靠的架構(gòu)中進(jìn)行,并且這種架構(gòu)能夠時(shí)刻靈活地作出調(diào)整與改進(jìn),以保持敏捷性。
乍看之下,這種對(duì)架構(gòu)的嚴(yán)格要求似乎違反了敏捷開(kāi)發(fā)的原則與方法論,實(shí)則不然。一個(gè)合理的架構(gòu)(至少在軟件領(lǐng)域)并不是一塵不變的,而是不斷演化的動(dòng)態(tài)過(guò)程。一款軟件也不可能從開(kāi)發(fā)之初就做到盡善盡美。
重要的是,開(kāi)發(fā)團(tuán)隊(duì)需要時(shí)常監(jiān)測(cè)軟件系統(tǒng)架構(gòu),評(píng)估其效率并且識(shí)別違規(guī)組件或者潛在的安全漏洞。采用DevOps實(shí)踐與相關(guān)工具可以對(duì)軟件進(jìn)行自動(dòng)檢查,以判斷是否達(dá)到相關(guān)準(zhǔn)則,以及相關(guān)更新是否帶來(lái)額外的風(fēng)險(xiǎn)與潛在的副作用。如果開(kāi)發(fā)團(tuán)隊(duì)既想滿足快速的目標(biāo),又希望回避風(fēng)險(xiǎn),那么軟件系統(tǒng)架構(gòu)必須時(shí)常更新,并且易于生成。如此一來(lái),它們才能夠很好地支持日常的軟件的更新與長(zhǎng)期的適應(yīng)性調(diào)整。
確保軟件質(zhì)量的標(biāo)準(zhǔn)
由于縮短了開(kāi)發(fā)周期,利用敏捷開(kāi)發(fā)能夠很好地滿足需求并且軟件能夠進(jìn)行快速適應(yīng)與調(diào)整。DevOps則能夠幫助提升質(zhì)量,并且提供理想的條件對(duì)軟件的自動(dòng)化與Fail-fast進(jìn)行監(jiān)測(cè)。
盡管敏捷開(kāi)發(fā)與DevOps有著以上諸多好處,但它們并不能保證軟件的質(zhì)量與較低的技術(shù)依賴性。即使目前廣為人知的Fail-fast方法能夠快速地發(fā)現(xiàn)軟件缺陷,IT部門還需要確保故障產(chǎn)生的影響與損失降到***。而這很難通過(guò)被動(dòng)的方式實(shí)現(xiàn)。
開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)該采取更為主動(dòng)的方式預(yù)先避免可能發(fā)生的問(wèn)題,利用相關(guān)工具比照國(guó)際通行的質(zhì)量標(biāo)準(zhǔn),對(duì)代碼語(yǔ)句結(jié)構(gòu)、設(shè)計(jì)結(jié)構(gòu)進(jìn)行檢測(cè),防患于未然。美國(guó)軟件質(zhì)量聯(lián)盟(CISQ)制定的標(biāo)準(zhǔn)就是一個(gè)很好的選擇。CISQ標(biāo)準(zhǔn)考量軟件的總體架構(gòu)藍(lán)圖,并且能夠用于管理外包開(kāi)發(fā)商的協(xié)議中,識(shí)別代碼與軟件開(kāi)發(fā)架構(gòu)中存在的主要問(wèn)題。
采用這樣的標(biāo)準(zhǔn)體系,就能夠確保軟件質(zhì)量并且?guī)椭鷪F(tuán)隊(duì)發(fā)現(xiàn)軟件中存在的風(fēng)險(xiǎn)。這些風(fēng)險(xiǎn)在軟件開(kāi)發(fā)過(guò)程中往往不易被察覺(jué),一旦爆發(fā)則會(huì)導(dǎo)致系統(tǒng)突然崩潰。其實(shí),開(kāi)發(fā)團(tuán)隊(duì)只要對(duì)質(zhì)量問(wèn)題稍加關(guān)注,便能獲得長(zhǎng)期穩(wěn)固的應(yīng)用軟件架構(gòu),何樂(lè)而不為呢?
解決老舊技術(shù)問(wèn)題
由于軟件通常是大型應(yīng)用系統(tǒng)的一部分,開(kāi)發(fā)團(tuán)隊(duì)時(shí)常需要平衡老舊技術(shù)與敏捷開(kāi)發(fā)之間的矛盾。在許多情況下,這些陳舊的軟件技術(shù)由不熟悉敏捷開(kāi)發(fā)的團(tuán)隊(duì)負(fù)責(zé)維護(hù),涉及到的技術(shù)也沒(méi)有專門為敏捷開(kāi)發(fā)或DevOps進(jìn)行過(guò)優(yōu)化。同樣的,敏捷開(kāi)發(fā)團(tuán)隊(duì)在搭建與老舊技術(shù)相連的新組件時(shí),對(duì)自身受到的局限性也知之甚少。
這就容易導(dǎo)致工作流出現(xiàn)問(wèn)題,并且大大提高了項(xiàng)目的風(fēng)險(xiǎn)。為了解決這個(gè)問(wèn)題,許多團(tuán)隊(duì)采取了Agile-DevOps方法對(duì)老舊技術(shù)進(jìn)行改造,從而在運(yùn)營(yíng)層面獲得更多的把控度。
開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)該從架構(gòu)的角度出發(fā),在新組件與老舊組件之間建立平穩(wěn)、高效與清晰的相互關(guān)系。這種方法也能夠幫助開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)對(duì)老舊的、沒(méi)有記錄在案的代碼,并且確保新的前端服務(wù)不會(huì)過(guò)度觸發(fā)老舊的后端應(yīng)用。
未來(lái)的挑戰(zhàn)
2017年,各個(gè)開(kāi)發(fā)團(tuán)隊(duì)面臨的主要挑戰(zhàn)將會(huì)是如何將全面的、構(gòu)架與系統(tǒng)級(jí)的視角整合到現(xiàn)有的敏捷開(kāi)發(fā)與DevOps實(shí)踐中去。也許應(yīng)該將新功能的市場(chǎng)化暫且放在一邊,更多地關(guān)注系統(tǒng)層面的分析,讓敏捷開(kāi)發(fā)與DevOps發(fā)揮***的潛能。
如果將Fail-fast與系統(tǒng)層面的分析手段相結(jié)合,就能快速解決Bug并且積極地預(yù)防大型應(yīng)用軟件故障的發(fā)生。而實(shí)踐敏捷開(kāi)發(fā)與DevOps的團(tuán)隊(duì)若要更上一層樓,就必須采用例如CISQ的軟件質(zhì)量標(biāo)準(zhǔn),以提升軟件質(zhì)量、降低軟件風(fēng)險(xiǎn)與技術(shù)依賴度的思路來(lái)武裝自己,這對(duì)于項(xiàng)目本身與商業(yè)的成功都是至關(guān)重要的。