主页 topics 什么是软件开发? 什么是软件开发?
深入了解 IBM 的软件开发解决方案 订阅有关云计算的最新消息
展示软件开发从创建、分析、保护到部署解决方案的各种元素的图形
什么是软件开发?

软件开发是指一系列计算机科学活动,专用于完成创建、设计、部署和支持软件的过程。

软件本身是一套指令或程序,会告诉计算机需要做什么。它独立于硬件,支持计算机进行编程。软件有三种基本类型:

系统软件可提供操作系统、磁盘管理、实用程序、硬件管理和其他运行必需品等核心功能。

编程软件为程序员提供文本编辑器、编译器、链接器、调试器等工具以创建代码。

应用程序软件(应用程序或 app)帮助用户执行任务。这其中包括办公室工作效率套件、数据管理软件、媒体播放器和安全程序。应用程序也指网络和移动设备应用程序,例如用于在 Amazon.com 上购物、在 Facebook 上进行社交,或在 Instagram 上发布图片的应用程序。1

潜在的第四种类型是嵌入式软件。嵌入式系统软件可用于控制通常不会视为计算机的机器和设备,如电信网络、汽车、工业机器人等。这些设备及其软件可作为物联网 (IoT) 的一部分进行连接。2

软件开发主要由程序员、软件工程师和软件开发人员执行。这些角色相互影响、相互交叠,角色之间的动态关系在不同的开发部门和群体中也大相径庭。

程序员或编码人员通过编写源代码,对计算机进行编程,以执行特定任务,例如合并数据库、处理在线订单、路由通信、进行搜索或显示文本和图形。程序员通常负责解释软件开发人员和工程师的指令,并使用 C++ 或 Java 等编程语言来执行这些指令。

软件工程师运用工程学原理构建软件和系统,以解决问题。他们使用建模语言和其他工具,设计解决方案。这些解决方案通常可以普遍适用于各种问题,而不仅仅是解决某个具体实例或客户的问题。软件工程解决方案遵循科学方法,且必须能在现实世界中发挥作用,就像桥梁或电梯一样。随着微处理器、传感器和软件的加入,产品变得更加智能,工程师的责任也越来越大。越来越多的产品依赖于软件来实现市场差异化,而且软件开发也必须与产品的机械和电气开发工作相协调。

软件开发人员的角色没有工程师那么正式,他们可以密切参与特定项目领域的工作,包括编写代码。同时,他们将推动整个软件开发生命周期 - 包括跨职能团队合作,将需求转化为功能、管理开发团队和流程并进行软件测试和维护。3

软件开发工作并不局限于编码人员或开发团队。科学家、设备制造商和硬件制造商等专业人员也会创建软件代码,尽管他们的主业并不是软件开发人员。这项工具也并不局限于软件或半导体等传统信息科技行业。事实上,据布鲁金斯学会(链接位于 ibm.com 外部)称,这些企业“占软件开发公司数量的一半以下”。

其中的重要区别在于定制软件开发与商业软件开发的不同。定制软件开发是为特定用户、职能或组织设计、创建、部署和维护软件的过程。与此相反,现成的商业软件 (COTS) 是为满足广泛的需求而设计的,并可以将其打包进行商业营销和分销。

利用 DaaS 实现工作场所灵活性

了解桌面即服务 (DaaS) 如何帮助企业实现与本地部署应用程序相同水平的性能和安全性。

相关内容

注册并获取有关混合云的指南

软件开发流程步骤

开发软件通常涉及以下步骤:

  • 选择方法,创建软件开发所需步骤的框架。该框架将描绘项目的整体工作流程或路线图。方法包括敏捷开发、开发运维、快速应用程序开发 (RAD)、扩展敏捷框架 (SAFe)、瀑布式流程等。
  • 收集需求以了解和记录用户和其他利益相关者的要求。
  • 选择或构建架构,作为软件运行的基础结构。
  • 围绕需求所带来的问题的解决方案进行设计,通常涉及流程模型和故事板。
  • 使用 SysML 或 UML 等建模语言的建模工具构建模型,以便对设计进行早期验证、原型设计和模拟。
  • 用适当的编程语言编写代码。涉及同事和团队评审,以尽早解决问题,并加速生产出高质量的软件。
  • 作为软件设计和编码的一部分,使用预先计划的场景进行测试,并执行性能测试以模拟应用程序的负载测试。
  • 管理配置和缺陷,以了解所有软件工件(需求、设计、代码、测试),并构建不同版本的软件。建立质量保障优先级和发布标准,定位和跟踪缺陷。
  • 部署软件以供使用,并响应和解决用户问题。
  • 如有必要,从现有应用程序或数据源中将数据迁移到新软件或已更新软件。
  • 管理并衡量项目,以保持应用程序生命周期的质量和交付,并使用功能成熟度模型 (CMM) 等模型评估开发过程。

