导致嵌入式系统失败的原因

选择了IT行业,就选择了一个充满于挑战的行业。对于软件工程师而言,项目的成功和失败对他们很重要。因为一行行的代码他们不知道熬了多少个通宵,脑细胞死了多少而写出来的。如果项目失败了,就意味着辛辛苦苦的一切付诸东流。这不得不令人沮丧。本文就有尚观教育给大家讲解一下是什么原因会让一个项目在不知不觉中慢慢地且不声不响地走上失败之路。

  1、成员流动

  每家公司都会经历员工或承包商的流动,但关键人物太过于经常变动,可能是一个项目注定失败的领先指标。有很多原因可以说明为什么人员流动对项目会有不利的影响。第一,它会造成其他团队成员心理上的影响,而降低生产力。其次,失去关键人物可能会导致历史性和重要的信息会永远遗失,这会放缓发展的脚步。最后,替换队员需要对新的成员进行训练,并跟上团队的脚步。这是一个会使人分心的工作,会让其他成员放下手边的开发工作来教导新的成员,结果会导致开发成本的增加和延长交付时间。

  2、走走停停症候群

  孩子被教导说,“不要喊狼来了。”这话是一个警告,不要误发假警报。这种警告有一种“进行!停止!进行!”的周期,在项目中很容易被忽略。一位经理、客户,或其他一些单位猛烈地催促他的团队,声称该项目要在某一日之前完成。开发人员因此周末加班,投注更多的心力。然后,就像这股来得很快的催促之力,突然之间却又嘎然而止。个月后,它又再次告急。 “快点,我们必须在X之前出货!” 然后同样的事情又再次发生。

  项目这种走走停停一再重复的紧迫性将会对开发团队造成心理层面的影响。开发人员不再相信任何的迫切性。事实上,他们会有一种心态,开始觉得这个项目并不是一个需要认真对待的项目,它很快将再次停止,那么为什么还要投入任何的努力?

  所以,不要对项目喊狼来了!

  3、完美主义者的态度

  许多工程师都有一种完美主义者的态度。这种态度所带来的问题是,不可能开发出完美的系统,撰写出完美的代码,或者在最适当的时间推出产品。完美主义是×××水月,如果完美主义是公司文化的一部分,它将会是产品可能会不断修正,直到公司破产倒闭的标志。

  正确的心态不是完美,而是成功。为了可以成功地推出产品,什么是最低的成功标准?设下成功的标准,并在一旦达成后,立即推出产品。之后可以用启动加载器(boot-loader)来添加功能并解决那些小错误。

  4、加速的时间表

  要迅速地开发出一个嵌入式系统,事实上,设计团队事实上要放慢脚步,这似乎违反直觉。但依据加速的时间表(accelerated timetable)工作,会因为压力和,更重要的是,有比较高的可能性会产生错误,而使得效率降低。错误将直接影响小缺陷的数量,而这些小缺陷随后又会增加测试时间和返工的时间。

  另一个问题是,当开发人员都抢着和努力满足加速的时间表时,他们会图省事而走快捷方式。比如,代码没有批注及说明。像是架构图和流程图等设计文件也付之阙如。相反地,设计只留存在程序设人员的心中。放慢脚步,把事情做正确,会更快地得到最终的解决方案。

  5、 不良的结构化软件

  嵌入式软件是嵌入式系统的血液;没有了它,产品就无法运作。不良的结构化软件是一个很明确的失败征兆。嵌入式系统的系统结构需要具有灵活性,以便未来成长之用。它要有用于测试、除错和进行日志记录的空间。一个架构不佳的系统将会使得施作不良,而导致该软件错误百出而难以管理,从而注定要将它的岁月花在除错上,直至项目最终死亡为止。

  6、 本末倒置

  开发一个新产品是一种会令人兴奋的奋斗过程。其中有很多事情要做,而公司通常是急着想把产品从概念化成可以生产的产品。这种匆促的举动是极其危险的,尤其是当生产决定浮现时。

  当产品的机械设计或外观和感觉被拿来推动其电气需求时,这就是一个很好的例子。在工作的电气和软件原型被验证之前,生产工具就准备好要生产了。在这种情况下,似乎总是有电路板没有检查,需要进行调整的问题。对那些匆匆忙忙、且太快就试着要把所有的事情同时拉在一起的项目,最终结果总是由于修改而落入花更长时间和更多成本的结果。

  7、 范围潜变

  每个项目都有范围潜变(scope creep),但范围潜变的程度可以是该项目是否会成功或失败的决定性因素。范围潜变最危险的一个领域是,它是暗中为害的。某天在电路板上增加了一个简单的传感器,几个月后再加一些上去,这些看起来完全无害。但他们可能是致命的。

  范围潜变的最大问题是,变化通常是微小的。乍看之下,改变看起来只是短短几天的工作。但是,每次加一点点,系统的复杂性也随之增加了。复杂的系统需要更多的测试,可能也需要更多的除错。随着时间的发展,范围潜变可以将系统改变到使原来的软件体系结构和设计变得过时,或甚至变成是不正确的解决方案!最终的结果是使一个项目变得远远地超出其预算范围,实际进度落在交货日期之后,此一项目很少或几乎没有结束的迹象。

  结论

  不管是什么样的嵌入式工程师,在开发新的嵌入式系统时,没有人确保这个项目百分之百会成功。影响项目的成功有许多因素,而我们工程师们需要做的就是把失败率降到最低。你可以从以上总结中吸取经验。判断自己的项目是否在走着一条缓慢且迈向失败的路。

原文地址:http://blog.51cto.com/13850058/2140343

时间: 2024-10-09 14:58:49

导致嵌入式系统失败的原因的相关文章

