软件过程与统一软件过程的探讨

时间:2022-10-27 12:45:02 来源:网友投稿

摘要:介绍了软件过程与软件建模技术的发展,以及软件过程、建模语言和统一软件开发过程的概念和原理,并重点讨论了统一过程中构架、用例驱动、迭代与增量的涵义。掌握这些方法,研究与之对应的软件环境与工具,对于软件产业和软件工程学科有着重大的意义。

关键词:软件过程;统一建模语言;统一软件过程;用例驱动;迭代与增量

随着计算机的飞速发展,软件的复杂度不断提高,源代码规模越来越大,软件项目失败的可能性也相应增加,这就需要掌握先进的方法与技术来解决。软件工程正是指导软件开发的工程学科。任何一个软件项目都是一个复杂的系统工程,是一个知识密集型劳动。在过去30多年,为了解决软件产业的危机现象,人们将重点放在研究软件开发方法、软件质量评价、项目管理等软件工程活动的各个方面。先后提出以结构化方法、面向对象方法等为技术特征的多种开发方法。但在方法的使用上,又有许多变化,以至于软件开发过程缺乏统一性,建模描述多样性,软件文档难以规范化和标准化。这些严重影响了软件工程活动的质量和软件本身的质量。

从上世纪90年代开始,人们开始认识到统一软件过程和统一建模语言的重要性。面向对象技术的三大流派开始进行建模整合,提出了统一建模语言UML和统一建模过程RUP。虽然对此专家还有争议,但统一软件过程和统一建模语言给软件产业带来的好处,却日益显现。

一、软件过程

1 软件过程的定义

软件过程(Software Process)是指一套关于项目的阶段、状态、方法、技术和开发、维护软件的人员以及相关Artifacts(计划、文档、模型、编码、测试、手册等)组成。简而言之,软件过程是软件生存周期内为获得高质量软件产品而必须实施的一系列相关过程的集合。

2 软件过程模型

所谓模型就是一种开发策略,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型,这种选择基于项目和应用的性质、采用的方法、需要的控制,以及要交付的产品的特点。

(1)线性顺序过程模型。也称为传统生存周期模型或瀑布模型。它提出了软件开发的系统化的、顺序的方法。其流程从系统开始,随后是需求分析、设计、编码、测试、支持。这种模型是最早也是应用最广泛的软件过程模型。但实际的项目大部分情况难以按照该模型给出的顺序进行,很容易由微小的变化而造成大的混乱。

(2)原型实现过程模型。从需求收集开始,开发者和客户共同参与定义软件的总体目标,标识已知的需求并且规划出需要进一步定义的区域。然后是“快速设计”,它集中于软件中那些对客户可见的部分的表示,并由客户评估、进一步精化待开发软件的需求。逐步调整原型使其满足客户的需求,这个过程是迭代的。

(3)快速应用(RAD)过程模型。这是一个增量型的软件开发过程模型,强调极短的开发周期,它是线性模型的一个“高速”变种,通过使用构件的建造方法赢得了快速开发。其流程从业务建模开始,随后是数据建模、过程建模、应用生成、测试及反复。RAD过程强调的是复用,复用已有的或开发可复用的构件。

(4)演化软件过程模型。软件产品是经过多次过程而演化成品,这是一个迭代的过程。通过不同版本的改进、完善而形成。它包括增量过程模型、螺旋过程模型、并发任务过程模型等。增量过程模型融合了线性顺序模型的基本成份和原型实现模型的迭代特征。每一次迭代产生软件的一个可发布的“增量”产品。螺旋过程模型是一个演化软件过程模型,它将原型实现的迭代特征和线性顺序模型中控制的系统化方面结合起来。并发任务过程模型这种模型关注于多个任务的并发执行,表示为一系列的主要技术活动、任务及它们的相关状态。

