上一章软件工程教程请查看:软件工程概述
软件开发生命周期(Software Development Life Cycle),简称SDLC,是软件工程中定义良好的、结构化的阶段序列,用于开发预期的软件产品。
SDLC活动步骤
SDLC提供了一系列有效设计和开发软件产品的步骤。SDLC框架包括以下步骤:
沟通
这是用户发起对所需软件产品的请求的第一步,联系服务提供商,并试图协商条款,以书面形式向服务提供机构提出请求。
需求收集
这一步是软件开发团队继续项目的工作。团队与来自问题领域的各种涉众进行讨论,并试图提供尽可能多的关于他们需求的信息,需求被考虑并划分为用户需求、系统需求和功能需求,这些需求是通过一些给定的实践来收集的
- 研究现有或过时的系统和软件,
- 对用户和开发人员进行访谈,
- 引用数据库或
- 从问卷中收集答案。
可行性研究
在需求收集之后,团队提出了一个软件过程的粗略计划。在这个步骤中,团队分析一个软件是否能够满足用户的所有需求,以及是否存在软件不再有用的可能性。如果该项目在财政上、实际上和技术上可行,本组织将予以执行,则将予以查明。有许多可用的算法,可以帮助开发人员确定软件项目的可行性。
系统分析
在这一步中,开发人员决定了他们计划的路线图,并尝试提出适合项目的最佳软件模型。系统分析包括了解软件产品的局限性、学习系统相关的问题或在现有系统中要做的更改,识别和处理项目对组织和人员的影响等。项目团队分析项目的范围,并相应地计划时间表和资源。
软件设计
下一步是把需求和分析的全部知识放在桌面上,设计软件产品。来自用户的输入和在需求收集阶段收集的信息是这个步骤的输入,这一步的输出以两种设计的形式出现:逻辑设计和物理设计。工程师生成元数据和数据字典、逻辑图、数据流图,在某些情况下还生成伪代码。
编码
此步骤也称为编程阶段,软件设计的实现从用适当的编程语言编写程序代码和有效地开发无错误的可执行程序开始。
测试
估计有50%的整个软件开发过程需要测试。错误可能会破坏软件从临界级别到它自己的删除,软件测试是在开发人员编写代码的同时进行的,而彻底的测试是由各个级别的代码测试专家进行的,如模块测试、程序测试、产品测试、内部测试和在用户端测试产品,早期发现错误及其补救是可靠软件的关键。
集成
软件可能需要与库、数据库和其他程序集成,SDLC的这一阶段涉及到软件与外部世界实体的集成。
实现
这意味着在用户机器上安装软件。有时,软件需要在用户端进行安装后配置,对软件进行可移植性和适应性测试,并在实现过程中解决与集成相关的问题。
操作和维护
这个阶段确认了软件操作的效率更高,错误更少。如果需要,用户将接受有关如何操作软件和如何保持软件可操作的文档的培训,或得到这些文档的帮助。根据用户终端环境或技术的变化,及时更新代码,维护软件,这个阶段可能会面临来自隐藏的bug和现实世界中未知问题的挑战。
处置
随着时间的流逝,软件在性能方面可能会下降。它可能会完全过时,或者需要大力升级,因此,迫切需要消除系统的主要部分。这个阶段包括数据存档和所需的软件组件,关闭系统,计划处置活动和在适当的系统结束时间终止系统。
软件开发模式
软件开发范例帮助开发人员选择开发软件的策略,软件开发范例有它自己的一套工具、方法和过程,它们被清晰地表达并定义了软件开发生命周期,一些软件开发范例或过程模型定义如下:
瀑布模型
瀑布模型是软件开发范例中最简单的模型,它说SDLC的所有相位将一个接一个地以线性方式起作用,也就是说,当第一阶段结束时,只有第二阶段才会开始,以此类推。
这个模型假设在前一阶段,一切都按照计划完美地进行,没有必要考虑下一阶段可能出现的过去的问题。如果在前面的步骤中还存在一些问题,那么这个模型就不能顺利地工作,模型的顺序特性不允许我们返回并撤消或重做我们的操作。
当开发人员已经在过去设计和开发了类似的软件,并且了解它的所有领域时,这个模型是最适合的。
迭代式模型
这个模型在迭代中领导软件开发过程,它以循环的方式对开发过程进行规划,在SDLC过程的每个循环之后重复每个步骤。
该软件首先在非常小的范围内开发,然后考虑所有的步骤。然后,在下一次迭代中,更多的特性和模块被设计、编码、测试并添加到软件中。每一个周期都产生一个软件,这个软件本身是完整的,并且比前一个周期具有更多的特性和功能。
在每次迭代之后,管理团队可以进行风险管理工作,并为下一次迭代做好准备。因为一个周期包含整个软件过程的一小部分,所以更容易管理开发过程,但是它消耗更多的资源。
螺旋模型
螺旋模型是迭代模型和SDLC模型的一种组合,这就好比你选择了一个SDLC模型,并将其与循环过程(迭代模型)相结合。
该模型考虑了风险,而大多数其他模型通常没有注意到风险,模型开始于在一次迭代开始时确定软件的目标和约束。下一个阶段是软件原型化,这包括风险分析。然后使用一个标准的SDLC模型来构建软件,在第四阶段,准备下一次迭代的计划。
V-模式
瀑布模型的主要缺点是我们只有在前一个阶段完成后才会进入下一个阶段,如果在后面的阶段发现了错误,我们就没有机会再回到前一个阶段,V-Model以反向的方式提供了在每个阶段对软件进行测试的方法。
在每个阶段,都会创建测试计划和测试用例,以根据该阶段的需求验证产品。例如,在需求收集阶段,测试团队根据需求准备所有的测试用例。稍后,当产品被开发出来并准备好进行测试时,这个阶段的测试用例根据这个阶段的需求验证软件的有效性。
这使验证和确认并行进行,此模型也称为验证和确认模型。
大爆炸模型
该模型是其形式中最简单的模型。它需要很少的计划,大量的编程和大量的资金。这个模型是关于宇宙大爆炸的,正如科学家所说,在大爆炸之后,许多星系、行星和恒星只是作为一个事件而进化。同样,如果我们把大量的编程和资金放在一起,你可能会得到最好的软件产品。
对于这个模型,只需要很少的规划,它不遵循任何过程,或者有时客户不确定需求和未来的需求,所以输入要求是任意的。
此模型不适合大型软件项目,但适合学习和实验。