VS2015 编写USB通信上位机时,改变net框架导致DLL调用失败的问题解决方法

最近在写USB通信的上位机,调用了windows里的DLL,开发环境:64位WIN7 .VS2015.NET4.5.2:开发完成后在自己的电脑可用,在32位电脑.NET其他版本以及WIN10的环境下不可用,检测发现问题在于DLL的调用不成功,为了解决这个问题,查阅了几天的资料,现在终于解决了,记录下来以便忘记. 具体方法如下: 1.修改项目属性里的NET框架为4.0 2.修改配置管理器为X86 然后重新生成程序,问题解决.造成这个问题的原因主要有两个原因:1.NET版本过高,低版本不兼容:2.不

安装Windows 和linux双系统失败导致Windows无法引导的解决方法

笔记本电脑原来的系统是windows 7系统.想在此基础上安装一个ubuntu系统,但是安装了一半突然没电停止了,再次开机发现windows系统也无法引导了,尝试重新安装Ubuntu系统,安装完成依然没有windows系统的引导信息. 开始尝试各种解决方法: 1.在linux 的grub中添加win的引导信息,重启选择win的菜单,有引导但是无法进入系统一个光标在屏幕左上角闪.失败! 2.使用winpe工具里的引导修复工具修复,多个工具都尝试了,依旧失败. 3.因为原来的win7系统有好多工作中

哪些原因会导致创业的失败呢?

导语:成功是每位创业者的梦想,但成功毕竟只属于少数人.如果你刚刚踏上创业之途,避免以下可能导致创业失败的七个错误,或许成功会眷顾到你. 如果你正准备创业,失败是一条必经的道路.但如果你无法弄明白失败的原因,成功永远不会眷顾到你.以下是可能导致创业失败的七个主要原因: 一:把收入看得比客户还重 把收入看得太重是创业失败的一个重要原因.刚开始创业的时候,千万不要把收入看的太重,更不能忽视客户.当然,笔者并非是"教唆"创业者不重视收入,但是相对于客户资源而言,赚钱更简单些,因为只要有客户,公

用adb pull命令从android系统中读取文件失败的原因及解决办法

问题:使用adb pull命令从android系统中读取文件失败.显示:Permission denied 原因:是由于文件权限原因引起. 使用ls -l命令查看android系统中的文件权限为: -rw-rw---- app_51   app_51 也就是说,该文件只有app_51用户以及app_51群组拥有读写权限,而adb shell的用户为shell,既不是app_51用户,也不在app_51群组中,所以没有权限读取这个文件.所以就出现了 Permission denied. 解决方法:

Android 4.X 系统加载 so 失败的原因分析

1 so 加载过程 so 加载的过程可以参考小米的系统工程师的文章loadLibrary动态库加载过程分析 2 问题分析 2.1 问题 年前项目里新加了一个 so库,但发现native 方法的找不到的 crash 好多,好些都是报了java.lang.unsatisfiedlinkerror native method not found,而且基本上是出现在4.x的系统里,特别是 4.4,4.2的系统.在网络上搜索相关的可能导致到这个问题的原因: so 文件没有在对应架构的目录里找到: 方法名有

嵌入式系统C编程之错误处理

前言 本文主要总结嵌入式系统C语言编程中,主要的错误处理方式.文中涉及的代码运行环境如下: 一  错误概念 1.1 错误分类 从严重性而言,程序错误可分为致命性和非致命性两类.对于致命性错误,无法执行恢复动作,最多只能在用户屏幕上打印出错消息或将其写入日志文件,然后终止程序:而对于非致命性错误,多数本质上是暂时的(如资源短缺),一般恢复动作是延迟一些时间后再次尝试. 从交互性而言,程序错误可分为用户错误和内部错误两类.用户错误呈现给用户,通常指明用户操作上的错误:而程序内部错误呈现给程序员(可能

嵌入式系统烧写uboot/bootloader/kernel的一般方法

本文介绍了在嵌入式系统中烧写uboot/bootloader/kernel 的一般方法,以及如果uboot或者内核出现错误,  www.2cto.com 引导失败等情况时如何重新烧写uboot/kernel. 烧写uboot/kernel的方式一般有两种,一种是在linux本身(shell中),直接将uboot/kernel的影像文件(二进制文件)使用操作烧写flash的命令烧写到flash特定分区上, 另一种是在uboot界面上,通过配置serverip,ipaddr,使用tftp命令下载ub

脚本与嵌入式系统

(原创文章,转载请注明出处) 脚本以前限于行业应用,一直给我低效.低能的印象,但凡事总有个例外,我工作中用到了脚本语言.于是让我思索到底这个脚本在嵌入式系统上,特别是工业系统上,能有多大的作为?到底能走多远. 脚本语言不是什么新鲜的东西,自打有了编译型的语言自然就有了解释型的语言.限于计算机硬件,解释型的语言初期没有编译型的语言强手.后来计算机硬件越来越强了,解释型语言,这种易于学习,编程简单的语言渐渐流行,代表的就是Basic.再后来,横空出世了Java.这种介于解释型和编译型语言之间的语言,

嵌入式系统C编程之堆栈回溯

前言 在嵌入式系统C语言开发调试过程中,常会遇到各类异常情况.一般可按需添加打印信息,以便观察程序执行流或变量值是否异常.然而,打印操作会占用CPU时间,而且代码中添加过多打印信息时会显得很凌乱.此外,即使出错打印已非常详尽,但仍难以完全预防和处理段违例(Segment Violation)等错误.在没有外部调试器(如gdb server)可用或无法现场调试的情况下,若程序能在突发崩溃时自动输出函数的调用堆栈信息(即堆栈回溯),那么对于排错将会非常有用. 本文主要介绍嵌入式系统C语言编程中,发生