软件过程的介绍


软件过程概述

软件的诞生和生命周期是一个过程,我们总体上称这个过程为软件过程。软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成的有关软件工程的活动,每一项活动又可以分为一系列的工程任务。任何一个软件开发组织,都可以规定自己的软件过程,所有这些过程共同构成了软件过程。
过程定义了运用方法的顺序,应该交付的文档资料,为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。通常,使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分为哪些阶段及各个阶段的执行顺序,因此也称为过程模型。
软件生命周期
传统软件生命周期的各个阶段
软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用以及产品版本的不断更新,到最终该产品被市场淘汰的全过程。
软件生命周期这个概念从时间的角度将软件的开发和维护的复杂过程分解为了若干个阶段,每个阶段都完成特定的相对独立的任务。
在传统的软件工程中,软件产品的生命周期一般可以划分为6个阶段,如图所示。
在这里插入图片描述
1.可行性研究
可行性研究阶段为后续的软件开发做必要的准备工作。它首先要确定待开发的软件产品所要解决的问题。软件分析人员与用户之间需要充分地交流与合作,才能对开发软件产品地目标达成一致。同时,在可行性研究阶段,开发人员还应该确定总体地开发策略与开发方式,并对开发所需要的资金、时间和各种资源做出合理估计。精确的预估需要建立在开发人员对用户需求的充分了解以及自身丰富经验的基础上。此外,在可行性研究阶段,还需要对开发的软件产品进行可行性分许,并制订初步的开发计划。可行性分析是为了在技术、经济、操作或社会等多个方面寻求可行的解决方案,并对各个方案进行比较,完成可行性分析报告。
2.需求分析
需求是指为了解决用户提出的问题,目标系统需要做什么。需求分析是一个很复杂的过程,需求分析是否准确和成功,直接关系到后续软件开发的成败。在需求分析阶段,开发人员首先要通过各种途径对需求进行获取。要得到正确和详尽的需求,开发人员与用户之间的交流与沟通是非常重要的。得到需求后,开发人员需要对原始的需求进行抽象与概括,从功能、性能、界面和接口等诸多方面对需求进行详细描述,并最终反映到软件需求规格说明书中。
3.软件设计
软件设计就是指在需求分析的基础上,软件开发人员通过制订设计方案,把需求文档中描述的功能可操作化。设计可以分为概要设计和详细设计两个阶段。概要设计旨在建立系统的总体结构,从总体上对软件的结构、接口和全局数据结构等给出数据说明。详细设计关注每个模块的内部实现细节,为后续的编码工作提供最直接的依据。
4.编码
在编码阶段,开发人员根据设计阶段制订出的设计方案,编写程序代码。简单地说,编码的过程就是把详细设计文档中对每个模块实现过程的算法描述转换为能用某种程序设计语言来实现的程序。在规范的软件开发过程中,编码必须遵守一定的标准,这样有助于团队开发,同时能提高代码的质量。
5.软件测试
软件测试是保证软件质量的关键步骤。软件测试的目的是发现软件产品中存在的软件缺陷,进而保证软件产品的质量。在软件开发的实践中,软件缺陷的产生是必然的。软件缺陷发现得越晚,弥补缺陷所需的成本就越高,损失也就越大。为了尽早发现软件缺陷,有效地进行软件测试是必须的。按照测试点的不同,测试可以分为单元测试、集成测试、系统测试和验收测试。
6.软件维护
在软件产品被交付后,其生命周期还在继续。在使用的过程中,用户还会不断地发现产品中所隐藏的各种各样的错误。同时,随着用户需求的增长或改变,以及市场环境的变化,软件产品的功能需要不断更新,版本需要不断升级。所以,在使用软件产品的过程中,软件开发人员需要对产品进行维护,以保证软件产品的正常运行。一般来讲,软件产品的质量越高,进行维护的工作量就会越少。
软件过程模型
在软件工程中,人们通过建立抽象的软件过程模型,把软件生命周期中的各个活动或步骤安排到一个框架中,将软件开发的全过程清晰且直观地表达出来。
1.软件过程模型的特点:
2.描述了主要的开发阶段
3.定义了每个阶段要完成的主要任务和活动
4.规范了每个阶段的输入和输出
6.提供了一个框架,把必要的活动映射到这个框架中
瀑布模型
在这里插入图片描述
瀑布模型是一种线性的开发模型,具有不可回溯性。开发人员必须等前一阶段的任务完成后,才能开始进行后一阶段的工作,并且前一阶段的输出往往就是后一阶段的输入。由于其不可回溯性,如果在软件生命周期的后期发现并要改正前期的错误,那么需要付出很高的代价。传统的瀑布模型是文档驱动的。如图所示。

瀑布模型的优点是过程模型简单,执行容易;缺点是无法适应变更。瀑布模型适应于具有以下特征的软件开发项目。

  • 在软件开发的过程中,需求不发生或发生很少变化,并且开发人员可以一次性获取到全部需求。否则,由于瀑布模型较差的可回溯性,在后续阶段中需求经常性的变更需要付出高昂的代价
  • 软件开发人员具有丰富的经验,对软件应用领域很熟悉。
  • 软件项目的风险较低。瀑布模型不具有完善的风险控制机制。
    快速原型模型
    在这里插入图片描述
    快速原型的基本思想是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用……反反复复地改进,直到原型系统满足用户的要求。

快速原型模型适用于具有以下特征的软件开发项目。

1已有产品或产品的原型(样品),只需客户化的工程项目
2.简单而熟悉的行业或领域
3.有快速原型开发工具
4.进行产品移植或升级
增量模型

在这里插入图片描述
增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。
增量模型的最大特点就是将待开发的软件系统模块化和组件化。基于这个特点,增量模型具有以下优点。

  • 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
  • 以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统。
  • 开发顺序灵活。开发人员可以对构件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整。

增量模型的缺点是要求待开发的软件系统可以被模块化。如果待开发的软件系统很难被模块化,那么将会给增量开发带来很多麻烦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值