软件工程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')
    })
}) 

···”

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

posted @ 2021-09-11 16:36  汀上白杀  阅读(247)  评论(0编辑  收藏  举报