软件工程/过程/生命周期简介
系统开发生命周期 (SDLC),或在系统工程、信息系统和软件工程中称为软件开发生命周期,是创建或更改系统以及人们用于开发这些系统的模型和方法的过程。该概念通常指的是计算机或信息系统。
在软件工程中,SDLC 概念是许多软件开发方法的基础。这些方法构成了规划和控制信息系统创建的框架[1]:软件开发过程。
概述
[edit | edit source]系统开发生命周期 (SDLC) 是系统分析师用来开发信息系统的过程,包括需求、验证、培训和用户(利益相关者)所有权。任何 SDLC 都应导致一个高质量的系统,该系统满足或超过客户期望,在时间和成本估算内完成,在当前和计划的信息技术基础设施中有效且高效地运行,并且维护成本低廉且增强成本效益。[2]
计算机系统很复杂,并且经常(尤其是在面向服务的架构最近兴起的情况下)会将多个传统系统(可能由不同的软件供应商提供)链接在一起。为了管理这种复杂性,创建了许多 SDLC 模型:“瀑布模型”;“喷泉模型”;“螺旋模型”;“构建和修复”;“快速原型”;“增量模型”;和“同步和稳定”。 [3]
SDLC 模型可以在敏捷、迭代和顺序的范围内描述。敏捷方法,如 XP 和 Scrum,专注于轻量级流程,允许在开发周期中进行快速更改。迭代方法,如 Rational Unified Process 和 Dynamic Systems Development Method,专注于有限的项目范围,并通过多次迭代扩展或改进产品。顺序模型或大型设计预先 (BDUF) 模型,如瀑布模型,专注于完整的正确规划,以指导大型项目和风险,以取得成功和可预测的结果[需要引用]。其他模型,如 Anamorphic Development,倾向于专注于由项目范围和功能开发的适应性迭代引导的开发形式。
在项目管理中,项目可以用项目生命周期 (PLC) 和 SDLC 定义,在此期间会发生略微不同的活动。根据泰勒 (2004) 的说法,“项目生命周期涵盖了项目的全部活动,而系统开发生命周期专注于实现产品需求”。[4]
历史
[edit | edit source]系统生命周期 (SLC) 是一种用于描述构建信息系统的过程的方法,旨在以非常刻意、结构化和有条理的方式开发信息系统,重复生命周期的每个阶段。系统开发生命周期,根据 Elliott & Strachan & Radford (2004) 的说法,“起源于 1960 年代,用于在大型商业集团时代开发大型功能性商业系统。信息系统活动围绕大量数据处理和数字运算例程展开”。[5]
一些系统开发框架部分基于 SDLC,例如 1980 年代为英国政府办公厅生产的结构化系统分析与设计方法 (SSADM)。从那时起,根据 Elliott (2004) 的说法,“传统生命周期方法开发系统已被越来越多地替代为替代方法和框架,这些方法和框架试图克服传统 SDLC 的一些固有缺陷”。[5]
系统开发阶段
[edit | edit source]系统开发生命周期框架为系统设计人员和开发人员提供了一系列要遵循的活动。它包含一组步骤或阶段,其中 SDLC 的每个阶段都使用前一个阶段的结果。
系统开发生命周期 (SDLC) 遵循对开发人员至关重要的重要阶段,如计划、分析、设计和实施,并在以下部分进行了解释。创建了许多系统开发生命周期 (SDLC) 模型:“瀑布模型”,“喷泉模型”,“螺旋模型”,“构建和修复”,“快速原型”,“增量模型”和“同步和稳定”。其中最古老、最知名的模型是瀑布模型:一个阶段序列,其中每个阶段的输出成为下一个阶段的输入。这些阶段可以以不同的方式进行特征化和划分,包括以下内容[6]
- 项目规划,可行性研究:建立对预期项目的概览并确定其目标。
- 系统分析,需求定义:将项目目标细化为预期应用程序的定义功能和操作。分析最终用户的信息需求。
- 系统设计:详细描述所需的功能和操作,包括屏幕布局、业务规则、流程图、伪代码和其他文档。
- 实施:这里编写了真正的代码。
- 集成和测试:将所有部分组合到一个特殊的测试环境中,然后检查错误、错误和互操作性。
- 验收、安装、部署:初始开发的最后阶段,软件投入生产并运行实际业务。
- 维护:软件生命周期中其余时间会发生什么:更改、更正、添加、移动到不同的计算平台等等。这是所有步骤中最不光彩但也最重要的步骤,它似乎永远持续下去。
在以下示例(参见图片)中,系统开发生命周期的这些阶段被划分为从定义到 IT 工作产品的创建和修改的十个步骤
并非每个项目都需要按顺序执行这些阶段。但是,这些阶段是相互依赖的。根据项目的规模和复杂性,阶段可以合并或重叠。[7]
系统分析
[edit | edit source]系统分析的目标是确定问题所在,以便尝试修复系统。此步骤涉及将系统分解成不同的部分来分析情况,分析项目目标,分解需要创建的内容,并尝试让用户参与,以便可以定义明确的需求。
需求分析有时需要来自客户方和服务提供商方的个人/团队才能获得详细准确的需求; 通常需要进行大量来回沟通才能了解这些需求。 需求收集是最关键的方面,因为许多时候在这个阶段会出现沟通差距,从而导致软件程序中的验证错误和 bug。
设计
[edit | edit source]在系统设计中,会详细描述设计功能和操作,包括屏幕布局、业务规则、流程图和其他文档。 此阶段的输出将描述新系统作为一个模块或子系统集合。
设计阶段以在批准的需求文档中识别的需求作为其初始输入。 对于每个需求,将通过访谈、研讨会和/或原型工作产生一组或多组设计元素。
设计元素详细描述所需的软件功能,通常包括功能层次结构图、屏幕布局图、业务规则表、业务流程图、伪代码以及包含完整数据字典的完整实体关系图。 这些设计元素旨在详细描述软件,以便熟练的程序员可以以最少的额外输入设计来开发软件。
实施
[edit | edit source]模块和子系统编程代码将在本阶段完成。 开发人员在本阶段进行单元测试和模块测试。 这个阶段与下一个阶段交织在一起,因为各个模块需要在集成到主项目之前进行测试。
测试
[edit | edit source]代码在软件测试的各个级别进行测试。 通常会进行单元测试、系统测试和用户验收测试。 这是一个灰色区域,因为关于测试阶段是什么以及迭代多少(如果有的话)存在许多不同的观点。 迭代通常不是瀑布模型的一部分,但通常在此阶段会发生一些迭代。 在测试中,整个系统会一个接一个地进行测试。
以下是测试类型
- 缺陷测试
- 路径测试
- 数据集测试
- 单元测试
- 系统测试
- 集成测试
- 黑盒测试
- 白盒测试
- 回归测试
- 自动化测试
- 用户验收测试
- 性能测试
运营和维护
[edit | edit source]系统部署包括在系统退役或停用之前进行的更改和增强。 维护系统是 SDLC 的一个重要方面。 随着关键人员在组织中的职位变动,将实施新的变更,这将需要系统更新。
系统分析与设计
[edit | edit source]系统分析与设计 (SAD) 是开发信息系统 (IS) 的过程,有效利用硬件、软件、数据、流程和人员来支持公司的业务目标。
系统开发生命周期主题
[edit | edit source]管理和控制
[edit | edit source]系统开发生命周期 (SDLC) 阶段作为项目活动的程序指南,提供了一种灵活但一致的方式来执行项目,以匹配项目范围的深度。 本节描述了每个 SDLC 阶段的目标,包括关键可交付成果、推荐任务的描述以及与有效管理相关的控制目标的摘要。 项目经理必须在每个 SDLC 阶段建立和监控控制目标,同时执行项目。 控制目标有助于提供对预期结果或目的的明确陈述,并且应在整个 SDLC 流程中使用。 控制目标可以分为主要类别(域),并与 SDLC 阶段相关联,如图所示。[8]
为了管理和控制任何 SDLC 计划,每个项目都需要建立一定程度的工作分解结构 (WBS),以捕获和安排完成项目所需的工作。 WBS 和所有程序材料应保存在项目笔记本的“项目描述”部分。 WBS 格式主要由项目经理决定,以最佳方式描述项目工作。 WBS 中必须定义一些关键区域作为 SDLC 政策的一部分。 以下图表描述了将在 WBS 中以项目经理确定的方式解决的三个关键区域。[8]
工作分解结构化组织
[edit | edit source]工作分解结构 (WBS) 的上半部分应以摘要形式识别项目的主要阶段和里程碑。 此外,上半部分应提供对项目完整范围和时间表的概述,并将作为项目描述的初始工作的一部分,从而导致项目批准。 WBS 的中间部分基于七个系统开发生命周期 (SDLC) 阶段,作为 WBS 任务开发的指南。 WBS 元素应包含里程碑和“任务”,而不是“活动”,并且具有明确的期限(通常为两周或更长时间)。 每个任务都必须有一个可衡量的输出(例如,文档、决策或分析)。 WBS 任务可能依赖于一个或多个活动(例如,软件工程、系统工程),并且可能需要与其他任务密切协调,无论是在项目内部还是外部。 项目中任何需要承包商支持的部分都应有一个工作说明 (SOW),其中包含来自 SDLC 阶段的适当任务。 SOW 的开发不是在 SDLC 的特定阶段进行的,而是开发用来包含可能由外部资源(如承包商和结构)进行的 SDLC 流程中的工作。 [8]
SDLC 中的基线
[edit | edit source]基线是系统开发生命周期 (SDLC) 的重要组成部分。 这些基线是在 SDLC 的五个阶段中的四个阶段之后建立的,对于模型的迭代性质至关重要。 [9] 每个基线都被视为 SDLC 中的里程碑。
- 功能基线:在概念设计阶段之后建立。
- 分配基线:在初步设计阶段之后建立。
- 产品基线:在详细设计和开发阶段之后建立。
- 更新的产品基线:在生产构建阶段之后建立。
补充 SDLC
[edit | edit source]补充系统开发生命周期 (SDLC) 的软件开发方法有:
- 软件原型
- 联合应用设计 (JAD)
- 快速应用开发 (RAD)
- 极限编程 (XP); 是早期原型和 RAD 工作的扩展。
- 开源开发
- 最终用户开发
- 面向对象编程
SDLC | RAD | 开源 | 对象 | JAD | 原型 | 最终用户 | |
---|---|---|---|---|---|---|---|
控制 | 正式 | MIS | 弱 | 标准 | 联合 | 用户 | 用户 |
时间范围 | 长 | 短 | 中等 | 任何 | 中等 | 短 | 短 |
用户 | 很多 | 很少 | 很少 | 变化 | 很少 | 一到两个 | 一个 |
MIS 员工 | 很多 | 很少 | 数百 | 分割 | 很少 | 一到两个 | 无 |
事务/DSS | 事务 | 两者 | 两者 | 两者 | DSS | DSS | DSS |
接口 | 最小 | 最小 | 弱 | Windows | 至关重要 | 至关重要 | 至关重要 |
文档和培训 | 至关重要 | 有限 | 内部 | 在对象中 | 有限 | 弱 | 无 |
完整性和安全性 | 至关重要 | 至关重要 | 未知 | 在对象中 | 有限 | 弱 | 弱 |
可重用性 | 有限 | 一些 | 也许 | 至关重要 | 有限 | 弱 | 无 |
优势和劣势
[edit | edit source]在现代计算领域,很少有人会严格使用瀑布模型来进行系统开发生命周期 (SDLC) [11],因为许多现代方法已经取代了这种思维方式。有些人会争辩说 SDLC 不再适用于像敏捷计算这样的模型,但它仍然是科技界广泛使用的术语。SDLC 实践在传统的软件开发模型中具有优势,这使其更适合结构化的环境。使用 SDLC 方法的缺点是,当需要迭代开发或(例如网页开发或电子商务)利益相关者需要定期审查正在设计的软件时。与其从优势或劣势的角度看待 SDLC,不如从 SDLC 模型中汲取最佳实践,并将它们应用于最适合正在设计的软件的任何方面。
SDLC 的优缺点比较
优势 | 劣势 |
---|---|
控制。 | 开发时间增加。 |
监控大型项目。 | 开发成本增加。 |
详细步骤。 | 系统必须在前期定义。 |
评估成本和完成目标。 | 僵化性。 |
文档。 | 难以估计成本,项目超支。 |
定义明确的用户输入。 | 用户输入有时受限。 |
易于维护。 | |
开发和设计标准。 | |
容忍 MIS 人员的变化。 |
SDLC 的替代方案是快速应用开发,它结合了原型设计、联合应用开发和 CASE 工具的实施。RAD 的优势包括速度、降低开发成本和用户积极参与开发过程。
参考文献
[edit | edit source]- ↑ 选择开发方法。检索于 2008 年 10 月 27 日。
- ↑ "系统开发生命周期"。在:Foldoc(2000-12-24)
- ↑ http://docs.google.com/viewer?a=v&q=cache:bfhOl8jp1S8J:condor.depaul.edu/~jpetlick/extra/394/Session2.ppt+&hl=en&pid=bl&srcid=ADGEEShCfW0_MLC4wRbczfUxrndHTkbwguF9fZuaUCe0RDyOCWyO2PTmaPhHnZ4jRhZZ75maVO_7gVAD2ex5-QIhrj1683hMefBNkak7FkQJCAwd-i0-_aQfEVEEKP177h4mmkvMMWJ7&sig=AHIEtbRhMlZ-TUyioKEhLQQxXk1WoSJXWA
- ↑ James Taylor (2004)。管理信息技术项目。第 39 页。
- ↑ a b Geoffrey Elliott & Josh Strachan (2004) 全球商务信息技术。第 87 页。
- ↑ http://www.computerworld.com/s/article/71151/System_Development_Life_Cycle
- ↑ a b 美国司法部 (2003)。信息资源管理 第 1 章。简介。
- ↑ a b c d e 美国众议院 (1999)。系统开发生命周期政策。第 13 页。
- ↑ Blanchard, B. S., & Fabrycky, W. J.(2006) 系统工程与分析 (第 4 版) 新泽西州:Prentice Hall。第 31 页
- ↑ a b Post, G., & Anderson, D., (2006)。管理信息系统:用信息技术解决业务问题。 (第 4 版)。纽约:麦格劳-希尔·欧文出版社。
进一步阅读
[edit | edit source]- Blanchard, B. S., & Fabrycky, W. J.(2006) 系统工程与分析 (第 4 版) 新泽西州:Prentice Hall。
- Cummings, Haag (2006)。信息时代的管理信息系统。多伦多,麦格劳-希尔·瑞尔森出版社
- Beynon-Davies P. (2009)。商业信息系统。帕尔格雷夫,贝辛斯托克。 ISBN 978-0-230-20368-6
- 计算机世界,2002,从万维网上检索于 2006 年 6 月 22 日
- 管理信息系统,2005,从万维网上检索于 2006 年 6 月 22 日