软件工程2021:第2次作业—— 谈谈鸿蒙操作系统
一:概述鸿蒙操作系统:
开发背景:操作系统是电子产品的灵魂,我国科技产业没有自主研发的操作系统。
需求:(1):需要大量的实践,用户使用者越多,就越能发现其中的不足之处,对鸿蒙系统进行更好更优的维护。
(2):需要部署在各个领域上,完善和测试鸿蒙在手机和其他智能制造方面。
开发历史:
(1):2012年,华为开始规划自有操作系统“鸿蒙”。
(2):2019年5月24日国家知识产权局商标局网站显示,华为已申请“华为鸿蒙”商标,申请日期是2018年8月24日,注册公告日期是2019年5月14日,专用权限期是从2019年5月14日到2029年5月13日。
(3):2019年5月17日,由任教授领导的华为操作系统团队开发了自主产权操作系统——鸿蒙。
(4):2019年8月9日,华为正式发布鸿蒙系统。同时余承东也表示,鸿蒙OS实行开源。在中国信息化百人会2020年峰会上,华为消费者业务CEO余承东表示,鸿蒙os目前已经应用到华为智慧屏、华为手表上,未来有信心应用到1+8+N全场景终端设上。
(5):2020年9月10日,华为鸿蒙系统升级至华为鸿蒙系统2.0版本,HarmonyOS2.0。余承东表示,2020年12月份将面向开发者提供鸿蒙2.0的beta版本。
应用场景和发展趋势:
(1): :针对领域不同,鸿蒙针对物联网,安卓以手机为主;鸿蒙采用的方舟编译器使得运行性能大幅提升;鸿蒙采用微内核,比安卓采用的宏内核拓展性以及可靠性强。当前物联网领域操作系统仍以安卓为主,但中信建投认为鸿蒙系统更加适合未来物联网场景。
(2): 国盛证券认为,鸿蒙的未来三大趋势明确,开源、平台化和生态搭建。参与开源,与前辈高手过招,是最容易的成长方式;鸿蒙系统剑指打通手机、电脑等多种硬件,统一成一个操作系统,并兼容安卓与全部的 Web 应用,实现软硬件平台一体化的目标;未来如何吸引到更多的应用开发者提供优质、稳定的软件应用产品,避免仅仅局限在华为.
(3): 鸿蒙是安可、5G、云计算的交汇核心,是生态级别的安可。国盛证券强调,安可、5G、云计算将是未来的三大科技主线,而操作系统作为衔接硬件与上层软件之间的支撑,是影响软件产业配套的核心技术,无论对于支撑软件产业发展,还是保障信息安全,作用都十分重要。可以说,鸿蒙生态是安可核心领域之一,是生态级别的安可。
二、关于鸿蒙是否套壳的争议
(1): 什么是创新:(联系鸿蒙系统分析)
近年来的手机方面的操作系统都是以安卓操作系统为主,国人都习惯了安卓操作系统,所以为了用户的体验,鸿蒙操作系统兼容安卓系统,部分代码和安卓类似,鸿蒙系统保留了部分与安卓相同的地方,但是安卓只能在手机方面进行应用,而鸿蒙操作系统则是在各个智能方面应用为目标。创新就是在原有的部分基础上实现全新的,更好的过程。
(2):代码复用与创新的关系:
代码复用其实就是保留原有的一些东西,现在要实现的某些功能和原来的类似,这样做会大大降低开发时间,提升效率,个人觉得创新是在思想上的创新,前人的东西是可以借鉴和学习的。
三、代码风格分析
好的代码风格分析:
(1)
“ …
…”
分析:判断逻辑过多此时应该每个逻辑单独成立一行便于阅读,看起来不那么繁重
(2)
“…
// Check that all data records
// are correct
foreach (Record record in records)
{
if (rec.checkStatus()==Status.OK)
{
. . .
}
}
// Now we begin to perform
// transactions
Context ctx = new ApplicationContext();
ctx.BeginTransaction();
…”
分析:每一块代码或者每一行代码应该加上注释,便于后期进行阅读和相关工作人员的维护。但是不要写没用的注释。
(3)
“…
public class Game {
private Integer gameId;
private Date gameDate;
private Integer homeTeamId;
private Integer homeTeamScore;
private Integer visitingTeamId;
private Integer visitingTeamScore;
private Integer typeId;
private Integer status;
private Integer isDel;
public Integer getGameId() {
return gameId;
}
public void setGameId(Integer gameId) {
this.gameId = gameId;
}
public Date getGameDate() {
return gameDate;
}
public void setGameDate(Date gameDate) {
this.gameDate = gameDate;
}
public Integer getHomeTeamId() {
return homeTeamId;
}
public void setHomeTeamId(Integer homeTeamId) {
this.homeTeamId = homeTeamId;
}
public Integer getHomeTeamScore() {
return homeTeamScore;
}
public void setHomeTeamScore(Integer homeTeamScore) {
this.homeTeamScore = homeTeamScore;
}
public Integer getVisitingTeamId() {
return visitingTeamId;
}
public void setVisitingTeamId(Integer visitingTeamId) {
this.visitingTeamId = visitingTeamId;
}
public Integer getVisitingTeamScore() {
return visitingTeamScore;
}
public void setVisitingTeamScore(Integer visitingTeamScore) {
this.visitingTeamScore = visitingTeamScore;
}
public Integer getTypeId() {
return typeId;
}
public void setTypeId(Integer typeId) {
this.typeId = typeId;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getIsDel() {
return isDel;
}
public void setIsDel(Integer isDel) {
this.isDel = isDel;
}
}
…”
分析:定义类时,一般使用private属性修饰,确保安全,若对其变量值进行更改时调用get(),set()方法。