软件工程与UML案例解析(第三版)
上QQ阅读APP看书,第一时间看更新

3.1 软件开发生命周期

问题引入

正如任何事物一样,软件也有其孕育、诞生、成长、成熟以及衰亡的生命过程,一般称其为“软件生命周期”。根据这一思想,可以得到软件生命周期的六个阶段,即制订计划、需求分析和定义、软件设计、编码、软件测试、运行及维护。然而,在正式开发软件之前,我们必须了解软件生命周期各个阶段需要完成哪些任务,以及这些任务由哪些人员来完成。

扫一扫 看视频

解答问题

软件开发生命周期包括6个阶段,即制订计划阶段、需求分析和定义阶段、设计阶段、编码阶段、测试阶段、运行及维护阶段。

分析问题

(1)制订计划(Planning)

团队人员:分析人员、领域专家及用户等。

这个阶段的任务是确定待开发软件系统的总体目标,给出软件系统的功能、性能及接口等方面的要求。由团队人员协作,共同研究完成该项软件开发任务的技术、经济、社会可行性,探讨解决问题的各种可能方案,并对现有可利用资源、成本、可取得的效益、开发进度等做出估计,制订出完成该项开发任务的实施计划,并编写可行性研究报告。

(2)需求分析和定义(Requirement Analysis and Definition)

团队人员:分析人员、测试人员、领域专家及用户等。

该阶段对于待开发软件项目获取的用户需求进行分析,并给出详细定义。这个阶段团队人员必须协同工作,让软件开发人员充分理解用户的各项需求,并确定哪些需求是可以满足的,哪些需求在现有技术下是不能满足的,对能满足的需求加以确切的描述。然后,编写出软件需求规格说明书(SRS)或系统功能说明书,以及初步的系统用户手册、测试用例等。为了团队人员之间能很好地沟通,从这个阶段开始通常会采用一些标准的建模语言(如统一建模语言,Unified Modeling Language,UML)对系统建模。

(3)软件设计(Software Design)

团队人员:架构设计人员、软件设计人员、数据库设计员、用户界面设计员、封装体设计员和集成人员、测试人员等。

这个阶段通常分为两部分:概要设计和详细设计。

在软件设计阶段,软件开发人员把已经经过用户和领域专家确认的各项需求转换成相应的软件体系结构。结构中的每个部分都是意义明确的子系统、模块或用例,每个部分都和某些需求相对应,进行所谓的概要设计。然后对每个模块或用例要完成的工作采用合适的技术进行具体的描述,如画出模块的程序流程图或描述类的属性、操作等,为源程序的编写工作打下基础,即详细设计。

(4)编码(Coding)

团队人员:编程人员、测试人员等。

将详细设计阶段所描述的模块程序流程图或类的设计转换为计算机能处理的程序代码,即使用特定的程序设计语言表示的源程序。目前,通常使用高级程序设计语言编写程序,如C语言、Java语言等。

(5)软件测试(Software Testing)

团队人员:测试人员、开发人员、用户等。

测试是保证软件质量的重要手段,其主要目的是通过软件测试暴露出软件中隐藏的错误和缺陷。软件测试的主要方式是在设计测试用例的基础上检验软件的各个组成部分。软件测试一般包括单元测试、集成测试、系统测试、验收测试等几个阶段。首先进行单元测试,查找各模块或类在功能和结构上存在的问题并加以修改,这个过程会反复进行;其次进行集成测试,验证各软件单元集成后形成的模块能否达到概要设计规格说明中各模块的设计目标;然后进行系统测试,目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计;最后进行确认测试,以检查已实现的软件是否满足了需求规格说明书中确定的各种需求,包括功能需求和性能需求,决定已开发的软件能否交付用户使用。

(6)运行/维护(Running/Maintenance)

团队人员:系统支持人员等。

已交付的软件投入正式使用,软件便进入运行阶段。软件在运行过程中可能会因为发现了软件中存在的错误需要修改;或为了适应变化了的软件工作环境,需做一些变更;或为了增强软件的功能需做变更等。这就称为软件维护。