新闻中心

EEPW首页 > 设计应用 > 软件将定义一切吗?

软件将定义一切吗?

作者:Mike Hinchey 时间:2016-05-26来源:电子产品世界收藏
编者按:本文指出软件越来越重要,一些汽车公司和芯片公司正在变成软件公司——软件工程师数量已占到工程人员的一半。并探讨了当今软件的特点及构建软件的基本思路。

摘要:本文指出越来越重要,一些汽车公司和芯片公司正在变成公司——工程师数量已占到工程人员的一半。并探讨了当今软件的特点及构建软件的基本思路。

本文引用地址:http://www.eepw.com.cn/article/201605/291756.htm

  你是如何来到这座城市的?飞过来还是坐火车、汽车?各个城市都有一些监控软件,有的监控交通工具,有的监控人,我们经常想绕过它,因为不想被监控。

  所以我们看到软件无处不在。例如制造业,无论是工业4.0,还是“中国制造2025”。我们还用软件来进行远程通讯——智能手机再也不是手机,实际上是一个微型电脑,上面有很多软件/应用。同时我们用软件进行很多金融服务,包括转帐、支付等。所以软件是奏效的。但有时也不那么灵,例如一些金融软件和汽车公司出的软件问题,曾造成了巨大损失。

  很多人提到物联网,诸如将有多少传感器植入,有多少汽车将无人驾驶,这些都是我们所预见到的未来。我们同时在之前做了一个调查,看各行各业谁需要软件。工程、医疗、ICT行业等是大家都想到的,还有很多没想到的就是消费者、零售等。所以很多领域是高度依赖软件的。

  例如2015年BMW的软件工程师超过了其他工程师的总合,所以汽车行业也变成了软件行业。一些芯片公司也有越来越多的软件工程师,尽管他们不想成为软件公司,但是事实上他们已经成为了。例如ADI公司的一位VP(副总裁)说:“我们已经成为了软件公司,问题是我们的工程师还没有意识到!”

写软件只占软件工作的7%

  生产高质量的软件是复杂和困难的。写软件非常重要,但是只占软件工作的7%,真正的挑战是满足日趋增长的系统需求,因为这个系统更加互联,使用云来收集大数据,我们如何建立高质量的系统呢?同时我们的软件质量,还有我们利用目标实现之间的关系,即我们如何能够按时去进行产品投放,还有质量、生产率、监管、合规等都受到影响。

  现在软件正在发生改变,它并不是静态、一成不变的,必须随着环境的变化来改变。如果我们没有提前做好准备当然也不知道未来会何去何从。尽管有很多预测是我们没法提前很早做出来的,但是至少可以帮助我们去预计一些可能会出现的威胁。比如黑客攻击等。

  我们在进行软件开发时候,我们要去思考到底有没有把方方面面的信息都考虑进去?当然我们希望这软件可以使用一段时间,即使最老的软件,也就50年的历史,也就是说软件出现也不是特别早。那我们也会有一些供应商已经有二十多年的历史,他们至今所做的还是一些基础的软件,但是我们要对软件进行更新才能适应当前的变化。我们改变软件,是为了能够更好地使用或者匹配硬件,比如多核硬件等,或者让我们来更好地利用当前最新的技术。因此,软件必须要能够得以调整满足环境的变化,我们还会接到客户的一些新的需求,以及政府、监管方面的需求,所以我们也都要去改变软件,但是最重要就是软件本身也应该改变,就像我们改变硬件一样。

改软件并不一定把它卸载

  改变软件并不一定要把软件卸载或让它退休,而是可以对它的某些模块进行更新。这跟硬件有所不同。有一些软件可能每天都在更新,我们看到未来这种趋势将会越来越明显。比如无人驾驶的汽车软件,可能每天都会更新。

  图1可以看到软件开发面临的问题,当然我们看到最下面的较粗的曲线,就是我们理想的曲线,我们希望在软件开发过程当中,到后期我所遇到的问题,或者是宕机率越来越低,故障率越来越低。但是实际情况并非如此,有可能我们会受到其他因素的影响,我们可能不得不面临这些问题,所以随着时间的推移,我们软件的功能会越来越差,它的故障率会越来越高。

  我们再想想现在软件的应用规模到底有多大?2009年4月,一本计算机杂志给出的软件分类如图2所示。在这里可以看到,可见我们现在所使用的应用越来越多了,规模也越来越大,而且软件的复杂程度也越来越高了。尤其现在很多开源项目,大家都积极地参与其中。

  但是有意思的是软件。在2005年之后,有越来越多软件诞生,特点是量身定制的。就像汽车,这两辆车可能硬件是一样的,但是它们上面所搭载的软件可能截然不同。