软件开发过程的步骤适合应用程序生命周期管理 (ALM)。IBM 工程管理解决方案是 ALM 的超集,支持管理并行机械、电气和软件开发。

  • 需求分析和规格
  • 设计和开发
  • 测试
  • 部署
  • 维护和支持

软件开发流程步骤可归纳为生命周期的各个阶段,但生命周期的重要性在于可以循环使用,从而实现持续改进。例如,在维护和支持阶段出现的用户问题可能会成为下一个周期开始时的需求。

为何软件开发如此重要?

软件开发之所以重要,是因为它无处不在。正如 IBM 副总裁兼博主 Dibbe Edwards 指出:“随着物联网的发展,软件已经成为许多产品(从汽车到洗衣机到恒温器)的关键差异化因素。”

例如:

  • Soul Machines(链接位于 ibm.com 外部)使用软件创建人工智能在线顾问,以提高客户服务和效率。顾问拥有人性化的面孔、表情和声音,能够对客户的问题和需求做出明智、感同身受且高效的反应。顾问可以在没有人工干预的情况下回答 40% 以上的客户咨询,并从互动中学习,不断改进。通过使用 IBM® Watson Assistant 将人工智能 (AI) 功能融入开发流程,Soul Machines 可以在大约 8 到 12 周的时间内创建并推出人工智能顾问。
  • “这是一场竞赛。”Erik Bak-Mikkelsen 谈到,“我们必须跟上市场的发展。”Bak-Mikkelsen 是 car2go(链接位于 ibm.com 外部)的云运营负责人。他明白,为 car2go 的打车应用和车辆提供新特征和功能,是获得并保持领先地位的关键。为此,car2go 将其开发运营转移到托管服务云,并采用了 DevOps 开发模式。因此,开发周期得以加速,产品上市时间得以缩短,未来增长的扩展能力得以提升。
  • 使用电源线可能存在致命危险。为了保证安全,工程师使用物理标签和挂锁将电气“锁定”,避免工作场所出现用电问题。法国能源公司 Enedis(链接位于 ibm.com 外部)与 IBM® Garage for Cloud 合作开发软件,对这些挂锁和标签进行监控,并将其绑定到共享网络中。每次从工程师的货车上取下标签和挂锁时都会进行检测,并记录时间和地理位置。工程师在安装挂锁时,会在数字地图上记录其位置。所有利益相关者均共享同一个地图视图,以确保安全、减少停机时间并方便维修。IBM® Cloud Garage 协作开发方法支持 Enedis 在三个月内便开发出可用于现场的原型。
有效软件开发的主要特征

