软件开发平台概要设计

软件开发平台

概要设计

目录

一、需求概述
  1.1问题概述
  1.2业务分析
  1.3其它需求

二、系统分析
  2.1运行支撑环境
  2.2开发支持

三、平台运行支撑部分
  3.1客户端
  3.2应用服务器

四、平台开发支持部分
  4.1业务组件管理 
  4.2界面组件管理 
  4.3界面产生器

五、系统应用
  5.1权限管理
  5.2通用数据集成工具
 

一、需求概述

1.1问题概述

技术能力一直是制约发展的瓶颈,软件开发是其中一个重要因素。通过新员工引进和平台开发,以及多年开发的经验积累,软件开发情况得到好转,但没有根本解决问题。主要体现在:

  • 软件开发效率不高,开发周期过长;
  • 软件质量不高,系统维护成本过大;

问题存在的原因,需求分析与软件设计是一方面;开发中复用率过低,重复工作过多是另一方面。

一个好的平台解决方案将有助于问题的解决,进一步提升开发效率。

1.2业务分析

根据开发过程,建立业务用例图如下:

根据开发过程可以绘制活动图如下:

1.3其它需求

公司开发下一步发展,是推进主要产品的"产品化",缩短项目开发和实施周期。

1.3.1系统模型支持

应用系统产品化的途径,是对系统进行分析,建立系统的业务模型。平台要支持系统建模,提供模型管理和运行支持

1.3.2多层支持

应用系统都是数据应用程序,数据是应用的核心。数据访问是应用系统不可缺少的部分,也是重复开发最多的部分。平台要实现多层架构,将数据访问分离出去,形成数据服务,使得对数据访问不需要编程就能直接从服务得到。

1.3.3可靠性要求

应用系统需要在用户处能够长期稳定运行,其可靠性需要得到保证。

1.3.4系统效率

应用系统用于用户日常工作,速度必须得到保证,不能太过迟缓,影响用户工作。

二、系统分析

通过对开发需求的分析,我们将开发对平台的需求,分成两个方面,一是将应用系统通用的部分,如数据访问、业务管理等部分抽出来,按照一定构架,建立起应用系统运行的完整支撑环境;二是对非通用部分,对其结果进行管理,强调程序的重用和可配置性,形成以组件为中心的开发管理和支持。

2.1运行支撑环境

运行支撑环境是将系统通用部分,以平台服务形式固化,提供应用系统运行的支撑。运行支撑环境分为前端的客户端和后端的应用服务器两部分。

运行支撑环境的用例图如下:

运行支撑环境的活动图如下:

 

2.2开发支持

现在软件开发使用都是第四代开发工具,功能十分完善。平台对开发的支持,是建立在开发成果的管理上,成果的粒度是组件,包括业务组件和界面组件。通过对开发成果的管理,提高了程序的复用性,并在开发工具上提供了应用系统组装工具。

系统开发的活动图如下:

三、平台运行支撑部分

运行支撑环境是将应用系统的通用部分、公用系统,以平台形式固化,作为应用系统运行的基础。

运行支撑环境的关键是架构,架构是基于多层结构的,分成数据访问层、业务层和界面层,支持界面、业务和数据的真正分离。

与三层对应,平台分为客户端、应用服务器(包括业务层与数据访问层)。

3.1客户端

应用系统是有多个窗体/页面组成,具体是哪些?这由用户权限所决定。每个窗体/页面都是由界面组件组成,这也是由窗体配置文件决定的。服务网关提供对应用服务器的服务。

下面是客户端的类图:

下面是客户端的顺序图:

 

 

3.1.1系统控制器

系统控制器是应用系统的容器,负责系统的装载。应用系统是动态的,是由用户权限决定的。系统控制器的主要功能是用户认证、系统初始化和界面调用等。

1、用户认证

用户认证也是一个界面应用,根据界面配置文件,初始化用户登陆界面,取得用户名和密码,通过服务网关向应用服务器发出认证请求,并得到返回的用户权限。

2、系统初始化

根据得到的系统文件,进行主界面的初始化,主要是菜单系统的生成等。

3、系统调用

以菜单系统为主,提供系统调用。对选择调用,提供界面名称,交窗体控制器处理。

3.1.2窗体(页面)控制器

窗体(页面)控制器是窗体的容器,负责控制窗体内的活动。窗体由组件组成,窗体(页面)控制器也可以看作特殊的窗体组件,负责其它组件的装载、相互之间关系管理、以及其它一些操作。窗体控制器的主要功能是窗体初始化和窗体操作管理等。

