软件开发

软件开发()是设计、创建、测试和维护软件应用程序以满足特定用户需求或业务目标的过程。软件开发的范畴超越了单纯的编程或编写源代码,涵盖了构想目标、评估可行性、分析软件需求、设计、测试与发布等完整环节。该过程是软件工程的组成部分,后者还包括组织管理、项目管理与配置管理等内容。

软件开发涉及众多技能与职业分工,包括编程、测试、文档编写、图形设计、用户支持、市场营销以及资金募集等。常用的工具类型有编译器、集成开发环境(IDE)和版本控制系统。

具体的开发过程因项目而异,可能遵循正式的书面标准,也可能随项目发展而灵活演进。开发流程可以是顺序式的(即完成一个主要阶段后再进入下一个),也可以采用迭代式方法——对各个小模块分别进行设计、实现与测试——从而降低风险与成本、提升质量。

“软件开发”一词有时亦特指计算机编程,即编写和维护源代码的过程。软件一般通过某种或数种程序设计语言、在特定的计算机平台上实现,通常借助软件开发工具进行。

开发方法论
的流程图,这是一种迭代式开发模型]]

各种开发方法论分别适用于不同类型的项目,具体取决于技术、组织、项目和团队等因素。

  • 最简单的方法论是“编码后修复”(code and fix),通常由一名程序员完成小型项目时采用。程序员在简略考虑程序目的后即开始编码,运行检查是否可用,完成后即发布产品。此方法适合制作原型,但不适用于较复杂的程序。DevOps 涵盖持续开发、持续测试、将新代码集成入版本控制系统、部署新代码,有时还包括向客户交付代码,目标是更快速、高效地提供 IT 服务。

2009年的数据显示,仅有32%的软件项目能按时、按预算并以完整功能交付;另有44%的项目虽完成交付,但至少缺少一项计划功能;其余24%的项目在发布前即被取消。可行性分析会估算项目的投资回报率、开发成本及时间跨度;基于此分析,公司可决定是否继续投入开发。由于工作量估算与应用程序的最终规模直接相关,因此受到需求中功能数量的显著影响——需求越多,开发成本越高。与功能无关的因素,如开发者的经验水平和代码可复用性,也是估算时不可忽视的重要考量。截至2019年,大多数用于估算软件开发时间和资源的工具是为传统应用程序设计的,并不适用于Web应用或移动应用。

集成开发环境
集成开发环境(IDE)提供了超越普通文本编辑器的增强功能,支持软件开发工作。IDE 通常包含自动编译、错误语法高亮、调试辅助、与版本控制系统的集成,以及对测试的半自动化支持等功能。

版本控制
版本控制是管理软件变更的常用方式。每次签入新版本时,软件会对所有已修改文件进行备份。若多名程序员同时开发同一软件,版本控制系统可管理其代码变更的合并过程:系统会标出两组变更之间存在冲突的情况,并允许程序员解决冲突。

视图模型
视图模型是一种框架,提供了对系统及其环境的多种视角,用于软件开发过程中。它是底层语义的图形化表示。视点与视图的目的在于帮助工程师理解极度复杂系统,并围绕专业领域组织问题要素。在物理密集型系统的工程设计解中,视点通常对应工程组织内的能力与职责分工。

适应度函数
适应度函数是自动化的客观测试,用于确保新的开发成果不偏离既定的约束、检查项与合规控制要求。

知识产权
当开发者将开源代码或库集成到专有产品中时,知识产权问题随之而来——因为大多数软件开源许可证要求对代码的修改须以相同许可证发布。作为替代方案,开发者可选择使用专有替代方案,或自行编写相应的软件模块。

参考文献
参见
*软件开发工具
*软件工程
*软件工程主题列表
*需求分析
*软件设计
*软件测试
*新产品开发

评论 (0)

  • 还没有评论,来抢沙发吧。