由晒衣服想到的——工程设计中的预设错误(故障、异常)防范设计的思考

来源:互联网 发布:免费网站模板源码 编辑:程序博客网 时间:2024/04/29 12:39

        那天早晨,在家中阳台上晒衣服。给衬衫领口的钮扣扣上了。放到阳台外的凉衣架上去晒。这时,不知怎么回事,觉得衣服只扣一个钮扣是不是不安全。如果大风吹过,会不会把钮扣吹开,衣服吹掉。于是又给在给衬衫加了一个夹子。

        由此想到,在工程设计中。无论是计算机软件的或是其它工程的,我们预先都会设想很多的异常情况(或称故障,可以被考虑到的。除此之外,还有相当多的故障是无法预知的)。对于这些异常情况,我们是否要在设计中考虑进行处理呢?就像衬衫会被风刮跑这样一个预设的故障。

        对于这些故障是否进行处理的研究,实际上是一个经济性的核算过程。在设计时,对故障情况及造成后果本身的分析研究,是要化代价的——时间,一种无可挽回的代价。如果这个代价不大,几分钟、几小时。我想,我们应该去研究一下。可是,如果对于这个预先设想的故障,发现在设计中增加一个处理项代价很小——就像只要给衣服多夹一个夹子。我想,我们也可以省去研究的时间,真接加上这个处理方案。当然,这个处理方案的增加应该是孤立的,不影响其它部分的。

        如果研究过程代价过大(往往是原因复杂、现象复杂的故障)。这时,应该考虑如果没有措施,一旦出现预设的后果,是否能接受。如果完全能接受,就应当不去研究。

        在研究过程中,应该由多人同时提交方案,从中选取最优(实现代价最小、对其它影响最小)的一个方案。

        从以往的软件项目工程经验中。我发现,一个好的软件设计,往往是要在设计之初预设很多异常情况的。这些异常情况的预设,往往与经验有关。从事开发工作时间越长,日常过程中接触的故障类型越多,在以后的项目初期设计时,能预设考虑的故障也越多。最后设计出来的系统运行越稳定,需要的维护工作量也越小。

        长期的工程实践中,我感到,工程中——软件工程中,大部分的工作都与处理用户的非法(未按规定步骤、流程等等)操作有关。为了防止软件出错,我们对于每一步操作,都进行了大量的验证。这此,都是基于故障预设的结果。如果你预设了某个故障,你肯定会在代码中对其进行一定的处理的。

        一般的需求分析工作结束后,进入了基本设计阶段。但在该阶段,至少在我现在供职的公司,并没有故障预设(预计)的过程。只是就流程设计数据结构、功能画面。而这一部分,因该在整个过程中占据重要的地位。因为他能帮我们尽可能的减少软件出错的可能性(但肯定不会是全部,再多的人、再多的经验,也只能预设出整个故障集合中的一部分。我们能做的只是尽可能多的预计异常情况)。

原创粉丝点击