2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

  • 2020-02-13
  • 本文字数:2374 字

    阅读完需:约 8 分钟

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

事件回溯

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


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


  • 当选区主席用选区识别码(PIN 码)经过双重认证登陆到 App 后,就会浏览到关于如何进行初选的基本信息。

  • 选区主席需要输入参与初选的总人数;

  • 选区主席需要分别输入第一轮和第二轮初选投票总数。App 会计算出每个候选人应该获得多少代表名额。随后,App 会计算出每个候选人应该获得多少选票。


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



有趣的是,美国公共广播电台(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 整个产品构建周期。



对于外界质疑的该款 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 上收集到的所有结果都是正确的,并且已经得到验证。



Gerard Niemira 的言外之意是:


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


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


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

最终结果

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

结语

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


今日讨论:


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


2020-02-13 09:3220347

评论 7 条评论

发布
用户头像
这是reactnative被黑的最惨的一次。
2020-02-15 21:10
回复
用户头像
顶一下
2020-02-14 20:26
回复
用户头像
典型的想花小钱,办大事,结果一地鸡毛。
2020-02-14 14:23
回复
用户头像
每月10万,一个设计2w,一个测试1w,一个主程3w,一个前端2w,一个产品2w
2020-02-13 14:38
回复
外包给中国(或者印度)团队应该还是够的,不然换成美刀就只能请一个全栈工程师开发4个月了(每月税前1.5w)
2020-02-13 14:40
回复
给国内开发前肯定够,程序开发并不复杂,并发考虑一下,1+1+1,3个人2月内搞定。
2020-02-13 18:16
回复
产品,设计和测试不用全时间投入,产品,设计主要在前期,测试在后期.. 所以投入最多20w,人家还得留点利润那..
2020-02-14 16:27
回复
没有更多了
发现更多内容

实用机器学习笔记二十一:集成学习之Bagging

打工人!

人工智能 机器学习 学习笔记 集成学习 12月日更

2021 年 25 大 DevOps 工具(上)

禅道项目管理

DevOps 工具

给弟弟的信第20封|珍爱生命,远离传销

大菠萝

28天写作

百度智能云以知识智能化驱动产业智能化升级

百度大脑

40张图+万字,从9个数据类型帮你稳稳的拿捏Redis 数据结构

华为云开发者联盟

数据库 redis 数据结构 Redis 数据结构

用链式调用的方式来给代码减负

为自己带盐

dotnet 28天写作 12月日更

React vs Angular vs Vue.js 那个前端框架更好

编程江湖

前端开发 Javascript框架

HIVE中临时表创建

编程江湖

大数据 Hive SQL

quest2上手初体验

wood

28天写作 元宇宙 quest2

Vuepress 2.X + Element-Plus 的基本使用

码字与律动

typescript Vue3 vuepress Element Plus Vuepress2.X

Flink 实践教程-进阶(4):TOP-N

腾讯云大数据

flink 流计算 Oceanus

阿里云(腾讯云)服务器使用宝塔,搭建Python环境,运行 django 程序

梦想橡皮擦

12月日更

为什么 SASE 很重要?

devpoint

SD-WAN sase 12月日更

让自家APP跑小程序的技术产品都有哪些?

Speedoooo

ios开发 APP开发 容器安全 Andriod开发 小程序容器

求适借力,共生共强|明道云伙伴大会(2021/秋)完满落幕

明道云

揭秘远程证明架构EAA:机密容器安全部署的最后一环 | 龙蜥技术

OpenAnolis小助手

容器 龙蜥社区

Dart 条件语句

坚果

flutter dart 28天写作 12月日更

身兼数职的Amazon DocumentDB,还有什么不为人知的功能?

亚马逊云科技 (Amazon Web Services)

Data

科技助力新冠防疫——构建 COVID-19 知识图谱

亚马逊云科技 (Amazon Web Services)

Data

阿里云弹性计算首席架构师分享云上应用架构演进三大方向

阿里云弹性计算

Flink 实践教程-进阶(3):窗口操作

腾讯云大数据

flink 流计算 Oceanus

关于Amazon Redshift性能调优的十大Tips

亚马逊云科技 (Amazon Web Services)

Data

Java 性能调优必备利器—JMH

编程江湖

JMH java编程

干货来了!神州数码 CIO 沈旸揭秘 Hackathon 背后的 TiDB 生态丨TiDB Hackathon 评委访谈

PingCAP

为Amazon DMS数据库迁移任务建立自动化监控机制

亚马逊云科技 (Amazon Web Services)

Data

重磅消息 | Amazon MemoryDB for Redis闪亮登场!

亚马逊云科技 (Amazon Web Services)

Data

netty系列之:一口多用,使用同一端口运行不同协议

程序那些事

Java Netty nio 程序那些事 12月日更

基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统

腾讯云大数据

流计算 Oceanus Elastic Search

【大咖直播】Elastic 企业搜索实战工作坊(第二期)

腾讯云大数据

Elastic Search

21《重学JAVA》-- 集合 (三)

杨鹏Geek

Java25周年 28天写作 12月日更

MySQL从入门到入魔(03)

海拥(haiyong.site)

MySQL 数据库 28天写作 12月日更

花40多万开发的App扰乱了一场大选,几乎毁了一家公司_语言 & 开发_李冬梅_InfoQ精选文章