关于系统的一点思考

来源:互联网 发布:同花顺行情软件 编辑:程序博客网 时间:2024/05/16 14:25

关于系统的一点思考

本文是因为两个小故事引发的一些关于系统建设的思考,甚至我不清楚是系统完整性还是系统安全性的归属问题:

故事1:飞机乘客不听劝告按了一下按钮就损失10多万

故事1:飞机上的这个小动作可能让你赔10万!厦航这位女乘客被好奇心给害惨了…

2017年6月12日中午11时50分,厦门航空一架757在北京首都国际机场过站短停期间,左侧翼上逃生滑梯被旅客误放。据悉,涉事乘客刚听完乘务员的提醒就想试试,结果误放逃生滑梯。据网友@欢乐的云端之上 介绍,事件的经过是:坐在他后两排的乘客,听到乘务员说只能在紧急情况下才能触碰,于是就想试试正常情况下碰了会怎样……(这位女乘客可能更需要静静)当时正在该航班上的网友 @Guage表示,当时只听到 "砰 "的一声巨响,透过舷窗看到逃生滑梯从飞机上展开。听到机上其他乘客议论,原来是有人不小心触碰到了应急逃生滑梯的按钮。之后,机上113名乘客全部下飞机返回候机楼休息,分批改签了后续航班继续旅程。厦航方面经过系列调查,向记者介绍了当时的情形。据悉,昨天中午,旅客上机后,乘务员依照规范做应急出口的简介。然而,49排靠窗的一位女性旅客张某,当听到乘务员正在说“正常情况下,请您不要触碰应急出口手”时,她突然伸手拉动边上的应急滑梯手柄。见此,乘务员立即大声制止,然而翼上应急滑梯已经充气放出。事情发生后,空警迅速控制该旅客,机场公安将当事人带下飞机,接受警方调查。“旅客不遵守安全规定,擅自触碰飞机上的应急设备,不仅给航空公司带来经济上的损失,还会导致航班延误影响其他旅客的行程。”厦航方面称。目前,该涉事乘客因擅自移动航空设施处行政拘留12日。滑梯充气造成的直接和间接损失还需要进一步评估,旅客已经交由公安机关处理。 

故事2:粗心的船长因一次大便,整个潜艇下沉,50人跳海逃命,其中3人丧生!

U-1206号是1944年3月16日才入役的VIIC型潜艇.这种新型潜艇装有一种新设计的深水高压马桶,能在深海中使用,但需要经过专门的训练才行.U-1206潜艇之所以造价昂贵就是因为其采用了许多高科技设备来提高潜艇性能,比如U-1206上装备的“新型深海高压厕所”,传统潜艇由于技术条件的限制,潜艇当在水下航行时,粪便只能储存在粪便箱,隔一段时间就需要上浮到海面排出粪便,但这个时候的潜艇是非常危险的,容易被反潜飞机或者反潜舰艇发现并遭到攻击。“新型深海高压厕所”就能够很好的解决这个问题,粪便在通过一系列复杂的管道后会被送到一个高压舱,然后被高压送入到海水中,科技是高科技,也能很好的解决潜艇的上浮问题,但就是这套流程操作起来非常复杂,先按哪个按钮,再按哪个按钮,然后再进行冲水,这套程序的操作极为严格,特别是顺序不能乱,否则就会容易出现问题,比如屎尿倒灌的问题。没想到这个冲水程序完全反了,本来粪便要先送入高压舱然后关闭厕所输送管道,再打开高压舱进行排便,没想到这个程序变成了高压舱直接打开,粪便输送管道也没有关,海水直接从高压舱——排便管道涌入潜艇,在巨大的水底高压下,这个管道也关不住了,潜艇迅速下沉,艇长一看不对劲只能迅速下令丢掉鱼雷和水箱,进行紧急上浮。上浮后的潜艇由于灌水严重已经失去了动力,艇长担心反潜巡逻机很快就会到来,只得下令弃艇,船员们乘坐皮划艇离开,有3名战友被卷入风浪中丧生,其余人爬到了岸上当了俘虏,而闯祸的艇长一直活到了战后。70年代英国石油公司在铺设海底石油管道时发现了U-1206号潜艇.它现在还在北纬57度21分、西经1度39分约70米深的海底。

有人提出 飞机、轮船这种专业的设备,应该有安全确认功能,比如按了以后还要做一个操作,甚至必须两人才能同时操作。避免不必要的经济损失。

这就是本文希望阐述的一个观点,到底一个系统要做到什么程度,才是更好的系统

就以上两个故事,我们做个反方向的假设,如果飞机需要两人操作才能释放安全梯,或者需要输入一个什么指令,或者最差,需要输入并确认两次。也许可以避免乘客误操作,但会给出事时处理增加了一级风险,如果那个人不会操作,当时操作出问题,就不是停在跑道上浪费10万块那么简单了。同样,如果因为这个风险,不采用故事2中的设计,有可能需要上潜到比较容易被发现的位置,出现了被别国发现,挑起事端,是否就更无法接受了呢?没有发生的事情,总是感觉其影响没有已经发生的事情大。实际并非如此,往往系统建设都是多方面考量的,不可能出现一个几亿美金的船,随便几个设计都被彻底颠覆的情况。而且,往往最终方案都是各类情况评定最优的可能性。10万是小事、关键时间救人是大事;拉屎费劲是小事,船舶安全是大事。

引入第二个问题:系统的保障体系,是否一层即可。

传统系统中“好的系统”通常在每一个环节上都会采取冗余的处理,用来增加系统单个组件的稳定性,不会因为一个组件损坏影响了全局;而计算机系统中“好的系统”以重用为准绳,好的系统往往单一维度的功能单一模块处理,最终通过类似孔明锁式的拼装,形成一个优秀系统,但一旦任何一个组件出问题,整个系统都会问题。

为什么会这样?

  • 我想还是性价比最高为准绳,传统系统,每一个环节是一个生产线,每一个产品可能是一个组件,而且是独立的,未必清晰自己是什么系统在使用,如果安全系数不高,卖不出去。同时,现实系统与软件系统不同,弱项就在眼皮底下,如果不增加各个环节的独立安全体系,可能出现进入大门就能进入保险柜的尴尬情况。
  • 反过来,计算机系统也是组件式开发,但是因为其组合灵活,看不见摸不着,任何一个冗余都是需要完整测试才能保证其可用的,另外,任何一处修改,也会带来相应测试,如果每一个功能都单独实现一套安全机制,则可能出现因为某个环节的安全机制较低,导致系统整体较低的情况。
  • 如果把软件系统做成每一个模块都独立成系统的代价,远比现实中的实体产品要高得多。这可能就是答案,或者仅代表一家之言。

潜艇故事的疑问
如果说,飞机故事,10万块只是金钱的影响,为了救人时候方便,损失一定风险是OK的;但潜艇是为了救潜艇自己不因为排除废物而被发现,最终还是为了自保–那如果按错了,船会被废掉,岂不也是舍弃了自保?如果A事情设计之初为了保护自己却引入了新的伤害自己的B后果,这种事情是否能有更好的解决方案呢?是否性价比不高了呢?或者最简单的问题是,假设排污不进行处理,存放它一年半个月,只要密封的好,是否也没有大碍?一切问题都不得而知。

总结:系统的边界、内部结构、组合方式、稳定性冗余等都是在设计之初所定义清楚的,没有想清楚就贸然动手,有可能会产生得不偿失的后果。放大了讲,说话是否也是如此?万物、有型无形的万物及行为,是否也是如此呢?

原创粉丝点击