Sunday, 31 May 2009

搬家

由于国内有朋友抱怨blogger给封锁,所以决定把本博客移植到独立域名blog.china-safetyeng.net。希望国内更多人可以了解和交流系统安全工程。

Thursday, 28 May 2009

ALARP

既然有人提起,就开个新贴讨论。首先,ALARP只适用于英国,所以其他国家有权不采用,当然法德都有类似的原则如GAMAB和MEM。其二,ALARP有法律含义:就是相关人士有义务把风险尽可能降低,只要在合理可行的前提下。这种义务制是英国特有,就像我们义务教育一样。因此如何定义某风险已经达到ALARP就是要靠义务者和权威人士的判断。这里必然带有个人的主观性。这个制度之所以通行,是基于西方发达国家内在的信任和职业道德体系上。说白了,我雇用你,你就有‘义务’在力所能及的前提下把所负责的事情办到最好。

至于如何判断所谓的合理可行,则由good practices/best practices这个概念决定。也就是说,当我们要对某个风险进行控制时,要考虑到现有已知的各种被行业接受或认同的技术或方案。最新但未成熟的肯定不是good practice。然后决定哪些该采用。这里的决定要考虑到费用和相应的安全得益的权衡比较。

补充一点,要降到ALARP,该风险必须可以容忍(tolerable)。这里容忍界限的定义考虑因素很多。不同国家和地区肯定不一样,每个地方的人都有自己可接受的安全模型,一般都是基于过去的安全数据。也就是说如果一个国家的事故率高,相应容忍界限应该要低些。所谓国情不一样,不能一概而论。其次不同行业也不一样,因为涉及的系统类型不一样。一般都是由国家定义一个可容忍的指标(如每年只能容许若个人员伤亡),然后分配到各个行业(如铁路),最后分配到不同的系统类型(如铁路信号)。必要时还要针对不同的人群来考虑容忍界限:如公众,用户,和公司职员等,因为他们的风险暴露不一样。而公司可以根据这些指标为参考来定义相应产品的风险容忍度。实践上可以使用risk matrix/graph来简化,细节以后再谈。

简单说,ALARP是一种安全风险模型,比较有名的一种。

Wednesday, 27 May 2009

安全管理

没有人就没有系统,即使高度自动化系统也是需要人来设计/开发,安装和维护。而人总会犯错, 不论在何时何地。所以人的行为对安全有决定性的作用。因此我们需要一个合理和严格的安全管理系统。一旦安全管理系统建立起来,它可以重复应用到不同的产品,技术开发和工程项目。这就是为什么管理这么‘值钱’。所谓管理嘛,无非就是管钱,管人,管项目流程,和管风险。从安全的角度,钱和风险捆绑在一起,所以只剩下三个:人(多个人也就是组织),安全流程,安全风险(要符合ALARP)。再细分一下:组织上要考虑安全责任和角色分配,职员能力,安全文化与培训,队伍之间的沟通与协调,和第三方组织(如供应商)合作,相关的法律义务和责任等。流程上要考虑如何计划和引入安全周期,采用最佳实践,文档纪录和改变控制等。风险上如何保证风险被足够评估和控制等。

不同行业有不同的安全管理系统。航空,国防,原子能,铁路都有相应的指引和规范。这里涉及的方面太多,以后再讨论。而每个公司应该根据这些指引来制定自己的管理系统,所谓因地制宜。个人经验来说,无论这个管理系统制定得如何严格,到执行时又另外一回事。

这就是,说就容易,做是很难滴。


Tuesday, 26 May 2009

形式方法

凡是涉及安全相关或关键软件开发,形式方法几乎都会谈起。形式方法是一种以(离散)数学为基础的软件开发手段。理想状态就是要像解数学题一样,从需求说明(一旦形式化建立起来)可一步步严格推导到实现。从另外一个角度来看,软件测试就变得可有可无,既然实现可以证明是符合需求。

