软件测试面向对象软件工程方法学实践[3]

发表于:2009-11-16来源:作者:点击数: 标签:软件测试面向对象实践软件工程
软件测试面向对象软件工程方法学实践[3] 软件测试工具 关键字:面向对象 分布对象 问题4 如何处理对象模型面向对象关系数据库模式的映射? 面向对象的数据库设计方法可以用于各种数据库,如层次型、 网络 型、关系型,当然也包括面向对象型。OOSE 中的数据库

软件测试面向对象软件工程方法学实践[3] 软件测试工具

关键字:面向对象 分布对象

  问题4 如何处理对象模型面向对象关系数据库模式的映射?

  面向对象的数据库设计方法可以用于各种数据库,如层次型、网络型、关系型,当然也包括面向对象型。OOSE 中的数据库设计无疑必须采用面向对象的数据库设计方法。

  数据库设计也称数据库模式,基本上由3个层次的模式构成:从特定DB应用角度来看待DB设计的外部模式;从组织或企业角度出发进行的DB设计即概念模式;处理对应特定 DBMS 特征与局限性的DB设计即内部模式。具体而言,内部模式是数据库的SQL定义,逻辑模式是表集合的逻辑定义,外部模式是从特定应用角度看的局部DB。外部模式与逻辑模式之间的接口是视图、存储过程或其他驻在服务器端的DB处理程序。

  如果在抽象出的对象模型中,各个应用分别是一个或多个超类对象的子对象,那么,选择适当细分层次的对象模型将其映射到概念模型,是数据库库表对象设计的关键。外部模式与概念模式之间的接口越少、越简单越好,这样的程序设计简单,数据库和程序都易于维护。也就是说,局部化是个重要的设计原则。

  OOP多是数据库的后端处理,是基于既存数据库的。因此无论是否进行过问题世界的对象建模,以及是否将对象模型合理地映射到数据库逻辑模式 (面向对象数据库设计),OOP 都可以工作。

  问题5 编程时是否先调查有无可重用 (继承) 对象,是否参与下层对象对上层对象、超类对象的反馈?

  埋头于自己分担的程序对结构化方法或许是必须的,但在面向对象方法中担任程序设计的开发人员,应该先去调查对象数据辞典中有无其他开发人员已经完成、自己稍加特化就可重用的对象。从总体上说,对象的共享、重用应该由上层设计人员统一管理,以便保证对象风格的一致性,避免冲突。但是,对象的独立性、封装性和多态性都很便于重用,这是结构化系统所不能比拟的,而重用是软件开发方法学的最重要思想之一。上层设计人员往往不可能面面俱到,懂得软件设计理论的开发人员,即使只开发下层程序也应采用最省力、最有效率的编程方法,即大量使用重用对象。

  在继承超类对象和重用他人对象时,若发现有设计不合理的地方,应该及时反映给对象开发的承担者。

  对上层设计人员来说,一方面应该鼓励程序实现人员重用既存对象,另一方面应通过开发人员共享对象数据辞典,使个别的对象重用能够立即反映到整体对象模型中,以保证设计变更时的一致性。

  二、面向对象方法与结构化方法比较

  分析是问题抽象 (做什么),设计是问题求解 (怎么做),实现是问题的解 (结果)。任何方法学对客观世界的抽象和求解过程都是如此。在问题抽象阶段,结构化方法面向过程,按照数据变换的过程寻找问题的结点,对问题进行分解。因此,与面向对象方法强调的对象模型不同,描述数据变换的功能模型是结构化方法的重点。如果问题世界的功能比数据更复杂或者更重要,那么结构化方法仍然应是首选的方法学。如果数据结构复杂且变换并不多,那么如以过程主导分析和设计,一旦有系统变更就会给下游开发带来极大混乱。

  由于对过程的理解不同,面向过程的功能细分所分割出的功能模块有时会因人而异。而面向对象的对象细分,从同一问题领域的对象出发,不同人得出相同结论的比率较高。

  在设计上,结构化方法学产生自顶向下、结构清晰的系统结构。每个模块有可能保持较强的独立性,但它往往与数据库结构相独立,功能模块与数据库逻辑模式间没有映射关系,程序与数据结构很难封装在一起。如果数据结构复杂,模块独立性很难保证。面向对象方法抽象的系统结构往往并不比结构化方法产生的系统结构简单,但它能映射到数据库结构中,很容易实现程序与数据结构的封装。

  在软件工程基本原则中有一条“形式化原则”,即对问题世界的抽象结论应该以形式化语言 (图形语言、伪码语言等) 表述出来。结构化方法可以用数据流图、系统结构图、数据辞典、状态转移图、实体关系图来进行系统逻辑模型的描述;而面向对象方法可以使用对象模型图、数据辞典、动态模型图、功能模型图。其中对象模型图近似系统结构图与实体关系图的结合,动态模型图类似状态迁移图,功能模型图类似数据流图。

 

原文转自:http://www.ltesting.net