你在做軟體開發?據說有個AIDO 很好用……

不確定性一直都是系統建設的大敵。在工業革命引領的自動化生產線時代,一切生產都要以確定性的規格尺寸為前提。一輛汽車,哪怕是車長減少了10釐米,整條生產線都需要重新加以改造,更遑論加多一個座椅或加多一對負重輪。為什麼?傳統的工業生產是以明確的工業設計為前提,通過各種確定尺寸的零件、相應的模具和固化的加工單元組成相應的生產組織結構,所以我們稱它為剛性自動化生產線。

軟件工程也是一樣的道理。傳統的軟件開發模式是一幫軟件極客搞出來的,被稱為"瀑布法"或者是V model。核心走的就是剛性自動化生產線的思路。業務用戶首先要提出明確、無歧義、有時效性的業務需求,系統分析人員根據業務需求設計系統功能組件和系統整合策略,細化成為軟件架構設計、系統整合方案並進行分模塊開發。模塊開發完畢後從單元測試、集成測試、系統測試直到用戶接受度測試一級級往上擴展。

你在做軟件開發?據說有個AIDO 很好用……

傳統的軟件系統開發方式路線清晰,管控容易,但最大的前提就是需要業務需求清晰穩定。一旦需求發生變更,尤其是核心需求和關鍵功能\流程的調整,往往會給開發和架構帶來災難性的影響。就好像根據確定車型的生產流水線已經搭建起來了,產品經理說,麻煩把車加長10釐米。生產總監一定會兩手一攤說,給我三個月改造生產線吧。

一般情況下,程序員對產品經理動了殺心就是在傳統軟件開發方式+重大需求變更時發生的。

另外,傳統的系統開發路線的確清晰,但從設計到開發再到上線往往要經過漫長的等待。最要命的是,在等待期間需求不能隨意修改,術語叫做"需求凍結"或者是"需求窗口關閉"。但是在互聯網世界裡客戶的要求是不可能被凍結的,所以…用傳統的軟件開發方式玩互聯網,產品經理是會"仆街"的。

為了在瞬息萬變的互聯網行業裡活命,一些腦子機靈對軟件開發熟悉的產品經理搗鼓出了和傳統軟件開發流程完全不同的開發方式-敏捷開發(Agile Development)。

敏捷開發嘛,顧名思義,最大的特點就是快。那它是怎麼實現快速開發的呢?核心思想就是快速迭代,不斷優化,永遠在改進,永遠在發佈新版的路上。

你在做軟件開發?據說有個AIDO 很好用……

從圖中我們可以看到,敏捷開發的起點往往是並不非常清晰的業務需求。但隨著開發的進行和原型開發過程中與業務用戶的交互,核心的功能點逐漸清晰並形成測試用例。在完成最基本的核心功能後,系統就可以內部上線並供業務人員使用,讓業務人員吃"第一批的新鮮狗糧"(就是指剛出爐的自己的新鮮產品)。

業務人員在試用後認為基本達到業務目的,就可以小範圍開閘交給友好用戶使用。如果業務人員認為不夠成熟,那就會返工重新修改調整。我們看到的互聯網app經常是1-2周就有一個新版本發佈,往往就是採用這種"短平快"週期的敏捷開發模式,術語一般稱為"持續交付"。

所以有人形象地做了個比喻:從河岸這一側的A點到河岸那一側的B點,傳統開發就是設計橋樑,建造橋墩,鋪設橋板,按部就班;敏捷開發就是先用弓箭射一根線到對岸,然後線帶細繩,細繩帶粗繩,粗繩帶鋼纜,逐步把通行能力從螞蟻、老鼠,貓最後提升到人甚至汽車。

正是看到了這樣的優勢,除了互聯網行業之外,一些傳統的企業級應用開發廠商也逐步開始玩轉敏捷開發了,比如亞信科技。

2018年,亞信科技推出了自己的敏捷開發平臺——AIDO,這是一個很有意思的產品。為什麼說這個產品很有意思呢,因為它包含了絕大部分敏捷開發的要素,但又具有一般的敏捷開發不具有的優勢。

在敏捷開發體系中,測試是一個非常重要的環節。之所以重要,一方面是測試環節在敏捷開發體系中會非常前置,甚至在業務需求整理過程中就開始形成測試案例和測試場景/要素的定義。

另一方面,由於測試貫穿整個敏捷開發流程,所以大量的測試工作是以系統自動化的方式進行,而不是像以前一樣以手工方式完成。亞信科技的敏捷開發平臺裡嵌入了一個自測雲,裡面構建了分層自動化測試的框架。第一層是是靜態的代碼檢查,通過預設的測試規則檢查代碼中相對明顯的錯誤;第二層是單元的自動化測試,確保每個單元模塊滿足業務需求中各個應用場景的功能需要;第三層是接口的自動化測試,通過和人工智能引擎支撐的測試訓練模型的建立,幫助開發/測試人員從幾十萬上百萬行代碼中自動查找軟件的bug甚至各種極端條件下的系統反饋。這種自動化、智能且高效的測試方式在以前是不可想象的,能夠幫助企業軟件系統從開發質量、效能提升和缺陷預測這三個方面快速提高。

另一個重要的核心功能就是DevOps的支持。DevOps一般稱為"開發運維一體化"。在以前,砍死產品經理的通常是開發工程師。但你知道開發工程師自己通常被誰砍死嗎?你猜對了,一般砍死開發工程師的都是運維工程師,而且下手更狠。為什麼呢?因為開發工程師經常會給運維工程師留下各種傷天害理的運維難題。在產品管理系統中,有開發工程師把產品參數寫死在程序包裡,甚至還有野雞開發工程師把服務器名稱甚至IP地址寫死在程序裡。一旦換個網卡,系統就再也連不上了,你說這樣的開發工程師不砍死留著幹啥?

為了最大程度減少開發過程中對運維的各種坑害行為,最好的辦法就是"讓挖坑的人自己填坑",讓開發工程師同時完成系統運維的工作。

DevOps就是要求開發工程師同時兼備運維工程師的角色。在系統開發過程中,同步考慮運維面臨的各種挑戰,以同時兼顧開發和運維的需求,減少兩者之間的衝突。當然,這樣的身兼二職對開發工程師提出了更高的挑戰,但以此方式完成的軟件系統將大大降低運維的難度,併為未來的自動化運維創造條件。亞信科技的AIDO架構包含了完整的開發——測試——運維——監控一體化集成功能,能夠幫助技術人員從多角度應對業務功能實現過程中開發到運營的各種挑戰。

難能可貴的是,亞信科技的AIDO還包含了雙模的支撐方式:既支持傳統的瀑布型開發方式,也支持敏捷的快速迭代方式,甚至還可以支持一個大的軟件系統中不同組件採用不同的開發方式完成。數據庫作為傳統軟件系統中業務邏輯層的核心,AIDO還可以支持和數據庫的集成,數據庫和原代碼版本的集成,這是亞信科技新型開發平臺中最大的特點之一。

作為中國少有的大型企業級應用軟件系統的開發商,亞信已經完成了從企業軟件系統開發向互聯網軟件系統開發的轉型。我相信,亞信科技的AIDO系統的廣泛使用將大大減少產品經理的傷亡率,並進一步提升我國企業軟件系統開發和運維的水平。


分享到:


相關文章: