我已经在嵌入式领域呆了很长一段时间了,看来大多数我交谈过的程序员所做的事情与15年前或更多年前的做法大同小异:瀑布开发、命令行工具和一小群人使用了lint。
与服务器/桌面环境相比,这里似乎有很多与编程的各个方面相关的活动:
只是嵌入式环境使得实现新的实践或工具变得更加困难吗?
是嵌入式程序员的心态引导他们远离新的工具/概念吗?
与it领域相比,典型的嵌入式行业的管理是落后的吗?
我意识到这是一种泛化,一些嵌入式项目确实使用了Scrum、敏捷、CI、Automated (事实上,我在一家公司工作,从80年代起就已经这样做了)。但我的印象是,这个比例是很小的。
发布于 2009-02-12 21:32:57
是嵌入式开发人员,比他们的桌面浏览器?更加保守。
是的,因为他们更关心犯错误的后果。修补嵌入式设备是件大事。对于桌面应用来说就不是这么回事了。
在嵌入式世界中,水法主义开发是必要的,因为您通常在构建硬件和软件的同时。您需要尽快知道有多少内存,多少处理器速度,多大的闪存,如果任何特殊的硬件是必要的,etc...The硬件设计无法完成直到您知道这些答案。一旦你决定了,那就差不多了。重做董事会的准备时间太长了。如果你搞砸了,那么这个软件将不得不解决任何缺点。通常情况并不理想。
至于tools,这很大程度上是基于供应商提供的内容和开发人员的任何偏见。在一些项目中,我使用了XP Embedded,并且获得了桌面开发人员获得的几乎所有东西。
XP,Scrum,迭代,精益/敏捷:
由于大多数设计都是预先完成的(这是必要的),而且在编写代码的时候通常没有工作的硬件,所以快速的周转过程并没有提供太多的好处。
持续集成/自动化构建不错,但并不是真正必要的。什么…打开IDE并按下编译按钮大约需要15秒。
自动化单元测试
没有理由不应该这样做,但是只有一部分代码可以真正地自动测试,因为另一部分是硬件依赖的,或者还有其他一些依赖项,比如定时。因此,您无法真正判断代码是否通过自动化测试工作。
重构工具支持
嵌入式处理器产品的供应商就是处理器。他们提供IDE支持,以鼓励您购买他们的处理器。他们不可能支付一个Visual大小的开发团队的费用,以便将所有的花哨添加到IDE中,而IDE甚至不是他们的产品。
发布于 2009-02-12 13:47:23
我们都习惯了这样一个事实:我们的桌面PC偶尔会崩溃(或者至少桌面上的应用程序会突然消失)。这算不了什么。下一个补丁会修复它。
在嵌入式空间中,您正在构建一些无法修补的东西。生命取决于你的设备(在汽车、电梯或医疗系统中)。大多数设备都已安装,然后必须在无人值守的情况下运行数年。所以嵌入的人往往是非常保守的。TCP/IP常常是“太现代”。他们坚持他们的可靠串行总线与通信“堆栈”,大约是50行汇编程序代码。
更糟糕的是,设备上没有足够的空间,这意味着您不能使用最新的编程语言之一,使TDD和自动构建幸福。
其次,许多嵌入式开发环境都是专有的。如果你的供应商不支持它,你就得不到它。在过去的几年里,Linux已经开始削弱这一点,但是很多设备还不够强大,无法运行Linux。即使是这样,CPU的能力也会被用于其他方面,而不是运行源代码附带的高级操作系统。
因此,是的,有强大的力量在后台工作,以保持嵌入式空间的存在。
发布于 2009-02-12 13:55:04
以下是我能想到的一些原因:
https://stackoverflow.com/questions/541195
复制相似问题