3.4 数据仓库(Data warehouse)建模
数据仓库的作用在于从企业的应用系统中获取信息并转换到一个新的数据库,通过对新库中的历史信息和面向主题的信息进行分析,为决策提供支持。以本书的客户订单处理子系统为例,企业需要作出如下典型决策,如哪些产品最有利可图?哪些客户会为我们带来最大利益?哪些环节需要花费很高的费用?哪些市场活动运行得最好,为什么?我们有可能会失去哪些客户等等。图8是PowerDesigner建立的本书实例

相关的一个典型数据仓库,表示订单立方体(Cube)包含客户,产品,区域以及门店等维度(Dimension),在ORDER刻面(Fact)定义了不同的评价(measures)来进行订单分析。通过这样的数据仓库,用户可以查看某个区域的某个产品的订单情况,也可查看每天的订单变化趋势等等。
PowerDesigner不但是业界知名的数据库设计工具,也是数据仓库模型设计工具。支持多种数据仓库模型,包括星型模式(Star)和雪花模式(Snowflake)。这是同行业中最优秀、最灵活的开发工具,可用来设计一个关系的或OLAP(联机分析处理)的软件仓库。
PowerDesigner在数据仓库设计工具市场中占有最大份额。它能从已有的数据库进行反向工程,从运行系统中将现存的数据结构抽取出来形成数据模型,使设计变得简单。
3.5 面向对象模型(OOM)建模
除了数据库建模,采用标准建模语言UML,对企业应用系统从需求,分析与设计,实施等不同阶段的全面建模,也是目前的主流方式。PowerDesigner支持UML1.3的所有模型从PowerDesigner11.0开始就全面支持UML2.0。
在PowerDesigner中用户可以采用典型的面向对象分析方法,如用例驱动的软件分析与开发,即由需求模型出发,建立用例图,类图及其顺序图,进而组件与部件图。同时,PowerDesigner是一个集成环境,各个模型之间可以快捷的模型同步与管理。特别地,本书实例是数据驱动的企业应用,因此,OOM可以有PDM来自动生成(如图9)。

(特别需要指出,OOM和PDM地关系等价于模型级的O/R映射关系,可以很直接地支持现有比较流行地O/R 映射地框架,如Hibernate, JDO等,在1.8节中提到Hibernate代码生成的支持。)用户在此基础上,对OOM修改,进一步定义系统的动态行为特性,如通过顺序图,活动图等。图10是订单处理子系统中的典型顺序图。当然用户在进行OOM建模的过程中,会加深对应用系统的理解,通常会对先前的PDM甚至CDM进行优化,可以利用PowerDesigner的双向工程,在重新生成并合并已有模型。

3.6 信息流模型(ILM)建模
在企业应用的分析与开发整个过程中,会有大量的模型产生,这些模型之间都存在相应的关系。PowerDesigner创新地提出信息流模型(ILM),并通过非常直观的映射编辑器来表达模型之间的信息流动关系,大大方便了企业级建模的管理能力。图11是订单处理子系统的典型信息流模型以及信息流动关系的定义,这里表示的是PDM和OOM之间的一个信息映射关系。

3.7 程序生成的支持
在建模的基础上,PowerDesigner可以生成应用程序代码(如C#, Java等),当然也可以反向由应用程序更新相应的模型如类图(双向工程)。因此用户可以选择建模或代码优先的不同的软件开发过程。
特别地,PowerDesigner由于其内置的模型映射关系(包括O/R mapping即PDM和OOM之间的映射关系),可以很直接支持目前比较流行的ORM mapping框架,如Hibernate,JDO的支持。图12是典型的Hibernate的映射文件的代码预览。不仅如此,PowerDesigner提供了UI界面生成的支持,如现在比较流行的JSF(Java Server Faces)支持,真正实现了以数据为中心应用程序的完整的建模与开发环境。

3.8 团队开发的支持
企业级应用的开发通常都是有一个庞大的团队来完成,而且在整个软件开发过程中的不同阶段,会产生庞大的分析与设计模型,必须提供一个理想的团队开发解决方案,允许多个建模成员在一个相同的模型上同时工作,这个和传统的软件代码版本管理如CVS,ClearCase有相似之处,不同的是模型的管理粒度,如支持类图甚至类及其属性的版本管理等。PowerDesigner基于RDBMS提供了所有模型的统一共享环境,一套元数据库(metadata repository),成为企业知识库,

图13给出了一个典型实例,具体包括:
• 元模型管理—能在一个位置上存储、管理和版本化PowerDesigner模型,以及其他类型的文档,同时全面的权限管理模型,能控制用户对模型的访问和可视化。
• 跨模型的冲突分析—知识库能为跨企业的冲突分析提供和维护完整的存储和跨模型的依赖关系。
• 软件资产管理—查找和重用跨越所有模型和项目的对象。
• 安全—基于角色的安全机制,同时伴有记录日志的功能。