0
(圖為中國工程院院士倪光南)
引言:
根據(jù)倪光南院士 11 月 17 日在“飛算全自動軟件工程平臺發(fā)布會”上的演講中介紹,我國的軟件和信息服務(wù)業(yè)總量世界第二,2019 年達到 7 萬多億元人民幣。從規(guī)模上來看,我們的軟件人才在世界上僅次于美國,2019 年我國軟件從業(yè)人員為 673 萬人,在世界上僅次于美國。每年中國畢業(yè)生的數(shù)量世界第一,其中大量都是軟件人才,這些使得我國軟件從業(yè)人員可以很快地達到世界第一。
倪院士同時指出,“盡管軟件行業(yè)增速很快,但我們?nèi)晕春芎媒鉀Q某些方面受制于人的問題,特別是一些基礎(chǔ)軟件,還有短板。例如操作系統(tǒng)、工業(yè)軟件等基礎(chǔ)軟件對外依存度大?!?nbsp;
具體到軟件開發(fā)自身的問題,“迄今為止,軟件行業(yè)作業(yè)方式落后,過度依賴人工,而這樣的依賴,會造成四個很明顯的痛點:項目成本高、開發(fā)周期長、代碼質(zhì)量低、團隊管理難?!?/p>
針對上面這些痛點,飛算科技提出了很好的解決方案,正在研制的“全自動軟件工程平臺”為解決軟件工程的這些痛點,提供了科學(xué)實踐的基礎(chǔ),對復(fù)雜的軟件工程開發(fā)提供了可靠和可行的工具,在各行各業(yè)進行產(chǎn)業(yè)互聯(lián)網(wǎng)和數(shù)字化轉(zhuǎn)型的時期,具有不可估量的意義。
本文回顧了從云計算產(chǎn)業(yè)在國內(nèi)落地以來,所經(jīng)歷的企業(yè)上云的歷程,以及技術(shù)推動下微服務(wù)和低代碼運動的興起,以及我國像飛算全自動軟件工程平臺這樣的自主軟件品牌,所做的創(chuàng)新和實踐。
(圖為國際歐亞科學(xué)院院士、國際歐亞科學(xué)院中國中心副主席張景安)
2008 年,王堅在阿里戰(zhàn)略會議上算了一筆賬。2007 年淘寶成交額是 600 億,什么時候能做到 1 萬億,以及到 1 萬億時需要花多少錢?
大家估算是 2012 年破萬億,如果按照淘寶客單價 100 塊,那么 1 萬億除以 100 塊,每年就有 100 億的交易量,每件商品需要 n 次搜索+瀏覽+圖片,然后再折算成需要購買多少 EMC 的存儲、多少 Oracle 的數(shù)據(jù)庫,以及多少臺 IBM 的機器。算下來,等到達到 1 萬億那一年,每一年都要付給這三家公司總共 200 億元。
即使付了 200 億,也不一定能支持,全世界還沒有人做到過這個規(guī)模。
算完這個,馬云當(dāng)即就表示,即使當(dāng)了褲子,也要把阿里云做出來。在場所有的人都支持。
2009 年王堅開始做阿里云。到 2014 年,已經(jīng)做到了前 5 名。阿里云做起來之后,自己用當(dāng)然不夠劃算,需要鼓動客戶來用,這樣就可以分攤掉成本。
先開始是親戚用,比如支付寶用阿里云。然后一些建站的小客戶用。2015 年,趕上了一些大客戶,比如快的對滴滴的大戰(zhàn),然后是新浪微博,這些互聯(lián)網(wǎng)客戶體量非常大,互聯(lián)網(wǎng)用云也是剛需,是上云的第一波。
但互聯(lián)網(wǎng)公司本身技術(shù)能力強,忠誠度低,傳統(tǒng)企業(yè)上云,成了兵家必爭之地。
數(shù)字化轉(zhuǎn)型
傳統(tǒng)企業(yè)上云,首先得完成數(shù)字化轉(zhuǎn)型。
所有的企業(yè)做數(shù)字化轉(zhuǎn)型,除了要去把以前的數(shù)據(jù)做歸攏以外,更多的是想什么?打開互聯(lián)網(wǎng),用互聯(lián)網(wǎng)的流量進來,不管是零售業(yè)還是制造業(yè),不管線上線下都想這么玩。通過數(shù)字化轉(zhuǎn)型+云,永遠在線,這樣就能持續(xù)帶來客戶,降低獲客成本。
但是阿里賣的是云。怎么數(shù)字化轉(zhuǎn)型,涉及各行各業(yè)太復(fù)雜,如果一定要找阿里,阿里一般會把這種單子分包給它的集成商。這個集成商就是大大小小的軟件開發(fā)企業(yè)。據(jù)艾瑞咨詢《中國軟件開發(fā)行業(yè)研究報告》,2019 年,中國這樣的軟件開發(fā)企業(yè)超過了 4 萬家。
軟件開發(fā)企業(yè)分為兩類。一類是跟機器打交道的,比如做游戲、做驅(qū)動、做電路設(shè)計、做嵌入式;另外一類是跟業(yè)務(wù)打交道的,主要就是企業(yè)信息化和數(shù)字化相關(guān)的軟件,企業(yè)內(nèi)部最典型的就是 ERP ,企業(yè)外部最典型的就是電商網(wǎng)站或者客戶服務(wù)系統(tǒng)。
涉及數(shù)字化轉(zhuǎn)型的,主要是后一類跟業(yè)務(wù)打交道的。
業(yè)務(wù)的特點就是計劃趕不上變化,需求迭代超過了傳統(tǒng)軟件開發(fā)自身的迭代速度。時間就是金錢,企業(yè)對軟件開發(fā)的敏捷性需求是無止境的。
最后一公里
然而,這些軟件開發(fā)企業(yè)其實自己就存在“數(shù)字化轉(zhuǎn)型”的問題。因為寫代碼這個事情,看起來很高深,充滿著創(chuàng)造性,其實是個手藝活。
就像寫文章是一千個人就有一千種寫法,寫代碼也是一樣的。
編程語言是用來定義算法和數(shù)據(jù)結(jié)構(gòu)的,主要的對象是計算機。然后由編譯程序編譯成計算機可理解的二進制碼。所以定義一種編程語言,核心就是編譯器。
隨著系統(tǒng)越來越復(fù)雜,大部分的系統(tǒng)都很難一個人完成,需要團隊一起完成,而且需要持續(xù)的迭代。寫代碼這門手藝,就變成了一項軟件工程,如何協(xié)調(diào)多人也就變成了軟件管理。
軟件工程的一代宗師邁克爾·杰克遜(Michael A. Jackson,不是那位歌壇巨星),《程序設(shè)計原理》的作者,曾哀嘆軟件行業(yè)普遍缺乏專業(yè)性,充滿了業(yè)余人員,“手中有個錘子,看到什么都是釘子”,誰都可以開發(fā)性命攸關(guān)的軟件。
人們經(jīng)常會比較軟件開發(fā)生產(chǎn)率和硬件制造生產(chǎn)率。后者在 20 年內(nèi)至少翻了 1000 倍,從勞動密集型的裝配車間,到自動化的流水線工業(yè)。而前者仍然是手工作坊。
著名的《人月神話》一書中,闡釋了軟件系統(tǒng)的復(fù)雜性。在規(guī)模上,軟件實體可能比任何由人類創(chuàng)造的其他實體更復(fù)雜,至少在語句的級別上,沒有任何部分是相同的。如果有相同的情況,我們就會把它合并成供調(diào)用的子函數(shù)。在這個方面,軟件系統(tǒng)與電腦、建筑或者汽車都大不相同,后者往往存在大量重復(fù)的部分。
目前大部分的系統(tǒng)都是多人開發(fā),先拆成不同的模塊分散開發(fā),然后再合并代碼,這時候也會導(dǎo)致非常多的問題。這么多人寫出來的東西,質(zhì)量到底怎么樣,可以打個大大的問號。
除了復(fù)雜性,軟件開發(fā)中最根本的任務(wù)是構(gòu)建在規(guī)格說明、需求設(shè)計之上的復(fù)雜概念結(jié)構(gòu),次要任務(wù)才是使用編程語言來表達這個抽象實體。這和數(shù)學(xué)和物理學(xué)完全不同,數(shù)學(xué)家和物理學(xué)家可以為復(fù)雜的現(xiàn)象建立簡化的模型,并通過試驗來驗證。因為這些模型中忽略的復(fù)雜度,不是被研究對象的根本屬性。軟件則恰恰相反,復(fù)雜度是本質(zhì)特性,不能被忽略。
由于軟件的復(fù)雜度,造成了很多軟件開發(fā)的經(jīng)典問題。團隊之間的溝通非常困難,導(dǎo)致了產(chǎn)品瑕疵、進度延遲、成本超支;列舉可能的狀態(tài)變得十分困難,影響了軟件產(chǎn)品的可靠性;由于函數(shù)的復(fù)雜性,造成了程序難以閱讀和使用;由于結(jié)構(gòu)的復(fù)雜,造成很多安全機制狀態(tài)上的不可見性。
系統(tǒng)越來越復(fù)雜,代碼越來越看不懂,還有很多管理上的噩夢。
比如,怎么適應(yīng)客戶需求的瞬息萬變,如何管理不同層級的開發(fā)人員,離職了怎么交接,諸此種種難題,成了企業(yè)數(shù)字化轉(zhuǎn)型的“最后一公里”。
低代碼和微服務(wù)
為了解決軟件開發(fā)的經(jīng)典難題,計算機科學(xué)家在不懈努力。主要的理論就是用有力的工具來輔助人工勞動,提高勞動生產(chǎn)率,改善工作質(zhì)量,由此產(chǎn)生了 CASE(Computer-Aided Software Engineering),即計算機輔助軟件工程。
最簡單的工具,比如產(chǎn)生圖表的自動圖形工具。在 Excel 里就提供這樣的工具,不用編程,拖拽鼠標就能完成復(fù)雜的圖表。
低代碼(low-code)成為新的流行語,本質(zhì)上就是希望結(jié)合可視化開發(fā)技術(shù)和代碼生成來減少手動編碼,以此來加快應(yīng)用程序交付。事實上,軟件工程的整個歷史都是關(guān)于提高抽象層次的。
低代碼可以追溯到模型驅(qū)動工程。1991 年,在著名的 CAiSE 會議的第 1 版中,可以找到這樣的論文:“給定最終模型,可以自生成完整的計算機化信息系統(tǒng)”。
像 Google 的 AppMaker ,微軟的 PowerApps ,都是新一代的低代碼軟件開發(fā)平臺。
2020 年 10 月 19 日,在加拿大的蒙特利爾,舉辦了第一屆低代碼研討會。會議是 ACM / IEEE 舉辦的 MODELS 2020 的一部分。
除了低代碼,還有一個浪潮就是微服務(wù)(Microservices)。因為大部分的軟件都已經(jīng)在云上,2005 年,Peter Rodgers 博士首先提出了 Micro-Web-Service 的概念,核心想法是讓服務(wù)由類似 Unix 管道的訪問方式使用,復(fù)雜的服務(wù)背后是使用簡單的 URI 來開放接口。
2014 年,微服務(wù)的概念形成。微服務(wù)就是單一應(yīng)用程序構(gòu)成的小服務(wù),服務(wù)依照業(yè)務(wù)功能設(shè)計,以全自動的方式部署,與其他服務(wù)使用 HTTP API 通信。服務(wù)也具備最小的規(guī)模集中管理能力(例如 Docker),服務(wù)可以用不同的編程語言與數(shù)據(jù)庫等組件實現(xiàn)。
雖然聽起來簡單,但是實現(xiàn)微服務(wù)體系結(jié)構(gòu)非常困難。目前最流行的有兩個框架,一個是 Netflix 開放了一個 Java 平臺的開源框架,叫 Spring;另外一個是 Google 設(shè)計并捐贈給 Linux 基金會的 K8s 。
Spring 下,又有一個有名的 Spring Boot ,可以輕松創(chuàng)建獨立的、生產(chǎn)級別的,基于 Spring 的應(yīng)用程序,并且運行它們。它和著名的虛擬化軟件 VMware 背后是同一家公司。
從人治到法治
2016 年,陳定瑋手下有 150 位工程師,給銀行、金融這樣的大客戶做軟件開發(fā)。當(dāng)時,微服務(wù)正在興起,陳定瑋卻經(jīng)歷著各種陣痛。
陳定瑋的經(jīng)歷頗為傳奇。他之前是臺灣特種部隊海豹隊隊員,那時候的臺灣青年都有服兵役的義務(wù)。他因此經(jīng)歷過魔鬼式的一年訓(xùn)練和兩年的軍隊緊急任務(wù)的考驗。
大家都叫他 Peter ,陳定瑋是 1978 年生人,在他后來讀書的時候,電腦其實蠻貴的。所以開發(fā)軟件的時候,會想盡辦法去節(jié)省資源,比如把內(nèi)存分區(qū)分片,讓程序變得更優(yōu)化,追求軟件的最佳實踐,要盡善盡美。
2016 年,各類業(yè)務(wù)需求不斷,人員不斷新增,項目經(jīng)常趕工。
因為趕工,業(yè)務(wù)需求實現(xiàn)大多沒有編寫設(shè)計方案文檔,只能靠人工點檢代碼;跟業(yè)務(wù)的溝通成本高,開發(fā)人員理解需求不到位就直接寫代碼,導(dǎo)致常常要返工。團隊成員技術(shù)能力參差不齊,代碼質(zhì)量也就無法保證。
項目管理成本高,人員離職,新人接手維護時間成本高??偟膩碚f,Peter 要在 4 個象限來回折騰。
一是技術(shù),要負責(zé)頂層設(shè)計(選型、架構(gòu)、性能),技術(shù)迭代、運維;二是人力,要做管理、溝通、招聘,還要考慮知識經(jīng)驗的累積;三是基礎(chǔ)建設(shè),包括軟件,例如開發(fā)工具的選擇,硬件的投入;四是質(zhì)量與安全,軟件既需要穩(wěn)定,也需要安全,防止信息泄露、黑客攻擊。
到了 2016 年底,Peter 開始反思軟件工程體系管理問題,在長達一年的時間里,白天也不能影響工作,之前在深夜 12 點到凌晨 5、6 點,犧牲掉睡覺時間,他開啟了飛算全自動軟件工程平臺研發(fā)的征程。
辦公室里擺了一張小床,累了就在這里睡覺。在項目初期有一年多的時間里,80% 的時間都回不了家,導(dǎo)致妻子幾次提出要離婚。
陳定瑋和團隊一做就是 4 年。目標非常宏大而直接,就是實現(xiàn)“全自動軟件工程平臺”,實現(xiàn)“你輸入流程圖,我實現(xiàn)自動開發(fā)、自動測試、自我運維”,告別代碼,用標準化的流程操作,用托拉拽的方式實現(xiàn)開發(fā)。
讓軟件工程行業(yè)的作業(yè)方式從“人治”變成“法治”,并針對行業(yè)痛點逐一擊破,實現(xiàn)“降低項目成本、提升開發(fā)效率、保證代碼質(zhì)量、簡化團隊管理”。
研發(fā)過程中,Peter 也一直在尋找是否有合適的對標產(chǎn)品,這樣可以不用重復(fù)造輪子。但是他發(fā)現(xiàn)大部分的低代碼工具都是更偏向于前端開發(fā),而不是后端微服務(wù)的領(lǐng)域。
這樣造成了這些工具一般只能完成固定類型的工作場景,比如做客戶關(guān)系管理軟件(CMS),或者項目管理系統(tǒng),或者問卷調(diào)查,簡易收集數(shù)據(jù)。
還有一類通過可視化工具為業(yè)務(wù)系統(tǒng)建模,產(chǎn)生業(yè)務(wù)描述文件,通過解析器直接解析業(yè)務(wù)描述文件運行。但做不到封裝成組件,只能算作低代碼,并不能完全實現(xiàn)零代碼。
最開始的時候,團隊對這個項目是非常明顯的抵觸的態(tài)度,因為這個項目的研發(fā)的結(jié)果就是“代碼消失”,而“代碼消失”,則等于取代了他們一部分的工作。
最開始的時候 Peter 只能單打獨斗,大家都不理解,只能不斷地做思想工作,告訴他們不要沉浸下反復(fù)的敲代碼當(dāng)中,做個低價值的“碼農(nóng)”,而是要干掉自己,從敲代碼的工作中解脫出來,去思考更高層面的事情。
其實有的時候,說敲代碼也談不上,因為網(wǎng)上可以搜到各種各樣的開源代碼。遇到一些小功能模塊,拷貝黏貼變成了常態(tài)。
用開源代碼是把雙刃劍。它節(jié)省了開發(fā)成本,卻使得開發(fā)人員得以偷懶,知其然不知其所以然。
這樣造成幾個影響,一是連 CTO 也搞不清究竟有多少代碼是自己團隊開發(fā)人員寫的,有多少又是開源來的,造成了軟件的知識產(chǎn)權(quán)問題;二是開源代碼一開始可以運行,但是遇到大并發(fā)這種情況,系統(tǒng)是否扛得?。蝗谴a的安全問題,比如是否有SQL注入等問題。
對于需要高并發(fā)、穩(wěn)定、安全的企業(yè)應(yīng)用,比如銀行信息安全要求高的客戶,系統(tǒng)崩潰將會是大的災(zāi)難。而軟件開發(fā)企業(yè),一旦因為代碼質(zhì)量管控能力不夠,失去這樣的客戶,對公司將是聲譽的大災(zāi)難。
想要解決這些問題,只能從根本出發(fā),徹底消滅掉代碼,不僅要做到前端,而且還要做到后端的微服務(wù)開發(fā),個中的難度,只有一次次的實踐,保持初心,堅持不懈。
(圖為格力電器董事長兼總裁董明珠)
飛算全自動軟件工程平臺
2017 年 - 2020 年,飛算全自動軟件工程平臺在不斷的迭代,確定解決方案。
其中有幾個重要的里程碑,0.8 版本上線時,完成一個創(chuàng)新產(chǎn)品,并落地實施。0.9 版本上線時,功能更加完善,易用性大幅提升。1.0 版本上線時,全面提升了軟件工程能力與實踐,開始打造可信的高質(zhì)量產(chǎn)品。
飛算全自動軟件工程平臺的核心技術(shù)之一就是把流程圖編譯成微服務(wù)。開發(fā)的過程變得超級簡單,就是把業(yè)務(wù)畫成流程圖就行了。
誰對流程圖最熟?業(yè)務(wù)人員。軟件開發(fā)的生產(chǎn)力工具,回歸到了真正的需求者。對于大部分的要求前端和后端的軟件需求,代碼消失了。除了游戲、驅(qū)動程序這樣和底層機器打交道的,只要是 Java 能做的應(yīng)用系統(tǒng),都可以通過飛算全自動軟件工程平臺來實現(xiàn)。因為飛算全自動軟件工程平臺本身是用 Java 來開發(fā)。
其實 Python 也可以,飛算全自動軟件工程平臺有個組件的概念,編程語言被隱藏在組件下面。有多少組件,就能做多少應(yīng)用。
用流程圖設(shè)計之后,飛算全自動軟件工程平臺自動生成項目部署包+執(zhí)行服務(wù)包,可執(zhí)行文件是基于 Spring Boot 的可執(zhí)行 JAR 包,客戶下載項目部署包+執(zhí)行服務(wù)包,放到服務(wù)端部署即可,與原來的方式一模一樣。
流程圖設(shè)計直接就在瀏覽器里面完成,不能搭建開發(fā)環(huán)境,連上網(wǎng),打開瀏覽器,就可以開發(fā)軟件。
軟件開發(fā)過程,從人治變成法治。系統(tǒng)越復(fù)雜,軟件開發(fā)的成本降低越明顯。而且再也沒有代碼泄露的風(fēng)險了。
四年鑄一劍。2020 年 11 月 17 日,飛算全自動軟件工程平臺在北京國家會議中心正式發(fā)布。Peter 玩了一個更酷的挑戰(zhàn),就是在發(fā)布會現(xiàn)場做一個現(xiàn)場挑戰(zhàn)賽,邀請一個 IT 團隊用傳統(tǒng)作業(yè)方式,來 PK 飛算全自動軟件工程平臺,從實戰(zhàn)中體現(xiàn)及驗證產(chǎn)品價值。而且這個挑戰(zhàn)賽還要繼續(xù)懸賞“百萬獎金”,一直擺下擂臺。
這種極限挑戰(zhàn),也許已經(jīng)根植在這位前海豹隊隊員的骨髓中。
(圖為陳定瑋在飛算全自動軟件工程平臺發(fā)布會上)
對話飛算陳定瑋
AI 科技評論:目前飛算全自動軟件工程平臺,在后端的微服務(wù)開發(fā)上,已經(jīng)實現(xiàn)了 100% 的零代碼?
陳定瑋:是的。用戶也不用關(guān)注微服務(wù),平臺自動提供內(nèi)建的微服務(wù)能力。穩(wěn)定性比用戶自己使用微服務(wù)框架要高。不需要用戶深入研究微服務(wù)框架的學(xué)習(xí),以及出現(xiàn)各類問題難以定位及解決的窘境。
AI 科技評論:如果有更復(fù)雜的系統(tǒng),飛算全自動軟件工程平臺也能實現(xiàn)全自動開發(fā)嗎?
陳定瑋:對于更復(fù)雜的需求,比如復(fù)雜的 SQL 查詢,這些都可以做成組件。組件的豐富程度,決定對需求的包容和擴展性。但系統(tǒng)開發(fā)者也不可能考慮到所有的需求,所以有了組件的“眾創(chuàng)平臺”的設(shè)計。像知識圖譜這樣的AI技術(shù),就可以做成組件。未來的設(shè)想是,組件可以交易,人人為我,我為人人。
AI 科技評論:目前已經(jīng)有客戶在使用飛算全自動軟件工程平臺了嗎?
陳定瑋:大概有十幾家客戶已經(jīng)在試用,而且客戶反饋降本增效非常明顯。飛算的質(zhì)量體系根據(jù)阿里公約,相當(dāng)于用自動化開發(fā)實現(xiàn)阿里P6、P7的開發(fā)能力。同時也實現(xiàn)了等保和國密的要求。
AI 科技評論:飛算全自動軟件工程平臺,軟件工程包含比較廣,比如軟件開發(fā)、軟件測試、軟件運維,目前飛算全自動軟件工程平臺實現(xiàn)到了什么程度?
陳定瑋:飛算全自動軟件工程平臺并沒有改變軟件工程的體系,還是需求、開發(fā)、測試、上線、運維。
目前主要實現(xiàn)的還是軟件開發(fā)的后端環(huán)節(jié)。目前自動化測試和自動化運維功能基本都已經(jīng)實現(xiàn)了 50% ,接下來,會加入前端的自動化開發(fā)。
以前是開發(fā)需要 3 個月,測試就需要 3 個月,測試這部分的時間可以大大縮短,因為開發(fā)問題自動化了,bug 率就大大降低了。自動化運維則大大節(jié)省了人力,目前我們后臺有 6000 臺虛機,只需要 3 個人就可以輪班管理。
AI 科技評論:飛算全自動軟件工程平臺的目標客戶是誰?
陳定瑋:其實誰都可以用,像智能投顧這類公司,甚至沒有工程師,也能玩轉(zhuǎn)軟件開發(fā)。有了想法,先做出來,不斷驗證,這就是互聯(lián)網(wǎng)的思維。
但最迫切的還是中小型軟件公司,我所謂的中小型軟件公司指的是注冊資金小于 1 億的企業(yè)。
對于這樣的公司,比如要養(yǎng)一個 25 人的互聯(lián)網(wǎng)技術(shù)開發(fā)團隊,每年都花 400 萬到 500 萬的人力成本。而且需要不斷的和客戶改需求,甚至駐場開發(fā)。通過飛算全自動軟件工程平臺,企業(yè)的降本增效是驚人的。
AI 科技評論:那飛算全自動軟件工程平臺本身怎么贏利呢?
陳定瑋:目前設(shè)想的主要是按照工具的 SAAS 收費模式。客戶自己配置好云服務(wù)器可訪問的 IP 或域名即可。我們沒有提供云服務(wù)器這部份的服務(wù)。
雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。