软件开发生命周期
SDLC 描述的是软件从雏形到终结的各个阶段。从更广泛的意义上来讲,SDLC也被称作系统开发生命周期,两个名词的缩写是一样的。行业内有许多对SDLC的解读,图1-2 所示是一种比较常见的模式。
在许多数据分析和终端用户开发环境中,SDLC 都是不到位的,而且软件都是使用一种自由散漫的方法创建的,这种散漫的方法有时被称为“牛仔式编码”。尽管这不是什么缺点,而且也不考虑 SDLC 各个阶段是否正式确认或执行,ISO软件产品质量模型确实有益于这些宽泛的开发环境。由于本书会反复提到SDLC的各个阶段,因此,对正式开发环境缺少经验的读者需要学习与每个阶段相关的概念,这样才能在阅读本书的过程中将这些概念(即便不进行具体操作实践)运用到自己特定的环境中。规划。确定项目需求,进行高层次的讨论,如“创建还是购买”决定——确定开发软件,或购买解决方案或放弃项目。后续的讨论应该决定出既定软件的功能及性能,进而确定软件的目标质量。
图1-2 软件开发生命周期
设计。讨论功能和性能,因为它们涉及技术实施。规划是围绕着需求展开的,而设计和后续几个阶段则是基于解决方案和软件的。谈到质量,我们需要构建具体、可评估的性能需求,而且如果需要进行正式的软件测试,则需要创建一个含有测试案例的测试计划。
开发。创建能满足项目需求的软件,包括配套的文件和其他相关产品。
测试。测试并调整软件,使其满足需求(如果测试计划存在,则对照测试计划中的测试案例及测试数据对软件进行测试)。
接受。软件经过测试满足既定的功能和性能目标,符合项目需求,并被利益相关人员正式接受。
运作。软件被具体运用到实践中,尽管软件的操作和维护是由不同的个人或小组负责,但软件的操作和维护是同步的。
维护。软件在实际的操作过程中需要进行维护和调整。我们会在第 13章“可维护性”中讨论各种维护,开发完成之后,用户(终端用户开发环境中)、原始开发人员或支持软件维护的 O&M小组对软件进行维护。
终结。软件在某一时刻退出使用,被其他新的软件取代,然而这是由利益相关人员内部决定的,而不是由于软件质量较差或者无法满足功能与性能的要求而被撤回的。
尽管在一般的描述中 SDLC 包含的是独立的阶段,但各个阶段之间并不是完全孤立的,而是相互联系的。例如,在设计阶段,开发人员可能需要拿出几天的时间来做 一些开发工作,验证自己的某个理论,从而确定该理论是否能为软件项目提供可行的 解决方案 ;或者,在寻找软件漏洞或缺陷的测试阶段,开发人员可能需要仔细检查软件,包括重新设计和开发。因此,尽管SDLC 各个阶段代表了当前工作的中心和焦点, 但并不排除在每个阶段中掺杂其他阶段的工作。