软件开发

协调人员、工具和卓越实践,以快速创建高品质的软件。

什么是软件开发?

软件开发是在软件的使用寿命内定义、开发、测试、部署和管理软件变更的过程。它包括在创建和维护软件产品或嵌入系统或产品中的软件方面所涉及的全部流程(包括从立项到发布和持续维护)。软件开发是销售软件、基于软件的服务或智能产品的所有公司的核心竞争力 - 全球市场价值达 4,290 亿美元,复合年增长率 (CAGR) 为 11.7%(2022 年至 2030 年)。

overlaycontent

为什么软件开发很重要?

软件开发是全球经济实现创新的一个关键驱动因素。从汽车到手机、恒温器和医疗设备,软件均可提供关键的差异化功能。从工业物联网到基因测序、计算机视觉、机器人手术和自动驾驶车辆,软件在过去十年来的重大技术进步中均发挥了关键作用。展望未来,软件开发将会继续推动产品和服务创新。

软件的基本类型有哪些?

系统软件

系统软件用于运行计算机硬件,并为在其上运行的应用程序提供基本服务。操作系统软件是系统软件的一个示例。系统软件通常采用低级计算机语言编写,以大幅提高速度和效率。

应用程序软件

应用程序软件可为用户提供功能。例如,企业软件、个人软件和移动应用均为应用程序软件。应用程序软件可以用高级语言编写、由设计模型生成,或者使用预先构建的组件组装。

嵌入式软件

嵌入式软件是一种专用软件,可监视和控制飞机、汽车、恒温器和其他普通产品中使用的微处理器。嵌入式软件通常封装在电子控制装置 (ECU) 中,以提供功能集。例如,不同的 ECU 可提供汽车制动、导航、安全保护和其他功能。嵌入式软件通常需要实时响应,要求使用实时操作系统 (RTOS) 和编程语言。

常用软件开发方法

瀑布式方法

瀑布式方法是一种线性软件开发方法。项目从需求阶段开始,在项目进入设计阶段之前,需求阶段已全面定义并获得批准,随后是实施阶段。由于形成初始概念与最终实施之间要经历很长时间,因此瀑布式模型无法适应变化,更适合需求明确、失败风险低、高度严格的项目。

敏捷方法

敏捷方法是一种优先考虑灵活性和客户满意度的项目管理方法。敏捷方法充分利用称为“冲刺”的短期迭代、协同规划、称为“回顾”的定期审查,以及持续的价值交付。敏捷方法是需求不明确或不断变化的项目的理想之选,因为其迭代式方法可以在提供价值的同时明确用户需求。许多框架均提供了额外的指导,包括 Scrum、看板 (KanBan) 和规模化敏捷框架 (SAFe)。

混合方法

混合模式是指各种结合了多种方法要素的开发流程。例如,产品开发团队的常见方法是让设计、电气和机械工程师采用 V 模型并定期交付产品版本。软件团队遵循敏捷开发实践,每三周交付一次更新。两组团队定期聚集在一起整合工作并进行全产品范围的回顾。混合流程可以结合每种方法的优势,以快速且严谨的方式交付复杂的产品。

V 模型

V 模型是一种项目管理模型,通常用于管理涉及多个工程学科的大型复杂项目。它也被称为检验和验证模型。“V”模型左侧将需求分解为设计和详细的工程规范,而“V”模型右侧则集成、验证和检验每个生命周期阶段。V 模型是管理需要高度严谨性的复杂产品的有用框架。

软件开发卓越实践

敏捷性 - 快速响应不断变化的客户和市场需求。敏捷实践通过短期冲刺和频繁交付来优化敏捷性。

分析 - 捕获并分析团队指标,使活动与重要优先事项保持一致,并为实现持续改进奠定基础。

变更管理 - 管理对需求、代码和测试资产的变更,以便在整个团队中快速传递变更。拆分与合并资产以轻松创建变型。

持续集成和持续交付 (CI/CD) - 将代码更改合并到共享存储库,可定期集成、编译、测试和交付这些存储库,从而加快软件交付速度。

开发运营 - 采用自动化、可重复的发布管理流程,更快地向客户交付价值。

安全性 - 通过审计追踪、电子签名和其他管理技术来管理战略软件资产的保管和授权链。

需求管理 - 反复分析和定义解决方案的范围,并制定详细的规范。

测试和质量管理 - 检验和验证每个阶段的结果,以改进成果并降低质量成本。

发布规划 - 规划和管理针对最终用户的软件分发。

软件开发工具和解决方案

Codebeamer 是新一代应用程序生命周期管理 (ALM) 解决方案,可大规模简化复杂的软件开发。该开放平台利用强大的敏捷软件工程功能扩展了 ALM 工作流。Codebeamer 提供需求、风险和测试管理,卓越实践工作流,与开发工具链的集成,以及对敏捷开发和 V 模型方法的支持。借助 Codebeamer,团队可以从一开始就实现价值,并根据自己的需求定制工具。利用预先配置的模板简化监管合规性。尽享从创意到交付的全方位追溯能力。Codebeamer 基于生命周期协同开放服务 (OSLC) 标准构建,可与 PTC 工程数字主线集成。

overlaycontent

常见问题解答

软件开发流程包含哪些阶段?

  • 需求分析
  • 设计
  • 实施
  • 测试
  • 记录
  • 部署和维护
  • 重复使用

软件开发是如何随着时间的推移而不断发展的?

软件开发技术总是在发生变化。过去,程序员从头到尾都在编写应用程序。如今,软件工程师采用敏捷开发方法通过短期迭代快速交付价值。他们可以根据设计模型生成代码,或利用可重复使用的现成组件,以较少的时间和成本实现目标。未来,AI 辅助工程将带来另一次软件开发效率的提升。

嵌入式软件开发有何不同?

嵌入式软件开发与应用程序开发有许多不同之处。嵌入式软件通常:

  • 封装在电子控制装置 (ECU) 中,提供独立功能,不能重复使用
  • 用于控制不易更新且必须在产品生命周期内完美运行的部件
  • 极其复杂,需要多个需求、设计、开发和测试有关各方之间的协同工作
  • 对任务和安全至关重要,需要高水平的质量和可靠性
  • 使用 RTOS 和编程语言构建,以大幅提高速度和效率
  • 专为在低功耗环境中运行而设计

受管制行业的软件开发有何不同?

受管制行业(包括航空航天和国防、医疗和制药、运输和汽车)对制造安全关键型产品提出了特殊要求。这些要求既规定了最终产品的安全性和质量,也规定了软件开发流程本身的严格性。通常,受管制行业的软件开发需要更加关注监管、安全性和可审计性。