當(dāng)前物聯(lián)網(wǎng)(IoT)大潮奔涌不止,暢游其中的樂趣豈是隔岸觀風(fēng)景之人所能體會(huì)的?絕大部分物聯(lián)網(wǎng)框架變得有血有肉,不再是空架子了,玲瑯滿目的選擇更是讓人眼花繚亂。
隨著越來越精細(xì)復(fù)雜的開發(fā)工具增加了安裝和集成成本,云技術(shù)逐漸成為主流。公司可以選擇雇人來安裝、支持和維護(hù)這些工具,但開發(fā)者則需考慮長期的支持。
安全和軟件質(zhì)量至關(guān)重要,也更費(fèi)時(shí)費(fèi)力些,所以在一般的嵌入式空間中也常常被忽略。誰都希望安全有保障,代碼零漏洞,但這兩者的界限又在哪里?大多數(shù)軟件項(xiàng)目真正的意義又是什么?對(duì)于非聯(lián)網(wǎng)設(shè)備而言,安全當(dāng)然不是問題。
物聯(lián)網(wǎng)軟件
即使是物聯(lián)網(wǎng)最基礎(chǔ)的設(shè)計(jì)(見圖),也要同時(shí)處理不同參與實(shí)體的界面和連接問題。雖然IoT有諸多優(yōu)勢,還潛在創(chuàng)造了靈活的環(huán)境——然而復(fù)雜交織著的網(wǎng)絡(luò)背后埋伏著更多故障和攻擊,要勤于維護(hù)才好。整個(gè)系統(tǒng)要運(yùn)行流暢,所有部分都要運(yùn)行流暢,數(shù)以百萬計(jì)的終端節(jié)點(diǎn)和網(wǎng)關(guān)牽涉其中,一旦出了問題,后果將是災(zāi)難性的。

公司和廠商正積極解開物聯(lián)網(wǎng)框架和環(huán)境中的“死結(jié)”,不斷擴(kuò)展功能和覆蓋范圍,增加合作伙伴。很多IoT標(biāo)準(zhǔn)組織的前身都是IoT框架設(shè)計(jì)的廠商組成的團(tuán)體。2016年當(dāng)設(shè)計(jì)理念轉(zhuǎn)變成真實(shí)的框架,開發(fā)者就可以對(duì)其進(jìn)行檢測并加以利用以開發(fā)IoT解決方案。
公司和廠商正積極解開物聯(lián)網(wǎng)框架和環(huán)境中的“死結(jié)”,不斷擴(kuò)展功能和覆蓋范圍,增加合作伙伴。很多IoT標(biāo)準(zhǔn)組織的前身都是IoT框架設(shè)計(jì)的廠商組成的團(tuán)體。2016年當(dāng)設(shè)計(jì)理念轉(zhuǎn)變成真實(shí)的框架,開發(fā)者就可以對(duì)其進(jìn)行檢測并加以利用以開發(fā)IoT解決方案。
雖然如此,還有一個(gè)問題仍揮之不去:IoT開發(fā)空間中的選擇數(shù)不勝數(shù),但互操作性也隨之被限制。
IoT是否安全?
軟件質(zhì)量和安全相互關(guān)聯(lián),錯(cuò)誤代碼往往導(dǎo)致了安全漏洞,進(jìn)一步阻礙了物聯(lián)網(wǎng)發(fā)展,因?yàn)樵O(shè)備彼此連接之后,遠(yuǎn)程攻擊的風(fēng)險(xiǎn)就難以避免。
大多數(shù)IoT框架會(huì)結(jié)合多種安全措施,比如使用通信鏈接上的傳輸層安全(TLS)或者安全啟動(dòng)等。加密至關(guān)重要,帶內(nèi)置加速的硬件也越來越多,安全密鑰存儲(chǔ)(secure key storage),甚至反篡改支持(anti-tamper support)也越來越常見。
開發(fā)者仍要解決的,是將安全措施納入設(shè)計(jì)來抵抗安全攻擊;心有余力不足時(shí),也就無暇顧及應(yīng)用的其他功能特性了??蚣芎突诓呗缘陌踩С钟杏茫珶o法根除安全問題。有些框架和系統(tǒng)聲稱能處理所有安全問題,其實(shí)這種情況很少見,若真如此,系統(tǒng)保護(hù)會(huì)容易很多。
很多IoT開發(fā)都是用C語言完成的,這為開發(fā)者帶來了不便。而很多安全問題都是由于不懂運(yùn)行原理或粗心大意造成的,最終不得不為框架添加安全措施。靜態(tài)分析等工具通常支持MISRA C++和新的MISRA C:2012標(biāo)準(zhǔn)。
很多之前僅限于軍事和航空電子學(xué)的方法也逐漸進(jìn)入產(chǎn)業(yè)應(yīng)用開發(fā)領(lǐng)域,運(yùn)輸和自動(dòng)化領(lǐng)域的公司嘗試用Ada和SPARK等編程語言為嵌入式實(shí)時(shí)應(yīng)用提供更好的開發(fā)環(huán)境。常見于正式實(shí)驗(yàn)的功能性編程語言也適用于云技術(shù)領(lǐng)域,比如系統(tǒng)控制,財(cái)務(wù)計(jì)算和分析等等。
“云”端之上
不是所有人都愿意涉足云開發(fā)領(lǐng)域,但軟件廠商一直積極推動(dòng)著云技術(shù)革新,開發(fā)者也發(fā)現(xiàn)了很多機(jī)會(huì)。
幾十個(gè)IDE(集成開發(fā)環(huán)境)云系統(tǒng)/網(wǎng)址可供選擇,很多IoT解決方案供應(yīng)商也在跟這些網(wǎng)站在合作來提升自己的服務(wù),之前也有廠商跟Github和Pastebin等網(wǎng)站合作成功的先例。Cloud9和mbed,甚至Arrow Cloud Connect網(wǎng)站都為ARM Cortex-M0+提供嵌入式IoT支持。
Codevny等則利用云服務(wù)器來編譯和創(chuàng)建服務(wù),提供的上線支持不亞于基于工作站的工具(比如Eclipse)。Wind River的Helix環(huán)境包含Helix Lab Cloud,開發(fā)者可以用于在云端硬件上測試自己的應(yīng)用。
免于安裝、管理和支持為開發(fā)者省下了不少麻煩,他們還能接觸到最新軟件。但另外一些問題也不能忽視,比如為某一版本的應(yīng)用保留工具箱和運(yùn)行時(shí)間支持。
在線開發(fā)對(duì)于軟件廠商來說相對(duì)可控,但對(duì)不擅于控制代碼和工具的人來說不一定了。網(wǎng)絡(luò)連接質(zhì)量怎樣、流不流暢都很重要——只有可靠、高速的網(wǎng)絡(luò)連接才能保證云技術(shù)的流暢運(yùn)行。