軟件將定義一切嗎?
摘要:本文指出軟件越來(lái)越重要,一些汽車(chē)公司和芯片公司正在變成軟件公司——軟件工程師數量已占到工程人員的一半。并探討了當今軟件的特點(diǎn)及構建軟件的基本思路。
本文引用地址:http://dyxdggzs.com/article/201605/291756.htm你是如何來(lái)到這座城市的?飛過(guò)來(lái)還是坐火車(chē)、汽車(chē)?各個(gè)城市都有一些監控軟件,有的監控交通工具,有的監控人,我們經(jīng)常想繞過(guò)它,因為不想被監控。
所以我們看到軟件無(wú)處不在。例如制造業(yè),無(wú)論是工業(yè)4.0,還是“中國制造2025”。我們還用軟件來(lái)進(jìn)行遠程通訊——智能手機再也不是手機,實(shí)際上是一個(gè)微型電腦,上面有很多軟件/應用。同時(shí)我們用軟件進(jìn)行很多金融服務(wù),包括轉帳、支付等。所以軟件是奏效的。但有時(shí)也不那么靈,例如一些金融軟件和汽車(chē)公司出的軟件問(wèn)題,曾造成了巨大損失。
很多人提到物聯(lián)網(wǎng),諸如將有多少傳感器植入,有多少汽車(chē)將無(wú)人駕駛,這些都是我們所預見(jiàn)到的未來(lái)。我們同時(shí)在之前做了一個(gè)調查,看各行各業(yè)誰(shuí)需要軟件。工程、醫療、ICT行業(yè)等是大家都想到的,還有很多沒(méi)想到的就是消費者、零售等。所以很多領(lǐng)域是高度依賴(lài)軟件的。
例如2015年BMW的軟件工程師超過(guò)了其他工程師的總合,所以汽車(chē)行業(yè)也變成了軟件行業(yè)。一些芯片公司也有越來(lái)越多的軟件工程師,盡管他們不想成為軟件公司,但是事實(shí)上他們已經(jīng)成為了。例如ADI公司的一位VP(副總裁)說(shuō):“我們已經(jīng)成為了軟件公司,問(wèn)題是我們的工程師還沒(méi)有意識到!”
寫(xiě)軟件只占軟件工作的7%
生產(chǎn)高質(zhì)量的軟件是復雜和困難的。寫(xiě)軟件非常重要,但是只占軟件工作的7%,真正的挑戰是滿(mǎn)足日趨增長(cháng)的系統需求,因為這個(gè)系統更加互聯(lián),使用云來(lái)收集大數據,我們如何建立高質(zhì)量的系統呢?同時(shí)我們的軟件質(zhì)量,還有我們利用目標實(shí)現之間的關(guān)系,即我們如何能夠按時(shí)去進(jìn)行產(chǎn)品投放,還有質(zhì)量、生產(chǎn)率、監管、合規等都受到影響。
現在軟件正在發(fā)生改變,它并不是靜態(tài)、一成不變的,必須隨著(zhù)環(huán)境的變化來(lái)改變。如果我們沒(méi)有提前做好準備當然也不知道未來(lái)會(huì )何去何從。盡管有很多預測是我們沒(méi)法提前很早做出來(lái)的,但是至少可以幫助我們去預計一些可能會(huì )出現的威脅。比如黑客攻擊等。
我們在進(jìn)行軟件開(kāi)發(fā)時(shí)候,我們要去思考到底有沒(méi)有把方方面面的信息都考慮進(jìn)去?當然我們希望這軟件可以使用一段時(shí)間,即使最老的軟件,也就50年的歷史,也就是說(shuō)軟件出現也不是特別早。那我們也會(huì )有一些供應商已經(jīng)有二十多年的歷史,他們至今所做的還是一些基礎的軟件,但是我們要對軟件進(jìn)行更新才能適應當前的變化。我們改變軟件,是為了能夠更好地使用或者匹配硬件,比如多核硬件等,或者讓我們來(lái)更好地利用當前最新的技術(shù)。因此,軟件必須要能夠得以調整滿(mǎn)足環(huán)境的變化,我們還會(huì )接到客戶(hù)的一些新的需求,以及政府、監管方面的需求,所以我們也都要去改變軟件,但是最重要就是軟件本身也應該改變,就像我們改變硬件一樣。
改軟件并不一定把它卸載
改變軟件并不一定要把軟件卸載或讓它退休,而是可以對它的某些模塊進(jìn)行更新。這跟硬件有所不同。有一些軟件可能每天都在更新,我們看到未來(lái)這種趨勢將會(huì )越來(lái)越明顯。比如無(wú)人駕駛的汽車(chē)軟件,可能每天都會(huì )更新。
圖1可以看到軟件開(kāi)發(fā)面臨的問(wèn)題,當然我們看到最下面的較粗的曲線(xiàn),就是我們理想的曲線(xiàn),我們希望在軟件開(kāi)發(fā)過(guò)程當中,到后期我所遇到的問(wèn)題,或者是宕機率越來(lái)越低,故障率越來(lái)越低。但是實(shí)際情況并非如此,有可能我們會(huì )受到其他因素的影響,我們可能不得不面臨這些問(wèn)題,所以隨著(zhù)時(shí)間的推移,我們軟件的功能會(huì )越來(lái)越差,它的故障率會(huì )越來(lái)越高。
我們再想想現在軟件的應用規模到底有多大?2009年4月,一本計算機雜志給出的軟件分類(lèi)如圖2所示。在這里可以看到,可見(jiàn)我們現在所使用的應用越來(lái)越多了,規模也越來(lái)越大,而且軟件的復雜程度也越來(lái)越高了。尤其現在很多開(kāi)源項目,大家都積極地參與其中。
但是有意思的是嵌入式軟件。在2005年之后,有越來(lái)越多嵌入式軟件誕生,特點(diǎn)是量身定制的。就像汽車(chē),這兩輛車(chē)可能硬件是一樣的,但是它們上面所搭載的軟件可能截然不同。
安全性等挑戰
如果你的軟件會(huì )被別人所操縱。別人可以直接看到這軟件的漏洞和軟件所運行的東西,所以對于機構、企業(yè),一定要去保障軟件的安全性,這是非常重要的。
當前我們所面臨的問(wèn)題是軟件無(wú)處不在。軟件嵌入到我們所使用的各種各樣的設備當中。軟件開(kāi)發(fā)寫(xiě)得不是很好,還有就是我們一些忽視的軟件,有時(shí)候我們并不知道,有一些軟件他們到底具有什么功能,他們到底是怎樣寫(xiě)成的。因為有些軟件開(kāi)發(fā)者已經(jīng)退休了。此外就是軟件的故障無(wú)疑會(huì )大大降低軟件的質(zhì)量。而且因為軟件安全性問(wèn)題出現得非???,有的是猝不及防。還有一些軟件遺留的代碼或者是遺留的系統?,F在我們看到我們的系統正在不斷發(fā)生變化,比如說(shuō)代碼之上不斷地更新系統,這系統可能已有二十多年的歷史,此外就是我們可能有一個(gè)基于構件的系統,我們需要使用一些新的技術(shù),包括云的環(huán)境等新技術(shù)。還有我們希望可以讓我們的系統適應并且可以在運行的過(guò)程當中不斷地去升級和凈化。
軟件系統的構建
以我與NASA(美國宇航局)合作的航天器項目為例。我們有常規的方法,還有一些特定的研究領(lǐng)域,例如自主計算、軟件產(chǎn)品線(xiàn)(software product lines)以及代碼自動(dòng)生成。
首先我們來(lái)看一下不同模型的方法。因為我們知道不同系統的模型有所不同,但不同的構件之間要進(jìn)行協(xié)作,所以我們對它們的行為模式可能不是特別地了解,所以我們所要做的就是去了解到底會(huì )有哪些不同類(lèi)型的行為模式,從而去得出這一系列的情況。
我們會(huì )有一些軟件是基于數學(xué)的方法來(lái)去編碼的,然后來(lái)去具體假設一下這會(huì )是什么?我們做一些分析,不同情況下會(huì )有什么樣的場(chǎng)景。我們有一個(gè)非常正式的ASL語(yǔ)言。我們會(huì )定義一下我們做一些什么,允許多少偏離,同時(shí)我們使用自主計算來(lái)進(jìn)行系統編制,這是和云相關(guān),還有我們想要云有一些適應性。我們使用人的自主神經(jīng)系統來(lái)進(jìn)行模擬。
我們有一些想法,如圖3。一種是處于理性來(lái)進(jìn)行相應的回應,比如別人問(wèn)你一個(gè)問(wèn)題,你就舉一個(gè)手等。另外有一些神經(jīng)系統,就是包括要去休息或者是消化的系統。即我們有一些組件,有點(diǎn)像心跳,如果心在跳動(dòng),說(shuō)明這臺電腦還活著(zhù),它就這樣模擬人體,它會(huì )進(jìn)行系統自測,也可以了解健康,看一下這系統運行是正確的還是有一些偏離。另外有睡眠狀態(tài),這時(shí)不想被其他電腦干擾,當它們如果行為準確,我們就在恢復行動(dòng)。然后我們有各種各樣的組件之間的要求,各個(gè)組件決定是不是要合作,那它們會(huì )有組件的自主分析會(huì )有信號的發(fā)出。首先我們使用硬件來(lái)去比擬,就是說(shuō)我們去進(jìn)行一些星球探索,包括像月亮,或者是土星;同時(shí)我們也有軟件,如果想要去改變行為模式的話(huà),我們就使用軟件。我們就可以很快地來(lái)跑軟件這種短期行為。同時(shí)我們有一些自主代碼生成過(guò)程,工程師要有像使用自然語(yǔ)言的使用能力,有一些使用案例,我們也有一些特別的要求,希望軟件可以像自然語(yǔ)言來(lái)去自主的應用,同時(shí)我們也可以進(jìn)行一些編碼,我們有一些工具進(jìn)行編碼的生成,同時(shí)我們可以把現有的編碼提取出來(lái)去獲得一些模式。
同時(shí)也有一些并發(fā)的數學(xué)原理來(lái)描述一下這并發(fā)的事件。我們會(huì )根據工程手段和環(huán)境來(lái)進(jìn)行編碼的分析和改變。同時(shí)我們也會(huì )去預測一下系統在未來(lái)執行的話(huà)會(huì )發(fā)生一些什么情況?我們系統未來(lái)會(huì )有一個(gè)主要的編碼生成器來(lái)主導。
也就是說(shuō)我們是有這樣的虛擬系統和我們物理性事件進(jìn)行關(guān)聯(lián),有社交的系統(例如可以通過(guò)GPS告訴大家在哪里)。所以我們將會(huì )有很多的傳感器,生成很多的大數據,我們也使用云來(lái)進(jìn)行儲存。同時(shí)希望有一些高質(zhì)量的軟件去有效地使用這些資源。
小結
回到本文的標題,有什么事是軟件不能做的嗎?我的回答是:不,很多事都是由軟件主導的。(注:本文根據“第八屆云計算大會(huì )”上的講演整理。大會(huì )由中國電子學(xué)會(huì )主辦,北京,2016年5月20日。)
本文來(lái)源于中國科技期刊《電子產(chǎn)品世界》2016年第5期第19頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處。
評論