一切源于工程实践。
防呆设计/权限分级设计
尽可能消除导致故障的源头。从根源解决问题。
问题的根源有很大一部分是由于人员的误操作。
当用户的控制权越来越多时,用户就可能犯错,最终酿成事故。面对这个问题,在工程实践中通常会考虑采用防呆设计(把用户当傻瓜)。
即不给用户有犯错的机会,减少其控制权,并且对其控制权有更加严苛的要求,这时候,就减少了事故的发生。
如果削减了用户的控制权,用户处理事务的灵活性又会收到影响。那么有没有既能保护用户的灵活性,又能减少用户犯错机会的设计呢?
我想,权限分级设计,应该是一个不错的应对方法。该方法区分普通用户和管理员用户,将尽可能多的控制手段暴露给管理员,将尽可能少的控制手段暴露给普通用户。也即,不给普通用户犯错的机会,同时留给高级用户更多灵活性。
权限分级设计有很多好处,但不是能方便实行的,它需要一些额外的设计条件,即区分管理员账户和普通用户,这需要用到密码或者钥匙的概念了,增加了系统的复杂度。所以不适用于一些简单的设计。
防呆案例:
- 内存条插入方向只有一个,反方向是不行的,设计了不对称的凹槽来避免额外的插入权。
- 苹果不允许安装外部应用。
- 更高级的是Type-C接口,就设计成两面都可以插,堪称傻瓜设计的最佳实践了。
权限分级案例:
- 电脑管理员与普通用户
- 路由器超级管理员
故障安全设计
保证即使发生了危险操作,也可以降低危险后果。
- 触电时,人的生命更重要,所以有空气开关瞬时断电。
- 水箱留有泄流孔,防止水满了溢出。
- 异常处理。
- 汽车的安全气囊
冗余设计
狡兔三窟,多留一个备用手段是很有必要的。当然由此也会带来额外的成本。
- 多个备份
- 多条线路
可拓展性
一个系统如果当下是最完美的,那么将来应对外部的变化时,它可能是最糟糕的,所以当下的系统设计要考虑到未来的变化。
系统的设计应该保持其可拓展性。在其寿命时间内考虑其前瞻性设计,方便未来升级。
- 软件设计模式主要探讨的内容
- 家庭布线
- pc组装机