根据您的经验,在那些为内部使用开发定制软件的行业(例如金融服务公司)中,哪些行业生产的软件质量更高,以缺陷率衡量,并且在质量上更容易长期维护?
什么对实现更高质量的贡献最大?是因为更好的软件开发实践,例如更加强调测试或规范吗?更了解这些工具的开发人员或者是强大的问题解决者?团队成员之间更好的沟通?
另一方面,您认为哪些行业生产的软件质量最低?为什么?
根据您的经验,在那些为内部使用开发定制软件的行业(例如金融服务公司)中,哪些行业生产的软件质量更高,以缺陷率衡量,并且在质量上更容易长期维护?
什么对实现更高质量的贡献最大?是因为更好的软件开发实践,例如更加强调测试或规范吗?更了解这些工具的开发人员或者是强大的问题解决者?团队成员之间更好的沟通?
另一方面,您认为哪些行业生产的软件质量最低?为什么?
我一直很喜欢“他们写的是正确的东西”,它详细介绍了 NASA 承包商的软件开发过程。
Shuttle 软件绝对是您最不想看到错误持续存在的地方之一!
另一方面,您认为哪些行业生产的软件质量最低?为什么?
我会说网络。主要是因为它非常易于部署,许多更新/修复可以在没有客户通知(或输入)的情况下完成。与盒装软件相比,这种心态似乎要轻松得多。
不得不继续说银行编写了最糟糕的代码 - 他们需要各种自定义解决方案,但编写代码不是他们的主要关注点,因此他们倾向于“让它以某种方式工作”。将其与将代码视为您可以通过将其运送给最低出价者来制作的小部件相结合,出来的东西可以真正令人畏缩。
这当然因银行而异,也因银行内部的组织而异,但总的来说,我没有看到很多高质量的代码出现。作为一个在银行工作了 10 年的人,我认为自己是糟糕的银行软件方面的专家 :)
这是一个非常复杂的问题。虽然 NASA 确实为生命关键系统或必须在远距离运行的机器人系统提供了高质量的代码(想想最近对航海者 2 号的软件修复,距离地球 13 光小时),但 NASA 的质量并不便宜,或很快。线对线,它可能是业内最昂贵的软件。
您在企业中的基本报告应用程序不需要那种质量。也不划算。有很多方法可以提高质量,它们的成本各不相同,从简单便宜(编码标准)到资源密集型、困难且非常耗时(每种方法的正确性书面形式数学证明)。
风险评估、项目事后分析和持续改进等项目管理工具可以帮助组织制定一套合适的质量实践。
不说具体的行业,我会说最具破坏性的做法,就质量而言,就是时间压力。没有什么比人为的紧迫期限更能促使程序员编写草率的代码了。
更好的质量有什么要求?
沟通至关重要。团队中的每个开发人员都应该知道每个其他开发人员正在做什么,至少在广泛的范围内。
其次,理解质量始于项目被接受的那一天。需求需要被理解和验证。关键因素包括确保需求确定要解决的问题,而不是使用建议的解决方案来避免问题定义;确保需求是可测量的和足够具体的,以使开发人员和客户都能够认识到解决方案满足需求;确保将需求清楚地传达给所有需求消费者,包括开发人员、测试人员、技术编写人员、支持人员和管理人员。质量最好根据明确规定的要求来衡量;如果您的要求定义不明确,那么质量充其量是偶然的。
评论至关重要。不仅仅是代码审查,还有需求分析、设计,也许最重要的是测试计划。测试的作用是验证需求是否得到满足。您无法测试不良或不存在的需求。
这有助于理解测试的作用。您无法测试产品的质量。测试可以验证质量。测试可以发现缺陷并验证它们是否已被修复。但是,如果在测试开始之前还没有遵循质量实践,那么测试就无法解决这个问题。
虽然我不是瀑布式开发模型的拥护者,但我认为敏捷开发可能会将事情推向另一个极端,并且很容易以损害质量的方式被滥用。我认为 Scrum 有助于缓解敏捷的一些问题。Scrum 促进团队内部的沟通,它认识到估计只不过是有根据的猜测,可以随着知识的提高而改进。