软件生存周期(Software Life Cycle),是软件工程学概念[1],又称为软件生命周期[2],指软件产品从形成概念开始,经过开发、使用、维护,直到退役的全过程。[5][1]软件生存周期包括问题定义和可行性研究、需求分析、软件设计[a]、程序编码、软件测试、运行与维护6个活动,这些活动以适当的方式分配到不同的阶段去完成[2],软件生存周期包括了软件开发生命周期中的所有阶段以及额外的维护和支持阶段。[6]软件生存周期每个阶段有明确的目标和任务,每个阶段工作完成的标志即“里程碑”,阶段的里程碑由一系列指定的“软件工作产品[b]”构成。[1][7] 软件生存周期概念首次在20世纪70年代被提出。[5]1995年国际标准化组织ISO发布了《软件生存周期过程开发标准》,该标准把整个生存周期划分为较小的阶段,使软件开发的过程易于管理和控制。[8]2022年10月,由浙江省电子信息产品检验研究院牵头的《系统与软件工程 软件生存周期过程》中国国家标准正式发布。[3] 软件产品经历了从开始到结束的整个开发周期后,新一代产品通过开发周期的重复而发展。把整个软件生存周期划分为若干个阶段,使得每个阶段都有明确的任务,使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理[2],提高了软件的可维护性,从而提高了软件开发的成功率和生产率。[9]软件规模、种类、开发方式、开发环境及开发时使用的方法论等是影响软件生存周期的因素。[7] 发展历史
在计算机发展的初期,程序并没有与硬件分离,软件的开发费用在整个系统中所占比重很小,处于硬件的一种附属品的地位。[10]早期的程序设计时代,程序设计是为某一个计算机系统服务,程序设计人员既是程序的设计者,又是程 序的使用者,程序主要应用在科学计算,程序简单,也不需要程序设计的文档资料。程序维护比较简单。[11]