开发高质量软件的区别因素

发表于:2017-4-24 11:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Cynthia Freeney    来源:InfoQ

  本文要点
  · 生产高质量的软件对持续软件交付和优化开发流程的支持来说必不可少。
  · 专门针对培训和基础设施(硬件和软件)提高年度资本投资对于促进高质量软件的开发是必需的。
  · 采用与组织业务模型一致的轻量级流程和促进开发人员的工作效率是一个关键的环境决策。
  · 高层管理的承诺、组织文化和有效的开发人员的贡献是高质量软件开发的区别因素。
  摘要
  软件质量可达到的水平反映了一个组织的经营决策。有许多因素影响这个决策,包括开发、构建和测试环境的有效性,资源和相关技能、诚信、积极性和经验水平、商业协议,以及采用的流程和产能工具。
  开发、构建和测试环境的有效性,决定了测试可达到的效率和广度。让测试和生产环境非常接近,将更有可能发现潜在的和边缘的问题,否则就要在生产环境中直接面对了。
  选择的流程应在保证可重复性的同时,能够暴露和规避风险。流程不应该笨重,也不应该表里不一。流程应进行定期审查,以确保他们是最优的并为组织提供了价值。
  工作组织和计划的产能工具应该能够提高效率、支持透明度和汇总报告。选择的工具应该需要最小化团队管理费用。此外,这些工具感知到的价值不应该掩盖生产高质量软件所需的努力和举措。
  经验、技术能力和自我意识往往是与软件开发效率的相关属性。有效的开发人员在生产高质量的软件中具有重要的作用。他们的领域知识,对细节的关注和积极的测试来自于可贵的实践经验。在令人兴奋和具有挑战性的软件开发阶段,诚信和自我激励是维持一致和高水平生产力必须的特质。这些因素,以及适当的基础设施和一套轻量级流程,是不断生产高质量软件的前提条件。
  有效的开发人员不是不可能犯错的,而是他们的设计和实现都经过了深思熟虑,确保了“内在的”质量。从而减少了与质量相关的意外的可能性。有效的开发依赖于演绎推理技能和关键分析,而不是教条主义或对软件设计、实现和测试阶段的肤浅理解。
  认识到有效的人员的作用和贡献(对于生产高质量的软件),同时也不要看轻对轻量级流程以及他人贡献的需要。有很多文章描述了软件开发流程的重要性和他人在软件价值链的贡献。
  本文将重点阐述在软件开发环境中显露的这些方面,在此路线图的开发和/或定制/固定出价的实施都是规范的。
  因此,本文介绍了:
  · 持续交付和最优的部署流程对软件价值链的 意义 。
  · 高层管理承诺 和资本投入对生产高质量软件是必需的。
  · 有效的开发人员表现出的 可观察的行为特征和模式 ,其促进了“内在的”软件质量。
  持续交付和部署流程
  持续交付带来可持续增量开发高质量的为上线做好准备的软件。这个工作流程提升了特性实现期间的敏捷性,对于维持重要客户和干系人的经验反馈很有必要。然而,必须警惕的是,不要由于实现了方便快捷的交付捷径,反而令技术债有增无减。有效的代码审查、统一使用一个静态代码分析工具和有计划的代码重构会防止增加技术债务。
  持续交付流程
  持续生产高质量的软件和应用自动化到构建和测试环境中对持续交付有重大的意义。必须打开软件开发、构建和发布团队之间的沟通渠道,并必须要相互尊重。尽管开发人员尽了最大的努力,针对副本进行修改,并在提交资源库之前定期同步主代码分支,但无意的“糟糕的构建”的情况仍然不免会发生。应立足未来,及时提出解决方案来处理这种情况。
  当做到生产高质量的软件时,自然而然想到的下一步就是需要把功能和解决方案从内部生态系统环境部署到最终用户环境下了,那里才是实现用户价值的地方。参考一个最优的软件部署流程:
  · 在软件部署流程中有效地利用自动化工具。
  · 最小化员工的行为和互动,让他们不必再从代码库把代码拿出来,转换为最终用户使用的二进制形式。
  · 生产高质量软件是持续交付和优化部署流程的前提。
  旅程
  软件组织不断寻求改进软件质量的途径。高质量软件是另一个带来竞争优势的产品价值主张。然而,可持续地生产高质量软件即没有银弹也没有快速解决的办法。相反,应采用的策略是提升敏捷度,进行里程碑跟踪和有计划地规避风险。
  必须形成一组适当的可持续地生产高质量软件的核心条件和因素。以下承诺和投入的水平决定了整个旅途的时间和会遭遇到的痛处:
  · 组织文化
  · 基础设施
  · 流程和工具
  · 有效的开发人员
  高层管理生产和交付高质量软件的支持必须公之与众,并设立为第一价值观。和工作流程的优化与持续的软件交付流程和部署流程相关的培训及基础设施的改善,必须有专门的年度资本投资。组织文化应该支持安全的环境,鼓励建设性的反馈,透明度、合作和“跳出条条框框”的思考。
  基础设施支出应被用于硬件和软件的提升。投资于培训,应该优先考虑确保健壮性和可扩展性的虚拟化技术,以及持续集成工具和真实世界的数据模型。基础设施的规划审查,应该考虑创建和维护测试环境的工作量和成本,该环境应尽可能贴近于生产环境。显然,从成本上来说完全克隆一个生产环境可能不现实,但是越贴近就会使测试广度越大。
  培训投资应该超越产品课程的范畴,包括实践学习的机会。开发人员应该接触软件价值链中的活动,以获得广泛的基础知识。此外,应该给软件开发人员机会,去观察最终用户是如何通过产品功能的使用创造商业价值的。与客户一起讨论如何使用产品特性来应对现实世界的使用情况,从而促进软件开发人员的成长。
  采用的流程应该规避风险,保证可重复性。流程不应太多层次,也不应表里不一。流程也应该使管理方面灵活,有地方性的团队。流程应定期审查以确保它们是最优的,并为组织提供价值。
  工作组织和计划产能工具应提高效率、支持透明和汇总报告。选择的工具应最小化所需的团队管理费用。来自这些工具的感知价值不应该掩盖生产和交付高质量软件所做的各种努力和行为。
  这些因素和条件是实现高质量软件的重要手段。然而,有效的软件开发人员的贡献是确保“内在质量”的其中一个主要手段。
  有效的软件开发人员
  有许多著名的软件开发流程和方法,它们能促进高质量的功能和解决方案的生产和交付。选择的流程,结合知识渊博的QA人员,自动化的单元测试和回归测试为帮助交付高质量的软件提供了一个强大的武器。
  然而,有效的软件开发人员的角色应予以检查。在某些方面,他们的作用是可比的,他们直接在前线决定了“内在的”质量。一个有效的软件开发人员使用技术知识和商业知识,不断创造优质的功能和解决方案,为客户提供价值。
  有效的开发人员为了生产高质量软件作出的贡献,有时会令价值链中的其他活动的成功和失败黯然失色。然而,他们在软件价值链中的贡献不应被视为理所当然。
  组织结构各有不同,但是有效的软件开发人员的影响范围往往会延伸到以下领域:
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号