一切源于工程实践。

防呆设计/权限分级设计

尽可能消除导致故障的源头。从根源解决问题。
问题的根源有很大一部分是由于人员的误操作。
当用户的控制权越来越多时,用户就可能犯错,最终酿成事故。面对这个问题,在工程实践中通常会考虑采用防呆设计(把用户当傻瓜)。
即不给用户有犯错的机会,减少其控制权,并且对其控制权有更加严苛的要求,这时候,就减少了事故的发生。

如果削减了用户的控制权,用户处理事务的灵活性又会收到影响。那么有没有既能保护用户的灵活性,又能减少用户犯错机会的设计呢?
我想,权限分级设计,应该是一个不错的应对方法。该方法区分普通用户和管理员用户,将尽可能多的控制手段暴露给管理员,将尽可能少的控制手段暴露给普通用户。也即,不给普通用户犯错的机会,同时留给高级用户更多灵活性。
权限分级设计有很多好处,但不是能方便实行的,它需要一些额外的设计条件,即区分管理员账户和普通用户,这需要用到密码或者钥匙的概念了,增加了系统的复杂度。所以不适用于一些简单的设计。

防呆案例:

  • 内存条插入方向只有一个,反方向是不行的,设计了不对称的凹槽来避免额外的插入权。
  • 苹果不允许安装外部应用。
  • 更高级的是Type-C接口,就设计成两面都可以插,堪称傻瓜设计的最佳实践了。

权限分级案例:

  • 电脑管理员与普通用户
  • 路由器超级管理员

故障安全设计

保证即使发生了危险操作,也可以降低危险后果。

  • 触电时,人的生命更重要,所以有空气开关瞬时断电。
  • 水箱留有泄流孔,防止水满了溢出。
  • 异常处理。
  • 汽车的安全气囊

冗余设计

狡兔三窟,多留一个备用手段是很有必要的。当然由此也会带来额外的成本。

  • 多个备份
  • 多条线路

可拓展性

一个系统如果当下是最完美的,那么将来应对外部的变化时,它可能是最糟糕的,所以当下的系统设计要考虑到未来的变化。
系统的设计应该保持其可拓展性。在其寿命时间内考虑其前瞻性设计,方便未来升级。

  • 软件设计模式主要探讨的内容
  • 家庭布线
  • pc组装机
最后修改:2020 年 12 月 15 日
如果觉得我的文章对你有用,请随意赞赏