【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

花 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,难度系数高吗?


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-02-13 09:3220056

评论 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
回复
没有更多了
发现更多内容

Scala中String和Int隐式转换的问题分析

木子李G

scala 大数据 编程 隐式转换

仅凭这份Java大纲笔记,我如愿拿到了阿里offer。

Java架构之路

Java 程序员 架构 面试 编程语言

请问如何短时间突击 Java 通过面试?

Java架构师迁哥

用60行代码实现一个高性能的圣诞抽抽乐H5小游戏(含源码)

徐小夕

Java 大前端 H5游戏 H5

服务于阿里、滴滴、华为等一线互联网公司的分布式消息中间件RocketMQ核心笔记

Java架构追梦

Java 架构 面试 RocketMQ 消息中间件

Mybatis动态映射,so easy啦

田维常

恕我直言!有了这份MySQL学习文档,你收藏夹里的其他MySQL学习资料都可以扔了

Java架构之路

Java 程序员 架构 面试 编程语言

助力孩子走上学霸之路,K12学习神器现已面世!

E科讯

港美股交易系统开发框架构造简述篇

软件开发大鱼V15988750073

国际配售 港股交易系统开发 证券交易系统 资管系统 港股打新系统

SGY奇点交易所系统软件APP开发

系统开发

了解OAuth2.0

环信

超详细讲解!Android面试真题解析火爆全网,搞懂这些直接来阿里入职

欢喜学安卓

android 编程 程序员 面试 移动开发

智慧警务开发,二维码定位报警系统搭建

t13823115967

智慧公安 智慧公安扫码

话题讨论 | 程序员自己电脑中毒是甚么体验?

xcbeyond

话题讨论

刚拿到蚂蚁金服架构师offer!大佬教你如何成为offer收割机

比伯

Java 编程 架构 面试 计算机

四面腾讯pcg后端开发岗,一个星期面完成功拿到20K的offer。分享面经

Java架构之路

Java 程序员 架构 面试 编程语言

区分Protobuf 3中缺失值和默认值

Gopher指北

protobuf Go 语言

区块链信息共享应用落地搭建解决方案

t13823115967

区块链+ 区块链应用 信息共享

JS&Swift

ios swift

SGY奇点交易所系统软件开发|SGY奇点交易所APP开发

系统开发

还有谁比阿里人更懂SpringCloud Alibaba 呢?P8大牛纯手打笔记免费分享!

Java架构之路

Java 程序员 架构 面试 编程语言

DolphinDB与Elasticserach在金融数据集上的性能对比测试

DolphinDB

数据处理 金融 时序数据库 tsdb DolphinDB

Github 2020 年度报告:你以为新冠击溃了开发者?不!他们创造了更多代码...

阿里巴巴云原生

开源 Serverless 程序员 代码

区块链BaaS应用平台开发

13828808769

动态高并发时为什么推荐ReentrantLock而不是Synchronized?

moon聊技术

JVM 并发 synchronized ReentrantLock 锁升级

iOS面试基础知识 (一)

iOSer

ios 面试 runtime 编程开发 iOS Developer

某美女的程序员老公半夜都还不回家,原来是偷偷在公司看Redis+JVM+Spring cloud+MySQL技术文档

Java架构之路

Java 程序员 架构 面试 编程语言

新思科技最新报告显示开源安全是首要考虑因素

InfoQ_434670063458

《数据结构与抽象:Java语言描述》.pdf

田维常

数据结构

阿里架构师经验分享!啃完999页Android面试高频宝典,面试心得体会

欢喜学安卓

android 程序员 面试 移动开发

EPBC环保生态链系统开发案例丨环保生态链EPBC源码平台

系统开发咨询1357O98O718

环保链APP系统开发案例

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