本部分内容关注于数据仓库开发方法学。这个开发方法学可以指导我们建立数据仓库中的整合区。

建立数据仓库的方法学叫螺旋式开发方法学(spiral development approach, or circular development approach)。

为了能理解螺旋式开发方法学,有必要先理解一下开发方法学的来由。

在所有的开发方法学产生之前,开发出于馄饨状态。后来,ED Yourdo, Tom DeMarco等人定义了一套系统开发方法学,通常称之为“结构化开发过程”。结构化开发过程的出现带领大家走出了馄饨。

结构化开发过程中第一个重要的部分是功能分解图。功能分解图用来表示一个大的功能是如何被分解成小的功能的。

结构化开发过程中第二个重要的部分是数据流向图。数据流向图定义了系统中数据从哪里来,到哪里去。

结构化开发过程中第三个重要的部分是CRUD矩阵。CRUD矩阵的CRUD分别是Create, Read, Update, Delete的首字母缩写。矩阵的行是处理过程,矩阵的列是数据,矩阵的单元格内标识为CRUD或其中的一部分,用来表示某个数据在某个处理过程中的处理方式。

过程建模是结构化开发过程的另一个产物,它包括功能分解图、数据流向图和CRUD矩阵等内容,也称为结构化分析与设计。

描述过程建模的不同部分及其关联关系,出现了系统开发生命周期(SDLCSystem Development Lift Cycle)。SDLC的开发过程包括需求、分析、设计、编码、测试、实施六部分,它的开发过程是顺序的,即前一个活动完成后,后一个活动开始。SDLC有时也称为瀑布式开发(water fall development)。

SDLC开发过程中需求收集是在开发过程之外的,也就是说在系统分析前,需求必须已经收集完全。

SDLC开发方法需要在进行分析之前收集到所有的需求,这种要求对开发操作型系统来说是正常的。在操作型系统中,人们做相同的工作已经好多年了,工作内容是重复的,完全有可能在分析前将需求收集完全。

但是对于DSS用户来说,针对分析部分的需求通常是不固定的。在系统分析设计之前是不可能将所有的需求都收集全的。

为什么DSS分析人员不知道自己的需求呢?因为DSS分析人员以一种探索的模式来工作。他们通常工作于这样一种模式,“给我现在我想要的,然后我再告诉你我真正想要的”。DSS分析人员会说,“只有我看到了都有什么东西,我才能告诉你我真正想要的是什么”。

DSS分析人员通常分为四类,分别是农场主(Farmer)、探索者(Explorer)、挖掘者(Miner)和旅游者(Tourist)。

正是由于这种需求的不确定,SDLC的开发方法不能适用于DSS分析人员。SDLC需要在开发前知道所有的需求,但是DSS分析人员只有在一部分开发工作完成之后才能知道自己的需求是什么。

为了能解决SDLC不适合DSS分析人员的问题,需要一个不同的开发方法,这个新的开发方法就是“螺旋式开发方法”。

螺旋式开发方法的每一次循环叫做循环过程或者迭代过程。

螺旋式开发方法在很多方面与SDLC很像,但是它和SDLC有一个最大的区别,就是螺旋式开发方法在开始时只需要一部分需求。在开发开始时,螺旋式开发方法不去试图收集所有的需求,它只收集一部分需求,然后针对这一部分需求进行开发。这样,开发可以很快完成,结果很快就可以出来。接着,螺旋式开发方法会收集另一部分需求,再对这部分需求进行开发。一次开发过程就是一次迭代过程。

所以螺旋式开发方法可以很快的开发完一部分需求。

从另一个角度看螺旋式开发方法。DSS的需求很多,有些是知道的,有些是不知道的。第一次迭代可以开发一部分结果出来。第二此迭代可以开发出另一部分结果。这样,随着迭代次数的增多,能得到的结果会越来越多。随着迭代的逐步进行,DSS的需求可以逐步完全,开发的结果也逐步完全。

这种螺旋式开发的一个特点是可以一次完成一次的需求,另一个特点的开发速度快。其中每一次迭代的过程和SDLC很像,开发的过程基本相同。

螺旋式开发方法学的开发步骤如下:

-需求收集

-分析

-设计

-编码

-测试

-整合

这里有一个问题,就是螺旋式开发方法使用迭代的方法,如何保证每次迭代的内容能够紧密的整合在一起?毕竟每次迭代的过程可能是不同的人执行的,也可能是在不同的时间执行的。

这种不同的迭代过程最终能紧密的整合在一起,是因为他们采用的是同一个数据模型。

也就是说,在螺旋式开发方法进行第一次迭代之前,企业数据模型应该先建立好。每次迭代开发的是企业数据模型中的不同部分。也正因为企业数据模型是先建立好的,所以所有迭代后的结果可以紧密的结合在一起。

转自Jerome's BI BLOG。