1、第八章 物流管理信息系统详细设计 主讲人 : 陈颖彪博士 /副教授E-mail:TEL:020-31878078(小灵通 )/36230186(家 )广州大学地理科学学院系统总体设计阶段已经确定了软件的模块结构和接口描述,划分出不同的 GIS目标子系统,即各个功能模块,并编写了总体设计文档,但此时每个模块仍处于黑盒子级,需要进行更进一步的设计。详细设计阶段的根本目标是确定怎样具体地实现所定义的系统,也就是为各个在总体设计阶段处于黑盒子级的模块设计具体的实现方案。教学提纲一、详细设计的基本原则 二、详细设计的内容和具体任务三、详细设计的表达工具四、数据结构和数据库详细设计五、详细设计规格说明书退
2、出一、详细设计的基本原则 结构化程序设计( Structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计概念最早由 Dijkstra于 1965年提出,是软件发展的一个重要里程碑,它的概念、方法和其支持的软件工具组成了所谓的 “结构化革命 ”。结构化程序设计技术采用自顶向下、逐步求精的设计方法和单入口 /单出口的控制结构,并且只包含顺序、选择和循环三种结构。结构化程序设计的目标之一是使程序的控制流程线性化,即程序的动态执行顺序符合静态书写结构,这就增强了程序的可读性,不仅容易理解、调试、测试和排错,而且给程序的形式化证明带来了方便。结构化
3、程序设计原则具体表现在以下方面:尽量少用或不用 GoTo语句。采用自顶向下逐步求精的设计方法。采用顺序、选择、循环三种基本结构组成程序的控制结构。尽量使用单入口 /单出口的控制结构,减少传递参量(数)的 个数。提高模块的内聚度,降低模块间的关联度。返回二、详细设计的内容和具体任务系统详细设计的主要内容是在具体进行程序编码之前,根据总体设计提供的文档,细化总体设计中已划分出的每个功能模块,为之选一具体的算法,并清晰、准确的描述出来,从而在具体编码阶段可以把这些描述直接翻译成用某种程序设计语言书写的程序。其设计成果可用程序流程图描述,也可用伪码描述,还可用形式化软件设计语言描述。详细设计的结果基本
4、上决定了最终程序代码的质量。详细设计以总体设计阶段的工作为基础,但又不同于总体设计阶段,这主要表现为以下两个方面:在总体设计阶段,数据项和数据结构以比较抽象的方式描述,例如,总体设计阶段可以声明矩阵在概念上可以表示一幅遥感图像,详细设计就要确定用什么数据结构来表示这样的数字矩阵。详细设计要提供关于算法的更多细节,例如,总体设计可以声明一个模块的作用是对一个表进行排序,详细设计则要确定使用哪种排序算法。总之,在详细设计阶段为每个模块增加足够的细节,使得程序员能够以相当直接的方式对每个模块编码。 详细的算法 数据表示和数据结构 实现的功能和使用的数据之间的关系详细设计的模块内容详细设计的具体任务细
5、化总体设计的体系流程图,绘出程序结构图,直到 每个模块的编写难度可被单个程序员所掌握为止。为每个功能模块选定算法。确定模块使用的数据组织。确定模块的接口细节,及模块间的调度关系。描述每个模块的流程逻辑。编写详细设计文档。主要包括细化的系统结构图及逐个模块的描述,如功能、接口、数据组织、控制逻辑等。返回三、 详细设计的表达工具 系统详细设计的任务是给出软件模块结构中各个模块的内部过程描述,也就是模块内部的算法设计。根据软件工程的思想,在 GIS软件设计过程中,尤其是大型 GIS软件的开发,系统设计和系统实现是两个阶段的任务,通常由不同的人员来进行。因此,需要采用一种标准的、通用的设计表达工具来实
6、现两阶段的沟通,使设计人员设计的系统,实现人员通过分析设计的文本和资料得到无歧义的理解,即详细设计表达工具的选择可以促进系统设计成果的表达和实现。详细设计的表达工具可分为图形、表格和语言三种。无论是哪种工具,对它们的基本要求都是能提供对设计的无歧义的描述,即能指明控制流程、处理功能、数据组织以及其它方面的实现细节。从而方便在编码阶段把设计描述直接翻译成程序代码。三、 详细设计的表达工具 (一) 程序流程图(二) N-S盒式图(三) 问题分析图(四) 类程序设计语言返回程序流程图程序流程图( Program Flow Chart,简称 PFC)又称为程序框图,它是应用最广泛的描述过程的方法,具有
7、简单、直观、易于掌握的优点,特别适用于具体模块小程序的设计。下图所示为程序流程图常用符号,图中方框表示处理步骤,菱形框表示逻辑判断,箭头表示控制流。(1) (2) (3) (4) (5) (6)程序流程图常用符号可执行单元then部分的可执行单元else部分的可执行单元可执行单元else部分,选择构造then部分 ,repeat-until循环构造F T判断语句判断语句判断语句F T可执行单元FT在程序流程图中,结构化单元可以嵌套,例如一个 if-then-else构造单元的 then部分是一个 repeat-until构造单元,而 else部分是一个选择构造。而这个外层的选择构造单元又是顺序
8、构造中的第二个可执行单元。下图所示为结构化单元嵌套示意图,以此嵌套结构可以导出复杂的程序结构。程序流程图的缺陷程序流程图本质上不是逐步求精的好工具,它使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构;程序流程图中用箭头代表控制流,因此程序员可以完全不 顾结构化程序设计的精神,随意转移控制;程序流程图不易表示数据结构。详细的程序流程图每个符号对应于源程序的一行代码,对于提高大型系统的可理解性作用甚微。返回N-S盒式图N-S( Nassi-Shneiderman)盒式图是另一种用于详细设计表达的结构化图形设计工具。最初由 Nassi和 Shnei derman开发,后经 Chapin扩充
9、改进,所以又叫 N-S图或 Chapin图。同 PFC相比,N-S图具有功能域表达明确,容易确定数据作用域的优点。作为详细设计的工具, N-S图易于培养软件设计的程序员结构化分析问题与解决问题的习惯,它以结构化方式严格地实现从一个处理到另一个处理的控制转移。每一个 N-S图开始于一个大的矩形,表示它所描述的模块,该矩形的内部被分成不同的部分,分别表示不同的子处理过程,这些子处理过程又可进一步分解成更小的部分。其基本结构 见图 。 第一项任务下一项任务再下一项任务F 条件 TElse Then部分 部分循环条件do-while部分repeat -until部分循环条件 case条件值 值 . .
10、case case . .部分 部分 . .N-S盒式图基本结构 N-S盒式图的特征是一种清晰的图形表达式,能定义功能域(重复或 if- then-else的工作域)控制不能任意转移易于确定局部或全局的数据工作域易于表示递归返回问题分析图问题分析图( Problem Analysis Diagram,简称 PAD)是由日本日立制作所研究开发的,综合了流程图、盒式图和伪码等技术的一些特点,在 Pascal 语言基础上发展而成的系统详细设计工具。基于 Pascal的控制结构,用二维树状图的形式描述程序的逻辑, 下图 反映了问题分析图的基本原理。问题分析图的主要优点是结构清晰,能直接导出程序代码,并
11、可对其进行一致性检查。问题分析图可用于 Basic、 Fortran、 Pascal、 C等编程语言,它不仅支持软件的详细设计,还支持软件的需求分析和总体设计,也是当前广泛使用的一种软件设计方法。头脑中粗略模糊问题解的概念(1)顺序过程的细化(2)循环过程的细化(3)选择过程的细化H1HnH1Hn循环条件 HmH1HnHmHm+1Hm+2循环条件问题分析图方法的基本原理问题分析图采用自顶而下、逐步细化的结构化设计的原则,力求将模糊的问题解的概念逐步转换为确定的和详细的过程。 下图 中列出了问题分析图的基本符号,有了问题分析图的基本符号和基本图式,根据系统的要求可写出系统的问题分析图。由问题分析
12、图转换出相应的源程序,必须按照以下步骤进行:根据问题解画出问题分析图 ; 把问题分析图看做横向生长的树,沿着树前进,写出源程序。符 号 名 称 说 明输入框 框内写出输入变量名输出框 框内写出输出变量名处理框 框内写出处理名或语句名子程序框 子程序处理框,框内写出子程序名重复框 先判定,再重复,框内写出重复条件重复框 先执行,然后判定,再重复,框内写出重复条件定义框 框内写定义名选择框 可一路、二路、三路或多路选择,框内写条件语句标号 圆内写出语句标号定 义 用于 PAD图的增加或分解返回类程序设计语言类程序设计语言( Program Design Language,简称 PDL)又称为伪码,
13、这是一个笼统的名称,现有多种不同的 PDL在使用。PDL是一种混杂语言,它使用一种结构化程序设计语言(如Pascal、 C)的语法控制框架,而在内部却可灵活使用一种自然语言(例如英语)来表示数据结构和处理过程。 PDL虽然不具有图形工具描述的直观清晰,但用来表示算法灵活自由,且便于翻译成高级语言程序,是介于自然语言与程序设计语言之间的一种伪码。 PDL是用正文形式表示数据和处理过程的设计工具,一方面具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,又具有灵活自由的内部语法,以适应各种工程项目的需要。 PDL与实际的高级程序设计语言的区别在于: PDL的语句中嵌有自然语言的叙述,是
14、不能被计算机识别和编译的。PDL的特点 关键字的固定语法,提供所有结构化构造、数据说明以及模块化的手段。 自然语言的自由语法,用于描述处理过程和判定条件。 数据说明的手段,既包括简单的数据结构(例如变量和数组),又包括复杂的数据结构(例如链表)。 模块定义和调用的技术,提供各种接口描述模式。返回四、 数据结构和数据库详细设计建立一个良好的数据组织结构和数据库,使整个系统都可以迅速、方便、准确地调用和管理所需的数据,是系统开发的必然要求。通常, GIS数据库建设分为关系型数据库和空间数据库建设两部分内容,其中,空间数据库在某些情况下也可以用关系型数据库进行管理。在第八章将对空间数据库的建设进行详
15、细介绍,此处主要介绍如何用关系型数据库技术来建立非地理数据的数据库。(一) 数据结构规范化(二) 关系数据库建库四、 数据结构和数据库详细设计返回数据结构规范化在系统定义阶段对系统的数据流、数据类型等进行了分析和定义,并用数据流图、数据字典等手段对其进行了描述,但是要用关系型数据库来对这些数据进行管理,还必须将它们转换成关系型数据库支持的数据结构,即对这些数据进行规范化的重新组织。关于数据组织的规范化形式是关系型数据库的创始人之一 IBM 公司的科德( E F Codd)首先提出的。早在1971年科德就提出了规范化理论( normalization theory),并在随后一系列的论文中逐步形
16、成一整套数据规范化模式。这些模式已经成为建立关系数据库的基本范式。第一范式第一范式( first normal form,简称 1st NF)要求同一张表中没有重复项出现,如果有则应将重复项删除。这个删除重复项的过程就称为规范化处理。第二范式第二范式( sencond normal form,简称 2nd NF)要求每个表必须有一个(而且仅一个)数据元素为主关键词( primary key),其它数据元素与主关键词一一对应。主关键词在表中必须具有唯一性,作为主关键词的数据项中不能出现重复的记录。如表所示 ,其中预审项目表中的项目编号是主关键词,那么该表中不能出现相同的项目编号。设置关键词大大方
17、便了表的维护和查询检索。预审项 目表(基表)审查项 目表(基表)农 用地 转 用方案(基表)补 充耕地方案(基表)征地方案(基表)项 目 编 号(主关 键 字)项 目 编 号(主关 键 字)项 目 编 号(主关 键 字)项 目 编 号(主关 键 字)征地 编 号(主关 键 字)项 目名称 项 目名称 项 目名称 补 充耕地 责 任单 位 被征用土地 权 属单 位项 目承担 单 位 农 用地面 积 拟 使用年度 计划指 标补 充耕地承担单 位权 属状况申 报时间 耕地面 积 拟 使用 结转计划指 标已 补 充耕地面积征地 补偿费 用 标准 土地利用规划实施管理数据库表的关键词设置 第三范式第三范
18、式( third normal form,简称 3rd NF)是指表格中的所有数据元素不但要能够唯一地被主关键词所标识,而且他们之间还必须相互独立,不存在其它的函数关系。也就是说对于一个满足 2nd NF的关系表来说,表中有可能存在某些数据元素的函数还依赖于其它非关键词数据元素的现象。项目编号(主关键字)项目名称项目承担单位申报时间函数依赖关系a项目名称项目面积其中农用地面积耕地面积函数依赖关系b项目编号(主关键字)项目面积其中农用地面积耕地面积传递依赖关系c在图 b中,项目面积、其中农用地面积、耕地面积等数据项函数依赖于项目名称,而图 a显示项目名称函数依赖于项目编号,故项目面积、其中农用地面积、耕地面积等数据项能通过项目编号唯一地被标识(见图 c)。这种在同一张表中 A函数依赖于 B,而 B函数依赖于 C的现象被称之为 “传递依赖 ”(transitive dependence)。 3rd NF为了确保关系数据库能够唯一并准确运行,要求必须在数据结构中消除这种传递依赖的现象。