DBAS功能设计与实施(上)-数据库技术
前言
DBAS中应用软件的设计开发工作主要包含数据库,数据库事务,数据库上层应用程序的设计与开发,而应用软件中的数据库事务设计和应用程序设计都可以归入DBAS的功能设计范畴。 DBAS的设计过程应包括概念设计、逻辑设计和物理设计三个阶段。 DBAS功能设计的数据库事务设计部分又可以分成事务概要设计和事务详细设计两个阶段,完成系统设计工作以后,就可以进入到系统实现与部署阶段。
软件体系结构与设计过程
对于大型复杂软件系统而言,设计合适的软件体系结构是软件设计中的一项重要工作,其好坏往往成为系统设计成败的关键。
软件体系结构
软件体系结构又称软件架构,软件体系结构 = {构件、连接件、约束}
构件:组成系统的具有一定独立功能的、不同粒度的程序模块、独立程序或软件子系统。是组成软件的系统元素。构件可以是过程调用,管道,远程过程调用等。
连接件:将不同的构件连接起来,表示了构件间的相互作用,如信号间的传递,功能和方法的调用,数据传送和转换,构件间的同步等。
约束:一般为对象连接时的规则或指明了构件连接的条件。
软件体系结构是一种可预制、可重构的软件框架结构。
软件体系结构描述了软件系统的总体组织和层次划分、系统元素及其功能分配、全局控制、系统元素间的协调和交互、数据存取等。
常见软件体系结构有:分层体系结构、模型-视图-控制器(MVC)体系结构、客户/服务器体系结构等。分层体系结构将软件系统设计并组织成构建的层次或集合,同一个层次上的构件完成一个特定目的。
软件设计过程
软件开发是按照软件需求规范的要求,由抽象到具体,逐步生成软件源代码的过程。
根据DBAS生命周期模型,软件开发由设计、实现和测试三个环节组成,设计又包括概要设计和详细设计。
软件设计阶段将产生系统的总体结构设计(或称体系结构设计),系统的过程设计和系统的数据设计。
总体结构设计:诣在确定组成软件系统的各主要部件及其相互间关系。
过程设计:完成对每一部件的过程化描述。
数据设计:定义了为软件实现所需要的数据结构。
软件设计过程中应遵循的原则:
设计应与软件需求保持一致,设计的软件结构应支持模块化、信息隐蔽、抽象与逐步求精等。
从工程管理角度,软件设计可分为概要设计和详细设计两大步骤。
概要设计
概要设计是根据需求确定软件和数据的总体框架。
任务:建立软件系统的总体结构和模块间的关系,定义各功能模块的接口,设计全局数据库或数据结构,规定设计约束,制定测试计划。
要求:良好的总体结构,功能模块间较低的耦合度和功能模块内较高的内聚度(高内聚低耦合),并尽量降低模块接口复杂性。
表示:采用层次结构图表示软件总体结构,结构图中的结点代表功能模块。结构图中的上层模块可用一个或若干个下层模块表示,体现了自顶向下逐步求精的设计思想。
概要设计应提供概要设计说明书、数据库或数据结构设计说明书,组装测试计划等文件。
详细设计
详细设计是将其进一步细化成软件的算法表示和数据结构。
任务:描述模块的外部功能和模块间接口关系,细化概要设计产生的功能模块,形成可编程的程序模块,用某种过程设计语言(PDL),设计程序模块的内部细节,如算法和处理过程、数据结构、程序模块间详细接口信息等,为编写软件源代码提供依据,还要制定模块测试方案,结果用详细设计说明书表示。
软件设计方法:结构化设计方法(也称为面向数据流的设计方法),面向对象设计方法或面向数据设计方法等。
关于软件总体设计
根据软件工程所规定的软件开发步骤,软件设计的第一步是软件概要设计。概要设计的目标是产生软件总体结构和软件功能模块。根据逐步抽象和层次化原则,将概要设计分解成两个步骤:
1,软件总体结构设计,也就是对软件需求进行分解。
2,将每个子系统进一步划分为功能模块,定义各功能模块的数据结构相互间交互关系。
按照上述软件概要设计方式,可以形成一个系统-子系统-模块-子模块的层次结构,子系统、模块、子模块成为构成软件系统的系统元素。
相应的,将上述概要设计第一步骤称为软件总体设计,第二步骤称为软件概要设计,软件设计过程由总体设计、概要设计和详细设计三个步骤组成。
DBAS总体设计
广义上讲,DBAS设计包括结构设计、过程设计和数据设计三个方面。
- 结构设计:系统总体设计涵盖了结构设计。
- 过程设计:由其后的事务和应用设计的概要设计与详细设计来完成。
- 数据设计:数据库概念模型设计属于数据设计范畴,DBAS中的数据设计除了数据库设计之外,还包括事务和应用程序中的数据结构设计。
DBAS总体设计的任务:依据系统规划与分析结果,特别是其中的技术可行性分析内容,以及系统需求规范,确定系统总体框架作为后续设计活动的基础。
原则:自上而下,循序渐进,逐步求精。
主要内容包括:
- 1.DBAS体系结构设计。
- 2.DBAS软件总体设计。
- 3.软硬件选型与配置文件。
- 4.业务规则初步设计。
DBAS体系结构设计
确定DBAS体系结构是指将系统从功能、层次/结构、地理分布等角度进行分解,划分为多个子系统,定义各子系统应实现的功能,设计系统的全局控制,明确各自系统间的交互和接口关系。
系统划分从功能角度进行系统分解的重要依据:需求分析得到的系统功能需求规范以及规划与分析阶段得到的任务陈述和任务目标。还可以根据DBAS自身固有的层次/结构特征进行系统分解。
将系统分解为多个子系统后,需要选择和设计合适的系统体系结构,将这些子系统组织起来,并且设计子系统间的协调下交互关系。
客户/服务器(C/S)体系结构
基于客户/服务器体系结构的数据库应用系统,将DBMS数据管理功能与数据库应用相分离。其中数据库服务器完成DBMS的核心功能。客户端或应用服务器则负责完成用户交互功能,接收用户数据,根据业务规则处理应用任务,生成并向数据库服务器发出数据操作请求,并接收数据查询结果通过客户端反馈给用户。
上图描述了两层C/S结构的数据库应用系统,特点为如下:
- DBAS的数据管理和数据处理功能被分解并分布在客户端和数据库服务器上。客户端通过用户界面实现人机交互功能,数据库服务器则通过DBMS依据事务逻辑完成相应的数据管理功能。
- 数据库服务器可以为多个用客户端应用提供共享的数据管理功能。
- 客户端应用可以通过网络访问多个不同数据源。
- 客户端除了完成人机交互功能外,还需要完成面向应用的数据处理功能,负荷较重,属于典型的“胖客户端”。
浏览器/服务器(B/S)体系结构
三层浏览器/服务器(B/S)结构的DBAS将数据处理功能分解并分布在表示层、功能层和数据层,三个层次上分别由Web服务浏览器、Web应用浏览服务器和数据库服务器一起来实现。
1.表示层位于客户端,由web浏览器实现。客户端功能单一,一般只安装Web浏览器,没有其他用户应用程序,属于典型的“瘦客户端”。
2.功能层位于Web应用服务器,实现面向具体应用领域的业务规则。
3.数据层位于数据库服务器,通过DBMS完成数据的数据存储和数据存取等数据管理功能。
三层B/S结构将人机交互、应用业务逻辑处理和数据管理三类功能相互分离,提高了系统的可维护性。
在适用internet、维护工作量等方面B/S比C/S要强得多,但在运行速度、数据安全、人机交互等方面,B/S远不如C/S。
DBAS软件总体设计
DBAS软件包括操作系统、数据库管理系统、开发环境、中间件和应用软件。应用软件分为数据库事务和应用程序。数据库事务通过对数据库的直接操作实现数据管理和数据处理功能。
应用软件总体设计步骤如下:
- 1.根据数据流图、事务规范和业务规则需求分析结果,在DBAS体系结构指导下,将DBAS软件系统分解为一系列子系统。为各子系统分配相应功能、定义子系统间的协调交互机制。
- 2.进一步的进行子系统结构设计,将各个子系统从功能上划分为数据库事务模块和粒度较大的应用程序模块。
- 3.确定子系统应用程序模块,数据库事务间的全局控制和调用关系,并按一定的软件体系结构框架组织起来。
应用软件总体设计得到的系统总体结构和分层模块结构可以用模块结构图表示。
模块结构图主要关心模块的外部特性及上下级模块、同级模块间的数据传递和调用关系,与模块内部处理流程无关。
模块结构图是结构化程序设计中描述系统结构的一种图形化工具,它定义了模块的名字、功能和接口,并在模块结构图中反映出结构化设计思想。模块结构图由模块、调用、数据、控制和转接5种基本符号组成。
软硬件选型与配置设计
DBAS总体设计阶段需要对系统硬件平台和存储设备、操作系统、数据库管理系统等作出合理选择,并初步进行配置设计。此外还需要选择系统开发采用的合适的中间件和开发工具,确定应用程序开发模式和开发语言。软硬件选型涉及的内容包括:
- 1.网络及网络设备选型。
- 2.数据存储设备及备份方案制定。
- 3.应用服务器与web服务器选型。
- 4.确定系统终端软件环境。
- 5.系统中间件及第三方软件选型。
- 6.确定软件平台及开发语言工具。
在进行软硬件选型及配置设计时,通常需要考虑以下因素:
- 1.数据规模。
- 2.系统性能。
- 3.安全可靠性。
- 4.用户需求。
- 5.项目预算情况。
业务规则初步设计
需求分析阶段的任务是明确系统将要做什么,而设计阶段的任务是要明确将如何实现系统,因此业务规则初步设计的任务是从系统的角度规划DBAS的业务流程,使之符合客户的实际业务需要。
DBAS功能概要设计按照逐步求精、模块化、信息隐藏和功能细化原则,将DBAS应用软件进一步细化为模块/子模块,组成应用软件的系统-子系统-模块-子模块层次结构,并对系统、子系统、模块、子模块等系统元素,从结构、行为和数据三方面进行设计。
从功能角度,DBAS系统通常可以划分为4个层次实现:
- 1.表示层。负责所有与用户交互的功能,用户对数据库应用系统的最直观感受,均在这层实现。
- 2.业务逻辑层。负责根据业务逻辑需要,将表示层获取的数据进行组织后传递给数据访问层,或将数据访问层获取的数据进行相应的加工处理后传送给表示层用于展示。
- 3.数据访问层。负责与DBMS系统进行交互,提取或存入应用系统所需要的数据。
- 4.数据持久层。负责保存和管理应用系统数据。
表示层概要设计的主要任务是进行人机界面设计。人机界面也称为用户界面。
人机交互界面是数据库应用系统的一个重要组成部分。计算机系统用户界面的风格经历了命令行、菜单、WIMP界面三代的演变,目前第4代用户界面将WIMP界面与WEB技术和多任务处理技术相结合组成WEB人机交互界面。
业务逻辑概要设计的主要任务是梳理DBAS的各项业务活动,将其表示为各种系统构件(如类、模块、组件等),业务逻辑层是DBAS的重要组成部分,它承载了数据访问层和用户界面层的桥梁作用,DBAS的核心业务逻辑均在本层给予实现。
在本阶段,设计人员需要将数据库应用软件划分为一系列程序模块,每个模块实现一个具体的功能,一个功能可以由多个模块来实现,一些被抽象出来的公共模块,也可以被多个子模块中实现不同功能的程序模块调用。
业务逻辑层概要设计将包括结构、行为、数据、接口、故障处理、安全设计、系统维护与保障等方面的内容。
对业务逻辑层进行模块划分原则:
1.一个构件或一个模块,只负责完成一项任务,也就是单一责任原则。
2.组成系统业务逻辑层的各个构件均应具有独立的功能,并且最大限度地减少与其他构件功能重叠。
3.构件之间的接口应尽量简单明确。
4.如果某两个构件间的关系比较复杂的话,应进一步进行模块分化。
5.如果构件过于复杂,可以考虑将其细分。
高内聚低耦合原则的根本目的就是在保持软件内在联系的前提下分解软件系统,降低软件系统开发的复杂性。
数据访问层概要设计的主要任务就是针对DBAS的数据处理需求,设计用于操作数据库的各类事务。事务是数据库系统中的一个逻辑数据的处理单元,其中包含了一系列数据操作的集合。事务可以为应用软件提供所需的数据,应用软件也可以将加工处理后的数据通过数据库事务存储在数据库中。
事物概要设计的核心是辨识和设计事务自身的事务处理逻辑,它注重事务本身的数据处理流程。设计事务处理逻辑过程:
1.从数据流图中识别出该事务对应的子数据流图。
2.确定子数据流图中的信息流类型,划定流界。
3.将此数据流图映射为事务的结构和处理流程及事务处理逻辑(或事务业务规则)。
4.修正和细化事务设计,识别事务所访问的数据库对象和数据库用户。
5.确认事务概要设计与数据库设计。
一个完整的事务概要设计,包括了事物名称、事务所访问的关系表及关系属性、事物处理逻辑、事物用户。
根据事物概要设计的结果检查关系表对数据库事务的支持性,具体步骤:
1.对所有事务根据需求分析阶段的事务分析,列出该事务所访问的各个数据项。
2.列出事务访问的数据项所在关系表和对应的关系属性。
3.若事务访问的数据项同时出现在多个表中,检查这些关系表间的关联关系,如主码/外码关联。
4.检查是否存在某些事务其所访问的一些数据项未出现在任何关系表中,对这些事务重新修改数据库的概念模型或逻辑结构,或者重新设计事务,以保证DB能够支持所有的数据库事务。