(5)基于构件的开发过程模型。面向对象模型强调了类的创建、类的封装了的数据、操纵该数据的算法。经过合适的设计和实现,面向对象的类可以在不同的应用及基于计算机的系统的体系结构中复用。基于构件的开发模型融合了螺旋模型的许多特征,它本质上是演化型的,要求软件创建的迭代方法。然而基于构件的开发模型是利用预先包装好的软件构件(有时成为类)来构造应用。

(6)形式化方法模型。形式化方法模型包含了一组活动,他们导致了计算机软件的数学规约。形式化方法使得软件工程师们能够通过应用一个严格数学符号体系来规约、开发和验证基于计算机的系统。

二、软件建模技术

模型形成的过程也就是软件建模的过程。众所周知,面向对象技术是软件工程领域中的重要技术。面向对象技术不仅是一种程序设计方法,更重要的是对真实世界的抽象思维方式。面向对象分析和设计应该从建模开始,建模语言一直是面向对象技术的研究重点。

统一建模语言(Unified Modeling Language,UML)是著名的面向对象技术专家Grady Booch,Jim Rumbaugh和Ivar Jacobson发起,在著名的Booch方法、OMT方法和OOSE方法的基础上,经过整合而成。UML是一种建模语言,而不是一种方法。建模语言提供的是方法中用于表示设计的符号(通常是图形符号),建模过程则描述进行设计所要遵循的步骤。UML统一了面向对象建模的基本概念、术语及其图形符号,为人们建立了便于交流的共同语言。

客观世界是一个复杂的系统,需要从不同角度考察,才能真正理解这个系统,为此UML定义了5种类图。

1 用例图

它从用户角度描述系统的功能,并指出各功能的操作者。

2 静态图

包括类图、对象图和包图。类图用于定义系统中的类,包括描述类之间的联系以及类的内部结构。它描述的是一种静态关系。对象图只是显示类的对象实例,—个对象图就是一个实例。包图由包或类组成,主要表示包之间、或包与类之间的关系,用于描述系统的分层结构。

3 行为图

描述系统的动态模型和组成对象间的交互关系。一种是状态图,它描述一类对象的所有可能的状态以及事件发生时状态的转移条件。另一种是活动图,它描述满足用例要求所进行的活动以及活动问的约束关系。

4 交互图

描述对象间的交互关系。一种顺序图,用以显示对象之间的动态合作关系。它强调对象之间的消息发送顺序,同时也显示对象之间的交互过程。另一种是合作图,它着重描述对象之间的协作关系。顺序图强调时间和顺序,合作图强调通信关系。

5 实现图

包括构件图和配置图。构件图描述代码构件的物理结构以及各部件之间的依赖关系。构件图有助于分析和理解部件之间的相互影响程度。配置图定义系统中软硬件的物理体系结构,可以显示实际计算机和设备以及她们之间的连接关系。

统一建模语言提供上述5类图,为系统的繁细、开

发提供了多种图形表示。用例图、对象图、构件图和配置图构成了UML的静态建模机制,状态图、活动图、顺序图和合作图构成了UML的动态建模机制。因此UML的主要内容也可归纳为静态建模机制和动态建模机制两大类。

UML采用了一整套成熟的建模技术,广泛适用于各种应用领域。它得到了工业界的广泛支持,在软件工程领域,UML已成为软件行业广泛接受的一种标准的建模语言。

三、统一软件过程

UML是一种建模语言,是独立于过程的,可用于不同的软件过程。面向对象技术专家Grady Booch, Jim Rumbaugh和Ivar Jacobson又提出了以UML为建模语言进行软件开发的统一软件开发过程(Rational Unified Process,RUP)。

1 统一过程概述

统一软件过程也是一个软件开发过程,软件开发过程是一个将用户需求转化为软件系统所需要的活动的集合,是一个面向对象且基于网络的程序开发方法论。统一过程是基于构件的,既所构建的软件系统是由软件构件通过明确定义的接口相互连接所建造起来的。统一过程使用统一建模语言来制定软件系统的所有蓝图。统一过程突出的特点就是用况驱动、以构架为中心、迭代和增量的。

