版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一种新程序设计范型代码组件的组合重用是一种新的程序设计范型
1通过程序构造的模拟编程风格是一组概念模型的集合。这些概念模型可以让编译器想法并利用程序解决目标问题的实现方案,并为构建的语言实现方案提供结构程序的结构。正如文献所示,程序范型可以指导编程过程,决定程序结构。人们认为,编程风格至少应具备以下几个特点。(1)为程序设计人员提供一种独特的虚拟计算机系统的编程接口.(2)提出独特的程序结构,即程序具有独特的结构单元和结构关系特性.(3)提出独特的构造程序的原则和风格.(4)为程序员规划独特的程序设计任务.(5)所设计出的程序具有独特的运行方式.(6)至少有一种具有代表性的实用程序设计语言支持范型中所包含的各种概念.1.1命令式程序设计范型命令式程序设计范型为程序设计人员提供的虚拟计算机系统的编程接口是面向机器硬件功能部件结构及其状态的低级接口,程序的操作语义是对机器状态复杂变化的描述.命令式程序设计范型要求程序员必须将问题求解过程表示成面向机器的具体操作,必须要在程序中告诉机器按什么顺序,如何完成每一步操作.命令式程序设计范型中提供有过程机制,可以将复杂的算法分解成多个可以相互调用的过程,过程划分的依据是功能分割策略.使用命令式程序设计范型进行程序设计的任务就是:通过构造语句序列以及组织存储空间,实现所需的功能.代表性的命令式高级程序设计语言有Fortran,Pascal和C等.1.2嵌套地调用复杂函数函数式程序设计范型将程序看作是作用于输入数据集的一个函数,用函数式程序设计范型所设计出的程序由一组函数定义组成.函数可以被嵌套地调用,通过嵌套地调用简单函数就可以构造出复杂函数,并最终得到整个程序.在函数式程序设计范型中,没有赋值语句,变量名的值一旦在函数调用时被指定后就不会再改变了;函数没有副作用,多个函数可以并行地运行.函数式程序设计范型中的变量和函数分别与数学中的变量和函数完全一样,便于使用数学方法对程序进行验证.其代表性的程序设计语言是Lisp,Lisp语言是命令式和函数式程序设计范型混合在一起的一种程序设计语言.1.3控制程序设计.根据提出本机逻辑式程序设计范型是在人工智能的自动定理证明方法基础上发展起来的一种程序设计范型,它以逻辑子句作为程序的语句,以使用这些逻辑子句进行定理证明的过程作为程序的执行过程.逻辑式程序设计范型是说明式的,程序只需要描述做什么,而不需要描述如何做.程序员编制程序的任务分为两部分,一个是通过定义断言和规则,描述问题所涉及的对象及其相互关系,描述用于解决问题的知识;另一个是以查询提问的方式描述需要由程序求解的问题.逻辑式程序设计范型将查询提问的结果看作是断言集和规则集的逻辑结论,因此计算机系统可以在内部使用自动推理算法自动地实现求解问题的具体策略和操作过程.逻辑式程序设计范型的代表性程序设计语言是Prolog语言.1.4创建基于类的实理程序面向对象式程序设计范型要求程序描述空间与问题描述空间具有自然、直观和简单的对应关系.类是一种概念性实体并具有稳定的处理逻辑和语义,面向对象式程序设计范型的程序由一组类的定义组成,这些类还被组织成具有继承关系的层次结构.使用面向对象式程序设计范型设计程序的任务有:①组织类的层次结构,这包括从问题描述中识别出所有的对象,将这些对象抽象定义成一组类,然后运用比较分类原则,将这些类组织成具有继承关系的层次结构.②以类为模板生成实例对象,并通过消息传递机制实现实例对象之间的任务协作.面向对象式程序设计范型的代表性语言有Smalltalk,C++和Java等.2代码组件组合称重代码组件是用于构造程序的可重用代码资源,组合重用代码组件的基本目的就是仅仅只要将已有的代码组件组合起来,就可以得到所需要的程序.使用代码组件的组合重用技术开发软件系统的方法被称为组件化软件开发方法,它为开发和维护软件系统提供了新的技术途径.组件化软件开发方法认为,软件系统是通过规范的组合机制连接在一起的一组代码组件,而且组合重用代码组件是构造软件系统的唯一手段.组件化的软件开发包括两个相互独立的过程,一个是代码组件的开发,另一个是组合重用代码组件构造软件系统.当组合重用已有的代码组件仍然无法构造出所需的软件系统时,应当先按照代码组件的实现规格要求开发出足够的代码组件,然后再组合重用新的代码组件,以完成软件开发任务.此时,软件系统的开发人员千万不要直接去开发软件系统中的代码,不要使用除代码组件组合重用机制以外的任何方式制作或连接软件代码.为了最大限度地保证代码组件具有广泛的可重用性,组件化软件开发方法强调由专门的开发人员,独立于所有具体的软件系统的开发过程,开发具有标准规格的代码组件.不同于以往的可重用代码单元,如子程序或类等,代码组件更强调代码资源独立的、黑盒式的可重用性,更强调要提供独立于实现代码组件本身的编程语言的组合重用机制.这些特性有利于确保成功地重用代码组件.目前已有很多文献给出了代码组件的定义,我们认为其中具有代表性的有:组件是自包含(self-contained)的,并被清晰标识的软件系统的组成成分,这些成分描述或执行了特殊的功能,具有清晰的接口、准确的文档和预定义的重用状况(reusestatus).其中自包含性是指无需涉及其它组件就能单独地重用组件,重用状况包含了谁拥有组件、谁维护组件、组件的质量状况如何等方面的信息.组件软件模型描述了组装预先测试完毕的、可重用的、可独立升级的组件,构造软件系统的方法.组件是可供其它程序成分(客户)使用的程序成分,而且客户在使用时不需要知道组件的作者.我们认为代码组件最重要的特性在于它通常都伴随着一系列的标准规范,如接口的标准规范、互操作的标准规范、组合方式的标准规范等.这些规范的定义、描述和实现都是独立于实现代码组件本身的编程语言.事实上,正是这些具有约束性的规范才使得代码组件成为一种能进行大规模重用,且具有良好重用效果的代码资源.代码组件的组合机制对于重用代码资源十分重要.如果缺乏有效的组合重用机制,即使有了代码组件,软件实现人员还可能会像从头重新开发程序那样,需要完成许多具体的编码工作,甚至还有可能会导致代码重用方法退化成为程序设计方法.强有力的代码组件组合重用机制可以从根本上避免这一点,使重用名副其实.为了达到组合代码组件就能构造程序的目的,必须要解决代码组件之间的互操作问题.代码组件的互操作协议是代码组件组合机制的核心内容,提供一种不依赖于实现代码组件本身的编程语言的互操作机制,将有利于简化组合重用代码组件的过程和方式.代码组件的组合重用方式越简单越好,因为组合方式越简单,组合代码组件构造程序的抽象程度就越高,构造过程也越简单,甚至可以使最终用户自行构造所需的程序.动态组合重用代码组件是一种更灵活有效的代码组件组合重用方法,它的含义是:组合重用代码组件构造程序的过程与运行组合结果的过程,可以不间断地进行,不需要切换状态.这意味着在相应工具和环境的支撑下,软件代码组件可以具有类似于硬件元件的“即插(组合)即用(运行)”的重用特性.我们认为:代码组件的组合重用是一种完整的构造程序方法,它完全具备了第1节中所描述的程序设计范型应有的特性,代码组件的组合重用是一种新的程序设计范型.(1)代码组件的组合重用程序设计范型为程序开发人员提供了一个虚拟的编程接口.它给程序员提供的用于构造程序的资源有①具有独立可重用性的代码组件集.这些代码组件具有统一的规格和规范的使用方法,这些代码组件都将特定的功能和行为封装在内部,都通过规范的接口对外提供服务.②组合连接代码组件并进行互操作的代码组件组合机制.组合机制使代码组件可以组合成一个新的复合代码组件,复合代码组件具有更强的功能和行为,可以对外提供更多更好的服务.利用这些编程资源,程序员只要从由许多代码组件组成的代码组件集中选出所需的代码组件,并利用代码组件的组合机制将选出的代码组件组合起来就可以得到目标软件系统.这个编程接口提高了程序设计的抽象层次,使程序员更好地摆脱了实现细节方面的束缚,更多地将注意力集中在问题本身的处理逻辑方面.因此这对于提高程序的实现效率和质量都是有益的.(2)利用这种程序设计范型所设计出程序的结构就是代码组件及其组合结构.代码组件的组合结构有两类,一类是静态的组织结构,另一类是动态的互操作结构.在程序的静态组织结构中,代码组件是基本的结构单元和语义单元,通过代码组件组合机制所指定的代码组件组合连接结构就形成了程序的静态结构.在程序的动态互操作结构中,由程序的静态组织结构组合连接在一起的代码组件通过基于消息传递机制的互操作协议,相互间可以请求或提供服务,从而使各代码组件的功能和行为可以合成起来.程序中这种动态互操作结构直接对应着程序的控制逻辑.由于这种控制逻辑的描述一方面是基于比常规编程语言中语句成分具有更强语义表现能力的代码组件,另一方面它同时又是建立在一个已进行了严格定义且语义清晰的互操作协议的基础上,因此程序控制逻辑的描述可以与抽象程度更高的问题处理逻辑描述本身具有简单的对应关系,这使程序更容易为人所理解.(3)代码组件的组合重用程序设计范型提供了构造程序的新风格.这就是只通过组合已有的代码组件来构造目标程序.在这种编程风格中,必须通过代码组件的封装机制和组合机制,确保在程序构造过程中所产生的所有代码都可以被表示成代码组件,以及组合代码组件就可以得到程序.此外,代码组件的组合重用要求是“黑盒式”的,因此这种构造程序的风格提倡不要用修改代码组件的方式来满足当前的需要.当无法在已有的代码组件集及其组合中找到满足当前要求的代码组件时,应该向代码组件开发者提出请求,由代码组件开发者按代码组件的规格要求,利用代码组件设计框架去开发新的代码组件.即这种风格要求在代码组件的开发者和重用者之间建立明确的任务分工,两者之间的约定是代码组件的使用规程.对于代码组件的开发者来讲,只要遵守代码组件的实现规格并使用给定的代码组件设计框架,就可以确保所开发出的代码组件满足约定的使用规程.对于重用者来讲,只要在组合机制的支持下组合代码组件就可以确保组合的成功.(4)使用这种范型,程序员构造程序的任务就具体化为选择代码组件和组合代码组件.选择代码组件就是从已有的代码组件集中,选择满足当前需要的代码组件.为了有效地支持这一过程,特别是当代码组件集规模很大时,需要预先对代码组件进行分类,并在代码组件库管理的机制上提供支持查找代码组件的工具.根据代码组件的性质以及组合方法的不同,实施组合代码组件的过程差别很大.有的组合过程只需要简单的可视化操作就可以了,有的组合过程则需要使用某种代码组件组合描述语言,如脚本(script)语言等,进行描述.(5)利用代码组件组合重用程序设计范型所设计出的程序,其运行方式也具有一定的独特性.特别是当组合执行代码组件时可以采用“即插即用”式的动态组合机制.使用这种动态组合方法,组合代码组件和运行组合后的复合代码组件可以不间断地进行.这有助于利用原型化技术及时地对组合结果进行验证,有助于用直观的可视化操作方式组合重用代码组件.(6)显然,单靠程序设计语言工具已无法全面地支持利用代码组件组合重用程序设计范型进行程序设计,通常需要使用功能更强的支撑环境.因为支持这种程序设计范型需要代码组件库管理工具以便为程序员提供查找代码组件的帮助,需要提供支持组合机制的工具,需要有支持模拟运行的工具.当然在支撑环境中,代码组件规格尤其是代码组件接口的描述语言,还有代码组件组合机制的描述语言仍是两个非常重要的部分.3代码组件组合复用程序的概念代码组件的组合重用程序设计范型充分继承了当今最流行的面向对象程序设计范型中一些有益的特点,如事件驱动的编程风格等.此外,它还使用了一些独特的编程方式,其中可视化编程和脚本语言最具有代表性.可视化编程是指用可视化的方式,实现代码组件内部状态的设置和代码组件的组合.提供可视化编程的首要条件是为代码组件制定一种可视化表示.无论代码组件本身是否具有由其内部功能或行为所决定的可视化输出,都给代码组件制定一种可视化表示,如代码组件Pad就被表示成可视化的纸片形式.在代码组件可视化表示的基础上,可以用特定的编辑器编辑代码组件的接口属性、指定代码组件之间的静态连接关系.代码组件的这些可视化特性使重用它们时只需使用一些直观简单的操作,就可以完成原本需要程序员编制代码才能完成的工作.这为开发人员提供了简单方便的重用代码组件的方法.脚本语言(scriptinglanguage)不同于一般的系统程序设计语言,它不是通过从头实现算法和数据结构来构造程序,而是假定已有一组代码组件并通过将这些代码组件连接起来的方式来构造程序.脚本语言通常是与某种代码组件及其重用机制一起使用的,它基于代码组件的连接及互操作协议,描述代码组件之间的互操作过程.在脚本语言程序中,程序可以获取或设置代码组件,并通过基于代码组件间消息传递的互操作协议来构造处理事件的逻辑结构.因此通过脚本语言程序,组合在一起的代码组件就可以成为一个能够处理事件的整体,即组件程序.组件程序处理每个事件的过程都由一段脚本语言程序来描述.每段脚本语言程序只在代码组件及其互操作的抽象层次上描述如何处理事件,在这个抽象层次以下的处理细节全由代码组件来处理,无需在脚本语言程序中进行描述.所以用脚本语言构造程序的抽象层次显然高于用一般的系统程序设计语言直接构造程序的抽象层次.脚本语言一条语句所能完成的任务往往需要一般高级程序设计语言用许多语句并构造复杂的程序才能完成.高级程序设计语言的一条语句平均相当于5到10条机器指令,而脚本语言的一条语句则平均相当于100到1000条机器指令.用脚本语言构造程序可以大幅度地减轻程序员处理各种实现细节的负担.由于抽象程度较高,脚本语言易于学习,同时脚本语言程序也更易于理解.代码组件本身用系统程序设计语言实现,代码组件的组合用脚本语言实现.分别用不同类型的程序设计语言来开发代码组件和重用代码组件,这一做法有利于确保提高组合代码组件构造程序的抽象层次,同时也符合大规模重用代码组件的要求.用脚本语言可以描述组件程序如何处理事件,但这并不是唯一的方法.通过统一定义代码组件接收消息的方式和组合在一起的代码组件间消息传递的机制,可以使组件程序能自动地处理事件,而不再需要用脚本语言进行描述,如动态组合重用代码组件的方法DCRCC就采用了这种处理方式.UNIX系统中的shell语言就是一种由操作系统直接支持的,可以描述操作系统命令互操作过程的脚本程序设计语言.shell语言具有一般程序设计语言所必备的三种基本控制结构,它解决了管道机制只能顺序地执行一个命令序列的问题,可以更灵活地描述控制逻辑.用户可以用shell语言构造出许多有用的程序,但是用这种方法往往构造不出面向各种用户领域的应用软件系统.导致这一问题的根源并不在于脚本语言本身,而是因为缺乏足够多的满足各种要求的命令.UNIX系统作为一种通用的系统软件,显然它不可能提供满足各种用户需要的命令集.然而如果我们基于代码组件组合重用的思想,面向具体应用领域分别建立内容丰富的代码组件资源,那么相应的脚本语言就可以使开发人员通过组合代码组件并描述它们之间的互操作过程,构造出各种应用软件系统.代码组件组合重用程序设计范型具有以下的优点:(1)代码组件不但具有与应用领域知识和构造特定领域应用程序的知识有关的语义,而且组合代码组件不再需要编制用于处理低层次细节的程序代码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论