目录
一、需求概述
1.1问题概述
1.2业务分析
1.3其它需求
四、平台开发支持部分
4.1业务组件管理
4.2界面组件管理
4.3界面产生器
技术能力一直是制约发展的瓶颈,软件开发是其中一个重要因素。通过新员工引进和平台开发,以及多年开发的经验积累,软件开发情况得到好转,但没有根本解决问题。主要体现在:
问题存在的原因,需求分析与软件设计是一方面;开发中复用率过低,重复工作过多是另一方面。
一个好的平台解决方案将有助于问题的解决,进一步提升开发效率。
根据开发过程,建立业务用例图如下:
根据开发过程可以绘制活动图如下:
公司开发下一步发展,是推进主要产品的"产品化",缩短项目开发和实施周期。
应用系统产品化的途径,是对系统进行分析,建立系统的业务模型。平台要支持系统建模,提供模型管理和运行支持
应用系统都是数据应用程序,数据是应用的核心。数据访问是应用系统不可缺少的部分,也是重复开发最多的部分。平台要实现多层架构,将数据访问分离出去,形成数据服务,使得对数据访问不需要编程就能直接从服务得到。
应用系统需要在用户处能够长期稳定运行,其可靠性需要得到保证。
应用系统用于用户日常工作,速度必须得到保证,不能太过迟缓,影响用户工作。
通过对开发需求的分析,我们将开发对平台的需求,分成两个方面,一是将应用系统通用的部分,如数据访问、业务管理等部分抽出来,按照一定构架,建立起应用系统运行的完整支撑环境;二是对非通用部分,对其结果进行管理,强调程序的重用和可配置性,形成以组件为中心的开发管理和支持。
运行支撑环境是将系统通用部分,以平台服务形式固化,提供应用系统运行的支撑。运行支撑环境分为前端的客户端和后端的应用服务器两部分。
运行支撑环境的用例图如下:
运行支撑环境的活动图如下:
现在软件开发使用都是第四代开发工具,功能十分完善。平台对开发的支持,是建立在开发成果的管理上,成果的粒度是组件,包括业务组件和界面组件。通过对开发成果的管理,提高了程序的复用性,并在开发工具上提供了应用系统组装工具。
系统开发的活动图如下:
运行支撑环境是将应用系统的通用部分、公用系统,以平台形式固化,作为应用系统运行的基础。
运行支撑环境的关键是架构,架构是基于多层结构的,分成数据访问层、业务层和界面层,支持界面、业务和数据的真正分离。
与三层对应,平台分为客户端、应用服务器(包括业务层与数据访问层)。
应用系统是有多个窗体/页面组成,具体是哪些?这由用户权限所决定。每个窗体/页面都是由界面组件组成,这也是由窗体配置文件决定的。服务网关提供对应用服务器的服务。
下面是客户端的类图:
下面是客户端的顺序图:
系统控制器是应用系统的容器,负责系统的装载。应用系统是动态的,是由用户权限决定的。系统控制器的主要功能是用户认证、系统初始化和界面调用等。
1、用户认证
用户认证也是一个界面应用,根据界面配置文件,初始化用户登陆界面,取得用户名和密码,通过服务网关向应用服务器发出认证请求,并得到返回的用户权限。
2、系统初始化
根据得到的系统文件,进行主界面的初始化,主要是菜单系统的生成等。
3、系统调用
以菜单系统为主,提供系统调用。对选择调用,提供界面名称,交窗体控制器处理。
窗体(页面)控制器是窗体的容器,负责控制窗体内的活动。窗体由组件组成,窗体(页面)控制器也可以看作特殊的窗体组件,负责其它组件的装载、相互之间关系管理、以及其它一些操作。窗体控制器的主要功能是窗体初始化和窗体操作管理等。
1、窗体初始化
根据控制器调用得到的窗体名称,找到相应的配置文件,按配置装载组件,并按照配置进行组件的初始化。
2、窗体操作管理
窗体控制采用MVC模式,Model-View-Controller (MVC)模式基于用户输入,将域的建模、显示和操作分为三个独立的类[Burbeck92]:
图1、描述了这三个对象之间的结构关系
视图和控制器都依赖于模型。但是,模型既不依赖于视图,也不依赖于控制器。这是分离的主要优点之一。这样的分离允许模型在独立于可视表示功能的情况下建立和测试。
在我们架构中,组件响应用户操作,并以事件的方式传递给窗体控制器。窗体控制器使用通用的命令解析器,起到控制器的作用。对事件如何处理,也由配置文件决定,它定义了组件间的操作关系,控制器根据配置所定义的当作,实现界面间的操作。
举例说明:
服务网关负责与应用服务器的操作处理。服务网关的主要功能是建立连接,服务请求映射,传递应用服务请求等。
1、建立连接
根据系统配置文件建立与应用服务其的连接;
2、服务请求映射
应用服务器有自己的接口,客户端也可以定义自己的服务请求命令。服务网关负责客户请求命令到应用服务器接口的映射、转换。
这样的好处,更改应用服务器的接口,只要修改服务网关的映射程序,不会影响到原来的应用程序,将减少客户端与应用服务器的耦合度。
3、服务请求
通过远程调用,向应用服务器传递服务请求,并取得结果,发送给请求者。
应用服务器是中间件的集合,它提供了应用系统运行环境,实现系统的多层架构。平台的应用服务器暂时只有两部分组成,一是公用的数据访问,二是业务层管理。
数据访问层使用数据持久化设计,支持对象到数据的持久化,以实现业务组件(对象)到数据的自动操作。
业务层管理有完整的业务组件管理架构,支持业务组件的自动调用。
下面是应用服务器的类图:
下面是顺序图:
运行的业务层管理,主要是动态的业务组件执行管理,是建立在业务组件库上(其管理见4.4.1)。业务管理的主要功能是,业务组件调用、执行等。
主要工作及流程如下:
数据持久化将在ORM基础上构建。
对象关系映射(ORM)提供了概念性的、易于理解的模型化数据的方法。ORM方法论基于三个核心原则:
简单:以最基本的形式建模数据。
传达性:数据库结构被任何人都能理解的语言文档化。
精确性:基于数据模型创建正确标准化了的结构。
NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具。
NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去。
使用NHibernate,只要按照NHibernate的规范定义对象,NHibernate将自动完成对象到数据映射,从而完成所需要的数据操作。
NHibernate的功能:
NHibernate的工作流程是:
应用系统除开基础的、通用的部分,还有许多与业务相关的千差万别的应用。虽然应用各有不同,其中也有许多相同的地方,如界面、界面元素或者业务模型。
软件开发要提高效率,就需要提高程序的复用率。提高程序复用率,关键在设计和程序框架,如实现界面与业务的分离,实现业务建模,实现业务的原子化。
另一方面,对已有程序如何有效再利用?也是提高程序复用率的途径。我们认为源程序级的复用,牵扯到太多因素,不是很有效;应该在开发成果的一定粒度上进行复用,我们将其定为组件。通过成熟组件的再利用,我们实现了软件的复用。
在平台的软件支持上,我们以组件的管理为基础,以系统的组装作为终极应用。
组件管理是将应用开发结果以组件形式进行管理,又分为业务组件管理和界面组件管理。
业务组件包含业务逻辑,如果是按照面向对象方法建立的,组件也可以看作业务模型。这样,组件管理也就成为业务模型的管理。
在平台中,业务组件(对象)可以以两种形式存在,一是实体型的业务组件,二是保存在描述文件中的。两者区别是,描述型是简单的业务对象,相当于只有属性的业务对象;而实体型可以通过方法实现复杂的业务逻辑。
业务组件管理主要功能是,简单业务组件生成,业务组件管理。
界面组件是构成界面的元素,好象砖块之于建筑物。在平台中,界面组件都以实体形式出现。界面与界面组件的关系,使用界面配置文件进行描述。
在平台中,界面组件组成界面组件库。界面组件管理就是对界面组件库的管理,包括增、删、改,以维护系统可使用的业务组件。
组件得到有效管理,也有支撑运行的环境,但还不方便使用进行开发。界面产生器就是利用组件,帮助进行界面开发的工具。
界面产生器就是一个专用的IDE(集成开发环境),它以组件应用为中心,通过组件的选择、运行、组装、调试,使用组件构成特定的界面。结果以界面配置文件的方式保存。
界面产生器的主要功能是,组件查看(包括测试)、界面组装和测试。
1、查看组件
查看组件库内组件,并可以RUN一下,看看感觉。
2、界面组装
挑选组件,分别挑选界面组件和业务组件;
组成界面,使用界面组件组装界面,包括属性的设置,如位置、大小等;
测试界面,对构成的界面进行运行,对不满意地方回到前面进行调整;
完成界面,测试完成的界面,将其以界面配置文件方式进行保存,包括组成的组件、已设置的属性,要处理的操作(事件)等。
下面是相关的顺序图:
系统应用是系统提供一些的应用、工具,它们可以看作是特殊的业务,系统本身的业务,也是使用平台的,可以看作是平台应用的示范-DEMO。
基本的系统工具包括权限管理和通用数据集成工具等。
权限管理中存在3个对象:
下图是它们的类图:
其中角色是某一类型用户的集合,也可以看作特殊的用户。
它们之间存在一些关系:
权限管理就是这些对象-用户、角色、权限以及它们关系的管理,包括增加、删除、修改。
权限管理另一重要的功能是用户认证,它是在系统运行时使用。
通用数据集成工具是一种通用数据应用,也可看作特殊的业务组件。它能根据已定义的源对象和目标对象,以及它们之间的关系,自动将源对象实例(数据),转化成目标对象(实例),并进行保存。
通用数据集成工具多应用于数据集成,使用数据库集成方式,将外部系统数据集成到应用系统,或者将应用系统数据传送给所需要的外部系统。