等挑战

  如果你的软件会被别人所操纵。别人可以直接看到这软件的漏洞和软件所运行的东西,所以对于机构、企业,一定要去保障软件的,这是非常重要的。

  当前我们所面临的问题是软件无处不在。软件嵌入到我们所使用的各种各样的设备当中。软件开发写得不是很好,还有就是我们一些忽视的软件,有时候我们并不知道,有一些软件他们到底具有什么功能,他们到底是怎样写成的。因为有些软件开发者已经退休了。此外就是软件的故障无疑会大大降低软件的质量。而且因为软件问题出现得非常快,有的是猝不及防。还有一些软件遗留的代码或者是遗留的系统。现在我们看到我们的系统正在不断发生变化,比如说代码之上不断地更新系统,这系统可能已有二十多年的历史,此外就是我们可能有一个基于构件的系统,我们需要使用一些新的技术,包括云的环境等新技术。还有我们希望可以让我们的系统适应并且可以在运行的过程当中不断地去升级和净化。

软件系统的构建

  以我与NASA(美国宇航局)合作的航天器项目为例。我们有常规的方法,还有一些特定的研究领域,例如自主计算、软件产品线(software product lines)以及代码自动生成。

  首先我们来看一下不同模型的方法。因为我们知道不同系统的模型有所不同,但不同的构件之间要进行协作,所以我们对它们的行为模式可能不是特别地了解,所以我们所要做的就是去了解到底会有哪些不同类型的行为模式,从而去得出这一系列的情况。

  我们会有一些软件是基于数学的方法来去编码的,然后来去具体假设一下这会是什么?我们做一些分析,不同情况下会有什么样的场景。我们有一个非常正式的ASL语言。我们会定义一下我们做一些什么,允许多少偏离,同时我们使用自主计算来进行系统编制,这是和云相关,还有我们想要云有一些适应性。我们使用人的自主神经系统来进行模拟。

  我们有一些想法,如图3。一种是处于理性来进行相应的回应,比如别人问你一个问题,你就举一个手等。另外有一些神经系统,就是包括要去休息或者是消化的系统。即我们有一些组件,有点像心跳,如果心在跳动,说明这台电脑还活着,它就这样模拟人体,它会进行系统自测,也可以了解健康,看一下这系统运行是正确的还是有一些偏离。另外有睡眠状态,这时不想被其他电脑干扰,当它们如果行为准确,我们就在恢复行动。然后我们有各种各样的组件之间的要求,各个组件决定是不是要合作,那它们会有组件的自主分析会有信号的发出。首先我们使用硬件来去比拟,就是说我们去进行一些星球探索,包括像月亮,或者是土星;同时我们也有软件,如果想要去改变行为模式的话,我们就使用软件。我们就可以很快地来跑软件这种短期行为。同时我们有一些自主代码生成过程,工程师要有像使用自然语言的使用能力,有一些使用案例,我们也有一些特别的要求,希望软件可以像自然语言来去自主的应用,同时我们也可以进行一些编码,我们有一些工具进行编码的生成,同时我们可以把现有的编码提取出来去获得一些模式。

  同时也有一些并发的数学原理来描述一下这并发的事件。我们会根据工程手段和环境来进行编码的分析和改变。同时我们也会去预测一下系统在未来执行的话会发生一些什么情况?我们系统未来会有一个主要的编码生成器来主导。

  也就是说我们是有这样的虚拟系统和我们物理性事件进行关联,有社交的系统(例如可以通过GPS告诉大家在哪里)。所以我们将会有很多的传感器,生成很多的大数据,我们也使用云来进行储存。同时希望有一些高质量的软件去有效地使用这些资源。

小结

  回到本文的标题,有什么事是软件不能做的吗?我的回答是:不,很多事都是由软件主导的。(注:本文根据“第八届云计算大会”上的讲演整理。大会由中国电子学会主办,北京,2016年5月20日。)

本文来源于中国科技期刊《电子产品世界》2016年第5期第19页,欢迎您写论文时引用,并注明出处。



评论


相关推荐

技术专区

关闭