技术开发 频道

软件开发过程统一的时候到了

【IT168 技术文章】

    软件工程模式的研究和开发是软件工程的一项重要课题。1997年,美国Rational Software公司的Jacobson、Booch和Rumbaugh三人提出了统一的软件开发过程(The United Software Development Process),这是三人继UML之后推出的又一杰作。

    UML是一种基于OO方法的统一的可视化图形建模语言,而不是统一的建模(软件开发)过程。尽管语言和过程不可分割,但语言与过程所关心的重点毕竟不尽相同。因此,在开发UML之后,再开发一个统一的建模(软件开发)过程是十分适时的。这样统一的建模语言与统一的软件开发过程和工具就可以组成一种完整的基于OO技术的软件工程模式。

    一、软件工程模式的演化

    1.瀑布模型(Waterfall model)

    这是从硬件工程学来的一种分阶段的、系统的和顺序的软件开发方法,它由系统需求分析开始,接着是软件的设计、编码、测试和维护。

    这种传统的生存期模型是当时使用最广泛的软件工程模式。但是这种模式的实质是面向阶段的和线性的,除了确认和验证,其他所有阶段都是线性执行的。也就是说,每个阶段都只有当其前一阶段工作完成以后才能开始,而且,它的好坏一直要等到测试时才能知道。这种模式在硬件生产中使用效果很好,但用于软件开发时争议却越来越大。因为用户很可能提出非常模糊的需求,而这种模糊的需求又可能被开发者随意解释;经验表明,一旦用户使用一个计算机系统,他们对目标系统的理解可能又会发生许多变化,因此开发者随意附和用户需求的方式往往是一种冒险;更为严重的事实是一个规模庞大的软件项目往往要用几年时间才能完成,在这期间用户的需求和环境都有可能发生很大的变化,从而使系统最终不能使用。

    某些领域,如科学数值计算、嵌入式软件和实时控制系统,最合适采用瀑布模型,也是控制这类项目复杂性的最好途径。但是,对更多的其他应用领域,特别是商业数据处理,这一方法存在着许多严重的不容忽视的缺陷,是不适用的。

    2.原型开发模型

    原型开发也是从了解用户需求开始。开发人员和用户一起来定义所有目标,确定哪些需求已经清楚,哪些还需要进一步定义;接着是快速设计,主要集中在用户能够看得见的一些软件表示方面(如输入方法、输出形式等),用户有了原型就可对其进行评价,然后修改需求,重复上述各步骤,直到该原型能够满足用户需求为止。

    从理论上说,原型开发能够缓解用户需求的不确定性和变化所带来的风险,但实际上也存在许多缺陷。因为开发单位给出的原型一定要是可执行的,这就有周期和经费的问题。为了又快又省地开发出原型,因此又把原型分为三类:抛弃式,目的达到即被抛弃,原型不作为最终产品;演化式,系统的形成和发展是逐步完成的,它是高度动态迭代和高度动态的,每次迭代都要对系统重新进行规格说明、重新设计、重新实现和重新评价,所以是对付变化最为有效的方法,这也是与瀑布开发的主要不同点;增量式,系统是一次一段地增量构造,与演化式原型的最大区别在于增量式开发是在软件总体设计基础上进行的。很显然,其对付变化比演化式差。

    3.螺旋开发模型

    螺旋开发模型综合了传统的生存期模型和原型开发模型的优点,同时增加了一个新的元素(风险分析),用来弥补两者的不足。螺旋开发定义了四项主要活动:计划、风险分析、工程和用户评价。螺旋开发就是围绕这四步一圈、二圈、三圈等重复进行。根据每一圈风险分析的结果,做出继续还是停止的决择。如果风险太大,项目只能终止。但在大多数情况下,沿着螺旋的路径就可以建立起完整的系统,而最终成为运行系统。这种开发模型是当前大型系统或软件开发最现实的和经常使用的方法。

    4.四代技术

    四代技术(4GL)拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。这种方法需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是用户界面极端友好,即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言。4GL还具有高效的程序代码、智能缺省假设、完备的数据库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事务信息系统的中、小型应用程序的开发。

    5.过程开发模型

    过程开发模型又叫混合模型(hybrid model),或元模型(meta-model)。

    为了克服瀑布模型的缺陷,人们已经提出了原型等多种开发模式。这些可选的开发模式看起来十分严谨,但整个项目的开发仍被限制在按定义所确定的阶段性的系统方向上。实际上任何一个项目的开发都取决于许多因素,如软件的应用领域、规模大小、重用构件的大小和多少、软件实现的硬件及软件环境、开始和交付规定、周期和成本限制,以及开发人员的素质等。其中任何一个因素的改变都会影响开发的进程。用户的需求从第一天开始就在变化,一直到该软件被废弃为止。

    最早提出这个问题的是美国国防部软件工程研究所(DoDSEI)和卡内其·梅隆大学的一些研究人员。解决这个问题的方法之一就是把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)提出的背景。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。

    过程开发模型的研究成果最初只是用来代表美国DoD调查各软件开发机构开发过程的成熟程度,最有代表性的就是1991年DoDSEI公布的CMM(The Capability Maturity Model),现在CMM已作为评估开发机构能力成熟程度的标准。

0
相关文章