时间:2015-12-21 01:58:31 所属分类:计算机技术 浏览量:
摘要:包含在计算机模块内的信息对于无需这些信.g-的其他模块是不可存取的,即将不需要的信息都隐藏起来,只允许其他模块知道其本身所需的信息。这样可以使问题求解简单化,从而达到好理解、好实现、好验证、好重用的目标。它可以从整体上保证计算机软件的
摘要:包含在计算机模块内的信息对于无需这些信.g-的其他模块是不可存取的,即将不需要的信息都隐藏起来,只允许其他模块知道其本身所需的信息。这样可以使问题求解简单化,从而达到好理解、好实现、好验证、好重用的目标。它可以从整体上保证计算机软件的质量,降低计算机软件的开发和维护成本。
关键词:隐蔽原则;抽象原则;关系;对象;黑盒
有关计算机软件工程的隐蔽原则一般是这样描述的:包含在模块内的信息对于无需这些信息的其他模块是不可存取的,即将不需要的信息都隐藏起来,只允许其他模块知道其本身所需的信息。
如果说最简单的就是最好的,那么计算机信息隐蔽性最强的就是最简单的。从方法学的总结到推广,从软件设计到软件实现,从手工开发到工具辅助,信息隐蔽原则无时无处不发挥着极有效的指导作用。
l 计算机隐蔽原则与其他原则的统一
1.1 方法学都基于软件工程基本原则
基本原则是行为所依据的法则和规范。无论什么方法学从知识工程角度来说,都是运用软件工程方法学基本原则的规则、策略及工具的集合。其中抽象原则是最重要的,它给出软件工程问题求解全过程的最基本原则,其他原则是对抽象原则的补充。
指导如何抽象的基本原则大体上可以分为体系规范原则和模块规范原则两类。前者是规范整体解题思路及解得验证,包括形式化原则、分割原则、层次原则、概念完整性原则、完备性原则;后者则是与子问题有关的原则,包括隐蔽原则、局部化原则、逻辑独立性原则。面向对象的“关系”抽象较多受前者规范,“对象”抽象较多受后者规范。
1.2 基本原则间的相互关联
虽然可以做“体系规范”和“模块规范”的大体分类,但基本原则之间并不是无关的,而是整体与局部间的相互制约,形成一个统一体。
要求将信息最大限度地隐蔽在计算机模块内的隐蔽原则,使模块内部信息封装化、模块的外部形象黑盒化,与外部的关系最少,所以使满足体系抽象原则的抽象过程和验证工作简单化,同时也很容易满足模块规范的其他原则,如局部化原则和逻辑独立性原则。
例如将具有多重关联的多个数据库表的条件组合查询,
由一个驻在服务器端的存储过程来统一完成。客户端用户可以在同一个窗口上对数十项多层交叉的查询条件任意选择组合,将选定条件送给相应存储过程。从外部来看,存储过程的任务极为单纯,即根据指定条件找出所有符合条件的记录,将结果写到一个有共享结构的工作表中,然后把查询正常与否的消息通报给客户端的调用程序。该程序接到正常查询结束消息后,到指定暂时存放查询结果的工作表中,按一定格式取出结果并报告给用户。
我认为,这是一个全面符合软件工程基本原则的设计典范,而其关键技术是信息隐蔽设计。首先是遵循隐蔽原则将具有复杂关系结构的多个数据库表的操作和库表结构封装在一起,实现了完全的信息隐蔽。由于高度信息隐蔽的实现使这一组相关库表的所有多层交叉组合结构有可能在一个对象中完成,高度满足了局部化原则。由于它的功能单纯、明确,数据库表间接口通过对相应存储过程传递参数来完成,属于内聚性最强的功能内聚和耦合性最弱的数据耦合,因而具有很好的逻辑独立性。
不难想象,几十项查询条件的组合,查询结果显示方式达三四十种是很正常的。由于在局部化、功能独立化原则下应用对象只是抽象成一个超类窗口对象,在信息隐蔽设计支持下,这三四十种结果显示功能可以全部相互独立地挂在查询父窗口下,自然地满足了分割原则、层次原则、概念完整性原则等体系规范原则。
2 信息隐蔽性设计的目的和优越性
2.1 目的
探讨信息隐蔽性设计的目的是:分析将信息隐蔽起来有什么好处,以便使问题求解简单化。
2.1.1 好理解
一般的复杂问题有两个特征,一是解题要参照的接口太多、太复杂,二是解题的方法太复杂。那么要想使之简化,无非是从问题接口和问题解法上人手。将复杂的接口信息与复杂算法隐蔽起来,剩下的自然是简单的。换句话说就是实现对象的外部数据结构与算法的封装。
需要知道的东西越少越好理解。在软件工程中,理解是最繁重的工作之一。开发过程中从分析人员对用户需求的理解,到设计人员对需求规格的理解,直至编程人员对软件设计的理解,是一个理解传递的过程。每一级开发人员的目的都应是将经过自己加工后的、更简单的抽象结果更抽象、更好理解。因此好的设计人员就是经其加工后传给下级开发人员的设计最容易理解,即给出的问题定义越简单、接口越少越好。
2.1.2 好实现
有时好理解却不好实现,即实现算法复杂。但是,如果把复杂算法做成一个封装的模块对象,使实现者只需知道模块的作用和使用方法就可以得到所期待的输出结果,而无须知道模块内部的具体实现,因此实现的问题就可以得到简化。
2.1.3 好验证
复杂问题也不好验证。有些设计看起来好理解,也不难实现,但验证起来却很难。例如如果设计了相当多的功能热键用户接口。对于输入数据窗口和数据项较多的应用程序,测试起来十分困难。多个功能热键、多种激活方式、多个输入数据窗口和数据项之间前后控制跳转,这些都是黑盒测试的出发点,而每个控制节点都以2以上的指数方式递增着测试用例数目。即使一般复杂的应用,其测试用例也超过200类。
由于采用了这种多控制、多转移的复杂输入方式设计,算法复杂是不可避免的。简化的办法还是信息隐蔽性设计,将每个热键的多种激活方式触发的内部处理都写成公共对象且封装起来,供各应用程序继承调用。显然这种隐蔽技术直接简化了理解和实现。由于公共父类对象已经做过全面集中测试,下层程序继承后的有关测试绝大部分可以“免检”,所以间接简化了验证,达到“好验证”的目的。
2.1.4 好重用
好验证的设计方法是把算法复杂的对象泛化为超类对象,进行集中实现和集中测试,使多个下层子类共享父类的实现和测试,所以它也是一种重用方案。好重用往往是好理解、好实现、好验证的必然结果。不过它是从更高层次上审视信息隐蔽性的目的。
转载请注明来自:http://www.zazhifabiao.com/lunwen/gcjs/jsjjs/36882.html
上一篇:智能网业务的网间互通
下一篇:关于信息系统的软件项目管理