一说形式方法,很多人都会集中在描述方面(formal specification),如Z, CSP, B, VDM,而忽略了refinement/verification阶段。如果specification不能跟implementation连接话,那更完美的描述也如同废纸。而且这个连接最好是自动:通过automated theorem prover (推导形式), 或通过model checker(搜索形式)。

个人不看好形式方法。原因一,它不能根本上解决需求问题。需求来自于用户和特定的领域(domain),形式方法不可能证明它的描述does the right thing (i.e. validation)。而需求描述体现于知识由用户或stakeholders到开发者的传递和交流协调过程。这里涉及的问题很多,以后再讨论。而需求问题一向是软件失效的主要来源。

原因二,它的推导和证明过程都是基于理想化的abstract machine, 不能连接到最终运行的物理实现平台上,例如大到编译器,小到memory clips and logical gates。要把这一切都推导出来,现有的技术来说,是绝对不可能。

其他限制如scalability (可以通过hybrid或lightweight方法来改善)和过高的开发费用等。

当然它有一定的应用:主要是通信/加密协议,算法,或电路设计。我个人理解,也就是当软件的主要问题不是需求问题,而是特定的设计问题。

形式还是要讲究滴,呵呵。

Friday, 22 May 2009

电磁兼容性

安全工程的另外一个重要分支是电磁兼容性(EMC)。这是要保证电子设备在其电磁环境中能正常工作和抵抗电磁骚扰。原理上,保护措施主要是针对源头和如何阻止传播。具体细节涉及到电路设计,接地设置,和测试等。这都需要专门的EMC工程师负责。当中也有专门的国际规范和标准。安全工程师嘛,只能沟通协调和管理,例如协调EMC plan等。

颇复杂滴。

Wednesday, 20 May 2009

人因工程学

安全工程的一个重要分支是人因工程(Human Factor Engineering)或人类工效学(Ergonomics)。这个学科估计懂的人很少,国内就更加少。从事这方面的一般都是大学本科学心理学或应用心理学。查了一下wiki, 国内也有工效学学会(Chinese Ergonomics Society) - 1989成立, 但估计这方面还是很新,能听说过人因工程学这个名字的,已经很不错。

重视人因的原因很简单,就是系统理论的‘人-机-环境’合一,看作一个整体系统来分析。没有人,就没有系统,归根到底系统是为人服务。人因工程一个重要应用是人机操作界面设计,试想飞行员按错一个或多个命令键,后果可以是很严重。减少人为错误是安全工程的一个重要目标。另外是操作环境,机械零件,房间等设计,都要符合人因工程。

实践里好像都是使用相应的规范,研究上挺有意思,主要是建立合适的人为错误模型,还有虚拟三维模拟。

似懂非懂。

Tuesday, 19 May 2009

风险

风险一个很普及的术语,从安全工程,医学,金融到管理,几乎无处不在。不同行业对风险的定义和评估都不一样。例如交通安全,是用每年的伤亡人数来衡量。金融则从特定时间内投资的损失来衡量。总之,风险是跟特定的未来目标挂钩。例如安全风险当然离不开相应的安全功能。

在交通行业,安全风险最低的是飞机(0.01),其次是火车(0.4),然后是汽车(2.8),最高是摩托车(112.6),次高的是行人(49)。这里的比较是以每十亿乘客公里所引起的平均伤亡人数(2004年的英国数据)。呵呵,所以大家要多称公共交通。就铁路安全来说,最危险的地方是火车站,风险最大的是路人擅入轨道,其次是路人在站内跌倒/滑倒 (英国数据)。国内铁路最危险的据说是level crossings。

风险评估离不开概率。而要降低风险就只能从管理的角度出发,既然没有无风险的东西存在。

有这样一个‘传说’,剑桥有一份大学入学考试问道什么是风险,有学生回答道:这就是风险(This is risk)。万分佩服。