基于特定领域国土GIS应用框架

设计及应用         

 

 

何仕国

2012年8月16日

 

摘要:

本文首先讲述了什么是框架和特定领域框架,以及与国土GIS 这个特定领域行业相结合,而进行的特定领域应用框架的设计及其相关的实践应用实例。刻画了该领域软件系统的公共属性、公共的商业规则、公共的设计决策。在设计这个领域新的软件系统的时候,可以基于应用框架包含的重要信息,设计该软件系统特殊的属性,然后有效的把两者集成为一个完整的应用系统。通过这种软件开发方式,可以大大加快软件开发的速度。

关键字:特定领域,国土,应用框架,重用,组件,GIS, DSSA

一、什么是框架?

框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象组件及组件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。

可以说,一个框架是一个可复用的设计组件,它规定了应用的体系结构,阐明了整个设计、协作组件之间的依赖关系、责任分配和控制流程,表现为一组抽象类及其实例之间协作的方法,它为组件复用提供了上下文(Context)关系。因此组件库的大规模重用也需要框架。

二、什么是特定领域框架?

简单地说:特定领域框架,(Domain SpecificSoftware Architecture,DSSA)就是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构,对DSSA研究的角度、关心的问题不同导致了对DSSA的不同定义。

Hayes Roth对DSSA的定义如下:“DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造庆用系统限定了标准的组合结构的软件构件的集合。”

Tracz的定义为:“DSSA就是一个特定的问题领域中支持续一组应用的领域模型、参考需求、参考体系结构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成。”

通过DSSA的定义和描述的分析,可知DSSA的必备特征如下:

1一个严格定义的问题域和问题解域。

2具有普遍性。使其可以用于领域中某个特定应用的开发。

3对整个领域的构件组织模型的恰当抽象。

4 具备该领域固定的、典型的在开发过程中可重用元素。

垂直域DSSA:定义了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件体系结构。

水平域DSSA:定义了在多个系统和多个系统族中功能区域的共有部分。在子系统级上涵盖多个系统族的特定部分功能。

本文问题边界和问题域范围设定为:

操作系统方面:支持Window系列;

数据库方面:用关系型数据库Oracle,SQLServer和空间数据库ArcGIS的sde,gdb,mdb;

GIS平台方面:ArcGIS Engine和Runtime;

国土应用方面:主要包括主流的业务办公:建库,成果管理,日常办公,决策支持等相关GIS应用。

三、国土GIS领域框架分析

主要目标是获得国土GIS应用领域模型。领域模型描述领域中系统之间的共同的需求。即领域模型所描述的需求为领域需求。在这个阶段中首先要进行一些准备性的活动,包括定义领域的边界。从而明确分析的对象;识别信息源,整个领域工程过程中信息的来源,可能的信息源包括现在系统、技术文献、问题域和系统开发的专家、用户调查和市场分析、领域演化的历史记录等,在此基础上就可以分析领域中系统的需求,确定哪些需求是领域中的系统广泛共享的,从而建立领域模型。当领域中存在大量系统时,需要选择它们的一个子集作为样本系统。对样本系统需求的考察将显示领域需求的一个变化范围。一些需求对所有被考察的系统是共同的,一些需求是单个系统所独有的。很多需求位于这两个极端之间,即被部分系统共享。

具体分析过程如下:

收集了国土行业标准和业务模型:如土地利用现状调查,土地利用规划,土地综合整治,

国土办公管理业务模型,分析了上一轮已有软件的详细情况,结果用户调查和市场分析

在新一轮的特别是二次调查后出现的原有系统需要升级,和新的国土需求的产生:如数据集中管理的数据中心,业务系统不能独立的运行,需要综合集成管理各业务系统的独立性和联系性,提升其国土行业的进一步信息化和办公高效性。就国土GIS应用方面,对图形数据集中管理,各系统编辑,各系统的统计分析,各系统报表,和各系统的决策支持。即有相似性,又有其局部的不同性。

四、国土GIS领域框架设计

描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。建立了领域模型之后,就可派生出满足这些被建模的领域需求的应用框架,由于领域模型中的领域需求具有一定的变化性,应用框架相应地具有变化性,它可以通过表示多选一的,可选的解决方案等来做到这一点变化性。由模型和应用框架来组织,因此在这个阶段通过获得特定领域应用框架国,也就同时形成了重用基础设施规约。

国土GIS领域参考框架模型图如下:

各种建库,成果管理,日常办公,决策支持等的GIS应用系统

LIB插件库组件            面积量算通用组件

DSFW特定领域应用框架

