软件开发平台概要设计
软件开发平台
概要设计
目录
一、需求概述
1.1问题概述
1.2业务分析
1.3其它需求
四、平台开发支持部分
4.1业务组件管理
4.2界面组件管理
4.3界面产生器
一、需求概述
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通用数据集成工具
通用数据集成工具是一种通用数据应用,也可看作特殊的业务组件。它能根据已定义的源对象和目标对象,以及它们之间的关系,自动将源对象实例(数据),转化成目标对象(实例),并进行保存。
通用数据集成工具多应用于数据集成,使用数据库集成方式,将外部系统数据集成到应用系统,或者将应用系统数据传送给所需要的外部系统。