利用软件开发来区分品牌并获得竞争优势,需要熟练掌握能够加速软件部署、提高质量和功效的技巧和技术。

  • 人工智能 (AI):AI 可支持软件模拟人类的决策和学习过程。神经网络、机器学习、自然语言处理和认知能力为开发人员和企业带来了机会,支持其提供能够颠覆市场并保持竞争优势的产品和服务。IBM Watson 为开发人员提供了一种通过应用程序编程接口或 API 连接人工智能服务,并将其作为应用程序的一部分使用的方法。您还可以使用 IBM Watson 检查模糊性、操作人员不明确、复合或负面需求、缺失单位或容错、需求不完整以及数量不具体等问题,从而改进产品需求。
  • 云原生开发:云原生开发是一种构建应用程序以使用云环境的方式。云原生应用程序由离散的可重复使用组件构成,这些组件称为微服务,可集成到任何云环境。这些微服务可充当构建块,通常封装在容器中。鉴于这种架构,云原生应用程序可以利用云环境,提高应用程序的性能、灵活性和可扩展性
  • 基于云的开发:IT 组织希望通过云技术来改善资源管理,并削减成本,软件开发组织亦是如此。这样一来,云技术就可以用作快速、灵活且经济高效的集成开发环境 (IDE) 或开发平台即服务 (PaaS)。基于云的开发环境可支持编码、设计、集成、测试等开发功能。此外,这些环境还可以提供针对 API、微服务、开发运维以及其他开发工具、服务和专业知识的访问权限。
  • 区块链:区块链是一种安全的数字链接分类账,可消除由银行、监管机构和其他中介机构等带来的成本和漏洞。它通过释放资本、加快流程、降低交易成本等方式来实现企业转型。区块链为软件开发提供了庞大的机遇。开发人员目前利用分布式分类账和 Hyperledger(链接位于 ibm.com 外部)技术,改变企业的运营方式。
  • 低代码:Forrester 将低代码定义为:“用于应用程序开发的产品和/或云服务,采用可视化、声明性技术而非编程方法,低成本或免费提供给客户...”4 简而言之,这是一种减少编码需求的开发实践,让非编码人员或公民开发人员能够以较低成本快速构建或帮助构建应用程序。
  • 基于模型的系统工程 (MBSE):在 MBSE 中,软件建模语言用于执行软件设计的早期原型设计、模拟和分析,以进行早期验证。在 MBSE 中构建设计有助于您分析和阐述项目需求,并从设计快速转向实施。
  • 移动:软件开发人员的一项关键功能就是创建与数据深度连接的移动应用程序,从而丰富和提升用户体验。Forrester 发现,“深度整合数字/移动客户数据对客户与品牌的互动方式有很大影响”。

 

软件开发简短术语表
  • 敏捷开发将需求分解为可使用的功能,并通过增量开发快速交付这些功能。反馈循环有助于在持续部署功能时发现并修复缺陷。
  • 能力成熟度模型 (CMM) 可评估软件开发过程的熟练程度。它可跟踪从临时操作到定义步骤再到测量结果和优化流程的进展。
  • DevOps 是 development(开发)和 operation(运营)的组合,是一种敏捷方法,将软件开发和 IT 运营结合在一起,进行软件的设计、开发、部署和支持。

  • 快速应用程序开发 (RAD) 是一种非线性方法,将设计和代码构建压缩为一个相互关联的步骤。

  • 规模化敏捷框架 (SAFe) 提供一种将敏捷方法扩展到更大的软件开发团队或组织的方法。

  • 瀑布式开发方法通常被视为是传统的软件开发方法,它是从规划和需求收集到部署和维护的一系列级联线性步骤。
软件开发工具和解决方案
IBM® Engineering Systems Design Rhapsody

经过验证的建模和设计活动解决方案,协助企业加速交付高质量的软件和系统。

探索 IBM Engineering Systems Design Rhapsody
IBM Engineering Workflow Management

针对个人和团队的高级软件版本控制、工作空间管理、分布式源代码控制以及并行开发支持可自动跟踪工件的更改,从而提高工作效率。该软件支持几乎无限制的暂停和恢复功能,以处理工作中断。

探索 IBM Engineering Workflow Management
IBM® Engineering Lifecycle Optimization - 集成式适配器

提供 IBM Engineering Lifecycle Management 工具与 Git、GitLib 和 GitHub 等第三方工具之间的连接,以管理软件的版本控制。

探索 IBM Engineering Lifecycle Optimization
软件开发资源 IBM Developer 上的软件开发

代码、内容、社区等。

IBM Developer 时事通讯

注册获取最重要的主题内容。

成功软件交付的 5 大关键步骤

通过连接软件开发工具,快速、灵活地满足复杂的业务需求。

阅读 IBM Research 出版物

我们今天的计算机科学研究重点是探索自动化、信息处理和计算方面的突破。

采取后续步骤

IBM Engineering Lifecycle Management (ELM) 可以帮助您采用端到端管理方法进行系统和软件开发。克服从设计到执行的复杂性,通过数字主线团结团队,利用建模和重复使用,利用自动化报告的洞察分析,并自信地大规模运营。

深入了解 ELM 预约实时演示