系统发展生命周期

系统发展生命周期（，），也称软件生命周期，是系统工程、信息系统和软件工程中的术语，用于描述一个信息系统从规划、创建、测试到最终完成部署的全过程。系统开发生命周期的概念对于硬件和软件系统都是適用的，这些系统可能只由硬件或软件组成，也可能两者都有。

概述 
系统发展生命周期由一系列明确定义的不同工作阶段组成，有助于系统工程师和系统开发人员利用对系统的设计、构建、测试和交付进行计划。就像任何在生产装配线上制造的东西一样，SDLC的目标是根据客户需求生产满足或超越客户的期望的高质量的系统。所发布的系统经过了每一个工作阶段，其中包括了时间时限和成本估计。计算机系统是复杂的（尤其是近期兴起的面向服务的体系结构），通常涉及到多个传统系统，这些系统可能需要由不同的软件供应商提供。管理这种级别的复杂性，许多SDLC模型或方法被创建，如“瀑布模型”、“螺旋模型”、“敏捷软件开发”、“快速原型模型”、“增量模型”；和“同步及稳定”。

SDLC可以看做一个快速迭代的过程。敏捷的方法，如XP和Scrum，专注于轻量级进程，这些轻量级进程在开发周期中允许快速的变化(不一定要按照SDLC的开发模型)。迭代法，例如统一软件开发过程和，专注于有限的项目范围并通过多个迭代来扩大或改善产品由。顺序模型或预先大量设计模型（BDUF）、如瀑布模型、关注于完整和正确的规划来指导大型项目、估计取得成功的风险，保证结果的可预测性。其他模式，如变形开发（Anamorphic development），倾向于由项目范围和功能的迭代来指导系统开发。

在项目管理中一个项目既可以用项目生命周期（PLC）定义，也可以用SDLC定义，其中会有几个步骤略有不同。根据泰勒（2004）所说，“项目生命周期包括了所有專案的內容，而系统开发生命周期关注于实现产品需求”。

SDLC在开发IT项目时中被使用，它描述了完成项目所要涉及到的不同阶段。

历史
产品生命周期结构化地描述了信息系统的构建过程，重申产品生命中的每一个阶段。根据艾略特和斯特拉和雷德福(2004)所说，系统开发生命周期“起源于1960年代，用于在大型企业时代大规模地开发功能性商用系统。这些信息系统的活动将涉及大规模的数据以及数据处理例程”。

还有很多系统开发框架在一定程度上借鉴了SDLC的模型，如1980年代的结构化系统分析和设计方法(SSADM)，用于生产英国政府商务办公室系统。根据艾略特(2004)所说，“传统的系统开发生命周期方法逐渐被其他方法和框架取代，这些方法试图克服传统SDLC模型的一些固有缺陷”。

系统分析与设计
系统分析与设计(SAD)通过有效地使用硬件、软件、数据、流程、和人力资源来支持公司的商业目标，是开发高效信息系统（IS）的一个重要过程。系统分析和设计有助于做好开发前的准备和约束问题的范围。系统分析与设计权衡在功能性和非功能性需求，并在两者之间形成平衡。系统分析与设计和分布式企业架构、企业I.T.体系结构和业务体系结构有着紧密的联系, 要达到高等级的系统描述，很大程度上依赖于分割、接口、角色和部署建模。这个高水平描述可以被进一步分解为可以被分析、设计的组件和模块，这些组件和模块被分开构建，最终集成以实现业务目标。SDLC和SAD是系统规划和生命完整产品的基础。

优势与劣势 
在现代计算机界很少人会在SDLC中严格使用瀑布模型，因为已经有很多的现代方法取代了这种想法。有些人会认为SDLC已经不再适用一些模型，比如敏捷开发,但它仍然是科技界的一个广泛使用的术语。SDLC在系统开发的传统模型上有优势, 更适合结构化环境。SDLC方法的缺点在于，在项目需要迭代开发时，如：web开发、电子商务开发，项目组需要定期检查软件设计，SDLC就不实用了。与其说讨论SDLC的优缺点，更重要的应该是借鉴SDLC的实践模型，将其应用到现代软件设计中。

SDLC的优势与劣势对比 
SDLC的优势与劣势：
 优势：控制；监控大型项目；步骤具体；预先评估成本和达成目标；文档完整；定义良好的用户输入；易于维护；标准化的设计和开发；能够容忍开发团队中的人员变化
 劣势：增加了开发时间；增加开发成本；系统必须预先定义；刻板；很难估计成本，导致项目超支；用户输入有时是受限的

快速应用程序开发（RAD）是SDLC的一个替代品,它结合原型模型,将应用程序开发和CASE工具的实现相结合。RAD的优点是速度快，降低了开发成本，并且使用户更积极地参与开发过程。

参考资料

参见 

 敏捷软件开发
 迭代式开发
 软件开发

软件工程
系统工程