专访Bruce Douglass,谈嵌入式经验

2023-12-15 16:32

本文主要是介绍专访Bruce Douglass,谈嵌入式经验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Bruce Douglass是嵌入式与UML应用资深专家,拥有30余年从业经历,他也是《C嵌入式编程设计模式》等十多本技术书籍的作者。目前,他是IBM Rational首席布道师。采访中,他分享了自己在嵌入式领域的经验与感悟。


不同寻常的个人经历

CSDN:你曾学习生理学和医学,这些经历对你在计算机领域的发展有怎样的影响?

Bruce:我的经历颇有些特别,14岁从中学直接进入大学,开始的专业是数学,后来转到运动生理学专业,直到硕士毕业,我的博士学位是South Dakota大学的Neurocybernetics(神经控制论)。这些经历给予我基本的科学素养,而计算机工程正是一种科学应用。对不同领域的涉猎,让我有着更强的推理分析能力及更宽阔的视野。

举例来说,我为几家公司做顾问时,经常发现其内部的明显错误,而处在内部的他们却未曾察觉。好比交往中的男女,你所有的朋友都说与你交往的人太差劲了,但你却因为爱他/她而全然不觉,直到某天分手后再回头看,可能才会后悔。机构往往如此,恰似经营一段错误的婚姻般当局者迷。只有脱离组织本身,完全独立地看待问题,才能做出最客观的分析——开发、工程管理等皆是如此。

还有一个例子,一家德国汽车制造厂有一个为期18个月的汽车检修流程,前6个月称为“特征构建”,后12个月称为“特征稳固”。也就是说,这个流程要先花6个月制造缺陷,再花12个月修复缺陷。这是一个很明显的问题,为什么不能在第一阶段通过检测设备、高效仿真等手段避免缺陷的产生?分析问题的关键就在于如何定义问题,以及如何从宏观角度寻找不同的解决办法。

CSDN:是什么吸引你开始编程的,并进入现在的领域?

Bruce:表面上看,编程就是想要实现什么就写什么代码;但事实是,敲代码只是软件开发过程中很小的一部分,程序员的工作还包括安全分析、责任分析、产品验证、产品分析等。

我第一次写程序是在做硕士究生论文时,论文的主题是“甲状腺素和去甲肾上腺素在冷压力下的相互反应”,那是在1978年,为了实现大规模统计分析,我买了一台拥有4KB内存的电脑,编写了我的第一个程序——1000多行的VB统计分析软件。之后读博期间,为了完成一套生物神经系统学信息处理的数据分析(即生物神经计算),我写了很多软件,其中包括一些系统驱动程序。

CSDN:在从业过程中,你如何提高自己的技能?

Bruce: 最重要的是实践,就像要练好标枪就必须勤加练习,编程也是一样。在我的书中,我一直都尝试加入更多的实例设计;在《Real Time UML Workshop for Embedded Systems》中,我写了一个无人机的设计案例;另外一本书中,设计了一个星际旅行传输机的有趣案例。我正在写这本关于“敏捷系统工程”的书中,我设计了一种可穿戴的机器人盔甲,类似于电影《异形》里机器人穿的那种,不过比电影中的大8倍,重达1500kg,可每小时跑80km。

从我参与过许多系统的开发——计算机断层扫描、医疗(如心脏起搏器、呼吸机)、无人机、自动化、航空航天、运载火箭系统等——我发现不同行业有着不同的应用环境,但同时也有共通性,我们需要在不断的实践中总结知识。经历会带给人财富,有一次我儿子问我,怎样才能成为作家(他想写小说),我告诉他,首先你要开始写作。

CSDN:在这些不同领域系统的开发过程中?你有哪些经验总结?

Bruce:有很多。

一是要发散思维克服目光短浅。我做顾问时,经常看到一些根本不可能实现的案例,当事人却置身其中毫无察觉。面对问题时,我们需要走出定势思维,从不同的角度寻找解决办法,并通过思考寻找问题的底层机理所在。比如,大学时我基本没上过化学课,但能通过推测解答试题的办法通过了考试(我可不推荐大家使用这种方法应付考试)。我们要学会看到事情之外,退一步想想事情发生的根本原因,总结所做过的尝试、预测以及最终成功的方法,然后在确保成功的前提下尝试更多的解决办法.。我们需要制定相应的度量标准,用来记录并展示过程中的成与败及最总目标。

二是要建立数学思维,提高准确性。一些人常常固执己见,忽略事实,即使现实已经证明他们的理论和想法不实际,他们却依然坚持——这是没有意义的行为。理论需要实践来验证对与错。在做开发工作时,我们需要一套度量标准用于评测,要以取得进步为目的,而不只是实现某个计划(计划只是某种意义上的理论,不一定是正确的),相较于“如何实现计划”,“如何实现目的”则是更好的度量标准。