1、窗体初始化

根据控制器调用得到的窗体名称,找到相应的配置文件,按配置装载组件,并按照配置进行组件的初始化。

2、窗体操作管理

窗体控制采用MVC模式,Model-View-Controller (MVC)模式基于用户输入,将域的建模、显示和操作分为三个独立的类[Burbeck92]:

  • 模型。模型用于管理应用程序域的行为和数据,并响应为获取其状态信息(通常来自视图)而发出的请求,还会响应更改状态的指令(通常来自控制器)。
  • 视图。视图用于管理信息的显示。
  • 控制器。控制器用于解释用户的鼠标和键盘输入,以通知模型和/或视图进行相应的更改。

图1、描述了这三个对象之间的结构关系

视图和控制器都依赖于模型。但是,模型既不依赖于视图,也不依赖于控制器。这是分离的主要优点之一。这样的分离允许模型在独立于可视表示功能的情况下建立和测试。

在我们架构中,组件响应用户操作,并以事件的方式传递给窗体控制器。窗体控制器使用通用的命令解析器,起到控制器的作用。对事件如何处理,也由配置文件决定,它定义了组件间的操作关系,控制器根据配置所定义的当作,实现界面间的操作。

举例说明:

  • 当用户按下"查询"按钮,按钮(按钮集合)组件发出按钮事件,并告诉其名称"查询"。
  • 窗体控制器,根据"查询"事件名称,查找配置文件,得到其要做的工作。
    • 从查询条件输入组件,得到输入的查询条件(通过其属性);
    • 将业务名称(模型)与条件,通过服务网关传递到应用服务器,进行处理,并取得返回的结果;
    • 使用返回的结果更新数据集(视图);
    • 使用数据集(视图)更新结果显示组件(如网格)的显示(使用组件的方法)

3.1.3服务网关

服务网关负责与应用服务器的操作处理。服务网关的主要功能是建立连接,服务请求映射,传递应用服务请求等。

1、建立连接

根据系统配置文件建立与应用服务其的连接;

2、服务请求映射

应用服务器有自己的接口,客户端也可以定义自己的服务请求命令。服务网关负责客户请求命令到应用服务器接口的映射、转换。

这样的好处,更改应用服务器的接口,只要修改服务网关的映射程序,不会影响到原来的应用程序,将减少客户端与应用服务器的耦合度。

3、服务请求

通过远程调用,向应用服务器传递服务请求,并取得结果,发送给请求者。

3.2应用服务器

应用服务器是中间件的集合,它提供了应用系统运行环境,实现系统的多层架构。平台的应用服务器暂时只有两部分组成,一是公用的数据访问,二是业务层管理。

数据访问层使用数据持久化设计,支持对象到数据的持久化,以实现业务组件(对象)到数据的自动操作。

业务层管理有完整的业务组件管理架构,支持业务组件的自动调用。

下面是应用服务器的类图:

下面是顺序图:

 

3.2.1业务管理

运行的业务层管理,主要是动态的业务组件执行管理,是建立在业务组件库上(其管理见4.4.1)。业务管理的主要功能是,业务组件调用、执行等。

主要工作及流程如下:

  • 接收业务请求;
  • 在业务组件库中找到正确业务组件,加载;
  • 执行业务组件;
  • 将需要的数据操作传递到数据访问层,并得到返回结果;
  • 将执行结果返回给请求者。

3.2.2数据持久化

数据持久化将在ORM基础上构建。

对象关系映射(ORM)提供了概念性的、易于理解的模型化数据的方法。ORM方法论基于三个核心原则:

简单:以最基本的形式建模数据。

传达性:数据库结构被任何人都能理解的语言文档化。

精确性:基于数据模型创建正确标准化了的结构。

NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具。

NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去。

使用NHibernate,只要按照NHibernate的规范定义对象,NHibernate将自动完成对象到数据映射,从而完成所需要的数据操作。

NHibernate的功能:

  • 数据连接:NHibernate能连接大多数大型数据库系统,如ORALCE、SYABSE、DB2SQL SERVER等
  • 数据操作:能执行各种数据操作;
  • 对象到SQL语句:根据对象自动产生SQL语句;

NHibernate的工作流程是:

  • 应用系统使用(业务)对象操作,并传递对象到NHibernate;
  • NHibernate自动将对象操作翻译成SQL语句;
  • NHibernate在连接池中查找可用的数据连接,没有则连接到指定数据;
  • NHibernate在数据连接上执行SQL语句,并得到结果;将结果返回;

