軟件工程2021:第2次作業—— 談談鴻蒙操作系統


一、概述鴻蒙操作系統

  • 開發背景

1、數字化的時代背景:數字化新時代的到來需要新的操作系統;

2、IoT 與 5G:5G物聯網時代的到來對操作系統提出了新的要求;

3、中國面臨“卡脖子”的挑戰:獨立自主的研發操作系統是迫切的需求;

4、人工智能的興起:AIoT場景天然要求多設備智能協同,需要一個適用於各類型機器的操作系統;

5、大數據與雲計算:TB、PB級的大數據需要一個能夠提供多機互聯的操作系統;

6、全球信息安全面臨挑戰:網絡安全威脅呈現多元化、復雜化、頻發高發趨勢,需要一個足夠安全的系統進行保障。

  • 需求

1、分布式架構首次用於終端OS,實現跨終端無縫協同體驗;

2、確定時延引擎和高性能IPC技術實現系統天生流暢;

3、基於微內核架構重塑終端設備可信安全;

4、通過統一IDE支撐一次開發,多端部署,實現跨終端生態共享。

  • 開發歷史

  • 應用場景

① 輕量系統;

可支撐的產品如智能家居領域的連接類模組、傳感器設備、穿戴類設備等。

② 小型系統;

可支撐的產品如智能家居領域的IP Camera、電子貓眼、路由器以及智慧出行域的行車記錄儀等。

③ 標准系統;

可支撐的產品如高端的冰箱顯示屏。

  • 發展趨勢

   華為的生態從手機,擴展到平板、電視、音響、眼鏡、手表、車機、耳機、PC八大業務,並延伸到移動辦公、智能家居、運動健康、影音娛樂及智能出行等眾多業務板塊,構建一個完善的5G服務生態體系。

二、關於鴻蒙操作系統套殼的爭議

  • 什么是創新

   從定義上來說,創新是以新思維、新發明和新描述為特征的一種概念化過程。 吳東認為,鴻蒙系統底層技術創新的更大目標是抓住新一輪技術范式興起的機會窗口,搶占物聯網操作系統的主導設計,這才是創新。華為鴻蒙就一個系統,一個賬號,搞定全部,手機上的APP可以直接在手表上運行,手表上APP可以直接在PAD上運行,一套代碼編譯的軟件可以在所有設備的鴻蒙系統上運行。以前操作系統做不到的方面,鴻蒙系統做到了,這就是鴻蒙操作系統的創新。

  • 代碼復用與創新的關系

  從定義上來看,代碼復用指的是為了在日常的編碼過程中提高編碼效率,和重復編碼代碼的低效,將重復的代碼提煉成可復用的代碼。代碼復用的形式可以是一個方法 ,可以是一套模板,也可以是一個框架。而創新是以新思維、新發明和新描述為特征的一種概念化過程。對於華為來說,華為雖然采用的是ASOP的代碼,但是ASOP是由谷歌聯合34家手機終端和運營商企業共同發起的項目,所以谷歌沒有權利去阻止華為使用ASOP的代碼。鴻蒙的出現也是靠着ASOP的代碼。所以由此可知,代碼復用也能夠對創新起到推動作用。

三、代碼風格分析

  1. 好的代碼風格1:

○代碼示例:

“···

import("//test/xts/tools/lite/build/suite_lite.gni")
hctest_suite("ActsDemoTest") {  suite_name = "acts"  sources = [  "src/test_demo.c",  ]  include_dirs = [ ]  cflags = [ "-Wno-error" ] }

···”

○分析:在每個測試模塊目錄下新建BUILD.gn編譯文件,用於指定編譯后靜態庫的名稱、依賴的頭文件、依賴的庫等。

2. 好的代碼風格2:

○代碼示例:

“···

import("//test/xts/tools/lite/build/suite_lite.gni")
hcpptest_suite("ActsDemoTest") {  suite_name = "acts"  sources = [  "src/TestDemo.cpp"  ]   include_dirs = [  "src",  ...  ]  deps = [  ...  ]  cflags = [ "-Wno-error" ] }

···”

○分析:每個測試模塊目錄下新建BUILD.gn編譯文件,用於指定編譯后可執行文件的名稱、依賴的頭文件、依賴的庫等;具體寫法如下。每個測試模塊將獨立編譯成.bin可執行文件, 該文件可直接push到單板上進行測試。

3. 不好的代碼風格:

○代碼示例:

“···

describe('appInfoTest', function () {    
 it('app_info_test_001', 0, function () {  var info = app.getInfo()  expect(info.versionName).assertEqual('1.0')  expect(info.versionCode).assertEqual('3')  }) }) 

···”

○分析: 不太能理解此段代碼的意思。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM