《匠人手记》推荐网上购书渠道:
EDN网(ednchina)购书入口   >>>
互动出版网(china-pub)购书入口   >>>
当当网(dangdang)购书入口   >>>
淘宝网(taobao)购书入口   >>>
更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历

百宝专栏

  • 首页 相册 标签
  • 电脑应用(65)
  • 供需信息(22)
  • 写书近况(82)
  • 匠人文集(115)
  • 硬件技术(171)
  • 匠人公告(86)
  • 与非门专栏(545)
  • 匠人笔记(115)
  • 团队撰写(96)
  • 汽车电子(52)
  • 编程技巧(465)
  • 程序宝典(476)
  • 网络酷文(472)
  • 开发工具(19)
  • 资料宝藏(274)
  • 项目管理(11)
  • 藏经宝阁(42)
  • 趣味设计(5)
  • 社区热贴(2)
  • 比尔盖茨熊专栏(0) 
  • 百宝信息

    载入中...

    百宝流量

    (2006-07-01开始)



    匠人手记

    浅谈“鲁棒性”(匠人原创)
    程序匠人 发表于 2008-1-21 23:09:00  阅读全文 | 回复(0) | 引用通告 | 编辑

    N年前,匠人曾经在“侃单片机”论坛里发起过一次关于软件抗干扰的讨论。其实,当时的讨论基本上已经达到了软件所能做的一切范畴。但是随后,讨论的方向逐渐转向了“软件抗干扰是否有实际意义”上去了。虽然匠人坚持认为软件在抗干扰方面可以有所作为。但是,来自反面的意见,也让匠人深思了许久。

    世纪轮回。这次,由emailli网友发起的“建议做为2008年1月的专题----软件抗干扰的方法研究 ”,又把当年的讨论场景再现。别具意味的是,对软件抗干扰本身的置疑也被再次提出。

     

    从某种意义上来说,随着单片机硬件抗干扰性能的越来越完善。软件在此方面的用武之地,似乎确实在萎缩。试问又有几个单片机程序中应用到了软件陷阱呢?比例恐怕很小吧。

     

    然而,匠人最近有事没事,经常喜欢在同事面前卖弄这个词——“鲁棒性”。

    鲁棒性
    robust
    [rEJ5bQst]
    adj.
    强壮的;健壮的
    His robust strength was a counterpoise to the disease.
    他身体强壮抵住了这疾病。
    粗野的,不文雅的(玩笑)

    鲁棒是Robust的音译,也就是健壮和强壮的意思。
    鲁棒性(robustness)就是系统的健壮性。它是在异常和危险情况下系统生存的关键。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持某些性能的特性。根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。

    什么叫“鲁棒性”呢?按匠人的理解,就是,你的程序是否把所有的因素(包括异常因素)都考虑进去了,并且对可能的异常因素采取的规避、补救措施。比如:

     

    1、我们要让一个变量做递增运算,每次+1,达到某一个阀值时清零。那么你在做阀值判断时,是判“等于”,还是判“大于等于”?(正确答案:判“大于等于”)

     

    2、我们要根据一个变量去查表,或散转,假设这个变量正常范围=0~7。那么你有没有考虑过,如果该值大于7后,程序该怎么办? (答案:先屏蔽(剔除)无效值,再去查表,或散转)

     

    3、我们要让某个IO口输出“高电平”去驱动外部电路(比如说,继电器)。那么你是否只输出一次“1”就认为完事了?(答案:开辟输出缓存,定期刷新输出口)

     

    4、串口接收数据,假设收到“0X00”时执行动作A,收到“0X01”时执行动作B。那么,你有没有考虑过,如果收到的是其他数据,该怎么办?(答案:参考第2例)

     

    这样的例子不胜枚举,每一个细节中都存在陷阱。如果在程序设计中予以考虑,则可以规避;否则,很难说你的程序运行过程中会发生什么事情。

     

    因此,一个好的程序,定义应该如此:“在正常情况下,可以得到正常的结果;在异常情况下,可以得到意料中的结果

     

    而不是:“在正常情况下,可以得到正常的结果;在异常情况下,得到不可意料的结果。

     

    匠人的一些同事(新手)往往会跟匠人来犯犟。强调曰:“我的程序没有BUG啊,是输入不正常导致的。”,云云。确实,这些细节上的疏忽,不能称为BUG。我们只能称之为“鲁棒性”差!

     

    再扩展开来看,在整个系统中,不光是软件需要考虑“鲁棒性”,硬件也同样需要考虑。

     

    举个例子:假设系统工作电压为5V,那么当电压低于5V时,会发生什么事情?考虑过吗?OK,你说你有复位电路,电压跌落时会复位。那么匠人再问:电压快速跌落时可以复位,但如果电压缓慢下降,你的复位电路还能正常工作吗?或者,电压波动时,又会如何?

     

    这样的细节还有很多,贯穿在整个设计过程中。对于有准备的人来说,只要事先预想到了并采取规避措施,都不是问题。对于没有准备的人来说,调试将是一场艰苦的跋涉。因为前进的道路上,“坑”太多了,指不定在哪里跌倒。

     

    以上,为匠人信口开河。欢迎探讨。

    看《匠人手记》,与匠人同行!北航出版,正在热卖!

  • 标签:鲁棒性 
  • 发表评论:
    载入中...

    芯片专题

    器件专题

    软件专题

    硬件专题

    综合专题

    项目专题

    原创专题

    器件检测
    LCD LED
    按键 触摸键
    E2PROM
    电池 电机
    电阻 电容 电感

    指令系统
    软件算法
    编程规范
    滤波算法
    串行通讯

    PCB设计
    I2C PWM
    红外遥控
    充电技术
    中断 ADC 

    匠人手记
    匠人夜话
    网络心路
    一周热点串烧
    从零开始玩PIC
    DIY旋转时钟

    广告5号位 [投放]


    学习板、开发板、编程器、下载器、仿真器(查看详情……)

    站内搜索


    站外搜索


    百度  google
    mp3  歌词 
    图片  FLASH 
    知道  文档
    新闻  词典 
    地图  mp3 
    软件  天网 
    雅虎  爱问 
    搜狗  讯雷 
    网讯  华军 
    天空 

    21IC器件搜索
    百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     
     

    新鲜货色

    匠人手记

    近期动态

    载入中...

      《匠人手记》购书全攻略 
     书友近况:淘书手记答疑与讨论:什么是散转程序 
     《匠人手记》新书艳照
     EDN《匠人手记》签名售书优惠活动开始报名啦!
     欢迎加入《匠人手记》EDN书友会
     欢迎加入《匠人手记》书友会Q群
     《匠人手记》终稿目录
     《匠人手记》封面,请大家先睹为快
     上周六收到了北航寄来的《匠人手记》清样,让大家先睹为快

    匠人原创

    粉丝评论

    往日酷贴

    载入中...

    载入中...



     网络酷文:博客,改变的不仅仅是图书 
     网络酷文:C语言宏定义技巧C语言 条件编译详解

      21IC上海2008-04聚会报名进行中。。。 
     两分钟让你明白什么是ERP![转]
      神奇的Duff's Device 算法
      实用一线通讯电路及软件设计方法
      程序员的“七年之痒”
      史上最短但最精彩的武侠小说
      网络无厘头文学《缺钙水浒》(爆笑)

     你的博客还能持续多久(转贴)
     电动车无刷电机控制器软件设计要点(作者:谢渊斌)

    大千八卦

    友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [柔月阁]

    [八楼的呼吸]

    [hotpower 的水潭]

    [xwj的文君阁]

    [所长的BLOG]

    [阿摆手记]

    [电子伙伴]

    [unaided的笔记]

    [小飞的笔记]

    [单片机开发联盟]

    [网址之家]

    [好东西网址大全]

    [美萍中文精选]

    [数字电视之家]

    [SMARTCODE电子书斋]

    [软件开发之窗]

    [Armoric]

    [我爱研发网]

    [infernal的笔记]

    [雄鹰的空中加油站]

    [SunK]

    [逍遥电子]

    [ningpanda的博客]

    [C-Design]

    [一网见天下]

    [海边淘沙]

    [嵌入式365]

    [水牛的仓库]

    [股剩是怎样炼成的]

    [PIC论坛]

    [ICC AVR开发网]

    [中国高校自动化网]

     

     

     

    MCU博客-中国电子工程师博客网 

    大学生电子网 

     

     

     

     

     

    !!! 《匠人的百宝箱》 !!!