CFW公共基础领域通用组件

.Net基础公用组件          GIS.ArcGIS基础公用组件

业务数据库(oracle,sqlserver)  空间数据库(sde,gdb,mdb)

Window操作系统+Net框架

(国土GIS领域应用框架模型)

五、国土GIS领域框架实现

主要目标是依据国土GIS领域模型和DSSA开发和组织可重用信息。这些可重用信息可能是从现有系统中提取得到,也可能需要通过新的开发得到。它们依据领域模型和DSSA进行组织,也就是领域模型和DSSA定义了这些可重用信息的重用时机,从而支持了系统化的软件重用。可看作重用基础设施的实现阶段。

值得注意的是,以上过程是一个反复的,逐渐求精的过程。在实施领域工程的每个阶段中都可能返回到以前的步骤,对以前的步骤得到的结果进行修改和完善,再回到不前步骤,在新的基础上进行本阶段的活动。

特定领域应用框架的三层次系统模型如下:

à参考结构

à参考需求

(领域开发环境)à构架        à(领域特定的应用开发环境) à(应用执行环境)

à领域模型                       实例化的框架(体系结构)

à开发工具

领域构架师                     应用工程师                 操作员

其具体实现如下:

.Net基础公用组件:包括数据持久化服务等的公用组件

//关系型数据库

Net.DBPool         支持Oracle,SQLServer,MDB数据库的连接访问

Net.DBPool.MySQL  支持MySQL数据库的连接访问

Net.DBPool.SQLite   支持SQLite数据库的连接访问

No SQL数据库

Net.MongoDB       支持非关系数据库MongoDB的连接访问

Net.Log             本地日志公用组件

Net.Projection        国土投影坐标公用组件

Net.Security(Net.SecurityBase)  安全公用组件

Net.Utility           常用工具公用组件

WinFormsUI         窗体风格公用组件

GIS.ArcGIS基础公用组件:包括ArcGIS Engine的二次封装和对国土特定领域的公用GIS业务模型的封装基础公用组件。

CFW公共基础领域通用组件:包括.Net Window风格插件框架公用组件,GIS数据转换公用组件,用户角色权限管理公用组件,数据库标准管理公用组件,数据库日志管理公用组件,适应性评价公用组件等与国土特定领域公用的业务的抽象和封装组件

DSFW特定领域应用框架:包括应用框架插件配置管理,插件接口管理,插件加载管理,插件运行管理,国土GIS图形编辑公用组件,国土GIS数据分析公用组件,国土GIS图形打印公用组件等等, 和应用框架与插件交互机制规约。

LIB插件库组件包括国土特定领域公用插件库

面积量算通用组件包括国土特定领域面积量算公用组件库

六、国土GIS领域框架应用

在此国土GIS领域框架的基础上再派生出

各种建库,

成果管理,

日常办公,

决策支持等的GIS应用系统,

如下所示应用框架的实例:

四川省土地利用总体规划管理系统:菜单工具栏插件管理和全局应用框架与插件交互机制部分:

四川土地利用总体规划数据库建设辅助系统的菜单插件管理和全局应用框架与插件交互机制部分:

四川省耕地与基本农田保护“一张图”核心数据库管理系统的菜单工具栏插件管理和全局应用框架与插件交互机制部分:

Window经典界面MapCatalog系统的菜单工具栏插件管理和全局应用框架与插件交互机制

Window经典界面Map3D三维系统的菜单工具栏插件管理和全局应用框架与插件交互机制

纯.Net Window界面风格的应用服务配置管理系统的菜单工具栏插件管理和全局应用框架与插件交互机制

总述:基于特定领域的国土GIS应用框架的设计实现了一个国土GIS相对通用应用框架,其应用框架以后还可扩展派生出C/S风格工作流流程自定义管理系统等。其国土特定领域公用组件还需在实践中完善,在应用中发展。DSSA的建立过程是并发的、递归的和反复进行的即螺旋过程模型。该过程的目的是将用户的需要映射为基于实现限制集合的软件需求,这些需求定义了DSSA应用框架,当国土领域的需求发生变化了,其相应的DSSA的应用框架也会随之而发生相应的变化,如近几年的数据中心,电子政务集成综合管理平台等的平级应用系统互联,上下级应用系统互联的需求,还需要以后对国土DSSA特定领域应用框架重构升级完善。

 