四、平台开发支持部分

应用系统除开基础的、通用的部分,还有许多与业务相关的千差万别的应用。虽然应用各有不同,其中也有许多相同的地方,如界面、界面元素或者业务模型。

软件开发要提高效率,就需要提高程序的复用率。提高程序复用率,关键在设计和程序框架,如实现界面与业务的分离,实现业务建模,实现业务的原子化。

另一方面,对已有程序如何有效再利用?也是提高程序复用率的途径。我们认为源程序级的复用,牵扯到太多因素,不是很有效;应该在开发成果的一定粒度上进行复用,我们将其定为组件。通过成熟组件的再利用,我们实现了软件的复用。

在平台的软件支持上,我们以组件的管理为基础,以系统的组装作为终极应用。

组件管理是将应用开发结果以组件形式进行管理,又分为业务组件管理和界面组件管理。

4.1业务组件管理

业务组件包含业务逻辑,如果是按照面向对象方法建立的,组件也可以看作业务模型。这样,组件管理也就成为业务模型的管理。

在平台中,业务组件(对象)可以以两种形式存在,一是实体型的业务组件,二是保存在描述文件中的。两者区别是,描述型是简单的业务对象,相当于只有属性的业务对象;而实体型可以通过方法实现复杂的业务逻辑。

业务组件管理主要功能是,简单业务组件生成,业务组件管理。

  • 简单业务对象生成,是编辑业务对象(属性),生成描述文件或对象源程序。当然源程序还要人工加入到应用系统工程中,并进行必要修改;
  • 系统所使用的业务组件可以看作一个库,业务组件管理,就是对业务组件库管理,包括增、删、改,以维护系统可使用的业务组件。

4.2界面组件管理

界面组件是构成界面的元素,好象砖块之于建筑物。在平台中,界面组件都以实体形式出现。界面与界面组件的关系,使用界面配置文件进行描述。

在平台中,界面组件组成界面组件库。界面组件管理就是对界面组件库的管理,包括增、删、改,以维护系统可使用的业务组件。

4.3界面产生器

组件得到有效管理,也有支撑运行的环境,但还不方便使用进行开发。界面产生器就是利用组件,帮助进行界面开发的工具。

界面产生器就是一个专用的IDE(集成开发环境),它以组件应用为中心,通过组件的选择、运行、组装、调试,使用组件构成特定的界面。结果以界面配置文件的方式保存。

界面产生器的主要功能是,组件查看(包括测试)、界面组装和测试。

1、查看组件

查看组件库内组件,并可以RUN一下,看看感觉。

2、界面组装

挑选组件,分别挑选界面组件和业务组件;

组成界面,使用界面组件组装界面,包括属性的设置,如位置、大小等;

测试界面,对构成的界面进行运行,对不满意地方回到前面进行调整;

完成界面,测试完成的界面,将其以界面配置文件方式进行保存,包括组成的组件、已设置的属性,要处理的操作(事件)等。

下面是相关的顺序图:

 

 

五、系统应用

系统应用是系统提供一些的应用、工具,它们可以看作是特殊的业务,系统本身的业务,也是使用平台的,可以看作是平台应用的示范-DEMO。

基本的系统工具包括权限管理和通用数据集成工具等。

5.1权限管理

权限管理中存在3个对象:

  • 用户
  • 角色
  • 权限

下图是它们的类图:

其中角色是某一类型用户的集合,也可以看作特殊的用户。

它们之间存在一些关系:

  • 用户与权限关系形成用户权限;
  • 角色与权限关系形成角色的权限;
  • 用户可以继承其所属角色的权限,并加以修改;

权限管理就是这些对象-用户、角色、权限以及它们关系的管理,包括增加、删除、修改。

权限管理另一重要的功能是用户认证,它是在系统运行时使用。

5.2通用数据集成工具

通用数据集成工具是一种通用数据应用,也可看作特殊的业务组件。它能根据已定义的源对象和目标对象,以及它们之间的关系,自动将源对象实例(数据),转化成目标对象(实例),并进行保存。

通用数据集成工具多应用于数据集成,使用数据库集成方式,将外部系统数据集成到应用系统,或者将应用系统数据传送给所需要的外部系统。

posted @ 2013-07-05 10:22 suifei 阅读(...) 评论(...) 编辑 收藏