2 统一过程的特点

RUP是一个通用的软件开发过程框架,它可通过裁剪和扩充应用于各种不同类型的软件系统、各种不同的应用领域、各种不同的组织和各种不同的项目规模。RUP具有以下三个重要特点:用例驱动.以构架为中心、迭代和增量开发。

(1)用例驱动的过程。用例驱动过程就是在需求工作流期间,开发人员可以将需求表示为用例,项目经理便可以根据用例规划项目。在分析设计期间,开发人员按照类或子系统来创建用例实现。然后开发人员实现构件,并将构件集成到每次实现用况集合的增量中。在测试工作流期间,根据用例的功能描述编写测试用例,验证系统是否实现了用例的功能。因此,用例将各个工作流整合成一个流——确定用例、分析用例、设计用例、实现用例、根据用例编写测试用例来验证系统设计。

(2)以构架为中心的过程。软件系统的构架是指系统重要组件的组织或结构,这些重要组件通过接口与那些由不断减小的组件与接口所构成的组件进行交互。构架具有以下作用:理解系统,RUP使用UML可视化建模系统的构架,并以构架为中心进行开发,这使得开发人员、管理人员及其他相关人员能够详细理解所需要做的工作,以利于他们参与系统的开发;组织开发,构架设计师通过将系统划分为带有明确定义接口的子系统,并让开发小组负责每个子系统,可以减少开发组之间交流的工作量,而且接口双方的软件可独立地进化;鼓励重用,好的构架为开发人员提供了可以在其上开展工作的稳定的骨架,它有助于开发人员知道在哪里能有效地找到可重用的元素以及发现合适的可重用的组件。进化系统,一个具有稳定的构架的系统在分析和设计时就考虑到系统进化的需求,从而具有一定的容变能力,系统可以适度地进化。

(3)迭代和增量开发。迭代是指带有已建立基准的计划和评估准则的独特活动序列,迭代生成系统的内部或外部发布版。增量是指在后续迭代结束后,两个发布版本之间存在的差异(差值)。在RUP中,软件的生命周期是由一系列迭代组成的,这些迭代都是由软件项目分解成的许多袖珍项目。

每个迭代都产生以内部版本形式交付的实际结果,其中每个内部版本会增加一个增量并表明所关注的风险得以降低。这些版本可以展示给客户,从而获得有价值的反馈以确认工作成果。早期阶段的迭代主要是关注确定项目的范围,消除关键风险和建立系统构架基准。后期迭代则不断增加增量结果,直至得到一个可对外发布的产品。迭代有助于管理层规划、组织、监控和控制项目。迭代和增量开发具有以下的一些优点:允许变更需求;允许持续的集成;及早降低风险;有助于组织学习和提高;提高复用性;生成性能更强壮的产品。

四、统一建模的支持工具

为了有效地利用UML,我们需要首先获得一个UML工具软件。

当前,业界使用最广泛的UM建模工具为Rational Rose。Rational Rose中可实现正向(为模型产生相应的代码)、逆向(从用户原来的软件系统导出该系统的模型)和双向工程(实现模型和代码之间的循环工程),从而保证模型与代码的高度一致。Rational Rose支持C++、Visual C++、Java、Smalltalk、Ada、Visual Basic、 PowerBuilder等语言和开发工具,并能为CORBA应用生成接口定义语言(IDL),为数据库应用生成数据库描述语言(DDL)等。另外,Rational Rose为团队开发和规范的开发过程管理提供了良好的支持。

对于小规模应用,我们可以使用微软公司Office套件中的Visio,其中提供了对UML各种图的绘制支持。

目前有专家提出,建立软件建模与软件过程的自动化的目标,还有待于我们软件工作学者们进一步研究和探讨。建模支持工具的发展还应进一步加强。

推荐访问:过程 软件 探讨

最新推荐
猜你喜欢