原创 从头重新设计一个复杂的嵌入式设计的后果

2007-10-10 15:09 2686 5 8 分类: MCU/ 嵌入式
我经常听说有人认为使系统正常工作的唯一方法是从头开始设计。最近的例子来自于我住所附近一个大学校的委员会。从头开始听上去像是个好主意,但对运行过一段时间的系统来说,通常不是一个好的选择。在我事业早期我第一次了解这个问题,当时研发一个地面和飞行设备之间操作的接口和软件。我分享经历在近期的文章“立方体的故事”,“最少的必要改变:聪明的老板传授重要的设计原则”。这个吹捧的是做最小的必要变换来完成改变系统性能的目标。
  
重新设计比使用现有实施更好的观点是不正确的。现有的设备已经在应用条件下测试过,并对系统实际运转的恶劣环境作了调整。怎么能丢弃现有的重新开始呢?
  
除了非常可能重复已经从现有系统获取的教训,从头开始付出的努力不见得能使系统工作得更好。如果我们决定不从头开始,增加现有系统的新能力,保持产品随竞争者的改变而改变,似乎更好。以Web浏览器而著名的Netscape的衰落,部分原因是当竞争者Microsoft加速改进浏览器时,公司决定从头开始重写浏览器。
  
从头开始基本上是一个丢弃现有系统执行过程中获得的众人多年努力和教训的决定。除政治和经济竞争团队的不同动机以外,为什么设计团队要花费更多时间考虑重来呢?
  
一个原因是设计者声称遗留系统的结构/代码凌乱,因为找到系统为什么这样执行很难,特别是当你不用历史观点看待所有指导现有执行的决定时。退一步说,在没有完全明白现有结构和得到更好结构的方法的情况下,怎么重建系统呢?
  
这是我使用过的什么是工程学的描述:工程学是一个不论任何条件都能够使系统持续运转的学科。从头设计系统时,必须考虑实际应用环境设计。在那些条件下系统成功运行,我们允许系统使用者尝试范围更宽的条件,这是系统结构或代码杂乱的原因,为了与非一般的多变条件相适应。
  
其他可能引起从头再来动机也许是独立自主和创新文化。另一个原因是大学的实验室通常让学生从头开始完成项目。我们要偏离将来的设计工程师,发展从零开始而不是改进原有结构的思考模式吗?
  
英文原文:
  
The consequences of redesigning a complicated embedded design from scratch
  
All too frequently I hear how some group of people feel the only way to get their system to work properly is to start over from scratch. The most recent example of this was from the council for a large school district near where I live. While starting over from scratch may sound like a great idea, it is usually a poor choice for any system that has been operating for a period of time. I learned this first-hand early in my career while taking care of the interface and software that operated between the ground and flight equipment of an IR&D project. I shared my story in the current issues Tales from the Cube article, The smallest change necessary: Wise boss imparts important design principle, which touts the value of making only the smallest change necessary to accomplish your goal of changing your systems behavior.

The idea that doing a redesign from scratch is much better than using the existing implementation is flawed. The existing implementation has been tested under field conditions and contains fixes to real-life conditions that the system has actually had to operate in. How does starting over preserve those lessons learned?
  
Besides the very high chance of having to repeat hard-won lessons learned that are already captured in the existing system, the effort spent starting over from scratch is effort not being put into making the current system work better, adding new capabilities to the existing system, and keeping your product viable against your competitors alternatives—especially if they have decided not to start over from scratch. Netscapes fall as the preeminent Web browser is partially attributable to the companys decision to rewrite the browser from scratch while its competitor, Microsoft, incrementally improved its browser.
  
The decision to start over from scratch is basically a decision to throw away many man-years of effort and lessons learned that the current system implementation encompasses. Aside from the different incentives between politicians and commercially competitive teams for wanting to start over from scratch, why would a design team spend more than a few moments even consider starting over?
  
One reason is that some designers may claim the legacy system configuration/code is messy because it is hard to figure out why the system is implemented the way it is—especially when you do not have the historical perspective behind all of the decisions that led to the current implementation. Taking this to the next step, how does rebuilding a system without completely understanding why the current configuration is the way it is result in a better configuration?
  
Heres a description of what engineering is that I use: Engineering is the discipline that enables a system to behave consistently despite having to operate over a range of conditions. When we design a system from scratch, we by necessity (to contain the amount of complexity we have to consider at one time) design the system to the most likely conditions. As the system operates successfully under those conditions, we allow the user of the system to try a wider range of conditions, and this is where and why the system configuration or code gets messy—to accommodate those variable conditions that are not compatible with the general conditions.
  
Other possible incentives for this bias to want to start over from scratch may be that our culture rewards the maverick that blazes a new trail and makes new ways of doing things possible. Another reason is that the technical labs in college usually give projects to students that start from a blank slate. Are we biasing our future design engineers to develop thought patterns that propagate working from a clean slate rather than making small changes to and improving on legacy structures?
  
英文原文地址:http://www.edn.com/blog/1890000189/post/1690007969.html
PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

zwj-gg_818035047 2007-10-11 15:39

多谢支持!o(∩_∩)o...哈哈 互相支持

用户1139550 2007-10-11 08:54

设计方案寻求中.....

zwj-gg_818035047 2007-10-10 16:57

支持你,哈哈。
相关推荐阅读
用户106357 2009-06-19 16:32
再见,朋友们!
----这个贴子程序匠人提供了一个很好的题材《我和EDN不得不说的故事》,经过本人的再三思考,再加上回忆《匠人手记》中匠人的文采,实在惭愧,苍天呀,为什么要让我看到这么好的文章。。。。----网友A给...
用户106357 2009-04-28 10:08
欢迎参加微软知识竞赛,两千元当当购物礼券等你分享!
欢迎参加Windows Embedded知识竞赛,大家可以通过此次竞赛学到更多Windows Embedded相关知识,并且还有机会获得超值大奖! 登录后此点击此链接进入竞赛页面,赢取当当购物券>...
用户106357 2009-03-13 10:24
专题:TI模拟器件原创博客大赛文章精选
请直接点击以上图片进入专题页面! ...
用户106357 2009-02-27 11:39
2008年EDN最受欢迎的社区内容
点击进入专题页面>>>>>点击进入专题页面>>>>>...
用户106357 2008-12-26 14:19
STM32知识竞赛获奖名单公布,请速来领奖!
STM32知识竞赛现顺利结束,现公布获奖名单,请所有获奖的人速与EDNChina取得联系,领取奖品! 欢迎加入“STM32团队”小组交流!幸运奖(5人): iammsl        免费STM32学...
用户106357 2008-12-26 14:18
STM32市场调查获奖结果公布!请大家速来领奖
STM32市场调查已顺利结束,现公布参加STM32市场调查获奖选手的名单,请大家速来领奖!欢迎加入“STM32团队”小组交流!幸运奖(10人):Beskcom       50当当购物券<?xm...
EE直播间
更多
我要评论
3
5
关闭 站长推荐上一条 /3 下一条