没有没有Bug的应用程序
120吨的航天飞机正在等待发射。没有人坐在控制中心,等待按下将发射航天飞机的按钮。取而代之的是,该软件为航天飞机上的四台相同的机器提供了订单,这些机器从数千个传感器中获取信息并做出数百毫秒的决定。
据FastCompany报道,该软件没有错误,不会崩溃,也不需要重新启动。它甚至把软件称为完美的 -- 和人类一样完美。420,000行程序的最后三个版本只有一个错误。
如果软件有错误,人们就会死亡。期间。该软件由260名妇女和男子组成的小组日复一日地维护,以确保该软件能够实现预期的目标,并确保没有人死亡。
所以谈到这个问题: 人类可以编写无错误的应用程序吗?技术上的答案是肯定的。另一方面,实际的答案并不多。这背后的原因是,除非您正在构建对生命或任务至关重要的应用程序,否则它在经济上是不可行的。
为了理解为什么期望无错误的应用程序或软件开发是不现实的,让我们来了解一下软件的行为。软件或应用程序不会在完美的设备或系统上单独运行。它具有不受其控制的平台依赖性,并且库的存在使其变得更加复杂。
如果你希望你的应用程序是无bug的,那么你还需要确保你使用的每个库也是完全无bug的 -- 当你依赖第三方时,这是很可能的。说到第三方,即使应用程序中的最细微的复杂性也会触发第三方应用程序接口的集成-同样,这是无法控制的外部依赖。
盖伊·川崎 (Guy Kawasaki) 在他的最新著作《开始2.0的艺术》中写道: “足够好就足够好。以后还有时间进行完善。这不是你开始有多伟大,而是你最终有多伟大。“。当你建立你的产品公司时,这是一个很好的想法。询问任何成功的科技产品企业家,他们会告诉您他们的移动或网络应用程序在最初的日子里有多糟糕。
在产品最初的几天中,对每个用例进行核算是乏味的,并且可能会让您忘记其他重要的事情,例如产品验证。您最好的选择是考虑想象中的典型用例,并确保这些用例没有错误。
错误只是报告时的错误。因此,以下是您应该如何处理第一个或下一个应用程序开发项目。
1.期望您的开发人员编写bug-freecode不应该是目标。相反,专注于给你的早期采用者一个可以解决他们问题的功能性产品。
2.提出许多错误仅仅是由于软件的功能和最终用户的期望不足。这可以通过坚持在编写一行代码之前创建详细的功能规范 (FS) 文档来轻松解决。下面是一个示例FS文档供参考。
FastCompany的文章进一步报道说,在机载航天飞机集团中,大约3分之1的编写软件过程发生在任何人编写一行代码之前。
3.开发公司的大多数程序员不进行单元测试,甚至不知道如何进行单元测试,这意味着作为一家公司,您将不得不雇用更昂贵的公司。
4.考虑所有成本,并为自己决定最重要的是-99% 的时间运行良好的廉价软件或100的时间运行良好的昂贵软件。另外,您现在想使用此应用程序,而不是十年或二十年。