三是要学会合理地做计划。通常软件行业制作的计划都有两种目的,一种是用于申请计划所需时间及经费;另一种则是用于激励员工努力工作,这种计划本身就存在着矛盾。合理的计划一定要基于现实,并有相应的度量标准来记录工作进度及工时。我在做项目管理时就有很多这样的度量规则,我一般只会预估完成一半任务所需的时间,这样前后两部分任务可在时间上做灵活调整;对于具体某个人的进度,我不会做预估,因为基本都会延时。统计学中有一个“中心极限定理”——通常我们只有50%的几率能够达成预估时间表。

在写作中融入趣味 

CSDN:你开始写书的原因是什么,想要解决怎样的问题?

Bruce:我写的第一本书是在毕业后,当时我经营着一家软件公司,因为发表了不少计算机杂志专栏和文章,于是有出版社找到我,我因此写作了自己的第一本,关于数据分析的书。我在写作的过程中,总会追寻两个目标——为个人和读者的都带来收获。对于一个问题的理解,我觉得有三个层面:第一层是自己听说某项技术,但并不真正理解;第二层是开始应用,这属于比较深层的理解;第三层是能将知识传授给其他人,表明不仅自己可以应用,还能教授给不同技术背景和学习方式的人们。对读者来说,在很多行业,如飞行器、高速公路系统,金融领域等,都不乏聪慧的人,但在这些领域中却存在着糟糕的实践,特别是那些对安全性要求较高的行业中(包括医疗、航空电子设备、机动车设备、重工业、造船业、军事,以及金融业),我觉得可以做出更多改进。

CSDN:写书通常需要花很长时间,你是如何坚持的?对你写作影响最大的人是谁?

Bruce:我写一本书大概要用2000小时,这样对工作量听起来令人畏惧。写书是持久战,且万事开头难,开始时需要先组织语言列出提纲等。这好比参加铁人三项,乍一看似乎不可能完成,但是当你一项一项去做,终点就会在前方。

不少人对我的写作都有影响,我很喜欢Grady Booch(UML创建者之一,IBM院士)的写作风格,他是位条理十分清晰的作者。我不喜欢那种典型的枯燥无味的技术书,所以我会尽可能在书里添加一些诙谐因素,让它读起来更有趣(不过也不是所有人都懂我书里的幽默,我妻子就不懂)。Grady也经常在书里添加娱乐元素,用有趣又有意义的故事替无聊的文字,更容易被读者接受。

编程以及嵌入式软件开发经验总结

CSDN:开发者在嵌入式软件系统领域有哪些常见误区?

Bruce:首先,人们常在没有实践的情况下做出判断。比如有些人经常想当然的认为不过是软件/硬件,没有什么难的。没有实践,任何事情看起来都很简单。只有当你深入某个领域时,才能慢慢意识该领域的复杂性。如今的系统已经比几年前复杂数百倍,相应的安全性及可靠性也随之提高,相关的工作变得更复杂。

其次,人们通常认为紧凑的工期能够激励员工更努力的工作。事实上,这种激励方式最多只能生效一次。第一次,员工可能会乖乖一天拼命工作20个小时以完成任务,第二次他们就开始有些迟疑,到了第三第四次,他们也就不以为然了。我曾经有个老板说“现实是友好的”,我却始终认为现实就是现实,不友好但也不坏,现实不容忽视,我们要时刻保持理性。我发现很多组织内部都存在着各种架构或者工期制定的问题,他们从不根据事实制定计划,不认真思考总结,只通过凭空想象,然后期望能够如期完成。

CSDN:在医疗、航空、自动化及军事这些时刻关系到生命的领域,可靠性和安全性至关重要。对开发者来说,在这些领域,有哪些特殊的规则和标准需要遵循?

Bruce:最重要对在于,需要根据这些系统推理出所需的可靠性和安全性。

我曾创建一个关于安全推理的UML Profile,可以通过结合预设条件与故障组合展示故障风险。比如设置一个想要避免的场景,然后通过对这个场景的分析,判断出其所需的安全控制措施。任何一个做安全软件或系统的人都会说他们需要保障安全性,但通常只停留在对安全性的需求层面,并没有去深入理解为什么需要安全性。我的Profile核心部分称为Assert,它有多种存在形式,有时类似信用卡密码,我们要确保它不被盗取;有时类似于心脏起搏器,我们要确保它不被干扰;还有时是一种具体物品,我们需要确保它不被随意移动。当我们想要找出这些Asset的时候,需要预设一些条件来制造相应的缺陷,然后才能找到相应的可提高安全性的对策。通过不同的手段找到安全缺陷、分析安全漏洞,进而得知通过增强安全性所要保护的内容。现在大部分人根本不清楚做安全的目的是什么,所以深入的了解增强安全性的目的至关重要。

CSDN:与早些年相比,嵌入式软件开发领域最大的变化是什么?

Bruce:我觉得变化主要有三点。第一是范围,我开发的第一个软件,心脏起搏器,是一个基于6502处理器的、很小的、实时多任务操作系统的汇编程序,系统只有8KB。如今系统的空间和功能实现跟以前比起来,早已不在一个量级,过去的系统很小而且功能简单,现今的系统要比以前复杂千倍。

