名词百科
什么是软件开发?
一句话定义
软件开发是把业务需求转化为可运行、可维护的软件系统的过程,通常分为需求分析、设计、编码、测试和维护五个阶段。
它到底是什么
软件开发的产出不是「一段能跑的程序」,而是一套能被长期使用和修改的系统。因此它同时受两个约束:满足需求,以及以后改得动。只满足前者的是脚本,两个都满足的才算软件。
它和几种相邻的事容易混,区别在交付物:写代码是其中一段工序;软件开发的交付物包括需求文档、源代码、部署说明和维护交接;软件工程则是把这件事组织成可重复流程的学科。
怎么运作的
五个阶段按顺序推进,每一阶段都有明确产出物,也有各自最容易出的问题。
需求分析:把「想做个系统」拆成角色、场景、单据、字段,产出需求文档与原型。核心是把模糊的期待变成可判断的条件——「操作要流畅」不是需求,「在什么网络环境下多少秒内可交互」才是。
设计:确定技术栈、数据模型、模块边界与接口。这一步决定以后改一处要动多少地方:设计得好的系统加功能是加法,设计得差是乘法。
编码:按设计实现。评价标准不是写得快,而是这段代码能不能撑住第三次改需求。
测试:功能测试保证点得通,回归测试保证「改了 A 没弄坏 B」。跳过回归测试的项目,第二次迭代就开始出事故。
维护:监控、备份、故障响应、小需求迭代。它占整个生命周期的成本通常高于开发本身——因为开发是一次性的,维护是持续的。
容易混的几个概念
- 定制开发:按需求从零实现,源码与归属归客户。与买模板、租 SaaS 相对。
- 软件外包:买的是「有人替你开发」这项服务,成果可能不归你。它和定制开发说的不是同一件事。
- SaaS:买的是使用权,按账号或年付费。不涉及开发过程,也不交付源码。
- 低代码平台:买的是工具,自己搭。适合流程简单的内部系统,复杂逻辑会撞天花板。
常见问题
软件开发和编程有什么区别?
编程是写代码这道工序,软件开发是包含需求、设计、编码、测试、维护的完整过程。会编程不等于能交付一套软件,缺的通常是需求分析和维护这两头。
软件开发的成果归谁?
取决于合同。定制开发通常约定源码与著作权归客户;外包和 SaaS 一般不转让归属。签约前必须把「源码交付范围」和「著作权归属」写成条款,口头承诺不算。
A 交付方式 · 同组词条
定制开发定制开发是按客户的具体业务流程从零实现软件的方式,与买模板、租 SaaS 相对。成果通常包含源码,著作权可约定归客户。软件外包软件外包是企业把软件开发工作委托给外部团队完成的做法。它描述的是执行主体,不描述交付形态——外包可以交付模板,也可以交付定制系统。SaaSSaaS(Software as a Service,软件即服务)是厂商把软件统一部署在云端、客户按账号数或用量订阅使用的模式。客户不买服务器、不管运维,代价是数据与功能演进方向由厂商掌握。IaaSPaaS 提供应用运行环境和中间件,代码由客户自己写;IaaS 只提供虚拟化的计算、存储和网络,操作系统往上全部自己管。模板开发模板开发是在已有的成品系统上修改配色、文案、栏目和部分字段来搭建网站或应用的方式。业务流程本身不变,改的是外观和展示内容。二次开发二次开发是在已有软件源码的基础上进行修改和扩展,而不是从零编写。起点是一套完整可运行的系统,工作需要先理解原有架构再动手。开源系统开源系统是源代码公开、允许他人使用、修改和再分发的软件。开源不等于免费,也不等于可以随意商用——具体权限由许可证决定。源码交付源码交付是软件开发方把源代码及其相关资产移交给客户的行为。它决定了客户在合同结束后能否自行修改、部署和继续维护系统。