第四章 数据库应用系统功能设计与实施
- 软件体系结构与设计过程
- 软件体系结构
- 软件体系结构又称软件架构,软件体系结构={构件,连接件,约束}。其中,
- 构件(Component)是组成系统的具有一定独立功能的不同粒度的程序模块,独立程序或软件子系统是组成软件的系统元素;
- 连接件(Connector)将不同的构件连接起来,表示了构件间的相互作用如信号量的传递,功能和方法的调用、数据传送和转换、构件间的同步等。
- 构件可以是过程调用、管道、远程过程调用等;
- 约束一般为对象连接时的规则,或指明了构件连接的条件。
- 软件体系结构是一种可预制和可重构的软件框架结构
- 软件体系结构有多种风格和类型,如分层体系结构、模型-视图-控制器(MVC)体系结构、客户/服务器体系结构等
- 软件体系结构又称软件架构,软件体系结构={构件,连接件,约束}。其中,
- 软件设计过程
- 软件开发是按照软件需求规范的要求,由抽象到具体,逐步生成软件源代码的过程。根据数据库应用系统生命周期模型,软件开发由设计、实现和测试三个环节组成。设计又包括概要设计和详细设计。
- 软件设计阶段将产生系统的总体结构设计(Architectural Design,或称体系结构设计)、系统的过程设计(Procedural Design)和系统的数据设计(Data Design)。总体结构设计旨在确定组成软件系统的各主要部件及其相互间关系;过程设计完成对每一部件的过程化描述;数据设计定义了为实现软件所需要的数据结构。
- 软件设计过程中应遵循的原则有:设计应与软件需求保持一致,设计的软件结构应支持模块化、信息隐藏,抽象与逐步求精等。
- 软件设计可以选用结构化设计方法(也称为面向数据流的设计方法)面向对象设计方法或面向数据设计方法等。
- 概要(Preliminary)设计
概要设计是根据需求确定软件和数据的总体框架- 概要设计的任务是建立软件系统的总体结构和模块间的关系,定义各功能模块的接口,设计全局数据库或数据结构,规定设计约束,制订测试计划。(高内聚,低耦合)
- 概要设计的目标是产生软件总体结构和软件功能模块
- 概要设计的两个步骤
- 软件总体结构设计,也就是对软件需求进行分解。将其划分为若干个子系统,定义各个子系统应实现的功能和相互间的交互关系和通信机制。
- 将每个子系统进一步划分为功能模块,定义各功能模块的数据结构、相互间交互关系。
- 系统-子系统-模块-子模块
- 详细(Detail)设计
详细设计是将概要设计进一步细化成软件的算法表示和数据结构- 详细设计是细化概要设计产生的功能模块,形成可编程的程序模块,用某种过程设计语言(Procedure Design Language,PDL)设计程序模块的内部细节,如算法和处理流程,数据结构、程序模块间详细接口信息等,为编写软件源代码提供依据。此外,还要制定模块测试方案。详细设计结果用详细设计说明书表示。
- 软件体系结构
- DBAS总体设计
- DBAS总体设计的任务是依据系统规划与分析结果,特别是其中的技术可行性分析内容,以及系统需求规范,确定系统总体框架,作为后续设计活动的基础。
- DBAS体系结构设计
- 确定DBAS体系结构是指将系统从功能、层次/结构、地理分布等角度进行分解,划分为多个子系统,定义各子系统应实现的功能:设计系统的全局控制,明确各子系统间的交互和接口关系。
- 客户/服务器体系结构(C/S)
- 基于客户/服务器体系结构的数据库应用系统将DBMS数据管理功能与数据库应用相分离,将DBMS数据管理功能在客户端和服务器之间进行合理的分布和配置。
- C/S结构数据库特点
- (1)DBAS的数据管理和数据处理功能被分解并分布在客户端和数据库服务器上。客户端通过用户界面实现人机交互功能;数据库服务器则通过DBMS,依据事务逻辑完成相应的数据管理功能。
- (2)数据库服务器可以为多个客户端应用提供共享的数据管理功能,避免了为每一个新的应用单独开发对应的服务器端数据管理功能,提高了应用程序相对于数据库的独立性,也减少了应用程序的开发和维护代价。
- (3)客户端应用可以通过网络访问多个不同数据源。可以根据应用的需要,通过增加服务器和客户端方便灵活地扩展数据库应用系统:客户端和数据库服务器可分别运行在不同的操作系统和硬件平台上,便于异构平台间的融合和匹配。
- (4)客户端除了完成人机交互功能外,还需要完成面向应用的数据处理功能,负荷较重,属于典型的“胖客户端”
- 浏览器/服务器结构(B/S)
- 它将数据处理功能分解并分布在表示层、功能层和数据层三个层次上.分别由Web浏览器、Web应用服务器和数据库服务器来实现。
- B/S结构数据库特点
- (1)表示层位于客户端,由Web浏览器实现。客户端根据显示逻辑完成具体的数据表示和人机交互功能。客户端功能单一,一般只安装Web浏览器,没有其他用户应用程序,属于典型的“瘦客户端”
- (2)功能层位于Web应用服务器,实现面向具体应用领域的业务规则。应用服务器接收来自于Web浏览器的用户请求,根据应用领域业务规则执行相应的数据库应用程序,通过数据库访问接口向数据库服务器提出数据操作请求;接收来自于数据库服务器的数据访问结果,并通过客户端将结果返回给用户。
- (3)数据层位于数据库服务器,通过DBMS完成具体的数据存储和数据存取等数据管理功能。数据库服务器接收应用服务器提出的数据操作请求,按照事务逻辑对数据库进行查询和修改,并将数据访问结果返回给应用服务器。
- 在适用Interet,维护工作量等方面,B/S比C/S要强得多:但在运行速度数据安全、人机交互等方面,B/S远不如C/S。
- DBAS软件总体设计
- DBAS软件包括操作系统、数据库管理系统,开发环境,中间件和应用软件。
- 应用软件分为数据库事务和应用程序。
- 数据库事务通过对数据库的直接操作实现数据管理和数据处理功能;
- 应用程序一方面可以与数据库事务相互协调合作,对数据库中的应用数据进行进一步加工处理或是从这些数据中抽取新的信息,以实现复杂的数据处理功能。另一方面还可以实现与数据库访问无关的功能,如通信功能、人机交互功能。
- 应用软件总体设计得到的系统总体结构和分层模块结构可以用模块结构图表示。
- 模块结构图由模块、调用、数据、控制和转接五种基本符号组成。
- 软硬件选型与配置设计
- 软硬件选型涉及的内容包括:
- 网络及网络设备选型;
- 数据存储设备及备份方案制定;
- 应用服务器、Web服务器选型;
- 确定系统终端软件环境;
- 确定软件平台及开发语言、工具;
- 系统中间件及第三方软件选型。
- 在进行软硬件选型及配置设计时通常需要考虑以下因素:
- 数据规模;
- 系统性能;
- 安全可靠性;
- 用户需求;
- 项目预算情况。
- 软硬件选型涉及的内容包括:
- 业务规则初步设计
- 业务规则初步设计的任务是从系统的角度,规划DBAS的业务流程使之符合客户的实际业务需要。
- DBAS功能概要设计
- 从功能角度DBAS系统通常可以划分为四个层次实现:
- 表示层:负责所有与用户交互的功能,用户对数据库应用系统的最直观感受均在这层实现。
- 业务逻辑层:负责根据业务逻辑需要将表示层获取的数据进行组织后,传递给数据访问层,或将数据访问层获取的数据进行相应的加工处理后,传送给表示层用于展示。
- 数据访问层:负责与DBMS系统进行交互,提取或存人应用系统所需的数据。
- 数据持久层:负责保存和管理应用系统数据。数据持久层的设计工作属于数据组织与存储方面的设计内容。
- 表示层概要设计
- 表示层概要设计的主要任务是进行人机界面设计。
- 人机界面设计应遵守的设计原则:
- (1)用户应当感觉系统的运行始终在自己的控制之下,即便当系统程序取得对系统的控制权时,人机界面也应向用户提供视觉和听觉上的反馈,保持用户与人机界面间的双向交流。
- (2)当系统发生错误或程序运行时间较长时,用户界面应该为用户提供有意义的反馈信息并有上下文感知的帮助功能。
- (3)一个好的用户界面应该容忍用户在使用过程中发生的各种操作错误,并且能够方便地从错误中恢复过来,保证系统运行不受或尽可能小地受到用户错误操作的影响。
- (4)用户界面应该遵循一定标准和常规。
- (5)用户界面应采取灵活多样的数据输入方式,尽量减少用户的输人负担:提供字符,图形图像、声音等多种形式的数据输出方式。
- (6)如果使用Web界面,设计要求具有简洁性;界面布局还应当清晰地表示各类信息,并具有与之匹配的导航性;Web界面的设计应当保持界面的一致性;在We界面设计时,需要注意界面美观和交互性能的折中平衡。
- 业务逻辑层概要设计
- 业务逻辑概要设计的主要任务是梳理DBAS的各项业务活动,将其表示为各种系统构件(如类、模块、组件等)。它承载了数据访问层与用户界面层的桥梁作用,DBAS的核心业务逻辑均在本层子以实现。
- 业务逻辑层进行模块时通常需要考虑高内聚与松耦合原则。这一原则在设计过程中体现在以下方面:
- (1)构件本身应由相关性很强的代码组成,一个构件或一个模块只负责完成一项任务,也就是常说的单一责任原则。
- (2)组成系统业务逻辑层的各个构件均应具有独立的功能,并且最大限度地减少与其他构件功能重叠。
- (3)构件之间的接口应尽量简单明确。
- (4)如果某两个构件间的关系比较复杂的话,应考虑进一步进行模块划分
- (5)如果构件过于复杂,可以考虑将其细分。
- 数据访问层
- 概要设计
- DBAS的一些软件模块在执行特定业务处理流程时,可能需要与被称为事务的数据访问模块进行信息交换。
- 事务是数据库系统中的一个逻辑数据处理单元,其中包含了一系列数据操作的集合。
- 事务可以为应用软件提供所需的数据,应用软件也可以将加工处理后的数据通过数据库事务存储在数据库中。
- 事务概要设计的核心是辨识和设计事物自身的事务处理逻辑,它注重事务本身的数据处理流程。
- 事务设计过程包括:
- (1)从数据流图中识别出该事务对应的子数据流图
- (2)确定子数据流图中的信息流类型,划定流界
- (3)将子数据流图映射为事务的结构和处理流程,即事务处理逻辑(或事务业务规则)
- (4)修正和细化事务设计,识别事务所访问的数据库对象和数据库用户
- (5)确认事务概要设计与数据库设计。
- 如果把数据处理需求分析的结果表示为事务规范,由于事务规范包括了事务名称、事务描述、事务所访问的数据项、事务用户等事务描述信息,可直接从事务描述出发,根据具体应用领域的相关知识设计事务逻辑,得到事务概要设计结果,
- 一个完整的事务概要设计包括了以下几方面信息:事务名称、事务所访问的关系表及关系属性、事务处理逻辑、事务用户(指使用、启动、调用该事务的软件模块或系统)。
- 从功能角度DBAS系统通常可以划分为四个层次实现:
- DBAS功能详细设计
- 表示层详细设计
- 原型迭代法设计步骤:
- 初步设计:命令系统是用户与系统交互的基础,优先考虑命令的执行顺序,常用的安排在前面,将全部交互命令按照一定的原则组织起来,如总体功能对应父命令,部分功能对应子命令,构成一棵多层命令树。
- 用户界面细节设计:在命令树基础上,设计命令系统的具体实现方式,命令系统实现可以采用命令行、菜单、按钮、Web界面等多种方式,并注意考虑界面的组织形式、风格,色彩、操作方式等实现细节。
- 原型设计与改进
- 原型迭代法设计步骤:
- 业务逻辑层详细设计
- 业务逻辑层详细设计的任务是根据概要设计中定义的各程序模块功能和输入输出数据需求,结合具体的程序设计环境和机制,设计各模块的内部处理流程和算法,具体数据结构、对外详细接口等,是对概要设计的细化。
- 数据访问层详细设计
- 表示层详细设计
- 应用系统安全架构设计
- 数据安全设计
- 数据的安全性保护:防止非法用户对数据库的非法使用,以避免数据的泄露、篡改或破坏。
- 通常采用前台和后台相结合的安全性保护措施来共同维护DBAS的安全性,主要保护方式有:
- 用户身份鉴别
- 权限控制
- 试图机制
- 通常采用前台和后台相结合的安全性保护措施来共同维护DBAS的安全性,主要保护方式有:
- 数据的完整性保护:数据库的完整性是指数据库中数据的正确性、一致性和相容性。
- 完整性约束条件的作用对象分别为列、元组和关系三种级别,其中是队列的约束主要是指其值对类型、范围、精度、排序等条件的约束条件;对元组的约束主要是指对记录中各个属性之间的联系的约束条件;对关系的约束是指对若干记录间、关系集合上以及关系之间联系的约束条件。
- 数据库的并发控制:在数据库系统运行过程中,如果数据库管理系统可以同时接纳多个事务,事务可以在时间上重叠执行,则称这种执行方式为并发访问(Concurrent Access)。
- 实现数据库并发控制的方法很多。常用的是封锁技术。
- 所谓封锁即是在某一时间内禁止某用户对数据对象做某些操作以避免产生数据不一致的问题。基本的封锁一般有排它锁(x锁)和共享锁(s锁)两种类型
- 通常为了避免死锁,可以考虑以下原则:
- (1)按同一顺序访问资源。
- (2)避免事务中的用户交互。因
- (3)采用小事务模式,尽量缩短事务的长度,减少占有锁的时间。
- (4)尽量使用记录级别的锁(行锁),少用表级别的锁
- (5)使用绑定连接,使同一应用程序所打开的两个或多个连接可以相互合作。
- 数据库备份与恢复
- 数据库恢复的基本原理就是数据库中任何一部分数据可以利用存储在系统其他存储器上的冗余数据来重建。数据库恢复首先要建立冗余数据(即进行数据备份),然后利用这些余数据实施恢复
- 针对数据的不同可靠性级别要求,数据备份与恢复策略可有不同的解决方案。
- 双机热备。双机热备指基于Aclive/Sandby方式的服务器热备。服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备。
- 数据转储。数据转储(也称为数据备份),通常由系统管理员定期将应用系统的数据备份并拷贝到磁带,光盘或其他永久性记录介质上去,当系统发生故障时,使用最近备份的数据文件对数据进行恢复。
- 数据加密存储。数据加密存储是针对高敏感数据安全保护的一种有效方案。
- 数据加密传输
- 常用的数据加密传输手段有:
- 数字安全证书
- 对称密钥加密
- 数字签名
- 数字信封
- 常用的数据加密传输手段有:
- 数据的安全性保护:防止非法用户对数据库的非法使用,以避免数据的泄露、篡改或破坏。
- 环境安全设计
- 漏洞与补丁
- 计算机病毒防护
- 安装杀毒软件,定期查杀病毒
- 计算机实时监控
- 网络环境安全
- 防火墙
- 入侵检测系统(IDS)
- 网络隔离
- 物理环境安全
- 制度安全设计
- 数据安全设计
- DBAS实施
- 创建数据库
- 开发人员使用具体的DBMS提供的数据定义语言(DDL)或图形化工具建立数据库和数据库对象,如使用DDL语言创建数据库、在数据库中建立表、创建访问数据库的用户和密码、建立视
- 图、触发器、索引,主外码关系等,从而建立起数据库系统的总体构架。
- 考虑因素
- 初始空间大小
- 数据库增量大小
- 访问性能
- 数据装载
- 数据装载步骤:
- (1)筛选数据。将需要装入数据库中的数据从不同部门的数据文件和原始凭证中筛选分离出来。
- (2)转换数据格式。将前面筛选出来数据的格式转换成与数据库结构相符的格式。
- (3)输入数据。将转换好格式的数据输入计算机中。
- (4)校验数据。数据装载时,由于在数据格式转换过程中以及向计算机中输入数据时有可能会发生错误,所以,为了防止不正确的数据入库,在源数据入库前需要对其进行必要的检验。
- 数据装载步骤:
- 编写与调试应用程序
- 数据库系统试运行
- 功能测试
- 性能测试
- 创建数据库