一种描述信息或者数据模型的概念的语言。最流行的,最常用的建模语言是UML(Unified Modeling Language,统一建模语言)。建模语言的关键在于能够实现模型概念的传递。
简介
如何以合理的性能价格并在预定的时间内开发出高质量的软件是30余年来软件界一直在努力解决的问题。从60年代侧重于编码阶段的研究到70年代广泛采用
软件工程学的观点,及至80年代对软件工具和环境的研制,注意力主要集中在软件制造过程的产品上,提出了多种方法和技术来提高软件产品的生产率和质量,希望质量的提高减少开发次数,降低维护费用,从而达到降低整个软件开发周期的费用。但随着软件项目规模的越来越庞大,系统也日益复杂,这个问题远未得到较好的解决。注意力逐渐转移到制造软件产品的过程本身—软件过程(SoftwarePorcess),这是基于如下的认识:软件和其它工业产品一样,其生产率和质量的高低最终取决于生产产品的过程的好坏,故通过对软件过程本身的研究,改进软件过程的质量,可以使软件项目的实施更有效,更可预见,获得高的生产率和高质量的软件。软件过程(以下简称为过程)是建立、维护和进化软件产品的整个过程中所有技术活动和管理活动的集合。也可以认为,一个软件过程是一组受约束的协同活动,其中一些活动是自动执行的。
软件过程的研究日益受到重视,其首要问题是如何表示过程,即建立过程模型;其次是在模型建立之后,如何实施(Enact)过程;进一步的工作则是研制以过程为中心的CASE环境。
过程建模对建模语言要求
软件过程模型是过程的抽象描述,对过程的描述可以是形式化、半形式化或非形式化的,如利用结构化语言或图形来描述过程则是半形式化的一个过程模型通常表达了一定的过程抽象层次和看待过程的一种特定观点。过程建模的首要目的是为了更好地理解过程,精确地表示过程,从而使过程的参与者可以有效地交流、合作;其次则是试图自动地控制、指导和帮助参与过程中的人或工具,并可使一些开发活动可以自动地重复进行;最后,过程模型为过程的修改和评估提供了良好的基础。
一个软件过程包括许多方面,依据过程建模的目的择其重要的方面进行模型化才有意义且实际可行。Curits认为,过程的如下4个方面是重要的:组织、功能、行为和信息。Con-arid等人认为一个过程模型至少包括5个子模型:活动模型、用户模型、组织模型、产品模型和工具模型。过程建模的主要方面是建模方法和建模语言,方法和语言是紧密相关的。主要的建模方法有:基于过程控制流的建模方法,基于角色的建模方法和基于模板的建模方法。基于过程控制流的建模方法将一个过程视为由若干步骤(过程步)组成的工作流程,先确定过程步之间的执行顺序关系,再以过程步为`中心收集过程的其它数据来描述过程;基于角色的建模方法则认为一个软件项目是由一些角色(指参与过程中的人或工具,如程序设计员,测试工程师等)来协同完成的,故先描述参与过程的各个角色、角色的行为及角色之间的协同关系,然后再以角色为中心收集过程的其它信息来建立过程模型;而基于模板的建模方法是先确定过程中的各类实体(如事件、角色、产品等),将这些实体定义成模板,然后再针对每一个模板在各个不同的抽象层次上构造该模板的具体对象,最后再定义各类实体在同一抽象层次中的所有对象之间的各种关系。过程建模语言是过程的表示工具,是过程技术的关键所在。由于软件产品和其生产过程不同于一般的工业产品及其生产过程,要达到过程建模的目的,具有严格的形式化基础的建模语言是必要的,图形语言和文本描述可作为辅助手段。Losterwiel提出。软件过程也是软件,认为软件过程建模是程序设计的一种形式,该观点得到广泛的赞同。
建模语言应满足如下几点:模块性,由于“软件过程也是软件”,模块性要求是自然的;抽象性,支持不同抽象级的过程描述,抽象非相关的细节;求精,过程本身是非常复杂的软件系统,从高层的抽象表示到低层的详细描述是一系列求精的结果,这样可控制复杂性;分布性,一个软件过程往往是由多个角色在不同场所共同完成的;并发性,软件过程中的活动往往是多个角色的并发行为;智能性,软件过程中的活动序列是动态的,非确定的,过程实施中依据一定的条件必须作出判断和选择。
代表性的建模语言
在各种文献上介绍过的过程建模语言已达数十个,从表示风格上可以分为以下几种类型:逻辑规则,也称为基于规则的语言或逻辑语言;命令式程序设计语言;自动机,包括有穷状态自动机和网人工智能,指采用人工智能技术的语言等一些语言兼具不同的风格,介绍几种有代表性的语言。
ALF
在ALF中,过程模型被描述为MASP(model for assisted software proeess)的分级结构,每个MASP描述了软件过程模型的一部分,且每个MASP又可被其它MASP进一步细化,这样可以建立不同抽象级的过程模型。每个MASP描述为一个六元组(Om,op,Ex,or,Ru,Ch),其中Om为对象模型,它提供了一个基于ERA(实体、关系和属性)的
概念数据模型;Ex是表达式集合,用一阶逻辑语言表示;操作符类型(Op)、规则(Ru)和特征(Ch)均使用一阶逻辑语言表示,操作符类型采用前置和后置条件描述过程活动的语义,规则定义了过程中的某些特定状态下可能的自动反应,特征说明了过程状态上的约束条件,如不满足,则引发一个异常;最后,Or是排序集合,采用路径表达式定义,它表示操作符的执行是并行、选择还是顺序的。
APPL/A
APPL/A是一个过程程序设计语言,它是ADA的一个超集,在ADA的基础上增加了软件对象之间永久性关系的定义机制、关系操作的触发机制和表示关系状态的谓词机制;同时,APPL/A继承了ADA语言的基本特征,如类型系统、模块定义形式(包块)和任务通讯方式(会合机制)。在APPL/A中,软件过程描述以程序过程的形式给劣,而对某些方面(如一致性条件)则可采用规则形式来表示。APPL/A软件过程程序的一部分:
HFSP
HFSP(hierarehieal and function software proeess deseription and enaetion)提供了一种基于属性文法理论的过程建模方法。其基本思想是:活动是把输人对象变换为输出对象的函数,一个过程被定义为上述数学函数的集合;活动可按语法规则进一步分解,而输人一输出关系采用属性规则来描述,一个活动的输人输出属性必须与它的子活动的相应属性一致。更精确地说,如果一个活动A的输人输出分别为x1,x2,…,xn和yl,y2,…,ym,那么,可以用一语法非终结符A表示,A具有继承属性xl,xZ,…,xn和综合属性yl,yZ,…,ym。HFSP通过对函数输人属性的并行求值支持并发,同时,同一活动可有2条以上的规则来说明,以表示活动的非确定性。语言也可表示和对象库的接口,即在A(x1,xZ,…,xnlyl,yZ,…,ym)中,可从对象库中读取输人对象和将翰出对象存到对象库中。
Marvel
在Marvele[]中,过程建模基于规则进行,规则分为3类:项目规则集,它描述过程特定的问题;项目类型集,采用面向对象的类定义数据;项目工具集,它描述和外部工具的接口。项目规则集由2类规则所组成:激活规则和推理规则。激活规则控制开发活动的起动,特别是包括工具的调用,激活规则通常有多个互斥的结果,说明活动在不同条件下可以结束。例如,一个表示编译器调用的规则有2个结果:编译正确,产生目标代码;编译失败,产生错误提示信息。推理规则只用于定义对象属性之间的关系,活动的激活部分为空,只有1个结果。
SLANG
SLANG是建立在一个高级Petir网体系(称为ER网)上的过程建模语言,它通过网的标记描述分布的状态概念;转换表示给定状态下可能或不可能出现的事件;转换点火表示一个事件的出现,事件出现的条件是局部的,通过输入位置来描述,
网络拓扑结构描述事件的优先关系,也描述了并行性和冲突情形。位置被认为是分布式永久对象库,它模型化数据、工具和资源等。对事件出现时活动执行的描述采用类似于逻辑语言的形式表示。总的看来,类似于上述语言的过程建模语言均是基于各自对过程的认识而提出的,均能描述过程的一个侧面和多个侧面,且随着对过程认识的深人,语言也在不断改进和成熟。但尚无一个语言完全满足过程建模的要求且可实用。