主页
topics
软件开发
软件开发是指一系列计算机科学活动,专用于完成创建、设计、部署和支持软件的过程。
软件本身是一套指令或程序,会告诉计算机需要做什么。它独立于硬件,支持计算机进行编程。软件有三种基本类型:
系统软件可提供操作系统、磁盘管理、实用程序、硬件管理和其他运行必需品等核心功能。
编程软件为程序员提供文本编辑器、编译器、链接器、调试器等工具以创建代码。
应用程序软件(应用程序或 app)帮助用户执行任务。这其中包括办公室工作效率套件、数据管理软件、媒体播放器和安全程序。应用程序也指网络和移动设备应用程序,例如用于在 Amazon.com 上购物、在 Facebook 上进行社交,或在 Instagram 上发布图片的应用程序。1
潜在的第四种类型是嵌入式软件。嵌入式系统软件可用于控制通常不会视为计算机的机器和设备,如电信网络、汽车、工业机器人等。这些设备及其软件可作为物联网 (IoT) 的一部分进行连接。2
软件开发主要由程序员、软件工程师和软件开发人员执行。这些角色相互影响、相互交叠,角色之间的动态关系在不同的开发部门和群体中也大相径庭。
程序员或编码人员通过编写源代码,对计算机进行编程,以执行特定任务,例如合并数据库、处理在线订单、路由通信、进行搜索或显示文本和图形。程序员通常负责解释软件开发人员和工程师的指令,并使用 C++ 或 Java 等编程语言来执行这些指令。
软件工程师运用工程学原理构建软件和系统,以解决问题。他们使用建模语言和其他工具,设计解决方案。这些解决方案通常可以普遍适用于各种问题,而不仅仅是解决某个具体实例或客户的问题。软件工程解决方案遵循科学方法,且必须能在现实世界中发挥作用,就像桥梁或电梯一样。随着微处理器、传感器和软件的加入,产品变得更加智能,工程师的责任也越来越大。越来越多的产品依赖于软件来实现市场差异化,而且软件开发也必须与产品的机械和电气开发工作相协调。
软件开发人员的角色没有工程师那么正式,他们可以密切参与特定项目领域的工作,包括编写代码。同时,他们将推动整个软件开发生命周期 - 包括跨职能团队合作,将需求转化为功能、管理开发团队和流程并进行软件测试和维护。3
软件开发工作并不局限于编码人员或开发团队。科学家、设备制造商和硬件制造商等专业人员也会创建软件代码,尽管他们的主业并不是软件开发人员。这项工具也并不局限于软件或半导体等传统信息科技行业。事实上,据布鲁金斯学会(链接位于 ibm.com 外部)称,这些企业“占软件开发公司数量的一半以下”。
其中的重要区别在于定制软件开发与商业软件开发的不同。定制软件开发是为特定用户、职能或组织设计、创建、部署和维护软件的过程。与此相反,现成的商业软件 (COTS) 是为满足广泛的需求而设计的,并可以将其打包进行商业营销和分销。
了解桌面即服务 (DaaS) 如何帮助企业实现与本地部署应用程序相同水平的性能和安全性。
开发软件通常涉及以下步骤:
软件开发过程的步骤适合应用程序生命周期管理 (ALM)。IBM 工程管理解决方案是 ALM 的超集,支持管理并行机械、电气和软件开发。
软件开发流程步骤可归纳为生命周期的各个阶段,但生命周期的重要性在于可以循环使用,从而实现持续改进。例如,在维护和支持阶段出现的用户问题可能会成为下一个周期开始时的需求。
软件开发之所以重要,是因为它无处不在。正如 IBM 副总裁兼博主 Dibbe Edwards 指出:“随着物联网的发展,软件已经成为许多产品(从汽车到洗衣机到恒温器)的关键差异化因素。”
例如:
利用软件开发来区分品牌并获得竞争优势,需要熟练掌握能够加速软件部署、提高质量和功效的技巧和技术。
经过验证的建模和设计活动解决方案,协助企业加速交付高质量的软件和系统。
针对个人和团队的高级软件版本控制、工作空间管理、分布式源代码控制以及并行开发支持可自动跟踪工件的更改,从而提高工作效率。该软件支持几乎无限制的暂停和恢复功能,以处理工作中断。
提供 IBM Engineering Lifecycle Management 工具与 Git、GitLib 和 GitHub 等第三方工具之间的连接,以管理软件的版本控制。
1 软件,Techopedia(链接位于 ibm.com 外部)
2 嵌入式软件,维基百科(链接位于 ibm.com 外部)
3 软件工程师与软件开发人员 - 有何区别?Fullstack Academy(链接位于 ibm.com 外部)
4 Forrester Wave:面向 AD&D 专业人士的低代码开发平台,2017 年第 4 季度 John R. Rymer,Forrester Research, Inc. 2017 年 10 月 23 日(链接位于 ibm.com 外部)