软件工程教学课件md.ppt
,模型驱动程序设计技术刘建宾著北京信息科技大学软件工程系,过程蓝图,使用教材,刘建宾著过程蓝图设计方法学,科学出版社,2005.1,主要议题,过程蓝图设计方法学概述过程蓝图语言过程蓝图开发过程和方法过程蓝图CASE工具,过程蓝图设计方法学概述,方法学的基本概念方法学的主要内容过程蓝图语言开发过程开发工具一个模型驱动程序设计实例技术效果,设计方法学的基本概念,程序设计方法学的概念和意义过程开发的地位和目标过程蓝图设计方法学的定义过程蓝图设计方法学的定位,程序设计方法学的概念和意义,方法是系统化的过程,方法学为一系列相关的方法或技术。程序设计方法学是一整套有关程序设计的原则、理论、方法和技术。程序设计方法学对最终程序的质量和开发程序的效率具有重要影响。程序设计方法学的研究对软件学科的发展和软件工程实践在理论和实践两个方面都具有重要意义。,过程开发的地位和目标,过程开发是程序开发中不可缺少的组成部分和基本主题。目标是检查和识别每个过程内部行为动作的数据流和控制流,为软件的动态行为特征创建满足需求规格说明的动作组织和过程代码。,过程蓝图设计方法学的定义,过程蓝图设计方法学是适用于程序过程开发的一系列相关的原则、理论、方法和技术,是将程序开发者的注意力、知识、经验、技能、和创造性集中在过程蓝图开发方面的一种程序过程设计方法学。,过程蓝图设计方法学的定位,软件方法学的重要组成部分,属于软件方法学中较为基础和局部的方法论。使用过程蓝图可视化建模语言来分析、设计和构造最终程序过程代码的一种半形式化工程开发方法和技术。,方法学的主要内容,过程蓝图语言设计方法开发过程,过程蓝图语言,过程设计的理论基础过程蓝图产生的来源过程模型的基本要求过程蓝图的外部视图和内部表示过程蓝图的定义和用途过程蓝图的目的使用过程蓝图的核心,过程设计的理论基础,过程设计的理论基础在六十年代初已经形成,在Edsgar Dijkstra等人的工作中又得到了进一步的完善。结构化程序设计是过程设计的一种重要技术。复杂性度量的理论表明,结构化的构成元素减少了程序复杂性,从而增加了可读性、可测试性和易维护性。仅只使用顺序、选择和循环三种结构会带来实际的困难。,过程蓝图产生的来源,过程蓝图是在结构化语言(结构化英语或结构化汉语)、马里兰大学朱耀汉的软件蓝图设计语言、James Martin的活动图、日立公司的问题分析图(PAD图)、程序设计语言PDL)、UML动作语义以及多种现代文本编程语言基础上演化和发展起来的一种新的可视化程序过程建模语言,它不是单独某种语言和方法的演化结果,而是所有这些语言和方法相融合的继承者。其思想来自程序过程开发领域许多不同研究和开发者提出的概念和想法。,过程模型的基本要求,选择何种过程模型来描述算法和处理逻辑对如何动手解决问题并形成解决方案有着深远的影响。抽象是学习和交流、认识理解问题、形成解题思路,以及控制复杂性的关键。单个模型是不充分的。对每个复杂的过程最好是通过一个模型的一组既相对独立又彼此联系的视图去处理,并以不同的精确程度来逐步加以刻画和表示。最好的过程模型还应该与现实的编程语言联系在一起,能够从高层的过程视图逐步平滑过渡到低层的视图,最后从最低层视图生成用编程语言表示的过程源代码。,过程蓝图的外部视图和内部表示,概念层视图抽象概念结构图(ACSD)逻辑层视图抽象逻辑结构图(ALSD)实现层视图抽象实现结构图(AISD)内部统一结构表示,过程蓝图的定义和用途,一种通用的可视化过程建模语言,用于分析、设计和实现阶段对行为过程进行详述、可视化、构造和建立过程制品文档,同时还可以用于数据结构和其它非软件系统的过程建模。一种新的行为过程图形化表现技术,它是一种面向CASE、具有多级抽象表示能力和易理解性,能够在软件生命各阶段使用的树形图式。一种图形和正文相结合的可视化过程表示法。用于开发面向对象软件系统中的类方法,以及传统面向功能的软件系统的过程和函数。,过程蓝图的目的,以人们较为自然的图文、图表形式表现程序行为过程的动作结构与实现细节,使程序易读、易写、易理解,使过程设计技术的学习更为容易和有效,并在分析、设计、构造阶段提供一致且过渡平滑的过程表现手段,并在CASE工具支持下,提高程序过程开发的生产率与质量。,使用过程蓝图的核心,将人们头脑中模糊、粗略的解决问题的思想,按概念、逻辑、实现三个层次,以增量方式平滑自然地逐步过渡并转换成能用计算机处理的明确而详尽的过程代码。,开发过程,行为过程开发中存在的问题和表现 对描述语言的选择和求精层次存在因人而异的随意性,缺乏良好定义和管理的规范开发过程 规范开发过程的重要性 对过程蓝图制品的产生、项目管理和质量保证具有重要意义 基于过程蓝图的规范开发过程 明确的阶段划分、活动和制品 自顶向下、逐步求精、增量迭代、平滑过渡,过程蓝图CASE工具,工具的作用语言与工具的关系相关工具的构成,工具的作用,在过程蓝图的绘制和更新、语法检查、维护过程蓝图的完整性中的有效性、一致性和完备性、代码生成,规范开发过程支持等方面发挥作用。提高过程开发的生产率,降低手工开发和维护一致性的成本。对于过程蓝图的功效发挥具有重要意义,对过程蓝图的应用至关重要。,语言与工具的关系,过程蓝图语言和开发过程的定义是工具实现的基础。过程蓝图语言的抽象语法元模型以及完整性规则是工具实现的核心部分过程蓝图表示法是工具必须实现的外部接口过程蓝图规范开发过程是工具必须支持的活动框架,相关工具的构成,过程蓝图的CASE工具包括可视化图形编辑器,代码及文档生成器,逆向变换(工程)工具,可视化程序半自动重构支持工具,与其它表示法的相互转换工具等。,一个模型驱动程序设计实例,打印康德有理数序列问题规格说明,设计实例,输出数据结构图,设计实例,从数据结构导出的初始抽象概念结构图,设计实例,分配了操作的抽象概念结构图,设计实例,导出的初始抽象逻辑结构图,设计实例,操作表达式表,设计实例,导出的抽象实现结构图,设计实例,生成的程序源代码,模型驱动程序设计技术的效果,模型驱动程序设计简称MDP(Model-Driven Programming)MDP技术的应用效果MDP产生的变化和影响,MDP技术的效果,提高程序生产率30 提供实现无关模型到实现相关模型的半自动变换技术和实现相关模型到代码的自动转换技术,使设计时间增加,而编码、测试和调试时间减少。随着问题规模和复杂性的不断增加,整体开发效率的提高越来越明显。提高程序质量 提供规范的逐步求精技术,减少50左右的程序逻辑错误 在代码生成前自动检查模型的完整性,保证生成的代码不存在语法错误,使程序代 码的语法检查提前(编译前),避免因程序语法错误引起的编译迭代时间。在抽象层次较高的概念层实现程序的移植和重用,提高程序的可移植性和可重用 性。程序模型制品结构良好,语义丰富,容易阅读和理解,改善程序的可维护性。实现文档和代码的统一,降低程序维护费用 提供模型和代码的统一表示框架,以及模型间和模型与代码间的一致性自动维护技术,避免开发中后期文档滞后于代码,文档和代码难以保持一致的状况,有效解决程序和文档一致性维护的难题,大幅减少维护程序的代价和成本。程序开发敏捷化、规范化和可控化 提供最小化的模型构建技术(极限建模XM,Extreme Modeling)、规范的逐步求精技术和半自动模型变换技术,使程序设计过程敏捷化、规范化和可控化。,MDP产生的变化和影响,MDP改变面向文档和代码文本的传统程序开发和维护方式,进入可视化模型创建、模型变换和代码生成的模型驱动程序设计方式。MDP改变程序开发人员的角色、职责和游戏规则MDP改变程序开发过程MDP改变程序开发工具使程序的生产机制发生变革,将对软件产业界和教育界产生积极而深远的影响。,过程蓝图语言,过程蓝图语言的内容,语言定义的方法和组织过程蓝图的基本概念和基础设施抽象概念结构图的定义、图形表示与应用实例抽象逻辑结构图的定义、图形表示与应用实例抽象实现结构图的定义、图形表示与应用实例过程蓝图的定义与程序表示实例用法指南,语言定义的方法和组织,范围和目标语言定义方法元模型规格说明结构语言的形式化,范围和目标,语法 通过建立过程蓝图三层外部视图模型和内部统一模型,提供了过程蓝图表示法所有建模符号的完整的语法。语义 给出语言概念控制构造的语义。完整性 对过程蓝图语言完整性(有效性、一致性、正确性、完备性)方面的概念进行了定义,对有关结论进行了论证。语用 给出过程蓝图的用法指南。,范围和目标,目标 采用形式化数学语言和自然语言相结合的半形式化方式进行定义,强调达到语言定义体系结构和形式的相对严格性、以及增强可读性的目标。,语言定义方法,使用元模型(Meta-Model)定义方法 元模型是用于说明模型的语言过程蓝图元模型本质上属于一种逻辑模型而不是物理实现模型,但它包含了模型表示法实现方面的内容 逻辑元模型的优缺点元模型使用抽象语法(Abstract Syntax)、良构规则(Well-Formedness Rules)、动作语义(Action Semantics)和表示法(Notation)注释以半形式化的方式描述。,语言定义方法,抽象语法以数学模型方式描述,它包含了一个多元组的定义和支持性自然语言描述。良构规则使用基于集合、函数和一阶谓词逻辑的形式化数学语言进行描述。动作语义使用自然语言描述。表示法通过图形描述。,元模型规格说明结构,抽象语法良构规则映射规则动作语义表示法注释图形表示法,抽象语法,抽象语法使用集合、函数和一阶谓词逻辑表示的多元组数学模型来定义。多元组数学模型展示了定义的元控制构造类及其关系,并包括了一些基本的良性构成规则,主要是整体结构关系应该满足的共性要求,在过程蓝图中具体表现为树条件。,良构规则,良构规则定义了过程蓝图的元控制构造类的静态语义,主要是关系要满足的共性和多样性的约束要求。共性是所有元类实例关系应该满足的树结构要求,它们是结构被良性构成的任意时刻应该满足的强制性条件,所以被定义为所有元类实例的一组应该满足的树条件。多样性反映了各种元类实例与其它元类实例的连接关系被良性构成时应该满足的特定结构要求。良构规则使用一阶谓词逻辑表达式、分析函数和非形式化解释来定义。,映射规则,过程蓝图的概念控制构造和逻辑控制构造之间存在一定的类型约束关系映射规则包括概念控制构造与逻辑控制构造之间的控制流双向映射规则和逻辑控制构造到数据流实现构造的映射规则映射规则是良构规则的组成部分映射规则使用一阶谓词逻辑表达式和分析函数来定义,动作语义,抽象语法中定义的语言控制构造表示组成过程的行为动作动作语义给出各种语言控制构造的动态语义 语言控制构造的动态语义用自然语言定义结构被分组为集中定义的逻辑块来定义语义,表示法注释,过程蓝图是一种图形表示方法,具有独特的控制类型标识和结构连接方式。抽象语法中分解函数描述的基本结构关系的表示法注释通过将表示元素映射到抽象语法的结构元素而得到。,图形表示法,基本图形表示法是针对各种语言构造,将抽象语法的表示法注释中给出的一般方法经具体化而得到具体图形表示记法。对过程蓝图的三种外部图形视图(抽象概念结构图、抽象逻辑结构图和抽象实现结构图)给出了同一个过程表示问题的图形表示实例。,语言的形式化,定义元模型的技术形式化层次形式化语言的使用自然语言的使用,定义元模型的技术,采用数学语言和自然语言相结合的一种半形式化技术来描述过程蓝图元模型。与UML元模型定义技术的比较。过程蓝图语言的结构通过形式化的抽象语法和良构规则给出了相对严格和精确的规格说明,语言设计的完整性通过语言分层结构的有效性和一致性定理得到部分保证。由于动态语义目前并没被看成是工具开发的要素,所以动态语义部分仍然使用自然语言进行描述。,形式化层次,定义语言的一种通用技术是首先定义语言的语法,然后描述它的静态和动态的语义。语法定义语言的结构以及如何建立这些结构。特别当语言具有图形语法时,定义语言的抽象语法的表示法注释是很重要的。具体的图形语法通过把表示法注释映射到抽象语法的方式来定义。语言的静态语义定义语言构造的一个实例应如何与其它实例进行有意义的联接。静态语义可以在良构规则中体现。动态语义定义了良性构成结构的执行含义。动态语义则在动作语义中进行描述。,形式化语言的使用,数学语言的使用 集合、函数、一阶谓词逻辑形式化的部分 元模型中的抽象语法、良构规则形式化的作用 语言的理解使描述的元模型具有准确性、严格性和简洁性。为研究语言的完整性奠定基础,自然语言的使用,自然语言是自然形成的语言,已有数千年历史。自然语言最为人们所熟悉并得到广泛使用,符合人们的思维习惯,利于理解。自然语言是非形式化的,存在歧义性、模糊性和不完备性。自然语言主要用于描述元模型中那些难以形式化的部分,特别是动作语义部分。自然语言的使用使描述的元模型具有较强的可读性。,过程蓝图的基本概念和基础设施,基本概念基本构造语言的构成三层描述二级映射的体系结构,基本概念,动作数据流控制流过程基本概念关系模型并发概念模型和顺序实现模型过程蓝图、编程语言及其过程源代码间的关系,动作(Action),动作是行为的基本单位。一个动作带有一组输入并它们转化为一组输出,输入和输出可能都为空或有其中一方为空。某些动作会修改系统的状态。一个动作可以拥有一组输入数据流和一组明确的对前驱动作的控制流依赖。动作呈现多种多样的类型,每一类动作都有自己的构成规则。一个动作必须属于一种类型。动作的执行一定是特定类型的动作执行。动作执行表示在一特定的语境中执行一个动作时的一般行为。,数据流(Data Flow),一个数据流带有两个动作间的数据,并能有效地使动作有序。每一个数据流都有一个源,它是一些其它元素的输出,典型的是作为一个动作的输出。每一个数据流都有一个目的地,它是到一些其它元素的输入。数据流把一些值从一个输出源端传送到一个目标输入端。由数据流相连的动作之间的控制顺序是隐式的。,控制流(Control Flow),控制流是两个动作之间的一种顺序依赖。一个控制流表明一个前驱动作和一个后继动作之间没有明显数据流的次序约束。一个前驱动作必须在它的后继动作执行之前完全执行。控制流的后继动作只有在前驱动作执行完成之后才能执行。控制流规定了动作需要满足的次序约束。,过程(procedure),过程是以一个单元执行的一组动作的集合,可以作为一个单元附属于软件模型的其它部分,如,作为一个类操作实现的方法体,传统的过程体或者是函数体、状态机中一组转换动作等。过程可以有多个参数和结果。过程将一系列动作组织成一个可被调用的行为实体。每个过程有一个过程体,过程蓝图的作用就是提供过程体的一种可视化定义,从这种过程模型生成的文形式的过程源代码可以作为过程的代码属性值嵌入在过程的定义中,以提供编程语言形式的过程规格说明。,基本概念的关系模型,并发概念模型和顺序实现模型,一个简单的顺序过程模型通常跟以前传统的顺序计算环境相关,将今天的并发和分布计算环境映射成这样的模型时需要花费的代价太高。行为过程的规格说明语言必须包含并发执行概念,并要考虑以指定顺序执行的一些控制和保证程序多线程并行执行的同步机制。建立在并发执行语义的动作既可以映射为一个分布式的执行实现,也可以映射为顺序执行的实现。过程蓝图的概念层规格说明中的动作除了一个显示的顺序控制以外,其它的复合动作带有并发执行语义。过程蓝图的逻辑层和实现层的动作语义取决于编程语言的语义,是否带有并发语义完全由编程语言的语句语义所决定。,过程蓝图、编程语言及其过程源代码之间的关系,语言的基本构造,概念控制构造逻辑控制构造实现控制构造 数据实现构造 正确性验证构造统一控制构造,概念控制构造,过程蓝图提供顺序、循环、单项选择、多项选择、并发、异常处理、基本动作、跳转、模块、未定义共10种概念控制构造。前6种为可以进一步分解的复合概念控制构造,后4种为不可再分解的终结概念控制构造。这些概念控制构造是对编程语言控制语句的抽象,同时考虑到使用上的方便,体现了长期以来人们在程序过程开发技术方面达成的共识和已经取得的成果,在控制流表示能力方面具有完备性。概念控制构造独立于任何编程实现语言,用于组织人们解决问题的算法思想。概念控制构造提供的与编程实现语言的无关性使概念级的过程移植和重用成为可能。,逻辑控制构造,从JAVA、C+、VB、VFP、PASCAL语言的控制语句中提取出这五种编程实现语言的逻辑控制构造,用于描述程序过程的详细设计,并通过它来实现编程语言控制语句的可视化。逻辑控制构造与编程语言的控制语句之间存在一一对应关系,因此,从某种编程实现语言中提取得到的逻辑控制构造对该编程语言的控制流描述能力是完备的。,实现控制构造,实现控制构造由同一种编程语言的逻辑控制构造、数据实现构造和正确性验证构造组成,用于精确描述过程动作的控制流、数据流和动作执行入口点和出口点的前置断言和后置断言。实现控制构造包含生成过程源代码语句的所有细节,与编程语言的控制流和数据流语句之间存在着直接的对应关系,可以进行相互的转换。在面向人的语义表示能力上稍强于编程语言语句,具有清晰的结构和更好的可理解性,比代码更适合于人的使用。在面向机器的控制流和数据流精确表示能力方面与编程语言语句等价,完全适合于机器的要求。,实现控制构造,数据实现构造 过程蓝图只提供用于表示现有编程语言数据实现构造的槽,使之能完整和直接地利用编程实现语言所提供的数据构造设施及其表达形式,其数据实现构造能力完全取决于编程实现语言所提供的能力。好处在于能够直接和完整利用现有编程语言及其编译器的成果,无需设计一种新的构造语言及其编译器;代码生成时无需对数据元素及其数据流部分进行复杂的转换和解释;在生成过程代码前进行语法检查,使传统编译时进行语法检查的时间提前,避免了代码语法错误造成的反复编译和调试迭代工作。,实现控制构造,正确性验证构造 过程蓝图为每个实现构造提供了表示前置断言和后置断言这两种正确性验证构造的槽,使之能在代码生成之前支持Hoare逻辑的程序正确性证明方法。这对于保证程序的质量,减少测试工作量具有重要意义。,统一控制构造,过程蓝图将概念控制构造、逻辑控制构造、数据实现构造和正确性验证构造统一表示在一个内部的动作构造中,实现了上述各种外部构造的统一,使外部的概念、逻辑和实现构造成为同一个内部行为动作构造的不同投影结果和视图。这种行为动作构造统一性的实现为建立统一的过程表示模型、展现过程的分层视图、以及保证一致性等方面奠定了基础。,语言的构成,三层描述二级映射的体系结构,概念、逻辑和实现三层抽象描述控制流和数据流二级映射统一过程结构,概念、逻辑和实现三层抽象描述,过程蓝图分为概念层、逻辑层和实现层三个层次,分别用于描述过程的概要结构、逻辑结构和实现结构。概念结构是过程行为动作的概要结构,用于表达算法思想,独立于编程实现语言,与过程的控制流和数据流实现细节无关,是过程后续开发的基础和关键。逻辑结构依赖于概念结构,是对概念控制构造进行控制流求精和细化的结果,与编程实现语言的控制构造有关,包含过程的控制流实现细节,表示过程详细设计的全局逻辑结构。实现结构是在全局逻辑结构基础上,使用目标编程语言表达式对逻辑控制构造进行数据流精确化的结果,包含过程控制流和数据流的全部实现细节。,控制流和数据流二级映射,在分析层与设计层之间,以及设计层与构造层之间存在映射关系。映射关系是一个一对多关系。在概念层与逻辑层之间提供了控制流映射。在逻辑层和实现层之间提供数据流映射。过程蓝图的二级映射功能提供了一定程度的程序独立性(控制流独立性和数据流独立性),使过程的控制流和数据流的变化和修改尽可能被局部化,利于过程的移植和重用,能更好地支持自顶向下、逐步求精的程序设计原则。部分映射可以实现自动化。,二级实例映射关系,统一过程结构,上述三个层次的过程外部结构被统一在一个内部树形结构模型中,进一步建立了统一过程结构的表示模型,使概念结构、逻辑结构和实现结构成为这个统一过程结构的不同视图。每种视图是同一过程模型的不同投影结果。每个较低层的视图呈现更多的实现细节,以适应不同开发阶段的无缝连接、平滑过渡和增量开发的要求。通过良构规则和完备性规则建立了统一过程模型的完整性约束条件,用于保证过程蓝图的有效性、一致性和完备性。,过程蓝图体系结构图,思考题,过程蓝图的三层描述二级映射的语言体系结构有何意义和好处?,抽象概念结构图(ACSD),基本集合抽象语法良构规则动作语义图形表示方法应用小结,基本集合,概念控制构造类型集合Tcn=+,*,o,?,!,:,e,&,#自然语言语句集合Snn=ss自然语言语句,概念控制构造类型,抽象语法,抽象概念结构图是满足树条件的二元组:tc=(Ac,dc)其中AcTcnSnn是概念结点的集合,dc:AcBc是满足下面定义的良构规则的概念结点分解函数。Bc=dc(a)|aAc为Ac中所有结点的子结点系列dc(a)的集合。dc(a)=a1,a2,ak=Sequence aj j0jk aj Ac为a结点的子结点,k0为结点a的子结点数。,抽象语法,树条件(1)有且仅有一个根结点。根结点是没有父结点的结点。c1:rootAc(parent(tc,root)unique(tc,root)(2)除根结点以外,其它结点有且仅有一个父结点。c2:aAcroot(|parent(tc,a)|=1)(3)任何结点都不是自己的祖先。c3:aAc(a ancestor(tc,a),抽象语法,表示法注释,良构规则,结点分解规则若aTcn:,!,#,则|dc(a)|=0,称a为叶概念结点;若aTcn+,*,o,?,e,当|dc(a)|2时,对ajdc(a),有ajTcn+,o,#(j=1,2,|dc(a)|),良构规则,若aTcn+,*,o,则dc(a)1,且对 ajdc(a),有ajTcnTcn(j=1,|dc(a)|)若aTcn=e,则dc(a)2,且对ajdc(a),有ajTcnTcn(j=1);ajTcn o,#(j=2,dc(a)-1);aTcn+,o,#(j=dc(a)若aTcn=“&”,则dc(a)2,对 ajdc(a),ajTcnTcn(j=1,2,|dc(a)|),动作语义,动作语义定义过程中动作的行为 概念控制构造用于标注和支持版中定义的动作语义概念控制构造的分类 复合动作 组动作(顺序、并发),条件动作(单项选择、多项选择),循环动作,异常处理动作终结动作 基本动作、模块动作、跳转动作和未定义动作,复合动作语义,顺序动作()并发动作(&)单项选择动作(o)多项选择动作(?)循环动作(*)异常处理动作(e),终结动作语义,基本动作(:)模块动作(!)跳转动作()未定义动作(#),顺序动作,顺序动作用字符“”标识,是一种组动作。顺序组动作在所属的子动作间施加一个显示的顺序控制流,各个子动作将按照排列的顺序依次执行,当最后一个子动作执行结束后,整个组动作执行完成。设a是一个顺序动作,有aTcn=“”,再设dc(a)=aj j=1,2,k,k1是a的子动作系列,表示a是子动作a1,a2,ak的顺序,或者a由a1,a2,ak顺序组成。a的执行首先从子动作a1开始,a1执行完成之后开始执行a2,然后依次执行后面的子动作直至ak被执行,当ak执行完毕,a执行结束。,并发动作,并发动作用字符“&”标识,是一种组动作。并发组动作在所属的子动作间施加一个显示的并发控制流,各个子动作可以并行执行,当最后所有子动作执行结束后,整个组动作执行完成。设a是一个并发动作,有aTcn=“&”,再设dc(a)=aj j=1,2,k,k1是a的子动作系列,表示a是子动作a1,a2,ak的并发。a的执行导致a1,a2,ak的并发执行当所有子动作a1,a2,ak全部执行完成之后,a执行结束。,单项选择动作,单项选择动作用字母“o”标识,是一种条件动作,即一种可选动作(Optional Action)。它根据一个测试条件来确定它的一个子动作组是否被执行。当测试条件为满足时,子动作系列dc(a)=aj j=1,2,k,k1被执行,否则不被执行。子动作系列的执行具有并发语义,可以是顺序,也可以是并发。概念层并不给出单项选择动作的测试条件,而只给出该动作“做什么”的语义。测试条件的细节只能在逻辑层和实现层分别使用受限自然语言和编程语言表达式进行不同精确程度的表示。,多项选择动作,选择动作(Select Action)用字符“?”标识,是一种条件复合动作,即一种多项选择动作。设a是一个选择动作,有aTcn=“?”,再设dc(a)=aj j=1,2,k,k2是a的子动作系列,表示a是子动作a1,a2,ak其中之一的选择,或者a是a1,或者是a2,或者是ak。a的执行是子动作a1,a2,ak其中之一的选择执行。概念层只给出多项选择动作的行为语义,而不给出具体的选择条件,描述该动作“做什么”。该动作的选择条件在逻辑层和实现层分别使用受限自然语言和编程语言给出精确程度不同的描述和表示。,循环动作,循环动作(Iteration Action)用字符“*”标识,是一种复合动作。设a是一个循环动作,有aTcn=“*”,再设dc(a)=aj j=1,2,k,k1是a的子动作系列,表示a是子动作系列dc(a)的循环,或者a由子动作系列dc(a)的重复组成。a的执行引起子动作系列dc(a)的迭代执行。子动作系列的执行具有并发语义,可以是顺序,也可以是并发。循环动作的循环测试条件并不在概念层给出,概念层仅给出循环动作“做什么”的行为语义,在逻辑层和实现层分别给出循环测试条件的受限自然语言描述和编程语言表达式的精确实现表示。,异常处理动作,使用“e”字母来标识异常动作,并在逻辑层将其映射为具体编程语言的异常控制构造。设a是一个异常处理动作,有aTcn=“e”,再设dc(a)=aj j=1,2,k,k2是a的子动作系列。a的执行首先引起需要尝试的子动作a1的执行,然后根据a1执行时捕获到的异常情况,选择异常处理部分a2,ak-1或者a2,ak其中之一的动作对异常进行处理。这取决于ak是否为某种情况的异常处理动作:若akTcn=o,则ak为某种情况的异常处理动作,此时当a2,ak其中一个处理动作执行完成之后,a执行结束;若akTcn o,则ak为异常的善后处理动作,此时当a2,ak-1其中一个处理动作执行完成之后,需要继续执行ak,ak完成之后a结束。,基本动作,基本动作(Basic Action)用字符“:”标识,是一种终结动作,用于标识UML的原始动作(Primitive Action)和集合动作(Collectio Action)。集合动作重复运用其它动作来处理集合的元素。原始动作可进一步分为对象、属性、链和变量的读写动作和计算动作。,模块动作,模块动作(Module Action)用字符“!”标识,是一种终结动作,主要用于标识UML的消息动作(Message Action)。消息动作进一步分为广播信号动作(Broadcast Signal Action)、调用信号动作(Call Operation Action)、发送信号动作(Send Singal Action)、同步调用动作(Synchronous Invocation Action)和异步调用动作(Asynchronous Invocation Action)。,跳转动作,跳转动作(Jump Action)用字符“”标识,是一种终结动作,用于表示无条件跳转和受限跳转。编程语言包括了break、continue、return、goto等结构。抽象概念结构图的跳转构造统一了这些非线性控制流机制,同时在逻辑层和实现层提供的跳转控制构造具体体现了大多数现代编程语言中可以找到的这种功能。,未定义动作,未定义动作是尚未分解和确定的动作,表示一种暂时的动作状态,一方面用于支持概要描述,另一方面用于支持逐步求精的过程。未定义动作包括概念层的未定义动作和逻辑层的未定义动作。概念层动作可以作为概念模型的一个有效动作而保留,在逻辑层进行进一步细化和分解。逻辑层的未定义动作只能表示一种暂时状态,它最终将被确定化为一个具体的有实际意义的动作。概念层的未定义动作用“#”标记,逻辑和实现层的未定义动作用“UND”标识。,图形表示法,基本图形记法表示法实例,基本图形记法,图形表示实例,抽象概念结构图的应用,加工逻辑的表示数据结构的表示判定树的表示行为过程组织分类程序设计教学,小结,支持概念层次的过程抽象表示,是一种简单实用、容易理解、结构良好的半形式化行为过程建模语言 独立于编程实现语言,与编程语言的控制流和数据流实现细节无关 利于促进人员之间的交流与沟通,尽早发现错误,利于保证过程规格说明的完整和清晰,抽象逻辑结构图(ALSD),基本集合抽象语法良构规则图形表示方法小结,基本集合,逻辑控制构造类型集合 Tln1(X)表示语言X带有显示数据流的逻辑控制构造类型集合 Tln2(X)表示语言X不带显示数据流的逻辑控制构造类型集合 Tln(X)表示语言X的逻辑控制构造类型集合,Tln(X)Tln1(X)Tln2(X),Tln1(X)Tln2(X)Tlno(X)表示语言X的终结逻辑控制构造类型,为不再分解的最终逻辑控制构造类型,基本集合,JAVA语言Tln(JAVA)=SEQ,SYN,IFT,IFE,SWH,CAS,DFT,WHL,FOR,DOW,BLK,DCL,OPE,LAB,TRY,CAH,FNY,BRK,CON,THR,RET,UND。Tln2(JAVA)=SEQ,BLK,DFT,LAB,TRY,FNY,BRK,CON,UNDTln1(JAVA)Tln(JAVA)Tln2(JAVA)Tlno(JAVA)=BLK,DCL,OPE,LAB,BRK,CON,THR,RET,UND,JAVA逻辑结点类型,基本集合,C+语言 Tln(C+)=SEQ,IFT,IFE,SWH,CAS,DFT,WHL,FOR,DOW,CAL,BLK,INC,DEF,DCL,OPE,LAB,JMP,GTO,RET,UND。Tln2(C+)=SEQ,BLK,DFT,LAB,GTO,JMP,UND Tln1(C+)Tln(C+)Tln2(C+)Tlno(C+)=CAL,BLK,INC,DEF,DCL,OPE,LAB,JMP,GTO,RET,UND,基本集合,VB语言Tln(VB)=SEQ,WTH,IFT,IFE,SEL,CAS,CAE,WHL,DWL,DUL,DLW,DLU,FOR,FIN,CAL,BLK,DAT,OPE,LAB,EXT,ERR,ONG,GTO,RET,RSM,UND。Tln2(VB)=SEQ,BLK,CAE,LAB,EXT,ERR,GTO,RET,RSM,UND Tln1(VB)Tln(VB)Tln2(VB)Tlno(VB)=CAL,BLK,DAT,OPE,LAB,EXT,ERR,ONG,GTO,RET,RSM,UND,基本集合,VFP语言Tln(VFP)=SEQ,WTH,PJB,TRN,IFT,IFE,CAS,WHN,OTW,WDO,FTD,FIN,SCN,CAL,BLK,INC,DEF,DCL,OPE,SQL,TXT,JMP,RET,UND。Tln2(VFP)=SEQ,PJB,TRN,BLK,OTW,JMP,UND Tln1(VFP)Tln(VFP)Tln2(VFP)Tlno(VFP)=CAL,BLK,INC,DEF,DCL,OPE,SQL,TXT,JMP,RET,UND,基本集合,PASCAL语言Tln(PASCAL)=SEQ,WTH,IFT,IFE,CAS,WHN,WDO,FTD,FDD,RPT,CAL,BLK,OPE,LAB,GTO,UNDTln2(PASCAL)=SEQ,BLK,LAB,GTO,UND Tln1(PASCAL)Tln(PASCAL)Tln2(PASCAL)Tlno(PASCAL)=CAL,BLK,OPE,LAB,GTO,UND,基本集合,自然语言语句集合Snn=ss自然语言语句 受限自然语言语句集合Sdf=ssSnn verb(s)VDDnoun(s)EDD conj(s)CDD 编程语言的基本操作语句和表达式集合Spl(X)=ss X语言表达式sBCS(X)。其中:BCS(X)为X语言的基本操作语句集,包括表达式语句、空语句、方法调用语句,不包括标号语句、块语句、各种控制语句(条件、循环、跳转、异常处理)、局部变量声明语句和注释语句。,抽象语法,抽象逻辑结构图是满足树条件的二元组:tl=(Al=Al1Al2,dl)其中Al1 Tln1(X)Sdf是X语言带有显示数据流的逻辑结点集;Al2 Tln2(X)Snn是X语言不带显示数据流的逻辑结点集合,Al=Al1Al2表示Al是由Al1和Al2组成的逻辑结点的集合,dl:AlBl是满足下面定义的良构规则的逻辑结点分解函数。Bl=dl(a)|aAl为Al中所有结点的子结点系列dl(a)的集合。dl(a)=a1,a2,ak=Sequence aj j0jk aj Al为a结点的子结点,k0为结点a的子结点数。,良构规则,JAVA逻辑控制构造的结构分解规则 若aTln BLK,DCL,OPE,LAB,BRK,CON,THR,RET,UND,则有dl(a)=,k=0若aTln=IFE,则有dl(a),k=2,且对ajdl(a),有ajTlnTln-CAS,DFT,CAH,FNY,j=1,2若aTlnSEQ,SYN,IFT,CAS,DFT,WHL,FOR,DOW,CAH,FNY,则有dl(a),k1,且对aj dl(a),有ajTlnTln-CAS,DFT,CAH,FNY,j=1,k,良构规则,若aTln=SWH,则有dl(a),k2,且对ajdl(a),j=1,2k,有ajTln=CAS,j=1,2k-1,akTln CAS,DFT 若aTln=TRY,则有dl(a),k2,且对ajdl(a),j=1,2k,有a1Tln=Tln-CAS,DFT,CAH,FNY,ajTln=CAH,j=2,3k-1,akTln CAH,FNY,良构规则,C+逻辑控制构造的结构分解规则若aTln CAL,BLK,INC,DEF,DCL,OPE,LAB,GTO,JMP,RET,UND,则有dl(a)=,k=0若aTln=“IFE”,则有dl(a),k=2,且对ajdl(a),ajTlnTln-CAS,DFT,j=1,2若aTlnSEQ,IFT,CAS,DFT,WHL,FOR,DOW,则有dl(a),k1,且对ajdl(a),有 ajTlnTln-CAS,DFT,j=1,k若aTln=“SWH”,则有dl(a),k2,且对ajdl(a),j=1,2k,有ajTln=CAS,j=1,2k-1,akTln CAS,DFT,良构规则,VB逻辑控制构造的结构分解规则 若aTln CAL,BLK,DAT,LAB,OPE,EXT,ERR,GTO,ONG,RET,RSM,UND,则有dl(a)=,k=0,称这些结点为叶结点。若aTln=“IFE”,则有dl(a),k=2,且对ajdl(a),有 ajTlnTln-CAS,CAE,j=1,2 若aTlnSEQ,WTH,IFT,CAS,CAE,WHL,DWL,DUL,DLW,DLU,FOR,FIN,则有dl(a),k1,且对 ajdl(a),有ajTlnTln-CAS,CAE,j=1,k。称这些结点为复合逻辑结点。若aTln=SEL,则有dl(a),k2,且对ajdl(a),j=1,2k,有ajTln=CAS,j=1,2k-1,akTln CAS,CAE。,良构规则,VFP逻辑控制构造的结构分解规则 若aTln CAL,BLK,INC,DEF,DCL,OPE,SQL,TXT,JMP,RET,UND,则有dl(a)=,k=0若aTln=“IFE”,则有dl(a),k=2,且对ajdl(a),有 ajTlnTln-WHN,OTW,j=1,2若aTln SEQ,WTH,PJB,TRN IFT,CAS,WHN,OTW,WDO,FTD,FIN,SCN,则有dl(a),k1,且对ajdl(a),有ajTlnTln-WHN,OTW,j=1,k 若aTl