zoukankan      html  css  js  c++  java
  • 软件开发平台概要设计

    软件开发平台

    概要设计

    目录

    一、需求概述
      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通用数据集成工具

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

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

  • 相关阅读:
    [原创]java WEB学习笔记97:Spring学习---Spring 中的 Bean 配置:IOC 和 DI
    [原创]java WEB学习笔记96:Spring学习---Spring简介及HelloWord
    [原创]java WEB学习笔记95:Hibernate 目录
    [原创]java WEB学习笔记94:Hibernate学习之路---session 的管理,Session 对象的生命周期与本地线程绑定
    [原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存
    [原创]java WEB学习笔记92:Hibernate学习之路-- -QBC 检索和本地 SQL 检索:基本的QBC 查询,带 AND 和 OR 的QBC,统计查询,排序,分页
    [原创]java WEB学习笔记91:Hibernate学习之路-- -HQL 迫切左外连接,左外连接,迫切内连接,内连接,关联级别运行时的检索策略 比较。理论,在于理解
    [原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询
    [原创]java WEB学习笔记89:Hibernate学习之路-- -Hibernate检索方式(5种),HQL介绍,实现功能,实现步骤,
    [原创]java WEB学习笔记88:Hibernate学习之路-- -Hibernate检索策略(立即检索,延迟检索,迫切左外连接检索)
  • 原文地址:https://www.cnblogs.com/Chinasf/p/DevPlatform.html
Copyright © 2011-2022 走看看