【水资源配置模型】
详细设计说明书
文件状态:
[√] 草稿
[ ] 正式发布
[ ] 正在修改 |
文件标识: |
DWR-WRALM-DS-DTDS |
当前版本: |
0.922 |
作者: |
郑力 |
完成日期: |
|
版 本 历 史
版本/状态 |
作者 |
参与者 |
起止日期 |
备注 |
0.922 草稿 |
郑力 |
|
2004-9-22 |
|
|
|
|
|
|
|
|
|
|
|
1 文档介绍
1.1 文档目的
通过该文档,能够清晰描述出该项目范围,系统任务,内部模块之间的约束关系等.
1.2 读者对象
水资源专家、项目主管、开发人员、测试人员以及维护人员等。
1.3 参考文档
[1] <<水资源配置总体内容.doc>>,2004年9月22日.
1.4 术语与缩写解释
缩写、术语 |
解 释 |
DWR |
水资源所 |
WRALM |
水资源配置模型 |
DN |
设计 design |
DTDS |
详细设计 detail design |
流域 |
|
规划水平年 |
|
净定额 |
|
综合分析法 |
|
水利用系数预测 |
|
趋势法 |
|
机理预测方法 |
|
人均用水量预测法 |
|
弹性系数法 |
|
宏观经济需水预测模型 |
|
定额法 |
|
最小生态需水量 |
|
用水水平 |
|
用水效率 |
|
存量节水 |
|
增量节水 |
|
毛节水量 |
|
净节水量 |
|
存量节水量 |
|
外挂模块 |
|
水功能区 |
|
纳污能力 |
|
控制性断面的流量(水量) |
|
水质目标 |
|
分质供水 |
|
工程供水能力 |
|
在建工程 |
|
规划工程 |
|
指标集 |
|
供水参数指标 |
|
天然水循环机制 |
|
人工侧支循环 |
|
水利工程 |
|
水平衡分析 |
|
水源利用效率 |
|
利用消耗率 |
|
水平衡 |
|
总来水量 |
|
蒸腾蒸发量 |
|
排水量 |
|
实际耗水总量 |
|
耗水量 |
|
排水量 |
|
方案评价指标 |
|
评价准则 |
|
权重 |
|
2 体系结构设计
本系统采用传统的MVC模式设计.即模型,视图,控制架构模式.其图例如下:
在交互式系统特性要求之下,具体架构愿景演化如下:
2.1 体系总体结构设计
2.1.1 体系总体设计结构图
本系统框架如上图所示,具体如下简述:
Security:主要实现必要的数据加密部分,如数据库驱动连接部分.用户有效认证等情况.
DBComponent:主要处理与数据库交互的数据库对象.如表对象中的数据更新.删除等情况.
Util:主要提供系统平台工具.如限制字符内容,字符长度,提供对特殊文件的阅读等.
Component:提供本系统组件服务,如表格,停靠等.
ComComponent:提供地图服务,包括对地图的渲染和操作等.
ModelCore:模型核心库,提供了模型算法.
Data service:提供数据服务,如数据存储等.
Web service:待实现的无线网络服务等
Soap:待实现的网络传输通道.
SystemFramework:系统运行平台.
Client:用户交互服务等.
2.2 纵向结构设计
在本软件系统中,分层的目的是在于将进行有效组织.在.Net体系下常见3层体系结构:表示层,业务层和数据访问层.同时,表示层同时允许跨层访问数据访问层.
2.2.1 纵向结构图
2.2.2 结构图说明
本系统划分为4个层:表示层,业务层,集成层和资源层.
表示层提供可视化界面让用户进行交互操作,业务层中包括了模型算法以及业务逻
辑,集成层提供了模型实体,工具等,资源层提供了支撑本软件系统的底层结构,从而实现
本软件系统功能.
2.2.3 表示层说明
在表示层,向用户提供了使用业务层的模型功能,并包括部分数据维护功能.
其表达方式如下:
2.2.4 业务层说明
本软件系统全部包括8个模型,即是本软件系统的核心,组成了模型库,同时能够相互独立
运行.
在8个模型中,每个模型又包含若干算法.模型之间有必要的依赖关系.其具体概貌如下:
2.2.5 集成层说明
资源层的上一层是集成层。集成层主要完成两项工作,第一项是使用资源层的平台服务,完成本软件系统的事务管理。第二项是对上一层的对象提供持久性机制。可以说,这是一组起到过渡作用的对象。它实际上使用的是资源层的数据库功能,并为上一层的对象提供服务。这样,上一层的业务对象就不需要直接同数据库打交道。
2.2.5.1.1 工具库组件说明
该工具库中提供了本软件系统错误异常统一处理机制,提供了本软件系统所需的可视窗
体的基本风格,提供了对文件读取及格式化方式,提供了对XML文件的读写等功能.包括对Win32的操作部分.
2.2.5.1.2 地图组件说明
该非托管(代码)提供了对地图操作的全部功能:装载地图,渲染地图,专题图制作,放大,缩
小,移动,导航,地图控制,图例等.
2.2.5.1.3 系统安全说明
本软件系统对重要的敏感数据进行了必要加密,即使系统崩溃或数据资料被窃取,也无法
轻易获得资料的真实性,最大限度的保障了本软件系统的安全.
同时,本软件系统对用户进行了必要的有效的使用约束.也就是说加入了权限和组的概念,使软件功能能够在安全正确的用户手中发挥巨大作用.
2.2.5.1.4 数据库组件说明
数据仓库,分布式数据库是本软件系统对数据采集和收集以及有效管理的重要特色.也是
专业领域的主要需求.
提供必要的数据库有效连接.能够完成数据采集和收集以及有效管理的必要功能.推和拉都是面向模型数据库的重要特点.
2.2.5.1.5 系统扩展组件说明
选择提供图标的显示样式,提供界面菜单和工具栏样式,提供数据采集功能以及其它扩展
功能.
2.2.6 资源层说明
在资源层, 我们有三种资源:数据库、平台服务、UI。数据库是本软件系统的集成基础,其使用了数据仓库,分布式数据库等新特点.而这里的平台服务指的是业务实体间事务处理,需要处理跨模块的模型库. UI是指本软件系统所依托的.Net的界面.
2.2.6.1.1 UI资源
包括本软件系统图标标志,所使用的按钮图标,菜单项图标,工具按钮图标,异常错误异常资源文件,以及所会用到的其它多媒体文件等.
2.2.6.1.2 平台服务
系统可能引入的邮件服务.
处理业务实体(模型)之间的依赖关系,如果分布式数据库无法实现.则提供该平台服务.
2.2.6.1.3 数据库资源
本软件系统采用sqlserver 2000,并提供sp3.使用数据库产品提供的数据仓库及分布
式特点.
2.3 横向结构(子系统/模块)设计
2.3.1 横向结构图
[各个子系统/模块之间结构及关系]
2.3.2 结构图说明
[对子系统/模块图的说明,说明为什么要这样设计,及这样设计的好处]
2.3.3 算法接口IAlgorithmic
//设置算法参数,算法准备
bool SetParameters(object parameters);
//算法运行
bool Excute();
//获取算法运行结果
object GetResult();
//根据模型类型获取算法列表
object GetAlgorithmsList(Int32 modelType);
//根据模型编码获取算法列表
object GetAlgorithms(Int32 modelID);
2.3.4 模型接口IModelable
模型接口继承算法接口
//根据方案类型获取模型列表
object GetModelsList(Int32solutionType);
//根据模型编码获取模型列表
object GetModels(Int32solutionID);
//数据对象格式化,把源数据对象转换为目标数据对象
bool FormateDataObject(object source,object target);
2.3.5 方案接口ISolutionable
//根据方案类型获取方案列表,如果存在子方案,也显示之。
object GetSolutionsList(Int solutionType);
//创建新方案
bool CreateNewSolution();
//根据方案编码更新方案。注意相关子方案的更新。
bool UpdateSolution(int solutionID);
//根据方案编码删除方案。注意不允许删除相关子方案。
bool DeleteSolution(int solutionID);
//保存方案,注意保存相关子方案的相关性,保存模型中算法结果等。
bool SaveSolution();
2.3.6 DBAPI接口
2.3.6.1.1 连接接口IDBConnectionable
//数据连接字符
void SetConnString(String connstr);
System.Data.IDbConnection IDBConection{get;}
2.3.6.1.2 数据操IDBOperationalbe作接口
该接口集成连接接口IDBConnectionable.
//插入数据操作
bool InsertData(QingLiuDBObjectInsertsql);
//插入数据操作
object InsertData(QingLiuDBObjectInsertsql);
//更新数据操作
bool UpdateData(QingLiuDBObjectUpdatesql);
//删除数据操作
bool DeleteData(QingLiuDBObjectDeleteSql);
//查询数据操作
object SelecteObject(QingLiuDBObjectselecteSql);
//执行存储过程
object ExcuteProc(string procName,object parameter);
2.3.6.1.3 数据定义操作接口IDBDefinable
该接口集成连接接口IDBConnectionable.
//创建表
bool CreateTable(object sql);
//删除表
bool DeleteTable(object sql);
//创建存储过程
bool CreateProduce(object sql);
//删除存储过程
bool DeleteProduce(object sql);
//创建函数
bool CreateFunction(object sql);
//删除函数
bool DeleteFunction(object sql);
2.3.6.1.4 数据事务处理接口IDBTransactionable
该接口集成连接接口IDBConnectionable.
执行事务
bool ExcuteTransacte(object sql);
2.3.6.1.5 数据结构信息接口IDBInformationable
该接口集成连接接口IDBConnectionable.
//获取表模式
object GetTableSchema(String tableName)
//获取视图模式
object GetViewSchema(String viewName)
//获取表模式集
object GetTablesSchema();
2.3.7 系统安全接口ISafe
//根据角色名编码获取用户集
object GetUsers(int roleID);
//根据用户名编码称获取授权集合
object GetAudit(int userID);
//根据用户编码修改用户信息,比如密码等.
Bool ChangeUser(int userID);
//获取组集合
BaseCollection GetGroups();
//根据组名称编码获取角色集合
BaseCollection GetRoles(int groupID);
2.3.8 控制器接口IControllable
//根据角色编码返回可视化控件集
System.Windows.Forms.Control.ControlCollection GetControls(object roleID);
//布局控件。
bool LayOut();
3 .net(java)工程设计
说明,该工程在管理器该项目下的程序节中可以看到目前已建立的程序框架.
重要说明:
任何非集合类请从 QingLiuObject下继承.
写入数据库的对象请从QingLiuDBObject对象下继承.
任何集合类请从BaseCollection下继承.
4 界面的设计
[此部分可根据《产品规格说明书》的相关部分来进行界面的实现设计,主要对用于界面的关系、流程、所用到的控件、图标、图形等资源进行]
4.1 界面关系图和工作流程图
[关于绘制界面,可为系统建立所有的工程项目,及在.net中制作界面,并定义好各个组件、界面元素的名称等,这样可将工程直接给到程序员,进行下一步功能实现,但此处要求将其界面copy过来,以形成完整文档.另外一个原因是进行此类画图可能非常耗时耗力。]
4.2 主界面
[(1)绘制主界面的视图;
(2)说明主界面中所有对象的功能和操作方式]
4.3 各子界面
[(1)绘制子界面的视图;
(2)说明子界面中所有对象的功能和操作方式]
4.4 界面资源
4.4.1 图标
4.4.2 图形
4.4.3 界面表现组件
4.5 美学设计(美工进行指导)
5 模块设计
[模块设计是重中之重,直接关系到如何实现,此处作为重点进行描述.
此部分设计也应以实际.net工程项目的形式将各个模块设计好,给出每个类的名称、成员、各个含数等等,这样可以直接给到程序员进行实现。但此处要求的文档描述也同样要写清楚。]
5.1 模块命名规则
[模块设计人员确定本软件的模块命名规则(例如类、函数、变量等),确保模块设计文档的风格与代码的风格保持一致,此部分可参看相关命名规范文档。]
5.2 模块汇总
5.2.1 模块汇总表
[这里模块是指相对独立的软件设计单元,例如对象类、函数包等等]
子系统A |
模块名称 |
功能简述 |
|
|
|
|
… |
|
子系统B |
模块名称 |
功能简述 |
|
|
|
|
… |
|
5.2.2 模块关系图
[可用UML图及其它图描述其间的关系,并配以说明文字]
5.2.3 子系统A的模块设计
5.2.3.1.1 模块A-1
[如果认为此处以表格形式不太好写,可自行编排格式,但要至少包含表格中的各个项。]
|
|
|
说明对应工程文件中的哪些文件等 |
功能描述 |
|
接口与属性 |
提示:用专业的设计(开发)工具来设计本模块的接口与属性,说明函数功能、输入参数、输出参数、返回值等。此处粘贴即可。如UML图
|
数据结构
与算法 |
提示:不论是采用经典的还是专用的数据结构与算法,都应该作必要的描述。不仅用于指导程序的实现,还可以让人们清楚地了解该对象类是如何设计的。
|
|
|
5.2.3.1.2 模块A-n
|
|
|
说明对应工程文件中的哪些文件等 |
功能描述 |
|
接口与属性 |
提示:用专业的设计(开发)工具来设计本模块的接口与属性,说明函数功能、输入参数、输出参数、返回值等。此处粘贴即可。如UML图
|
数据结构
与算法 |
提示:不论是采用经典的还是专用的数据结构与算法,都应该作必要的描述。不仅用于指导程序的实现,还可以让人们清楚地了解该对象类是如何设计的。
|
|
|
6 数据库设计
[略去]
7 打包设计
[描述对于最终交付成果的安装程序要求,安装步骤、注册表、安装目录、程序组、快捷方式、其它相关要求]
8 其它设计
[描述本文档上述未包含的描述内容]
9 附属文件清单及文件
[列出与详细设计相关的所有文件的清单,包括数据库设计、界面设计、UML设计、.net或java工程文件等等所有文件清单,并整理到一个目录下,放入VSS相应目录下]
详细设计说明
一、 详细设计的目的与意义。
1、详细设计是针对需求,在代码实现之前的工作,它既是对代码实现工作的指导,又是对需求的进一步从软件角度的深化。
2、以前我们几乎没有设计,或者说有,也远远不够,这部分工作相当于建筑业的图纸设计。
3、搞好设计工作是研发工作重要的一环,在我们自己的研发过程中是必须的一环。
4、设计大部分靠的是经验,过去的项目经验,过去的积累对于设计工作的意义非常重大,注重日常项目经验的积累,是提高设计水平必经之路。
二、 针对我们自己的研发过程,设计都有哪些内容。
每个组织都有自己的设计要求,我们也不例外。设计主要有以下几个部分组成:
1、 体系设计
A、体系设计也可以叫做架构设计,软件越大,这部分重要性越明显。主要部分主要是各子系统如何组织以及如何协调工作。这种设计在目前的情况下(当然以后还要继续发展)以分层的体系是较为合适:
l 系统如何分层,分成三层(表现层、业务逻辑层、数据持久层)还是更多层。
l 各个层之间的如何通讯。
l 可借鉴的一些设计模式,如用得最多的MVC模式等。
B、子系统(或模块)设计,解决有系统要划分为哪些子系统,每个子系统又有哪些小功能模块,这些子系统(小模块)之间如何协作等。这部分可以认为是传统的设计。
C、横向(子系统)与纵向(分层)的关系。相当于软件的每个模块都处在哪个子系统,都在哪一层中。
2、 功能模块设计
对于每个子系统的所有功能模块,分重点、分缓急地设计其所包含的包、类、接口等等,以及其内部与外部的接合部分设计等等,应尽量细化,以方便实现。
3、 数据库及算法设计
此部分内容略。
4、 界面设计
对于c/s与b/s界面设计在实际操作过程中是不大相同的。b/s界面设计大部分归于美工效果,而c/s设计大部分在于设计及程序员。
界面设计要考虑主界面或首页面、子页面、弹出窗体、每个页面的每个元素的大小、位置、形状、美学设计等等。从操作角度来看应考虑如何操作最方便,从美学角度来看应考虑如何设计最美观,从业务角度来看应考虑业务具体要求。等等。
5、 打包设计
也是非常重要的部分,c/s可以打包,b/s也同样可以打包,.net程序可以打包,java程序同样也可以打包。程序安装实际是给用户的第一感觉,同时也是实施的重要步骤,打包的好坏直接关系到实施的难度、技术要求等等。
这部分主要有安装步骤、注册表、安装目录、程序组、快捷方式、其它相关要求等等。
三、 与其它过程的关系
1、设计的主要依据:
《产品规格说明书》、相关数据库等各个方面的设计文档、交流与沟通的结果。
2、作为代码实现的主要依据。
四、 设计人员与程序员的工作关系
1、设计人员负责解释设计思路、设计细节等,并指导程序员的代码实现,对于难度较大的代码部分应由设计人员编码实现。
2、测试并检验程序员实现是否符合设计,并提出修改意见等。
五、 详细设计的文档要求。
1、详细设计说明书
2、UML文档
3、所建立的项目(project )文档,并交给程序员进行实现。

|