简介
可分离函数库是指函数库按照某种功能或作用分离成不同的函数模块或组件。对于软件系统来说,可分离函数库有利于函数库按照实际需求来添加有关函数库模块,减小程序安装和运行时所需要的存储空间。可分离函数库一般采用模块化程序设计技术和组件技术进行设计。
组件概述组件就是一些可重用的对象开发人员可以方便地将这些对象组合到更大的程序中而不用 考虑对象本身的实现细节。以下是一些组件常见其他定义:组件是一个独立的可传递的操作的集合;组件是软件开发中一 个可替换的软件单元,它封装了设计决策,并作为一个大单元的一部分和其它组件组合起 来;组件是由一些对象类组成的物理意义上的包;组件是具有特定功能,能够跨越进程的 边界实现网络、语 言、应用程序、开发工具和操作系统的“即插即用”的独立的对象;组件在通常意义上是指任何可被分离出来,具有标准化的和可重用性的公开接口的软件 ( 子 ) 系统。
特点真正的软件重用和高度的互操作性:组件是完成通用或特定功能的一些可互操作的和可重用的模块,应用开发者可以利用它们在不同应用领域的知识来自由组合生成合适的应用系统。
接口的可靠性:组件接口是不变的,一旦被发表,它们就不能被修改。也就是说,一旦组件使用者通过某接口获得某项服务,则总可从这个接口获得此项服务。因此,组件封装后,只能通过己定义的接口来提供合理的、一致的服务。这种接口定义的稳定性使客户应用开发者能构造出坚固的应用。
可扩充服务:每个组件都是自主的,有其独自的功能,只能通过接口与外界通信。通过消息传送互相提供服务,基本组件的互操作是交互服务的。当一个组件需要提供新的服务时,可通过增加新的接口来完成,不会影响原接口己存在的用户。用户也可重新选择新的接口来获得服务。
具有强有力的基础设施:为了使组件有机地胶合(glued)在一起,实现无缝连接,需要功能很强的基础设施。这些基础设施是获得重用性、可移植性和互操作性的有效工具。这样就可知道如何找到组件提供的服务,并能在应用程序编译时进行静态联编,用户必须在编译时就知道要访问的服务器接口,或在应用程序执行时进行动态联编。在动态机制中,客户可以不知道可用的服务器和接口信息,而是在运行时间内搜索可用服务器,找到服务器接口,构造请求并发送,最后收到应答。
具有构建和胶合组件的工具:在设计与其它应用软件的接口时,利用构建和胶合组件的工具,可以方便地增加和替换应用中的组件,充分发挥可重用的优势,实现客户应用程序的组装和升级1。
模块化程序设计一个程序或系统模块可定义为一个较大的程序的逻辑上自含的并可分离的部分。因此一个完整的程序可看作是模块的集合。一个结构适当的模块,接 受定义良好的处理动作,并产生定义良好的(就内容 与结构而论)输出。如该术语通常使用的情况一样, 一个结构适当的模块只有一个入口点,且只有一个出口点。如果它是一个例程,它总是只返到调用它的 语句之后的语句。
在许多语言中,一个子例程在功能上等效于一 个模块,虽然大多数语言容许违反上述的原则,例如 、容许多个入口与出口点。模块化程序设计的目的是把一个复杂的任务断开成几个较小与较简单的子任务,它至少方便了正确的程序的编写。由范围设计适当(典型地至多一页 或二页代码)的几个模块组成的一个程序,编写与检查起来比不是如此模块化的同一个程序要简单得 多。此外,一个程序或系统的各部分之间的相互作用就可严格限制在各模块之间,它大大简化了对于一 个程序是如何工作的理解。在由几个程序员小组开发大的软件系统中,如 果不同程序员编写的各部分要有效地且在合理的时后,由于所有使用了一段时间之后的程序与系统必须进行维护与修改,良好的模块化也有助于更快地和更准确地做这些杂务。好的程序设计以程序的功能的最通用的定义开 始,通过一系列逐渐详尽的说明进行。这种方法,称为自顶向下的设计,它是结构化程序设计的一个方 面,并被模块化程序设计所大大提高。
函数库是由一些预先编制好的常用程序组合而成的,这些程序包括: 计算初等函数的标准子程序; 数学上常用的计算方法,如解微分方程、偏微分方程、函数求解、数值积分、解代数方程组、求特征值等标准程序;例行程序和计算机系统常用的服务程序、通用程序,还可以根据用户的要求,增减程序库中的程序。对程序库中的程序要求规范化,计算方法好,运行程度快,精度高。规范化的内容主要有: 同一程序库里所有程序的格式是统一的; 对这些程序的调用方法是相同的; 每个程序所需参数的数目、顺序和类型都是严格规定好的。
一般不将程序库作为一个单独的程序来使用,而将库中所需的程序作为某程序中的一部分,例如在高级语言中都具有程序库,需要程序库中哪部分程序则调用哪部分。从而节省用户编制这部分程序的工作,提高了用户编程序的速度。