销售形式化方法(以及不销售)的有效做法(和无效做法)

这是一篇关于形式化方法(Formal Methods)项目的文章,作者结合自身经验,阐述了在尝试规划形式化方法项目时应注意的一些要点:

  • 世界观:成本与收益:任何项目都有预期的成本和收益,存在客户特定的收支平衡线,高于此线项目有意义,低于则不值得做。潜在的形式化方法客户在成本和收益方面是理性的,很多潜在的形式化方法项目在成本效益权衡方面没有意义。
  • 项目必须早期交付价值:形式化方法项目不是一蹴而就的,而是逐步投入成本并获得收益,直到达到更大的目标。理想情况下,小成本应带来小但实际的收益,以逐步提升效益曲线,但形式化方法工具往往难以做到这一点,因为在获得收益之前有很多前期成本。
  • 正确性并不重要:很多开发者并不关心达到更高的正确性水平,他们当前的工具能满足需求,新的正确性技术可能会带来成本,而价值为零。例如在高保证系统中,公司或人员可能并不在意,因为他们已经考虑了漏洞或系统设计具有容错性。
  • 很难定义和解释成功:在规划项目时,很难让客户理解形式化方法的结果及其含义,这会导致客户不知道是否得到了想要的东西、难以解释不同选择之间的权衡以及不知道何时完成项目等问题。即使进行解释,也可能存在信息差距和误解,而且 caveats 往往会在内部解释过程中被简化,导致客户对结果产生误解。
  • 先做便宜的事情:形式化方法项目昂贵,而便宜的技术非常便宜。在使软件更可靠和安全的技术层次中,顶部的技术如代码审查、测试等非常有效,但很多项目没有使用足够的便宜保证技术。这使得向客户推荐形式化方法项目变得困难,形式化方法倡导者可以采取镀金(先使用其他便宜方法,再应用形式化方法)或 YOLO(认为形式化方法可以替代所有其他便宜方法)的方法,但都有局限性,更理想的是将形式化方法与便宜技术更紧密地集成。
  • 关键杠杆:成本与收益:当形式化方法似乎未被充分重视时,有两个杠杆可以拉动,即降低成本或增加收益,以将项目跨越收支平衡线。成本线,特别是学习和使用工具的人力成本很重要,而沿收益线移动在某些方面可能更容易,因为这意味着构建解决特定客户问题的工具。

总之,形式化方法项目需要考虑成本和收益,以满足客户需求并实现成功。

阅读 23
0 条评论