第六章系统总体设计一、应用软件系统总体结构设计(一)、系统设计阶段的任务系统设计阶段的任务是根据新系统的逻辑模型,考虑实际的技术、经济和运行环境等条件,确定系统的物理实施方案,即解决“系统如何做”的问题。系统设计阶段的主要活动有:1.系统总体设计2.系统详细设计3.编写系统设计说明书(二)、系统生命周期各阶段费用系统开发:20%、分析与设计:35%、编程序:15%、测试程序:50%、系统维护:80%、修改的费用:90%(测试+维护)提高系统的可修改性对于节省开发和维护的人力、物力有重要地位。使系统具有可修改性是系统总体设计着重要解决的问题。(三)、结构化设计的基本思想结构化设计是运用一组标准的准则和工具帮助系统设计员确定软件系统是由哪些模块组成的,这些模块用什么方法连接在一起,才能构成一个最优的软件系统结构。它的基本思想是:1.模块化一个软件系统由若干个模块组成。一个模块就是一个处理功能,对给定的输入信息,进行加工处理,得到输出结果。在结构化设计中,一个模块的功能应当简单明确,易于理解,且模块之间的联系应尽可能少。2、自顶向下,逐步求精系统划分模块的工作按层次进行,即:先把整个系统划分为若干个模块,每个模块再划分为若干个更小的模块,直到最低层的模块是功能相对独立、不能再分解为止。3、上层模块分解为下层模块的3种结构形式上层模块分解成下层模块,有三种基本的结构形式:顺序结构、分支结构、循环结构。不管一个系统多么复杂,模块间的关系都是着三种关系的组合。(四)、模块划分的描述—控制结构图控制结构图用来描述模块之间的层次关系、调用关系和信息传递关系,是系统物理结构的主要工具。控制结构图中采用的符号:(五)、控制结构图的绘制方法依据:数据流程图首先将上层数据流程图映射为上层控制结构图,由上层开始,逐步下推。DFD中的“处理功能”映射为“模块”DFD中的输入、输出分别映射为模块的输入、输出。在进行模块分解时,可以采用两种不同的方式:以转换为中心结构的分解:如果待分解的模块是一个数据凝聚的模块,称该模块为以转换为中心的模块。可以把它分解为输入、处理、输出三大模块。以业务为中心结构的分解:如果模块为逻辑凝聚的模块,可以将它分解为一个检查业务类型的模块和一个调度模块,根据不同的业务类型,调度模块调用不同的下层模块。两个重要的模板:以转换为中心结构的分解:P164的图6-9以业务为中心结构的分解:P166的图6-11模块调用关系数据传递控制传递选择传递循环调用数据存储(六)、模块之间调用的原则每个模块有自己的任务,只要接到上层模块的调用命令时才能执行。模块之间的通信仅限于直接上下级模块。若有模块要与非直接上下级模块发生通信关系,必须通过其上级模块进行传递。模块调用顺序为自上而下。(七)、模块划分的原则模块独立性:模块之间的关系尽可能少。系统容易开发、系统可靠性高、系统容易维护划分模块时,应使模块之间的联系尽可能少,而模块内自身联系尽可能密切。我们分别用模块的“凝聚”和“耦合”来表示模块内和模块之间的联系程度。模块凝聚:“模块凝聚”用来衡量一个模块内部自身功能联系的紧密程度,也是衡量模块划分质量好坏的一个重要标准。(八)、模块凝聚的级别按模块的凝聚程度划分,可分为5级:偶然凝聚:模块内部各组成部分的处理彼此无关,是最差的模块凝聚方式。逻辑凝聚:模块包括一系列同种类型的活动,为了使用该模块,必须从中选择出所需要的活动。时间凝聚:模块的各个处理动作与时间有关。如初始化模块,必须按一定的次序执行。数据凝聚:模块对同一数据执行多个处理活动,且表示数据的连续变化。也就是说,数据凝聚的模块是由这样一些活动组成的,这些活动中前一个活动的输出是后一个活动的输入。功能凝聚:模块内所有的活动执行且只执行一个与问题有关的功能。这是系统具有可维护性的一般要求,是凝聚程度最高的模块。(九)、模块耦合耦合是对两个模块之间联接程度的一种度量。模块之间的依赖程度越大,则其耦合程度也就越大。很显然,为了使软件系统具有较好的可维护性和可修改性,模块间的耦合程度应越小越好。(十)、耦合的三种类型根据模块之间传递的信息不同,可把耦合分为三种类型:数据耦合:两个模块之间只传递在处理中所必需的数据。数据耦合是模块间必要的数据通信,是不可避免的。控制耦合:一个模块将控制信息传递给另一个模块,以控制该模块的内部处理逻辑。当发生控制耦合时,说明模块划分不彻底,被调用模块不是执行单一的功能。非法耦合:一个模块和另一个模块的内部发生联系,也称病态耦合,是最差的一种耦合。(十一)、模块划分的原则在划分模块时,应按照“高凝聚、低耦合”的原则。尽量使得每一个模块的功能单一。模块之间的联系尽量少。二、数据库设计采用E-R图进行数据库逻辑设计的一般步骤。由E-R图向关系模型转换的规则。(一)、数据库设计的目标和要求目标:建立一个合适的数据模型。要求:满足用户要求、满足某个数据库管理系统的要求、具有较高的范式(二)、数据库设计的步骤概念结构设计:现实世界中实体之间的关系逻辑结构设计:按某种数据模型的特性,物理结构设计:数据存储结构和存储方法。(三)、概念结构设计实体:显示世界中任何可以相互区别的事物,可以是一个个具体的东西,也可以是一个抽象的概念。如:教师、学生、教室都是实体,哲学也是一个实体。在我们的例子中,图书、读者、订单、供应商都是实体。属性:实体所具有的性质。如:学生的学号、姓名、性别、班级等都是学生实体的属性。(四)、实体之间联系方式一对一的联系:若两个不同型实体集中,一方的一个实体唯一与另一方的一个实体相对应,称1:1联系。一对多的联系:若两个不同型实体集中,一方的一个实体可与另一方的多个实体相对应,但另一方一个实体只与本方一个实体相对应,称1:m联系。多对多的联系:若两个不同型实体集中,任何一方的一个实体都与另一方的多个实体相对应,称m:n联系。(五)、E-R图如何描述信息世界中实体和实体之间的关系?E-R图,也称实体联系方法,用形式化的方法表示了实体以及实体之间的联系。E-R图中的图形元素:要求:根据问题画出E-R图。(六)、逻辑结构设计按选定的数据库管理系统的要求来设计数据模型。关系型数据模型将E-R图转换为关系模型的步骤:E-R图中的每一个实体,都应转换为一个关系。若实体之间是1:1的联系,可以合并为一个关系。1:m的联系:将“1”方的主键放入m方关系中作为“外部键”。m:n的联系,为联系单独建立一个关系。2003年10月有关职工与科研项目的E-R图如下:写出最终的关系数据库的逻辑模型.实体联系属性学号姓名性别出生年月课程编号课程名称学时成绩学生学习课程P142解析按照转换原则,有四个关系:职工(职工号,姓名,年龄,写别,职称,部门号)部门号为外来关键字部门(部门号,部门名,地点)项目(编号,名称,来源,经费)职工参与项目(职工号,项目号,担任工作)三、代码设计(一)、代码设计的基本原则唯一性:每个代码所代表的实体必须是唯一的。简单性:代码结构尽量简单,长度尽量短,以方便输入,提高处理效率。易识别性:代码逻辑性强,表意明确。可扩充性合理性:编码方法必须合理,必须与分类体系相适用。规范性(二)、常用编码方式顺序码:以某种顺序形式编码,如按人口多少的顺序对城市编码。重复码:采用与原来手工系统相同的编码。成组码:也叫位码、数字码、分组码。将代码分成几段,每段表示一种含义,每段由连续数字组成。如学号、身份证号。表意码:也叫字符码、助记码。将表示实体特征的文字、数字或记号直接作为编码。如:CERNET、CSTNET专用码:具有特殊用途的编码。ASCII码组合码:也叫合成码、复杂码。教室代码(三)、管理信息系统中的代码部门代码:一般使用成组码人员代码:顺序码、组合码物资代码:一般使用成组码,用表意码辅助。设备代码:一般使用组合码产品代码:成组码、表意码会计科目代码:成组码薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿羁膂莈蚅袇膁蒀蒈螃膀膀蚃虿腿节蒆羈芈莄蚁袄芈蒆蒄螀芇膆蚀蚆袃莈蒃蚂袂蒁螈羀袁膀薁袆袁芃螆螂袀莅蕿蚈衿蒇莂羇羈膇薇袃羇艿莀蝿羆蒂薆螅羅膁蒈蚁羅芄蚄罿羄莆蒇袅羃蒈蚂螁羂膈蒅蚇肁芀蚁薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿羁膂莈蚅袇膁蒀蒈螃膀膀蚃虿腿节蒆羈芈莄蚁袄芈蒆蒄螀芇膆蚀蚆袃莈蒃蚂袂蒁螈羀袁膀薁袆袁芃螆螂袀莅蕿蚈衿蒇莂羇羈膇薇袃羇艿莀蝿羆蒂薆螅羅膁蒈蚁羅芄蚄罿羄莆蒇袅羃蒈蚂螁羂膈蒅蚇肁芀蚁薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