资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,江西财经大学信息管理学院,1,信息系统分析设计,结构化系统设计,Information System analysis and design,-Design of the structured system,江西财经大学,信息管理学院,本章主要内容,系统设计的任务,总体设计,结构化设计的概念、基本原则,从数据流图导出结构图,详细设计,代码设计,输出设计,输入设计,人机对话设计,模块详细设计,数据库设计、网络设计,系统设计说明书,转换,从分析到设计,现实领域的各种需求,计算机领域的具体实现,针对需求,进行计算机信息系统的物理模型设计,7.1,系统设计的任务,通俗地说,设计就是要回答“怎么做”,完成技术实现方案的制定,即信息系统的物理模型,一个逻辑模型,可以提出多个物理模型,根据物理模型进行实施,得到最终的物理系统,设计系统之前,先看看评价信息系统的标准,这,些标准对任何设计方法都适用:,信息系统的功能:,是否满足用户的需求,系统的效率:,响应时间、操作的方便性,系统的可靠性:,抗干扰能力、故障恢复,系统的工作质量:,准确性、使用效果,系统的可变更性:,修改和维护的难易程度,系统的经济性:,系统收益与支出比,7.1.1,设计标准,系统设计阶段的主要工作,总体设计,:,根据逻辑模型,完成系统体系结构(计算模式)、系统运行平台、系统的软件结构等设计,.,详细设计,:,代码设计,输入设计,输出设计,人机交互设计(用户界面设计),模块处理过程设计(模块详细设计),数据库设计,安全设计,系统设计的流程,系统运行平台的设计,设计内容:系统网络配置、硬件平台选择、软件平台选择等。,影响系统运行平台设计的因素,系统软件、实用软件的选型,软件选型原则,符合开放式系统的发展大方向,有必要和足够的软件工具支持,对新技术的支持能力,较低购买的成本,系统软件、实用软件的选型,软件选型的内容,操作系统,数据库管理系统,开发语言,/,工具,(,1,)开放性,(,2,)易用性,(,3,)面向对象性,(,4,)支持团队开发,系统硬件选型,原则,立足于通用机型,满足应用的速度要求,统一的标准,具有支持所选择的软件平台的能力,设备配置,服务器,可管理性、可用性、容错性,网络设备,网络结构、传输介质、互联设备,外部设备的配置,包括各种输入输出设备,安全设施的选择,不间断电源、防雷设施、安全加密设施,7.2,结构化设计的概念,结构化:自上至下,逐步分解求精,结构化设计:模块化,模块化,模块化的基本思想,使用结构化设计方法一定程度上能够简化系统结构,使系统容易修改和理解。,具体做法:,把整个软件划分为多个部分,其中每一部分的功能简单明确,即程序模块(可以是子过程或函数),划分模块的工作按层次进行,上层模块调用下层模块,每一个模块应尽可能独立,模块间的调用接口要阐明(模块名称、输入数据、输出数据),接口成本,成本,模块数量,单元模块成本,软件总成本,模块数量和软件成本,粒度太大,单个模块复杂度升高、维护困难,粒度太小,管理与运行成本升高,试想一下:每个经理管理协调多少个下级合适?,7.2.1,模块的概念,模块,(Module),一词使用很广泛。通常对应于用一个名字就可以调用的一段程序语句(子程序或函数),模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性。,计算工资,模块的图形表示方法,7.2.2,模块结构图,结构图,(Structured Chart),描述系统的模块结构及模块间的联系,结构图中的主要成分有:,模块:,用长方形表示,调用:,从一个模块指向另一模块的箭头表示前一个模块调用后一个模块。有循环调用和条件调用,数据:,用带圆圈的小箭头表示从一个模块传递给另一模块的数据(有实义),控制信息:,带涂黑圆圈的小箭头表示一个模块传送给另一模块的控制信息,结构图基本符号,A,B,C,B,A,A,B,C,B,A,(a),直接调用,(b),顺序,(c),选择,(d),循环,计算,获得有效数据,生成报表,打印报表,获得编辑数据,核对数据,打印表头,打印表尾,读入数据,编辑数据,显示无效数据,打印一行,有效数据,EOF,编辑数据,EOF,有效数据,编辑数据,有效数据,结果,编辑数据,数据,数据,EOF,EOF,结果,日期,行,行,行,总计,一个完整的结构图,模块设计的度量标准,为了衡量模块的相对独立性,提出了模块间的耦合,(Coupling),与模块的内聚,(Cohesion),两个标准,耦合:模块和模块之间的联系程度,内聚:模块内部各元素之间的联系程度,设计目标:,模块间的联系越少越好,模块内的联系越紧越好,为什么?,影响耦合度的因素,如果使用模块,A,需要了解模块,B,,那么,A,和,B,是耦合的。影响模块间耦合程度有三方面的因素:,联系方式,模块间通过什么方式联系,来往信息的作用,模块间来往信息作什么用,数量,模块间来往信息的多少。,混合,控制,数据,用过程 直接引用,语句调用,少,多,数量,方式,作用,0,离坐标原点越远,耦合程度越高,模块联系方式,直接引用:,一个模块直接存取另一个模块的某些信息,例如全程变量、,FORTRAN,的,common,量、语言的,extern,量、共享的通信区等。也称为公共环境耦合,(common environment coupling),降低这种耦合程度的办法是使数据局部化,即使用局部变量,过程语句调用:,一个模块调用另一个模块,所有数据来往都以参数或返回值方式传递并使用,来往信息的作用,模块间的来往信息可以作数据用,也可以作控制信息用,A,取平均成绩,或最高成绩,平均,/,最高,B,(a),控制耦合,成绩,取最高成绩,取平均成绩,A,平均成绩,最高成绩,(b),数据耦合,来往信息的数量,模块间传递的信息量越大,它们之间的耦合程度越高。,一个模块最好只了解它确实需要使用的数据,而完全不知道其他数据的存在(,独立性好,),耦合的类型,根据以上因素,对耦合分类如下:,数据耦合:,采用子程序调用,调用模块将需要进行处理的数据传递给被调模块。数据耦合是不可避免的。,标记耦合:,如果调用模块将整个数据记录传递给被调模块,而被调模块只使用了部分数据项,则称为标记耦合或特征耦合。,控制耦合:,一个模块将控制信息传递给另一个模块,以控制被调模块的内部处理逻辑。(可以分解),公共环境耦合:,如果两个模块共享同一全局数据,称为公共耦合。,内容耦合:,两个模块之间的内部属性有直接关联,也称病态耦合。(某些,GOTO,语句),减低耦合的设计原则,结构化设计要求模块间的耦合程度尽可能小。,为此应:,用过程语句调用其他模块,模块间的参数作数据用,模块间的参数尽可能少,7.2.4,模块的内聚,模块的内聚反映模块内部联系的紧密程度。,一个模块只需要做好一件事情,不要过分关心其他任务。,高内聚性的好处是可以提高程序的可靠性。,有一个调查表明,,50,的强内聚性子程序是没有错误的,而只有,18,的弱内聚性子程序才是无错的,弱内聚性子程序的出错机会要比强内聚性出错机会高,6,倍,而修正成本则要高,19,倍。,代码大全,内聚的类型,模块的内聚可以分以下七类:,.,偶然内聚,(coincidental cohesion),.,逻辑内聚,(logical cohesion),.,时间内聚,(temporal cohesion),.,步骤内聚,(procedural cohesion),.,通信内聚,(communicational cohesion),.,顺序内聚,(sequential cohesion),.,功能内聚,(functional cohesion),当同一个子程序中的操作之间无任何联系时,为偶然内聚性,也叫作“无内聚性”。,比如只是为了将程序中某几处凑巧相同的一些语句组合起来形成的一个模块:,P,Q,R,S,1,、偶然内聚,B=A;,read(Cardfile);,D=C;,T,将几个逻辑上相似的功能放在一个模块中,准备,算平均成绩,算最高成绩,返 回,Y,取平均成绩,?,N,比如常见的出错处理模块,工作模块发现错误后,调用错误处理模块,将错误号作为控制参数传入,然后出错处理模块根据不同的错误号执行相应的操作,2,、逻辑内聚,将在有限时间单元内处理的成分组合为同一模块,比如在程序初始化时所作的处理:,m_Medirecno=psPerson.Medirecno,txtMedirecno=psPerson.Medirecno,txtTel=psPerson.Tel,txtContact=psPerson.Contact,txtAddr=psPerson.Addr,txtMedirecno.Enabled=False,可视化程序设计中在窗口打开时初,始化窗口中得控件内容,如列表框的项目、文本框或单选钮的缺省取值,还比如:,C,+,的构造函数、析构函数,3,、时间内聚,4,、步骤内聚,当子程序中的操作是按某一特定过程结构进行,的,,就是步骤内聚。,例如:用户想按一定的顺序打印,子程序设计成是用于按顺序打印销售收入、开支、雇员电话表的。,步骤内聚在时间内聚的基础上增加了次序的约束,当模块内的成分引用共同的数据,而不存在其他联系时,称为通信内聚,修改库存,购货单,开发货单,库存,A,、销售模块,B,、产生留退名单模块,期末不及格统计,累计不及格统计,留退名单,学籍表,5,、通信内聚,模块中某个成分的输出是另一成分的输入。,比如显示期末成绩通知:,读入学号,读取成绩,取不及格科目,取科目补考安排,显示数据,判断留退级,6,、顺序内聚,6,、顺序内聚,顺序内聚有较强的内聚性,是步骤内聚和通信内聚的结合,例如:一个模块用于计算高于平均分的人数,步骤是先循环累计总分,然后计算得到平均分,最后循环统计高于平均分的人数,有步骤的先后,而且前一个步骤的结果要用于后一步骤的运算中,但仍然不是最高的内聚类型,7,、功能内聚,一个模块包括并且仅仅包括为完成一个具体任务所需要的所有成分,称为功能内聚。,功能内聚性是最强也是最好的一种内聚,例如:打印职工名单,,PrintStaffList(),例如:计算平均分,,CalculateAvg(),仅用一个动宾词组能明确指出这个模块的所有功能。,内聚的评分,耦合和内聚的概念是,Stevens,等人提出的,是测量一个模块化系统好坏的标志。,按他们的观点,给上述七种内聚评分如下:,功能内聚分,顺序内聚分,通信内聚分,步骤内聚分,时间内聚分,逻辑内聚分,偶然内聚分,可以给一个软件的所有模块打分,最后计算平均分,作为软件结构质量评价的参考,耦合和内聚的关系,二者就像连体兄弟,,存在紧密相关的关系:,模块内的高内聚往往意味着模块间的松耦合,反之,低内聚一般会带来紧耦合,7.2.6,模块的扇入与扇出,模块的扇入是,指有多少个上级模块调用它。,模块的扇出是,指模块的直属下层模块的个数,扇出系数不宜过大,A,的扇出为,2,A,B,C,B,1,C1,C2,C3,B,的扇出为,1,C,的扇出为,3,T,T,的扇入为,2,减少高扇出,争取高扇入,清真寺型,不够好,底层模块复用度低,金字塔型,总体设计原则,设计功能内聚的模块,模块使用过程语句调用其他模块,传递的参数作数据用,并且尽可能少,模块内语句数一般为,50100,平均扇出系数最好是,35,高层模块高扇出,最低层模块高扇入,一个判断的作用范围是判断所在模块的控制范围的子集,7.3,数据流图导出初始结构图,从数据流程图导出系统的初始结构图,首先要区分数据流程图的结构类型,然后根据不同的类型采用不同的方法把数据流图映象成相应的模块结构。,数据流程图,DFD,的结构类型,(,1,)变换型,DFD,一个数据流程图可以明显地分成输入、处理和输出三部分。,(,2,)事务型,DFD,事务型数据流程图一般呈束状形。,(1),变换型结构,由输入、变换中心,(,或称主加工,),和输出三部分组成。,基本模型:,变换,中心,输入,路径,输出,路径,变换型数据流图,输入,信息,物理,输入,格式,检查,处理,显示,正确,信息,结果,物理,输出,数据,变换中心,输出,逻辑,输入,逻辑,输出,输入,(2),事务型结构,特征,:具有在多种事物中选择,执行某类事物的能力,基本模型:,事务,中心,接受路径,动作,路径,(3),大型系统,DFD,中,变换型和事务型结构往往共存,:,T,事务中心,传入,变换,传出,(,二,)DFD,导出初始,SC,的过程,两种转换策略,/,技术,变换分析,事务分析,一般过程,先设计模块结构顶端的主模块,然后,“,由顶向下逐步细化,”,最后得到一个,与数据流图相对应,的程序结构,变换型,DFD,事务型,DFD,初始,SC,初始,SC,变换分析,事务分析,“,由顶向下逐步细化,”,的思想,找出,“,顶,”,在哪里,设计一个相应的主控模块,每创建一个新的模块时,必须决定该模块的外部特征,该模块的功能,即该模块,“,做什么,”,该模块同其调用模块的界面,即调用时传送的参数,对已创建的模块进行细化,考虑这个模块应该,“,怎样做,”,才能完成它的功能,于是又要创建下一层的新模块,再回到上一步,通过这样,“,先决定做什么,再考虑怎样 做,”,循环往复,设计过程就有序地进行,直至获得整个完整的结构层次。,变换型,事务型,(三)变换分析设计方法,步骤:,1,找出主加工、逻辑输入和逻辑输出,2,设计模块结构的顶层和第一层,3,设计中、下层模块,1,区分输入、主加工、输出部分,在,DFD,上标明分界线,(1),确定,逻辑输入,离物理输入端最远的,但仍可被看作系统输入的那个数据流,方法,:从物理输入端开始,一步步向系统的中间移动,直至达到这样一个数据流:它已不能再被看作为系统的输入,则其前一个数据流就是系统的逻辑输入。,(2),确定,逻辑输出,离物理输出端最远的,但仍可被看作系统输出的那个数据流,方法:从物理输出端开始,一步步向系统的中间反方向移动,直至达到这样一个数据流:它已不能再被看作为系统的输出,则其后一个数据流就是系统的逻辑输出。,(3),对系统的每一股输入和输出,都用上 面的方法找出相应的逻辑输入、输出,(4),确定,主加工,位于逻辑输入和逻辑输出之间的加工,就是系统的主加工,(5),几点说明:,根据经验,几股数据流的汇合处往往是,系统的主加工,每个人都可以有自己的看法,找出来的主加工可能也不同,但一般不会相差太远。,变换中心,1,2,3,4,5,6,7,a,b,c,e,d,r,p,u,w,v,输入部分,输出部分,输入,输出,加工,2,设计,SC,的顶层和第一层模块:,(1),设计一个顶层模块,(,主模块,),,它的功能是完成整个程序要做的工作。,(2),设计结构的第一层:,为逻辑输入设计一个输入模块,它的功能是向主模块提供数据,为逻辑输出设计一个输出模块,它的功能是输出主模块提供的数据,为主加工设计一个变换模块,它的功能是将逻辑输入变换成逻辑输出,第一层模块同顶层主模块之间传送的数据应与数据流图相对应。这里主模块控制并协调一层的输入、变换、输出模块的工作,注意识别出选择或循环调用以及调用条件。,第一级分解后的,SC,M,C,M,T,M,A,M,E,第一层,顶层,c,e,c,e,u,w,u,w,传送信息,第一级分解后的,SC(,另一种画法,),M,C,M,A1,c,e,u,w,c,p,M,A2,4,5,6,M,E1,M,E2,e,p,r,r,w,u,w,3,第二级分解,(,分解,SC,各分支,),自顶向下分解,设计出每个分支,(,输入、加工、输出,),的中、下层模块:,(1),为每一个输入模块设计两个下层模块,一个是,输入模块,,接受数据来源;另一个是,变换模块,,模块调用时传送的参数应同数据流图相对应,(2),输出模块也有两部分组成,一部分是,变换模块,,将数据变换成输出的形式;另一部分是,输出模块,上述设计过程由顶向下递归进行,直至达到系统的输入端或输出端,(3),变换模块的下层模块,根据数据流图中相应加工的组成情况而定。,输入分支的分解,MA,Get C,b,a,c,Read,D,d,e,c,e,B to C,b,c,d,e,a,b,Get E,Get B,D to E,A to B,Read A,DFD,图,输出分支的分解,M,E,Write,V,u,u,w,u,v,v,Put,U,U to V,Write,W,w,DFD,图,加工分支的分解,M,T,5,4,6,e,c,p,r,u,w,p,r,DFD,图,任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时,(,有一个明显的事务中心,),,以采用事务分析方法为宜。,(,四,),事务分析设计方法,事务分析设计方法步骤:,(1),在,DFD,上确定事务中心。,(2),为,DFD,上的事务中心设计主模块,再为每一种类型的事务处理设计一个事务处理模块。,(3),为每个事务处理模块设计下面的操作模块,再为操作模块设计细节模块。某些操作模块和细节模块可以被几个上一层模块共用。,事务型,DFD,的划分,T,事务,中心,传入,变换,传出,接收部分,发送,部,分,a,事务型,SC,的上层结构,(1),事务控制,Get a,顶层,第一层,a,事务,1,事务型,SC,的上层结构,(2),事务控制,事务分析,发送,动作分支的典型结构,P,T,2,T,1,T,i,A,2,D,2,A,1,D,1,A,3,A,j,D,k,事务层,操作层,细节层,处理层,7.3.3,层次的对应关系,数据流图的层次和结构图的层次存在一定的对应关系,但不是机械照搬。,32,.,.,.,.,.,.,.,P1.4,变换分析举例,-DFD,汇款单,合格的汇款单,处理后的汇款单,收据,明细账,变换中心,输出,输入,业务数据,变换分析举例,-,转换后的,SC,汇款处理系统,取得合格汇款单,计算汇费,记账,输出处理后的汇款单,输入汇款单,格式检查,产生收据,打印收据,合格的汇款单,处理后的汇款单,合格的汇款单,业务数据,处理后的汇款单,汇款单,合格的汇款单,汇款单,处理后的汇款单,收据,收据,业务数据,要求类,型处,理,图书管理要求,无效输入,1.1,新书入库,1.2,还,入库单,罚款单,1.5,注销图书,1.3,还书,1.4,目录文件,借书单,书,单,注销单,借书,借书文件,罚款单,事务分析举例,-DFD,事务,中心,事务分析举例,-,转换后的,SC,图书处理系统,取得图书处理要求,修改目录文件,操作层,细节层,新书入库,注销图书,借书,还书,打印罚款单,修改借书文件,图书管理要求,入库单,借书单,还书单,注销单,7.2.8,结构图优化方法,减少模块间的联系,减少参数传递,特别是控制信息的传递,消除重复功能,消除“管道”模块,考虑变化,控制模块大小,整体考虑,结构图优化举例,问题描述,:,病人监护系统,中的实时监测模块。,该模块使用病床专用设备测量病人的若干生理参数,如体温、脉搏、血压等等。,每个病人各种指标的安全范围由医生预先指定。,每经过一定的时间间隔,监测模块从监视设备读入这些数据,并存入数据库中。,若发现某个指标超出合理范围,则向维修站发出设备故障通知,报告床号。,若发现某个指标越出安全范围,则向护理站发出通知,报告病人号。,分析产生的,1,层,DFD,病人,护理站,病历,合理数据,数据,不安全因素,读取数据,存储数据,检查数据,通报不,安全因素,维修站,不合理数据,FS2,病人监护系统,采集数据,检查数据,处理数据,获取下一个病人,PN,,,FS,EOF,,,EF,EOF,FS,EF,USF,,,EF,USF,FS,PN,EF,,,USF,PN,,,FS,PN,,,FS,,,EF,PN,,,EF,PN,,,FS,FS,SR,读,取,数,据,检查不合理范围,查询安全范围,判定病人是否安全,写,数,据,库,通报设备故障,通报不安全因素,EF,BN,PN,,,FS,EF,PN,BN,初始结构图,PN,病人号;,BN,床位号;,SR,安全范围;,FS,各指标数据;,EF,设备故障标志;,EOF,标志已查过最后一个病人;,FS2,标志指标是否合理;,USF,标志指标不安全,第,1,次改进,“,处理数据”模块没有实质性的功能,所包含的三个子模块相互之间没有什么关联,内聚程度很低。,该模块只是充当了“管道”,改进如下:,废除“处理数据”模块;,直接由主模块调用“通报设备故障”、“通报不安全因素”和“写数据库”三个模块,病人监护,写数据库,通报不安全因素,通报,设备故障,检查数据,采集数据,第,1,次改进结果,第,2,次改进,通报设备故障时应通报床位号而不应是病人号,因此要传递床位号。,床位号,BN,可由“采集数据”模块传给主模块,再由主模块传递给“通知设备故障”模块。但这样做增加了模块间的联系,改为由“采集数据”模块直接调用,PN,,,FS,病人监护,采集数据,检查数据,通报,不安全因素,获取,下一个病人,PN,,,FS,EOF,,,EF,PN,,,BN,EOF,FS,EF,USF,USF,PN,FS2,BN,,,EF,PN,,,FS,FS,SR,SR,读取数据,检查,不合理范围,查询安全范围,判定病人是否安全,写数据库,通报,设备故障,EF,BN,PN,,,FS,EF,FS,第,2,次改进结果,第,3,次改进,若由“检查数据”模块直接调用“通报不安全因素”模块,则可减少模块间的联系,即不用传递,USF,标志(排除控制耦合)。,这样的话,“检查数据”的名字改为“报告不安全因素”更为恰当,第,3,次改进结果,病人监护,采集数据,报告不安全因素,写数据库,PN,,,FS,EOF,,,EF,EF,USF,PN,SR,,,FS,EF,PN,,,FS,查询安全范围,通报不安全因素,PN,,,FS,判定病人是否安全,第,4,次改进,“,获取下一个病人”模块的界面要返回病人号和床位号,如果使“读取数据”模块包括从病人号查床位号的功能,则“获取下一个病人”模块的接口可以简化,第,4,次改进结果,采集数据,获取,下一个病人,PN,EOF,FS,EF,PN,BN,FS,读取数据,检查,不合理因素,从,PN,查,BN,EOF,PN,通报,设备故障,FS2,BN,第,5,次改进,通过床号读取数据,功能很明确,但目前包含在“读取数据”模块中,这部分程序代码如果抽取出来单独成为一个模块更好,名字为“从床号读数据”,该模块可以成为一个公用模块,很,易于重用,第,5,次改进结果,采集数据,获取下一个病人,PN,EOF,FS,EF,PN,BN,FS,EOF,PN,FS2,BN,从,PN,查,BN,从床号读数据,通报设备故障,检查不合理因素,BN,采集病人数据,FS,EF,第,6,次改进,“,从床号读数据”应该是功能单一,调用“通报设备故障”不应属于该模块内容。,将“通报设备故障”改为上层模块调用,使“从床号读数据”模块功能更明确,公用性也更好,第,6,次改进结果,病人监护,采集数据,报告不安全因素,写数据库,判定,下一个病人,PN,,,FS,EOF,,,EF,PN,EOF,FS,EF,USF,PN,EF,SR,EF,FS,PN,FS,SR,采集,病人数据,检查,安全范围,判定病人是否安全,通报,不安全因素,EF,PN,PN,,,FS,从,PN,查,BN,从床号,读数据,通报,设备故障,检查不合理因素,BN,BN,EF,FS,BN,FS,FS2,PN,FS,第,7,次改进,给护士站或维修站的,通报消息可能采用了同一种方式或界面,因此可能会有公用的模块,比如“写一行”(或者“发出警报”之类),因此再抽出一个模块“写一行”,供两个模块调用。,第,7,次改进结果,病人监护,采集数据,报告不安全因素,写数据库,判定,下一个病人,PN,,,FS,EOF,,,EF,PN,EOF,FS,EF,USF,PN,EF,SR,EF,FS,PN,FS,FS,SR,采集,病人数据,检查安全范围,判定病人是否安全,通报,不安全因素,EF,PN,PN,,,FS,从,PN,查,BN,从床号,读数据,通报,设备故障,产生一行,写一行,检查不合理因素,BN,BN,EF,EF,FS,BN,FS,FS2,PN,FS,一行,一行,一行,对已有程序进行重构,重构(,Refactoring,):在不改变程序代码功能的前提下,对程序结构所进行的改造,因为不是总能提前做出最好的设计,或者对遗留系统的维护过程中提高品质而做出的结构变化,参见,重构,改善既有代码的设计,7.5,代码(编码)设计,什么是代码?,用来表征客观事物的一个或一组有序的符号,它应易于计算机和人识别与处理。,一般用数字、字母或它们的组合来表示。,代码设计是科学管理的体现。,代码无处不在:车牌号码、商品编码、身份证号、学号、专业代码,代码的作用,1.,鉴别功能,:,唯一地标识一个实体或属性值,2.,分 类,3.,排序,4.,专用含义,5.,系统集成的基础,6.,在某些场合节省存储空间,代码的特性,唯一化,规范化,系统化,为事物提供一个概要而不含糊的认定,便于数据的存储和检索。,即编码要有规律,符合某一类事物的聚集,提高处理的效率和精度。,也即标准化,符合国家或行业标准,提高数据全局一致性。,代码,无实义代码,有实义代码,顺序码,特征,组合码,层次码,字母,顺序码,系列,顺序码,逻辑码,排序码,无序码,自检码,矩阵码,代码的种类,代码,结构,按代码,特点:,编码简单、简短等,可维护性差,例:在日常生活中,街道两旁的门牌号码一般采用顺序码。,块码,一种特殊的顺序码。它将顺序码按照一定的方式,将编码分成若干段或者块,每一段或块代表一定类型的编码对象。,例:我国邮政编码采用,6,位数码,其第一、二位采用块码标识省、自治区和直辖市,例如第一、二位为,“,43,”,和,“,44,”,均标识湖北省。,特点:,与顺序码相比较,块码具有较好的可维护性。只要分段合适,预留有足够的码,那么该编码就具有较好的维护性,例如前面谈到的部门编码。,该类码较顺序码复杂。块码并不方便分类统计的需求。,层次码,顺序码和块码不适合对具有层次结构的编码对象,例如物品、地区等的编码。层次码是根据编码对象一定的层次关系,确定若干位,并排成一定的层次关系。因此,层次码适合对具有层次结构的编码对象。,例:商场中经营的商品就具有层次结构,按商品大类来分,商品分为百货、服装、家电、体育等,每一大类中又分为中类,如服装类分为男装、女装和童装。每大类的中类又分为小类,,,因此可以采用层次码结构来编码。,特点:结构清晰、可维护强等特点,但是编码的设计较复杂。采用层次码时,首先要理清编码对象的层次结构。,特征码,在编码模型中,为编码对象的多个属性各规定一个位置,(,若干位码,),,从而表示编码对象不同的属性。特征码与顺序码、块码、层次码不同,编码中表示的各属性之间没有关系,是相互独立的。例如表示用材质、直径、形状、表面处理方式属性来为金属材料编码,这种编码就是特征码。,组合灵活、设计简单等优点,一般用于枚举型的编码对象,例:性别、直径、形状等。由于特征码用于枚举型的编码对象,因此比较方便由系统自动编码。,按照编码中采用的符号分类,数字型编码,采用若干位数字进行编码,其数字可以是十进制、八进制、二进制等。,例如我国的身份证号、邮政编码、电话号码等就是采用十进制的数字型编码,计算机中使用的,ASCII,就是采用八进制的数字型编码等。,数字型编码具有排序方便的优点,缺点是对表达编码对象不直观。,字母型编码,字母型编码只允许编码的各位采用字母。,例:国际互联网中域名中的国家编码就是采用相应国家英文名的缩写,,cn,代表中国,即字母型编码。,与数字型编码相比较,字母编码具有容量大特点。且能直观地表达实体或实体属性。通常助记忆码一般采用字母型编码,在编码位有限且编码量大的情况下,可以考虑使用字母型编码。,代码的类型,代码的类型指代码符号的表示形式,一般有:,数字型,:结构简单,使用方便,也便于排序,但对象特征的描述不直观,字母型,:便于记忆,人们有使用习惯。与同样长度的数字码相比,容量大得多。但会出现重复和冲突,数字字母混合型,:兼有前两种代码的优点。但是其组成形式复杂,计算机输入不便,人工录入效率低,错误率高,代码举例,身份证号,国际书号,会计科目,考研报考的学校代码、专业代码,如何保证代码输入的正确性,代码不允许出错,那么如何避免代码错误:,输入技术(如磁卡、,IC,卡、读卡器),列表选择输入(少量),界面中采用下拉表选择,不需要键盘输入,利用数据库中的代码表对照检查(较多),代码量很多时,下拉选择不可取,可在数据库中为代码及其含义建立数据表,手工输入后,在数据库中进行查询,如果存在则可显示详细内容,否则表示输入有误,代码中设置校验位(上述方法都不适用时),代码自身具有一定的验证功能,代码设计的原则,代码设计必须遵循以下基本原则:,1.,唯一性,2.,合理性,3.,可扩充性(想想千年虫问题),4.,简单性,5.,适用性,6.,规范性,7.,系统性,代码设计的步骤,代码设计可按下列步骤进行:,确定代码对象,考查是否已有标准代码,根据代码的使用范围、使用时间,根据实际情况选择代码的种类与类型。,考虑检错功能,编写代码表,e.g.,商品,的编码模型,输入,/,输出设计,哪些地方需要进行输入,/,输出设计呢?,输出设计:当,DFD,图中有数据流从系统流出到外部实体的地方。,报表、人机交互的查询、发送邮件等,到其他系统(消息、数据库、文件等),输入设计:外部实体的数据流进入到系统的地方。,本系统操作人员的输入,来自于其他系统的输入(其他的数据库或文件、其他系统的实时响应结果),高度自动化的输入(条码扫描仪、传感器等),7.6,输出设计,系统中的数据输出到人、组织、其他系统,经理,顾客,信用卡,系统,报表,商品查询结果,付款信息,输出设计的内容,确定输出内容:,首先确定用户在使用信息方面的要求,包括使用目的、输出速度、频率、数量、安全性要求等等。然后设计输出信息的内容、信息形式(表格、图形、文字)、数据结构、数据类型、位数及取值范围等等。,选择输出设备与介质:,常用的输出设备有显示终端、打印机、磁带机、磁盘机、绘图仪、缩微胶卷输出器、多媒体设备。输出介质有纸张、磁带、磁盘、缩微胶卷、光盘、多媒体介质等等。,确定输出格式:,输出报表或图形,清晰直观,满足需求和习惯,符合行业标准,什么是高质量的输出设计,以下因素确定了输出质量:,易存取,Accessibility,:很容易被使用,及时,Timeliness,适当,Relevance,:有使用价值,正确,Accuracy,可用,Useability,:有合适的格式,输出设备,输出介质,输出设备和输出介质,Printers,(打印机),Video Display Unit,(显示器),Plotters,(绘图仪),COM Equipment,(串行端口设备,),Speakers,(喇叭),Paper,(纸),Video Screen,(屏幕),Microfilm/Microfiche,(胶片),Air Waves/Sound,(声音),Disk,(存储设备),IC,卡,输出格式,表格,清单(如各种收费单),汇总表(月报表),对照表(年度对照),图形,折线图(股票走势),柱状图(产品销售业绩),饼图(产品区域分布比例),文字,7.7,输入设计,外部产生的数据如何输入到系统中,经理,顾客,省招办,贷款审批意见,订单,新生档案,1,、输入设计的内容,确定输入数据内容:,包括确定输入数据项名称、数据内容、精度、数值范围。,确定数据的输入方式:,联机终端输入还是脱机批量输入,与数据发生地点、时间、紧急程度有关。,记录格式设计:,记录格式设计得好,能减少数据冗余,降低错误率和操作员劳动强度。,输入数据的正确性校验,:,可能的话直接从已有数据中选择,确定输入设备:,键盘、鼠标、触摸屏、读卡机、字符识别机、光电阅读器、条形码识别机、语音识别仪、图像扫描仪,输入设计的重要性,输入是垃圾,输出是垃圾,(GIGO),批量输入,联机输入,混合方式,2,、输入模式,批量输入的优点,收集和输入可以脱机,输入可以由受过专门训练的人员完成,处理的速度很快,处理可以安排在非高峰时间进行,保险单的录入,人口普查数据的输入,比如国内一些科研项目申请的数据都是各个单位自行录入,保存在盘中上交。,批量输入的不足,数据收集通常是集中式的,数据录入一般需要受过专门训练的人员完成,处理过程有延迟,因此可能造成数据过时,或等到处理完后已经不适用了,因为处理通常在业余时间进行,因此在处理时发现的输入错误,只能在下一次处理时才能纠正(录入人员不熟悉业务),如果程序发生故障,业余计算机操作员没有能力处理,不得不报告系统分析员或程序员(录入人员不熟悉技术),联机输入的优点,数据能够由拥有者进行录入,数据的录入可以尽可能地与他们的源头靠近,对于数据的正确性和可接受性,可以获得快速的反馈,输入的数据能及时更新数据库,从而使数据在最新状态,比如北京市房地产开发企业与购房者签订房屋预售合同时,通过网上签约并下载打印合同文本,实现与政府网的联机备案,保护了消费者权益,联机输入的不足,为了完成录入,设备的花费更多,使用者繁杂,不总是受过良好训练,对用户数据录入的程序控制要求高,数据经常在交易时间录入,因此对正常的机器运行工作量有影响,同样的数据,其录入会比批量录入过程要慢,总的效率低,Magnetic Ink Character Recognition(MICR),Optical Character Recognition(OCR),Optical Mark Recognition(OMR),Image Scanner&Facsimile(Fax)Machines,Point-of-Sale Device(POS),Automatic Teller Machine(ATM),Intelligent Card,Keyboard,Mouse,Joystick,Pens,Scales,Voice Recognition,Touch Screen,3,、输入设备,格式设计例子,中国邮政汇款单,邮编,用户填写,邮局填写写,业务,种类,普通汇款,加急汇款,电子汇款,特急汇款,礼仪,自行通知,划拨,附言,入帐,支票,附加,种类,收款人,姓名,汇款,金额,佰 拾 万 千 佰 拾 元 角 分,收款人地址,开户局及帐号,汇款人地址,汇款人姓名,汇 票 号 码,汇款金额,汇费,手续费,收汇日期,经办员,:,复核员,:,检查员,:,5,、输入设计的原则,最小量原则,仅输入必要的数据,尽量让系统计算或导出数据,简单性原则,输入的准备、输入过程应尽量容易,以减少错误的发生,并在适当的地方使用代码,早检验原则,对输入数据的检验尽量接近原数据发生点,少转换原则,输入数据尽量用其处理所需形式记录,以免数据转换时发生错误;直接使用已有的数据,比如采用,EDI,(电子数据交换),XML,,从一个系统到另一个系统数据直接使用,不需要再次输入,输入数据的错误,没有药可以阻止死亡,也没有规则能防止错误,弗洛伊德,不管怎样设计,总是免不了会有错误,可以针对不同的错误采取一定程度的防范措施。错误有以下几类:,数据内容错:这是由于原始单据有错或录入时发生错误,数据多余或不足:这是收集中的错误,如原始单据丢失或重复,数据的延误:由于输入数据迟缓导致处理推迟,不仅影响业务工作,还可能使输出结果变得无价值,数据校验的方法,重复验证:如由两个或更多操作员录入相同的数据,视觉验证:如从终端上键入数据,在屏幕上校验之后再送到计算机处理,分批汇总校验:分批计算,累计总数验证,控制总数校验:,数据类型校验:按照数据类型进行输入验证,格式校验:比如合同号编码有固定的格式,可按位检测,逻辑校验:如月份应是,日期应是,界限校验:如一次取款为,50,2000,记录计数校验:,平衡校验:如借贷要平衡,匹配校验:如在主表中验证指定代码是否存在
展开阅读全文