随着计算机应用的飞速发展,软件的复杂程度不断提高,源代码的规模越来越大,软件 开发 过程越来越不容易被控制。在长期的研究与实践中,人们越来越深刻" name="description" />
MILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">随着计算机应用的飞速发展,软件的复杂程度不断提高,源代码的规模越来越大,软件开发过程越来越不容易被控制。在长期的研究与实践中,人们越来越深刻地认识到,建立简明、准确的表示模型是把握复杂系统的关键。为了更好地理解软件开发过程的特性,以及跟踪、控制和改进软件产品的开发过程,就必须对这一开发过程模型化。
模型是对事物的一种抽象,人们常常在正式建造实物之前,首先建立一个简化的模型,以便更透彻地了解它的本质,抓住问题的要害。在模型中,先要剔除那些与问题无关的非本质的东西,从而使模型与真实的实体相比更加简单明了、易于把握。总的来说,使用模型可以使人们从全局上把握系统的全貌及其相关部件之间的关系,可以防止人们过早地陷入各个模块的细节。
经过软件领域的专家和学者不断努力,科学、切合实际的各种软件过程模型不断被
推出,它们来源于实践,是用户的需求和软件开发技术拭同促进的结果。目前主要有以
下模型:
·瀑布模型
·原型模型
·快速应用开发fRAD)模型
·螺旋模型
·增量模型和迭代模型
·构件组装模型
·并发模型
瀑布模型在1 2 1小节简单介绍过,它反映了软件工程的基本思想。当今的软件业,竞争非常激烈,节奏明显加快,瀑布模型的应用越来越少。相反,由于认识到软件开发过程
中和用户沟通困难性,那些提高开发效率、速度以及产品后期不断改进等完善的模型越来越受到重视,如原型模型、RAD模型和螺旋模型等。
1原型模型
需求分析是在软件开发的最前端,也就说明它对后期的影响最大,所以我们说,软件需求分析很重要,要想成功开发一个软件产品,首先要做好需求分析.但另一方面,在需求分析时,往往很难做到彻底弄清楚用户对产品的各项具体的要求。由于大多数使用或将要使用计算机产品的用户,不是计算机方面的专业人员,甚至对计算机一点都不了解,所以对计算机能做哪些事情、不能做哪些事情、善于做哪些事情、不善于做哪些事情等都不清楚,只能给出软件的一般性功能或目标要求,不能提出具体的要求,也不能给出规范的、科学的、详细的输入和输出需求。有时候,一套软件系统的应用,需要相应的管理体系相适应,而在新的管理体系建立之前,许多东西是币确定的,但软件系统耍先行,开始其试验阶段。在这些情况下,原型模型可能足最好的选择。
原型模型的指导思想就是,在进行了基本需求分析之后,快速开发出产品的原型,然后基于这个原理,就比较容易吲客户沟通、交流,更好地了解客户需求,不断修改这个原型,到了双方认可的程度,再做详细地分析、设计和编程,最终开发出令客户满意的产品。
一般步骤如下:
(1)先定义软件的总体目标,根据已知的需求来规划出可实现的区域。
(2)然后是“快速设计”,集中于系统的总体框架、基本功能和直观的输入方式和输出
格式等。
(3)有了原型,使客户对系统实现哪些具体功能、功能实现到什么程度有更好的理解.开发者可以边开发边评估,不断细化软件的需求,逐步调整原型使其满足客户的要求。这形成一个迭代的过程。
即使开始建立的原型过丁简单或性能很差,难以使用,但为下一次建立适用的模型积累了经验,而浪费的成本、时间有限。原型模型的优点是使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。其缺点足产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使原型能够尽快工作。
2 RAD模型
RAD(rap applic舭ion deveIopment)模型,即快速应用开发模犁。由于其模型构图形似字母。rv”,故也称v模型,是属于线性顺序一类的软件开发模型。它通过使用基于构件的开发方法来缩短产品开发的周期,提高开发的速度。RAD模型实现的前提是能做好需求分析,并且项目范围明确,这点正好和原型模型相反。RAD模型包含如下几个开发阶段。
(1)业务建模:、IL务活动中的信息流被模型化。通过回答以下问题来实现:什么信息驱动业务流程?生成什么信息?谁生成该信息?该信息流往何处?谁处理它?
(2)数据建模:业务建模阶段定义的一部分信息流被细化t形成一系列支持该业务所需的数据对象。标识出每个对象的属性,并定义这些对象间的关系 I
(3)处理建模:数据建模阶段定义的数据对象变换成要完成一个业务功能所需的信息流。创建处理描述以便增加、修改、删除或获取某个数据对象。 I
(4)应用生成:RAD过程小是采用传统的第三代程序设计语言来创建软件,而是使用4GL技术或软件自动化生成辅助工具,复用已有的程序构件(如果叫能的话)或是创建可复用的构件(如果需要的话)。
(5)测试及反复:因为RAD过程强调复用,许多程序构件已经是测试过的,这减少了测试时间。但新构件必须测试,所有接口也必须测到。
RAD过程模型如图l一2所示。很显然,加在一个RAD项H E的时间约束需要有“一
个可伸缩的范围”。如果一个商业应用能够被模块化。使得其中每…个主要功能均可以在到3个月时间内完成(使用上述的方法),它就是RAD的一个候选件。每一个主要功能可由一个单独的RAD组来实现,最后集成起来形成一个整体。
RAD模型进有一种改进型t将“编码”从v宁型的顶点移到左侧,和单元测试对应从而构成水平的对应关系。下面通过水平和垂直对应关系的比较.使用户能更清楚、全面地了解软件开发过程的特性。
从水平对应关系看
左边是设计和分析,右边是验证和测试。右边是对左边结果的检验,即对设计和分析的结果进行测试,以确认是否满足用户的需求。如:
· 需求分析和功能设计对应验收测试,说明在做需求分析、产品功能设计的同时,测试人员就可以阅读、审查需求分析的结果,从而了解产品的设计特性、用户的真正需求,可以准备用例(use case)。
· 当系统设计人员在做系统设计时,测试人员可以了解系统是如何实现的,基于什么样的平台,这样可以事先准备系统的测试环境,包括硬件和第三方软件的采购。因为这些准备工作,实际上要很长时间才能完成。
· 在做详细设计时,测试人员就可以准备测试用例(kst case,以有效地发现软件缺陷的最小测试执行单元。洋见2 5 2小节和第14章)。
· 一面编程,一面进行单元测试,是一种很有效的办法,使我们可以尽快找出程序中的错误。充分的单元测试町以大幅度提高程序质量、减少成本。