Categories
程式開發

花40多万开发的App扰乱了一场大选,几乎毁了一家公司


事件回溯

近日,美国爱荷华州召开了民主党总统候选人初选大会。过往,都是用纸质投票的方式进行,这次希望采用一款名为“IowaReporterApp”的电子计票应用程序,该程序最初被认为可在投票2小时后快速公布结果。但是,这款应用程序在使用时发生故障,导致大规模混乱,直到第二天还未能公布结果。

该应用程序由Shadow公司开发,前后花费了四个月时间,成本为63182美元(约合人民币44万元),基于React Native构建。这家公司还曾替政府建过网站、设计数字营销活动或打造各种工具。据专家称,IowaReporterApp应该有如下基本功能:

  • 当选区主席用选区识别码(PIN码)经过双重认证登陆到App后,就会浏览到关于如何进行初选的基本信息。
  • 选区主席需要输入参与初选的总人数;
  • 选区主席需要分别输入第一轮和第二轮初选投票总数。App会计算出每个候选人应该获得多少代表名额。随后,App会计算出每个候选人应该获得多少选票。

据外媒报道,Shadow在1月中旬就曾邀请人员测试过该程序,但必须通过Android的程序测试平台TestFairy来下载App,一家媒体在两支Android手机上下载及安装了IowaReporterApp,但只有一支手机上的可正常启动。Shadow也在苹果的测试平台TestFlight上部署了该程序,但很多人反馈下载或安装该程序都很困难。

花40多万开发的App扰乱了一场大选,几乎毁了一家公司 1

有趣的是,美国公共广播电台(NPR)曾质疑通过全新的App进行选举的方式可能会暴露公众隐私,当时民主党不愿揭露IowaReporterApp的安全机制设计,担心公布相关细节反而会让黑客有机可趁。如今看来,IowaReporterApp在很多方面的表现都很差。

问题出在哪?

公司体量小、缺乏经验

这不是第一次将移动应用程序用于选举中,以前之所以没有引发太多关注,是因为一切都运行良好,实际上,2016年的选举中就曾使用过具有类似功能的移动应用程序。

2016年为选举提供App服务的公司联合创始人兼联合CEO Rodney Guzman说道:

“当我目睹这一切发生时,简直像做了一场噩梦。这个工作如果由我们来完成就不会发生这种事。”

2016年,这项工作是由微软外包商InterKnowlogy公司完成的,InterKnowlogy公司基于微软技术为选举构建App和其他数字化基础设施。InterKnowlogy在应用程序开发方面拥有近二十年的经验。相比之下,2020年初选的应用程序是由一家名不见经传的新公司Shadow打造的,该公司以前从未接触过如此大规模的需求。

构建过于匆忙

2016年App和2020年App其实很相似,虽然功能并不复杂,但同一个App的多个版本需要服务于不同的设备和系统。更重要的是,这些版本在首次使用时就要表现出完美的性能,没有时间去做更新和改进。

由于2020年App供应商不像之前的团队那么经验丰富,并且有足够的资金和人力支持。据了解,2016年的App构建筹备了约一年时间,前三个月进行产品设计,与需求方会面,对App的可用性不断研磨,而这三个月初期设计阶段差不多赶上了Shadow整个产品构建周期。

花40多万开发的App扰乱了一场大选,几乎毁了一家公司 2

对于外界质疑的该款App到底花了多长时间来构建这一问题,Shadow首席执行官Gerard Niemira表示,“我们从8月开始接洽,并自那时起开始收集需求并着手设计,因此App的构建周期基本上是从2019年8月到12月。因为收集需求耗费了比较长的时间,所以直到交付期临近时才有了最终版本。”

根据国家记录显示,该App是在几个月内构建的,成本为63182美元,对于应用在如此重要场合的一款App来说,四个多月的构建周期真的不算长。

“我作为一名工程师,听到这种消息感觉有点疯狂,”InterKnowlogy软件工程师Michael Gramley说道。“我们不能在两三个月内建立一个稳定的平台。因为我们需要花费大量时间来测试所有内容。如果真有人这么做了,那最终失败的可能性非常大。”

缺乏训练和测试

在故障发生后,请来了6位网络安全和应用开发专家来对App进行分析。

Android资深开发人员Kasra Rahjerdi表示,该应用程序包含默认的React Native元数据,并且“只在原有的框架上添加了自己的代码”。换句话说,该App就像一个不会编码的人机械地按照教程完成构建。Rahjerdi表示,他们从初级入门包开始操作,只是在入门包上添加了一些东西。我甚至有一种感觉,觉得这个就像是通过谷歌搜索操作说明,然后一步步根据操作说明构建的App。

Shadow首席执行官Gerard Niemira在接受媒体采访时表示,该应用程序设计很简单。他称这种App不需要过于复杂,只需要帮助选区主席做数学运算,并以最快的速度获得票选结果,这是一个相对简单的App,原理就像计算器一样。此款App是可靠的,来自该App上的的数据是可靠的,在App上完成的数学运算也是可靠的,我们在App上收集到的所有结果都是正确的,并且已经得到验证。

花40多万开发的App扰乱了一场大选,几乎毁了一家公司 3

Gerard Niemira的言外之意是:

数据和结果都是正确的,只是,速度慢了不少。

然,这款app的设计初衷,恰恰是为了提高投票结果的统计效率。

除了处理数据的速度不尽如人意外,在被问及App的安全性测试时,Niemira解释道,我无法透露进行安全性测试公司的名字,但我们确实进行了独立审核。该审核时某些配置项的确出现了问题,但是我们已经在初选前将这些配置项进行了很好地修复。

最终结果

最后,该州在一份声明中称:选举数据和结果已经从App中导出,并且正在通过纸质记录进行核实。主席Tom Perez表示,该应用程序不会在任何初选或预审中再次使用。目前,该App的整个后端已经关闭,无法通过它或从公司服务器访问任何信息。App出现故障次日,美国国土安全部表示愿意帮助分析该款App的安全性,但该提议被拒绝。

结语

63182美元的生意哪怕对于一个体量如Shadow的公司来说也不算是笔大买卖。但是,这笔生意的背后却潜藏着巨大的利润空间和机遇。Shadow公司如果能为这次合作做好充足的准备,引起足够的重视,那么未来的发展将不可小觑。

今日讨论:

广大程序员,你们对这件事情有何想法?花费40万元,四个月的时间,构建这样一款APP,难度系数高吗?