基于特定领域国土GIS应用框架设计及应用的更多相关文章

  1. 阶段4-独挡一面\项目-基于视频压缩的实时监控系统\Sprint1-基于Epoll架构的采集端程序框架设计\第2课-基于Epoll的采集端程序框架设计

    回顾之前的整个程序架构 把epoll机制应用到这个架构上去 下面主要去分析我们的系统中有没有需要等待的事件,先看看采集子系统 在采集子系统当中,摄像头有数据,摄像头采集到图像数据可以作为一个等待事件. ...

  2. Aforge.net 一个专门为开发者和研究者基于C#框架设计

    时间过得真快啊,转眼今年就要过去了,大半年都没有写博客了,要说时间嘛,花在泡妹子和搞英语去了,哈哈...前几天老大问我 怎么这么长时间都没写博客了,好吧,继续坚持,继续分享我的心得体会. 这个系列我们 ...

  3. AForge.NET是一个专门为开发者和研究者基于C#框架设计的视频录像

    AForge.NET是一个专门为开发者和研究者基于C#框架设计的,他包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,模糊系统,机器人控制等领域.这个框架由一系列的类库组成.主要包括有 ...

  4. 基于Extjs的web表单设计器 第六节——界面框架设计

    基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extj ...

  5. 基于cocos2d-x的游戏框架设计——李成

    视频:http://v.youku.com/v_show/id_XMzc5ODUyMTI4.html?f=17330006 网易科技讯 3月31日,第四届CocoaChina开发者大会暨Cocos2d ...

  6. 【Qt编程】基于Qt的词典开发系列<一>--词典框架设计及成品展示

    去年暑假的时候,作为学习Qt的实战,我写了一个名为<我爱查词典>的词典软件.后来由于导师项目及上课等原因,时间不足,所以该软件的部分功能欠缺,性能有待改善.这学期重新拿出来看时,又有很多东 ...

  7. 基于Spring-Cloud的微服务框架设计

    基于Spring-Cloud的微服务框架设计 先进行大的整体的框架整理,然后在针对每一项进行具体的详细介绍

  8. 基于python的接口测试框架设计(三)接口测试的框架

    基于python的接口测试框架设计(三)接口测试的框架 其实我这里用到的是unittest单元测试框架,,这个框架好就好在比较清楚,,setup terdown都可以处理一些初始化及完成后的工作 主要 ...

  9. 基于python的接口测试框架设计(二)配置一些参数及文件

    基于python的接口测试框架设计(二)配置一些参数及文件 我这里需要基于我的项目配置的主要是登陆参数.以及baseURL ,把这些放在单独的文件里  毕竟导入的时候方便了一些 首先是url 图略 建 ...

随机推荐

  1. mysql 时间字段的函数 timestamp

    Mysql 里格式 时间字段的函数 DATE_FORMAT unix_timestamp - 墨墨修行的日志 - 网易博客http://jjuanxi.blog.163.com/blog/static ...

  2. aspx、ashx以及cs的关系,viewState

    aspx和ashx关系:aspx就是一种特殊的ashx,aspx对应的类是page,它是实现了IHttpHandler接口,所以说aspx是高级的HttpHandler.aspx中帮我们封装了很多操作 ...

  3. 百度预测 及 maven pom搜索地址

    http://trends.baidu.com/ http://mvnrepository.com/artifact/net.sourceforge.htmlcleaner/htmlcleaner/2 ...

  4. HTML5 知识点

    HTML5 知识点   (1)语义化标记       <header>,<footer>,<nav>,<article>,<section> ...

  5. 编写优质嵌入式C程序

    前言:这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序.感觉是有一定的参考价值,所以拿出来分享,抛砖引玉. 转载请注明出处:http://bl ...

  6. Github上更新自己Fork的代码

    一.前提本文的前提是你已经在github上fork了别人的分支,并且弄好了跟github的ssh连接.相关配置详情参考:https://help.github.com二.详细操作 检出自己在githu ...

  7. Android 使用LinearLayout.getChildAt(i)获取一个线性布局的view,并实现content中实现方法

    1.定义接口content的方法,如ok,cancle; 2.在View的处理类myview中实现content的方法. 3.通过contently.getChildAt(i)的方法获得View v; ...

  8. 使用@ResponseBody 出现错误Could not find acceptable representation

    org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representatio ...

  9. BZOJ_3196_二逼平衡树_(树套树,线段树+Treap)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3196 可以处理区间问题的平衡树. 3196: Tyvj 1730 二逼平衡树 Time Lim ...

  10. 【转】你应该知道的十个VirtualBox技巧与高级特性

    原文网址:http://www.searchvirtual.com.cn/showcontent_76463.htm VirtualBox集成的许多功能你可能从来没有使用过,即使你经常用它来运行虚拟机 ...