第二是规则变化,包括一些安全可靠性服务。如今的安全监管功能增加了很多对开发的质量要求规则。以前如果机器坏了我们可以直接关掉,如今却不行,例如输氧设备或者正在驾驶的飞机,我们并不能直接关掉它,也就是说如今的质量需求要比以前多得多。

第三是集成。当今世界是一个亿万台设备相互连接的互联空间,这同时意味着我们正面临着史无前例的安全隐患。有一篇发表在“Planet Black Hack”上的研究报告称,他们已经找到了可以黑入普通移动设备、主板、娱乐系统、自动系统、传感器系统的不同途径。在这些设备中,他们不仅可以开关机、开启或锁定防火墙,还可以盗取信息、重写引擎软件。在过去如果有人想偷车,就必须先把车门撬开;而如今,只需要黑入汽车系统改写软件就能把车偷走。这是安全级别的一个巨大改变,50年前还没有电力系统,20年前有了电力系统,但是还没有软件,如今一个病毒就可以攻击几万台设备并导致一座城市的瘫痪。

CSDN:对中国的开发者,你还有哪些建议想与他们分享?

Bruce:在我看来,开发者即革新者,而革新一定不能畏惧失败,不能因为他人的不认可而轻易放弃。另外,作为一名开发者,不能只关注系统的功能实现,还要关注质量保障,系统功能的实现要围绕着安全、可靠和高效进行实施。要拥有独立并机智地使用不同技能的能力,勇于面对错误并及时修正。根据我的经验,在新事物的应用过程中,通常会有25%的错误概率,如果没有,那你一定没有努力地应用新技术。大部分人都喜欢恪守陈规,而我宁愿是个例外,这同时意味着会做出一些令人难以置信的错误决定,不过没有什么大不了,下次改正就好了。


这篇关于专访Bruce Douglass,谈嵌入式经验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/497105

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

深入探索嵌入式 Linux

摘要:本文深入探究嵌入式 Linux。首先回顾其发展历程,从早期尝试到克服诸多困难逐渐成熟。接着阐述其体系结构,涵盖硬件、内核、文件系统和应用层。开发环境方面包括交叉编译工具链、调试工具和集成开发环境。在应用领域,广泛应用于消费电子、工业控制、汽车电子和智能家居等领域。关键技术有内核裁剪与优化、设备驱动程序开发、实时性增强和电源管理等。最后展望其未来发展趋势,如与物联网融合、人工智能应用、安全性与

嵌入式技术的核心技术有哪些?请详细列举并解释每项技术的主要功能和应用场景。

嵌入式技术的核心技术包括处理器技术、IC技术和设计/验证技术。 1. 处理器技术    通用处理器:这类处理器适用于不同类型的应用,其主要特征是存储程序和通用的数据路径,使其能够处理各种计算任务。例如,在智能家居中,通用处理器可以用于控制和管理家庭设备,如灯光、空调和安全系统。    单用途处理器:这些处理器执行特定程序,如JPEG编解码器,专门用于视频信息的压缩或解压。在数字相机中,单用途

基于微信小程序与嵌入式系统的智能小车开发(详细流程)

一、项目概述 本项目旨在开发一款智能小车,结合微信小程序与嵌入式系统,提供实时图像处理与控制功能。用户可以通过微信小程序远程操控小车,并实时接收摄像头采集的图像。该项目解决了传统遥控小车在图像反馈和控制延迟方面的问题,提升了小车的智能化水平,适用于教育、科研和娱乐等多个领域。 二、系统架构 1. 系统架构设计 本项目的系统架构主要分为以下几个部分: 微信小程序:负责用户界面、控制指令的

嵌入式面试经典30问:二

1. 嵌入式系统中,如何选择合适的微控制器或微处理器? 在嵌入式系统中选择合适的微控制器(MCU)或微处理器(MPU)时,需要考虑多个因素以确保所选组件能够满足项目的具体需求。以下是一些关键步骤和考虑因素: 1.1 确定项目需求 性能要求:根据项目的复杂度、处理速度和数据吞吐量等要求,确定所需的处理器性能。功耗:评估系统的功耗需求,选择低功耗的MCU或MPU以延长电池寿命或减少能源消耗。成本

嵌入式Linux C基本知识点总结

学习这块知识点有好久了,最近借一本书的框架来对基本的知识点进行总结,参考《嵌入式Linux上的C语言编程实践》进行总结记录之。 一、 基本开发环境 Linux下C语言开发环境 使用工具:程序生成工具GCC、程序调试工具GDB、工程管理工具为make和Makefile。 开发流程:使用编辑工具编写C语言源文件,然后编译生成机器代码为主的二进制可执行程序。 编译流程:C语言经过编译-汇

2024年 Biomedical Signal Processing and Control 期刊投稿经验最新分享

期刊介绍 《Biomedical Signal Processing and Control 》期刊旨在为临床医学和生物科学中信号和图像的测量和分析研究提供一个跨学科的国际论坛。重点放在处理在临床诊断,患者监测和管理中使用的方法和设备的实际,应用为主导的研究的贡献。 生物医学信号处理和控制反映了这些方法在工程和临床科学的界面上被使用和发展的主要领域。期刊的范围包括相关的评论论文(review p