|
知识路径: > 数据库技术 > 数据库设计 > 数据库设计方法与步骤 > 逻辑结构设计 > 逻辑结构设计 >
|
相关知识点:6个
|
|
|
|
应用程序设计与开发是数据库应用系统开发的重要组成内容,它应遵循应用软件开发的一般规律,即遵循常规的软件工程的方法。数据库应用系统开发是基于DBMS的二次开发,一方面是对用户信息的存储,另一方面就是对用户处理要求的实现,通常在设计过程中把数据存储的设计称为结构设计,处理的实现称为行为设计。在现阶段,还没有一种将两者合一的设计方法,因而称之为行为和结构分离的设计。
|
|
|
应用程序设计有两种方法:结构化设计方法和面向对象设计方法。在设计阶段就是从分析入手,得到结构化模型或面向对象模型。
|
|
|
|
结构化分析将数据和处理作为分析对象,数据的分析结果表示了现实世界中实体的属性及其之间的相互关系,而处理的分析结果则展现了系统对数据的加工和转换。面向数据流建模是目前仍然被广泛使用的方法之一,而DFD则是面向数据流建模中的重要工具,DFD将系统建模成输入一处理一输出的模型,即流入软件的数据对象,经由处理的转换,最后以结果数据对象的形式流出软件。DFD使用分层的方式表示,第一个数据流模型有时被称为第0层DFD或者环境数据流图。从整体上表现系统,随后的数据流图将改进第0层图,并增加细节信息。
|
|
|
除DFD外,在进行建模时,还可结合数据字典和加工处理说明对DFD进行补充。数据字典以一种准确的和无二义的方式定义所有被加工引用的数据流和数据存储,通常包括数据流条目、数据存储条目和数据项条目。数据流条目描述DFD中数据流的组成,数据存储条目描述DFD中数据存储文件的组成,而数据项条目则描述数据流或数据存储中所使用的数据项。加工处理的说明则可采用结构化自然语言、判定表和判定树等多种形式进行详细描述,其目的在于说明加工做什么。
|
|
|
掌握上述的工具后,即可对问题进行结构化的分析,其实施步骤如下:
|
|
|
|
|
|
|
|
DFD、数据字典和处理加工说明可以充分地描述系统的分析模型,其后需要对分析模型进行变换从而得到系统的总体设计模型。系统总体设计模型可以采用层次图、HIPO图和结构图来表达,但不论是哪一种图形工具,都反映了模块间的调用关系。
|
|
|
在分析模型的基础上进行设计时,主要是针对DFD进行变换从而得到模块的调用关系图,因此,需要掌握数据流的变换设计与事务设计。面向数据流的设计方法把数据流图映射成软件结构,数据流图的类型决定了映射的方法,数据流图可分为变换型数据流图和事务型数据流图。变换型数据流图具有明显的输入、变换(或称主加工)和输出;而事务型数据流图则是数据沿输入通路到达一个处理时,这个处理根据输入数据的类型在若干动作序列中选择一个来执行。变换设计的核心在于确定输入流和输出流的边界,从而孤立出变换中心;事务设计的核心在于将事务类型判断处理变换成调度模块以选择后续的输出分支模块。
|
|
|
经过总体设计阶段的工作,已经确定了软件的模块结构和接口描述,但每个模块仍被看作黑盒子。后续的详细设计目标是确定怎样具体地实现所要求的系统,经过详细设计,可以得出对目标系统的精确描述,从而在编码阶段可以将这个描述直接翻译成用某种程序设计语言书写的程序。因此,详细设计的结果基本上决定了最终的程序代码的质量。详细设计可以采用程序流程图、N-S图、PAD图和PDL语言等工具来表达。
|
|
|
数据库应用程序的设计可以借鉴传统的结构化程序设计方法,使用“输入一处理一输出”模型编写系统结构,这些模型大部分依靠数据库和文件,并且不需要复杂的实时处理。同时也有着广泛的结构化程序设计语言作支持,如C、Basic、Pascal、Fortran等。
|
|
|
|
目前,面向对象分析和设计通常采用UML。UML是面向对象的标准建模语言,通过统一的语义和符号表示,使各种方法的建模过程和表示统一起来,已成为面向对象建模的工业标准。UML通过事务、关系和图对现实世界进行建模。
|
|
|
面向对象开发方法将问题和问题的解决方案组织为离散对象的集合,数据结构和行为都包含在对象的表示中。面向对象的特性包括表示、抽象、分类、封装、继承、多态和持久性。面向对象开发方法包括面向对象分析、面向对象设计和面向对象实现。面向对象分析强调在问题领域内发现和描述对象或概念。例如,在图书馆信息系统里包含了书、图书馆和顾客这样一些概念。面向对象设计采用协作的对象、对象的属性和方法说明软件解决方案的一种方式,强调的是定义软件对象和这些软件对象如何协作来满足需求,是面向对象分析的延续。例如,图书馆系统中的软件对象“书”可以有“标题”属性和“获取书”方法,在面向对象编程过程中会实现设计的对象,如Java中的Book类。
|
|
|
面向对象开发方法中分析和设计有时会存在一部分重叠,不是完全独立的活动。在迭代开发中,不严格区分分析、设计和实现,而是每次迭代不同程度地进行精化。有关应用程序设计的详细内容可参考本书第10章。
|
|
|