一个系统模型设计

做这个模型设计,是受最近读的《人月神话》和《领域驱动设计》一书的影响。希望能够通过这项工作,明确系统对现实的抽象,降低项目的复杂度。到目前为止来看,项目现有功能都可以用这模型来描述。作为一个系统设计,它应该算及格了。

这是一个金融投资类的项目。用户操作流程类似于在excel中制作财务报表:打开历史数据;确定运算公式;手工输入或根据公式计算新的数据。

 操作模型

操作模型共包括四种。基本概念模型、展示模型、计算模型、更新模型。

其中基本概念模型是客户端/服务端数据交互的模型,同时也是客户端其它三种模型的基础;其它三种模型都是以基本概念模型为基础,在不同维度上进行封装、展示、操作而得到的。

 基本概念模型

基本概念模型中包含元数据和行数据列表两项数据。

元数据包括公司类型、股票代码等数据,是基本概念模型用于标识其数据和结构所需的说明数据。

行数据列表是一个行模型的列表。行模型中包含了一个报表数据项在系统中进行标识、展示、修改、运算等操作时所需要使用的基础数据,如数据单元、预测方法、预测取值等。 基本概念模型

 展示模型

展示模型是用户界面展示、操作基本概念模型的接口。其基本结构与基本概念模型一致;但是其数据和操作范围受到限制。

数据方面,可以通过展示模型读、写基本概念模型的文本。读取时,会根据展示方式返回不同文本,例如按金额展示、按百分比展示等等;写入时,只能修改其数值。

操作方面,可以响应页面的修改预测数据、修改预测取值、修改预测方法三种操作,并将用户操作传递给计算模型。

展示模型

计算模型

计算模型是报表数据计算数值、文本的模型。通过该模型,可以读取基本概念模型中的文本,读取、写入其数值和公式,最终借助公式计算服务计算出所需数值。

计算模型

更新模型

更新模型又叫传播模型。这个模型会根据报表字段间的勾稽关系,将各字段用树形结构关联起来,以表示、操作其勾稽和更新关系的模型。

更新模型用于响应某一个报表字段的更新,根据该字段与其它字段的勾稽关系,更新与之关联的字段。当一个字段的值发生变化时,这个模型会将这个变化传播给所有与这个字段有关的字段上——这就是“传播模型”名字的由来。

更新模型