前言
随着珠海欧美克仪器有限公司的业务规模不断扩大,新产品新技术新应用带来的软件新功能的需求不断提高,软件升级的开发和测试工作量也在不断增加。例如,过去几年,我们每年完成的功能数量已从100多个增加到500多个。这几年来,软件迭代了几千次代码更改并发布了数十个软件版本,申请了十几个软件产品登记证书,成为公司评定高新技术企业的重要业务之一。
显然,传统的瀑布式以及粗放式的软件开发管理流程已经不适用于公司业务的发展。粗放式开发管理流程的弊端主要在于没有代码版本管理,无法跟踪历史记录,以及相较于敏捷开发模式,瀑布式模式无法迅速应对需求变更。
转向Scrum和DevOps
为了提高开发效率和代码质量,从十年前开始,欧美克仪器就转向更现代的Scrum和DevOps开发模式。
Scrum 是符合敏捷开发原则的一种典型且在全球使用最为广泛的框架,被应用于管理复杂产品的开发上。敏捷思维以用户的需求进化为核心,通过设定短期的、可实现的目标,采用快速迭代、循序渐进的方式,具有极大的灵活性,更快交付价值,主张拥抱变化。
Scrum 框架使团队能适应不断变化的外部环境和用户要求,并在流程和较短的发布周期中快速调整优先级,以便团队不断学习和持续改进。
DevOps则是一种开发理念,它强调开发(Development)和运维(Operations)的紧密协作。
DevOps采用一种跨功能的方式工作,将之前分离的角色(比如开发、质量保证和IT运维)集成到单一的团队中,使得软件的构建、测试、发布和更新能够更加快速且稳定。这种理念促进了持续交付和持续集成(CI/CD),使我们能够更快地对市场变化和客户需求做出反应。
用 Azure DevOps保证代码质量
为了更好地实施Scrum和DevOps,欧美克仪器选择了Azure DevOps作为开发平台。Azure DevOps是微软出品的一款云服务产品,它为开发团队提供了一整套的开发工具,包括项目管理、代码托管、持续集成/持续部署(CI/CD)、测试和发布等功能,能够满足我们在软件开发过程中的各种需求,并且它的云服务特性使得团队成员可以在任何地方进行协作。
需求管理
珠海欧美克仪器有限公司已经深耕粒度测量领域三十余年,得益于我们强大的销售、应用、售后团队以及遍布全国各地各行各业的客户,我们能够及时收集到各种反馈和意见。
同时,作为处于行业领先地位的母公司马尔文帕纳科的子公司,我们也能接收到来自全球的行业先进理念。因此,我们需要处理的需求量大而复杂。在这种情况下,Azure Boards的需求整理功能就显得尤为重要。
Azure Boards提供了可视化的工作项跟踪系统,帮助我们以敏捷的方式管理项目。我们可以使用它来跟踪用户需求、任务、缺陷和问题,以及为每个工作项设置优先级和迭代路径。通过这种方式,我们可以确保每一个反馈和需求都能被妥善处理,每一个工作项都能在预期的时间内完成。这不仅提高了我们的工作效率,也确保了我们能够充分考虑和满足客户的需求。
代码管理
我们选择了Azure Repos作为我们的代码仓库,提供无限的私有Git仓库,以支持协作并保证代码的安全。我们采用GitFlow流程进行开发,通过设定不同的分支,使得我们可以同时处理多个任务,同时每个分支都可以独立地进行测试和审查。每一行代码修改都需要经过团队成员的审核,并且必须通过严格的自动化单元测试才能被合并到主分支,以保证代码的质量。
我们重视代码的历史记录和管理,每一次代码修改都有详细的历史记录,包括提交者、提交时间、修改内容等。并且,每一行代码都可以与Azure Boards中的工作项关联,让我们可以轻松地跟踪每一行代码对应的客户需求,确保我们的开发工作始终紧密围绕客户需求进行。
自动化构建和交付
我们使用Azure Pipelines实现持续集成和持续部署。每次代码提交后,系统会自动进行构建,包括智能化的代码质量检查和编译生成安装包。只有达到质量要求的代码才能进行构建,并通过单元测试覆盖率等图表,我们可以直观地看到代码质量变更。
每个生成的构建安装包都会尽快发送到每个团队成员手中,以便进行更进一步的测试。这样可以确保我们的产品始终保持高质量,同时也能快速发现并修复问题。
测试
在我们的软件开发过程中,我们坚持执行敏捷软件测试。一旦需求确定,我们就立即开始编写相应的测试用例。这些测试用例在开始开发前就会进行评审,这种方式旨在减少开发过程中的返工,提高开发效率。
在软件发布前,我们会执行全面的测试计划,所有的测试结果都会被详细记录并编写成测试报告。这份报告会包含所有的测试细节,包括测试覆盖率、测试结果、未解决的问题等。只有当这份测试报告通过评审,证明我们的软件达到了预定的质量标准,我们的软件才会得以发布。这样的测试流程确保了我们交付给客户的每一个软件产品都是高质量的。
总结
欧美克仪器使用Azure DevOps平台实现了全方位的代码和流程管理,每一行代码的修改都能找到其对应的历史记录、管理需求、自动化测试、测试用例、测试记录,以及关联的软件版本。
凭借Azure DevOps的自动化通知机制,以上所有内容变更在研发团队中高速流转,确保我们的团队能够保持高效运行。所有团队成员都对软件的质量承担共同责任,确保我们提供的软件始终保持最高的质量。
我们的研发团队并不满足于现状,我们始终在不断地对我们的流程进行改进,以实现精益求精的目标,从而能够为我们的客户提供最优质的软件产品。