登陆注册
49438300000026

第26章 物流信息系统的设计(1)

本章要点

物流信息系统设计是物流信息系统建设中承接系统分析和系统实施的重要环节,物流信息系统设计科学、正确与否将直接关系系统能否正确实现以及系统的质量如何。通过本章的学习,首先要理解物流信息系统的结构化设计的思想、系统总体结构的划分。其次,对于物流信息系统详细设计各部分,要求掌握代码设计、数据库设计、输入输出、处理界面设计等的基本内容和实现方法,理解系统设计说明书的内容及其编写。

5.1 结构化系统设计

物流信息系统是管理信息系统在物流领域的应用,所以管理信息系统的结构化系统设计方法和步骤同样适用于物流信息系统的设计。结构化的物流信息系统设计方法是强调开发方法的结构合理性和所开发的物流信息系统软件的结构合理性的方法。

物流信息系统设计的结构化方法强调用系统工程的思想和工程化的方法,按照用户至上的原则,遵循自顶向下的设计方法,结构化、模块化地进行物流信息系统的设计。结构化系统设计通常和结构化分析方法衔接起来使用,以数据流程图为基础,得到物流信息系统软件的模块结构。结构化系统设计方法特别适用于变换型结构和事务型结构的物流信息系统。在系统设计过程中,从整个程序的结构出发,利用模块结构图来表达程序模块之间的关系。

5.1.1 结构化系统设计概述

物流信息系统的结构化设计强调把一个物流系统设计成具有层次的模块化结构,希望得到的系统的每个模块能完成一个相对独立的特定功能,模块之间的接口简单。

模块结构图是1974年由W.Stevens等人从结构化设计的角度提出的一种工具。

它的基本做法是将系统划分为若干个子系统,子系统下再划分成若干个大模块,大模块内再划分成若干个小模块,而每个模块是具有输入与输出、特定的逻辑功能、运行程序和内部数据的一组代码。在系统设计中,一般只关心模块的外部信息,即模块能完成什么样的功能、模块之间的数据传递和调用关系,具体的实现将在系统实施阶段完成。

1.模块结构图的符号和含义

模块结构图主要由模块、调用、数据信息和控制信息四个部分构成的。

(1)模块

在物流信息系统设计中,模块是指一组程序语句,它包括了输入与输出、逻辑功能、运行的程序和内部信息。一个模块中的输入来源和输出去向在正常情况下都是同一个调用者,即一个模块从调用处获得输入信息,然后经过模块本身的处理,再把产生的输出信息返回给调用者。模块的逻辑功能描述了该模块能够做什么事情,具备什么功能,即能够把输入信息转换成什么样的输出信息。模块的输入与输出、逻辑功能是模块的外部属性,是物流信息系统设计阶段要讨论的问题。模块的内部信息是模块执行的指令和在模块运行时需要的属于该模块自己的数据,和运行的程序一样,都是模块的内部属性,在程序设计中讨论。

在模块结构图中,用矩形来表示一个模块,模块的名称写在矩形框里面。为模块命名时,要尽量使用简短的语句来表达模块的功能。通常,模块的名称一般至少由一个动词和一个作为宾语的动宾式短语组成,与数据流程图中数据处理的命名基本一致。

(2)调用

调用指的是一个模块和它的下属模块之间的从属调用关系,一般用从上级模块指向下级模块的箭头来表示。常用的调用关系有无条件调用、循环调用和选择调用。

在模块结构图中,一个模块只能与它的上一级模块或下一级模块有直接联系,而不能越级或与同级模块发生直接联系。若同级模块之间有联系,则必须通过它的上级或下级模块进行传递。

(3)数据

数据是指两个模块之间传递的信息,也是反映模块之间关系的一个重要手段。数据可用两个模块之间带圆圈的小箭头来表示。

(4)控制信息

两个模块之间传递的不仅有数据信息,还可能有控制两者执行顺序的信息,即控制信息。

2.模块划分的标准

在划分模块时,要遵循的总的原则是:尽量把密切相关的子问题归到同一个模块;把不相关的子问题归到系统的不同模块。模块的独立程度可由内聚和耦合两个标准来衡量。耦合表示模块之间相互连接的紧密程度,内聚表示一个模块内部各个元素彼此结合的紧密程度。

(1)模块的耦合

模块耦合是描述模块之间联系的标准,耦合程度越低表示模块之间的联系越少,模块之间的独立性就越强,就越容易独立地进行编程、测试,一个模块中产生的错误对其他模块的影响也就越小。模块之间的耦合形式决定了模块之间的联系程度。通常,两个模块之间的耦合有数据耦合、控制耦合、公共耦合和内容耦合。

1)数据耦合

如果两个模块之间仅仅通过数据交换信息,那么这种模块之间的耦合称为数据耦合。数据耦合是系统中必不可少的联结形式,是一种最低的块间联系,也是一种理想的模块联结。可以通过模块划分,将一个系统内所有的模块设计成只有数据耦合的联结。尽管数据耦合是一种理想的联结方式,但是如果系统内全部是数据耦合,则会造成模块之间传递的数据量过大,也会带来不好的影响。

2)控制耦合

如果在两个模块之间传递的有控制信息,那么这种模块间的耦合就称为控制耦合。控制耦合和数据耦合很相似,不同之处是控制耦合中的参数含有控制信息,而数据耦合中的参数仅仅作为数据使用。所以,从严格意义上来讲,上面定义的控制耦合是一种数据-控制耦合。控制耦合可以通过模块的再分解等方式避免,转换成数据耦合。控制耦合可以减少模块间传递信息的数量,所以,某些情况下,控制耦合还是有一定的必要。

3)公共耦合

如果两个模块之间通过一个公共的数据区域传递信息,那么这种模块间的联系称为公共耦合或公共数据域耦合。公共数据域是多个模块公用数据的区域,如一个共享数据的缓冲区或一个数据文件等。

公共耦合是模块间一种不好的联结形式。当一个公共数据域被多个模块共同使用时,模块数越多,则模块之间的联系越复杂,那么公共数据域数据的维护、保护等则变得非常复杂。但是,公共耦合可以作为数据耦合的一种补充,如果当一个模块与另一个模块需要传递大量数据时,采用公共耦合的联结形式比全部传递参数的数据耦合要方便易用。

4)内容耦合

如果一个模块需要使用另一个模块的内部信息,那么这种模块之间的联系称为内容耦合,如一个模块访问另一个模块的内部数据、一个模块调用执行另一个模块的部分程序代码、模块的出入口不符合单入单出的原则等都会造成内容耦合。内容耦合的联系程度很高,应坚决避免使用这种块间耦合。

综上,在对一个物流信息系统进行模块设计时,对模块间的联系,应遵循如下原则:模块间应尽量使用数据耦合,必要时采用控制耦合,应限制公共耦合的模块数,坚决避免内容耦合。

(2)模块内聚

内聚是用来表示模块内部各组成部分之间联系程度的概念。简单地说,一个具有理想内聚形式的模块只能完成一个子功能。根据模块内部联系程度的不同,模块的内聚可以分为以下七类:

1)偶然内聚

偶然内聚是指为了节省存储空间、减少程序量,把各个模块中共同的操作抽象出来,组成一个模块,而实际上这些语句并没有什么内在的联系。造成偶然内聚的主要原因是在计算机产生初期,内存空间很小,程序员强调缩短程序的长度,以至于将没有联系的语句组织在一起的情况比较多。另外,人们为了坚持结构化程序设计,避免使用GOTO语句,也会出现这种情况。偶然内聚的模块不便于修改,因为模块内一个语句的修改不一定对与它相关联的所有模块都适合。

2)逻辑内聚

逻辑内聚是指将几个逻辑上相似的功能放在一个模块中。模块“取最高在库时间/平均在库时间”就是逻辑内聚。把“取平均在库时间”和“取最高在库时间”这两个相似的功能放在一起而组成一个模块。这里需要模块“取平均在库时间”传递一个开关变量,根据开关变量判断执行哪一个分支。这样做,能够节约一定的空间,但是会引起修改困难,如果现在不仅要知道最长在库时间是多少,而且还要打印出最长在库时间商品的名称、数量,这样的修改就很难适应“取平均在库时间”的要求了。

3)时间内聚

时间内聚是指把需要在有限时间间隔内处理的成分放在同一个模块内,例如把一些初始化操作或结束操作放到一个模块中。

4)过程内聚

如果模块内的各个组成部分要完成的动作间没什么关系,但必须以特定的次序(控制流)执行,则为过程内聚。过程内聚的模块通常由程序流程图直接演变过来的,它的各处理动作之间没有什么关系,但在同一控制流的支配下集成到一个模块中。所以,过程内聚往往容易导致模块间有较高的耦合,当模块修改时,有时需要修改多个相关的模块。

5)通信内聚

通信内聚是指模块内的成分引用了共同的数据,如使用同一个输入数据或产生同一个输出数据。通信内聚的模块与其他模块间的联系比较简单,但它的各部分的执行次序可以是任意的,容易产生重复的动作。根据数据流程图比较容易判断出一个模块是否是通信内聚。通信内聚的程度已经足够高,当找不到更高的模块内聚结构时,这种方式是完全可以接受的。

6)顺序内聚

如果模块中某些成分的输出是另一个模块的输入,则为顺序内聚。与通信内聚相比,顺序内聚的内聚程度更高,因为无论从数据的角度或执行的先后顺序来看,顺序内聚的模块内各成分的关系更紧密,模块中某一部分的执行更加完全依赖另一部分。但是,由于顺序内聚的模块内可能包含了多个功能,也可能仅为某个功能的一部分,所以,它比下面的功能内聚的模块要差一些。

7)功能内聚

如果一个模块内部的各个组成部分全部并且仅仅为执行同一功能而结合成为一个整体,则为功能内聚。这种模块的内聚程度是最高的。例如,计算利息、求平均库存水平等都是典型的功能内聚的例子。

判断一个模块是否为功能内聚模块的简单有效的方法是,从调用者的角度出发,如果能用一个短语简单明确地描述这个模块是做什么的,分析这个短语就可以发现这个模块是完成一个任务还是多个任务,或者做一些彼此无关的事情。功能内聚的模块都有一个目的、单一的功能,其界面非常清楚,与其他模块的联系低,可读性、可修改性、可维护性和可测试性都很好。所以,在进行模块设计时,应尽可能地追求功能内聚的块内组合。

3.模块设计的注意事项

模块之间的耦合和模块的内聚是模块设计时最重要的两个因素,尽可能地降低模块之间的耦合程度和提高模块的内聚程度是物流信息系统模块设计时的两条重要原则。

但是在实际应用中,仅仅机械地遵守这两条规则是远远不够的,还要结合一些辅助性的原则和人们的经验进行系统设计。下面介绍的一些原则和建议也是人们在长期的系统设计中总结出来的经验和方法,有助于帮助我们改进系统设计结构。

(1)系统结构的改进思路

初步设计好的系统模块结构,应当仔细分析和审查,如果发现有高耦合、低内聚的模块,要通过模块的分解与合并来改进系统结构,从而降低模块间的耦合、提高模块的内聚。常用的方法有:

①可将若干个模块共有一个子功能的部分独立抽出,作为一个新的模块,可被其他模块所调用。

②尽可能多地采用数据信息作为模块之间联系的媒介,通过分解等手段,将一些传递控制信息或其他非数据信息的模块转化为数据联系的模块,以此降低模块之间的耦合程度。

③强调以功能来进行模块划分。尽量做到每一个模块只有单一的功能,对于复杂的模块,则从功能的角度出发进行分解。

④模块设计过程中强调系统整体的最优性,不片面追求每一个模块的最优设计,局部的优化应服从整体设计的安排。

(2)系统的深度和宽度

一般情况下,深度和宽度标志着一个系统的复杂程度,深度表示系统结构中的控制层数,宽度则表示同一个层次模块总数的最大值。

深度和宽度之间具有一定的联系,深度与宽度均要适当。如果深度过大,则可能说明系统划分得不够深入;宽度过大,则有可能带来系统管理上的困难。

(3)模块的扇出和扇入

一个模块的扇出数是指该模块控制的直属下级模块的个数;反之,控制该模块的直接上级模块的个数则为模块的扇入数。

模块的扇出数会直接影响系统的宽度,如果扇出过大,则说明该模块的直接下属模块过多,系统的控制和协调比较困难,同时也意味着该模块的内聚程度可能较低。这时一般通过增加中间层次的控制模块来解决。如果模块的扇出数小,则说明上、下级模块或其本身可能过大,可以考虑采用模块分解的方法,使结构变得更加合理。

模块的扇出数必须不宜过大或过小。经验表明,一个设计得较好的系统的平均扇出数通常是3或4,一般不超过7,否则会使得出错的概率增大。

模块的扇入数通常说明该系统的通用性,扇入数越大,表明共享该模块的上级模块数越多,通用性更强,维护也较方便,但是片面追求高扇入数可能会使模块的独立性降低。

通常,一个较好的系统结构,高层模块的扇出数较高,中间模块扇出数较少,低层模块的扇入数较高。

同类推荐
  • 高效团队的十个特征

    高效团队的十个特征

    团队建设的十把金钥匙,开启高效团队的大门。助力管理者,打造高绩效团队。
  • 个人管理学第二版

    个人管理学第二版

    《个人管理学(第2版)》首次从一门学科的角度提出了个人管理学的概念和体系架构,阐述了个人管理学与相关学科的关系及研究个人管理学的意义,全景式地考察、论述了与人相关的论题,包括人的属性、人与人生的定义、人生的价值和意义、人的基础、管理方法、学业管理、职业管理、婚恋与家庭管理、社会关系管理、健康管理和总体管理。个人管理学是自我认识和自我管理之学,是每个人的必修课。由此可以明了人生,合理地规划人生,系统地、有效地管理自己的方方面面。《个人管理学(第2版)》对各类人员,特别是对职业人士和大学生、研究生有学习和参考价值。
  • 这样卖一定有人买

    这样卖一定有人买

    荟萃卖的智慧,探究卖的学问,传授卖的真谛,是每一位产品销售员,每一个卖场营业员,每一位职业经理人,每一位正在打拼的老板的好帮手。
  • 员工招聘与选拔实务

    员工招聘与选拔实务

    人员招聘与选拔是一项实务性很强的工作仅有人力资源战略,缺少实施战略的合适人选和具体方法是无法达到预期效果的如何实现人员招聘与选拔的目标,把招聘与选拔的工作落到实处;如何从实际出发,设计出行之有效的方案:如何把招聘与选拔的各项工作加以细化;如何避免人员选拔中可能出现的个人偏好,诸如此类的问题《员工招聘与选拔实务》将为您提供最佳的解决方案。
  • 领导者:一种由主动性通往目标的成功模式

    领导者:一种由主动性通往目标的成功模式

    领袖人物的气质之一就是自信和魄力他必须在惊涛骇浪中勇于负责的精神尤其是在商业世界开拓进取的素质与自信是相生相伴的人必须尊重自己才能赢得别人对自己的尊重一位成功的领导者是那些人——他们发现新的游戏规则,在一种秩序的创造中让人们去行动,他使自己的理想成为潮流,他使追随者成为领导者,使领导者成为变革力量的人。他更应该是一个具有一定程序的想像力,主动性和韧性,强烈的成就感与理解他人观点和历程能力的人。
热门推荐
  • 兄弟战争之奇妙的姐姐

    兄弟战争之奇妙的姐姐

    嗯……穿越了 是绘麻的姐姐,好激动啊 哎哎,医生不要动,律师别过来,我对和尚不感冒,人妖走开,还有双子把你们的手拿开,还有我喜欢打游戏不代表我也喜欢制作游戏的人。OMGD!天然呆同学你知道你的眼睛水汪汪吗?喂,大学生别脸红,啊?傲娇小子你不是喜欢绘麻的吗?小明星别添乱了,顺便把这个小屁孩带走 说好只是姐姐的呢?天哪,谁来救救我?
  • 修炼就要找代练

    修炼就要找代练

    重生到玄幻世界,自己无法修炼,得到一个奇怪系统,尽量让所有人成为自己的代练,靠此来掌握功法战技。林南:“我这本xxx秘籍是无价之宝,你拿手里的糖葫芦和我换,我就传授给你。”“哎!别走啊,面包糠也行。”
  • 都市修真天才

    都市修真天才

    他在一次失恋后的一天大雨中改变了他的人生,梦中神秘人给他一本上古修真大主的密卷让他走上了修真的道路,一次风波中他成了校花的贴身保镖。.........神秘阴阳鬼修,上古魔王煞星;清丽仙子圣女,绝世芳华;秘境探幽,真宝落谁人?杨飞成为现修真界大主,收复个个正反势力,天下我有,谁主沉浮,唯杨飞一人统一修真大界,对抗上古魔王........
  • 未来幻想

    未来幻想

    一千二百年前,一颗巨大的黑色蔷薇突然在夜空下绽放,那随风而散的花粉几乎毁灭了整个人类。一千年前从废墟中崛起的人类爆发了全面战争,人类历史进入了空白两百年。八百年前人类达成了和解,组成了东盟和西盟两个巨大的国度开始向宇宙进军,世界历从此被定为新纪年。新纪年856年沐风从梦中醒来,他似乎忘记了什么,也似乎什么也没有忘记。
  • 吟游诗人的弟子

    吟游诗人的弟子

    如果历史没有隐瞒,正义没有龌蹉。真相就只是真相,那么这个世间,应不怕传播者!吟游诗人是传奇的歌颂者,当歌颂者达到了巅峰,本身也是传奇。当黑暗和光明对峙的时候,吟游诗人在这个世间传播着反抗的故事。当半兽人退却北方,战事弭平之后,“曾在神之乐园唱过歌”的传奇吟游诗人再也没有出现。直到有一天,神恩大陆上出现一位黑色头发,黑色瞳孔的少年。
  • 我们的好时光啊

    我们的好时光啊

    初三毕业那年,陈夏树家中发生变故,导致本来就内向的她变得更加孤僻、落魄。直到高中时她遇到了阳光男孩赵颂,赵颂成绩非常好,在年级称第二就没人敢第一,况且他们所在的高中是市里最好的。赵颂不仅成绩好,人也很阳光帅气、暖心善良,身上完全找不出什么瑕疵。这么好的男孩,谁不喜欢?陈夏树虽然一直暗恋他,却因为自卑而始终不敢表白。直到最后,赵颂主动出击了!
  • 我家娘子超旺夫

    我家娘子超旺夫

    魂穿在一名“少年”身上,已是三世为人的时子宁表示很淡定,发家致富不可少,前世恩与仇都要报,然而身边这块前世的牛皮糖为何甩不掉?傲娇男主给养父母甩了个冷脸:“我不管,她是男是女我都要定她了,你们把姿态放低点,坑蒙拐骗也行,总之一定要把她给我哄进门!”女主苦口婆心:“我可是男人,不能给你生儿育女。”男主俊脸爆红:“原来你已经想那么远了。”女主:“......”推荐新文《农家团宝小狐妻》简介:看着日渐红火的老吴家,原本避如蛇蝎的众人发现,自从那个小团子被找回后,接连四代倒尽霉运的老吴家,开始转运了!再看老吴家的男丁们,个个都是能文能武,精明能干,婆娘们更是一个比一个会挣钱。众人:突然觉得自己以前是眼瞎了?!于是……“吴老爷子,乡亲们只认您这个吴氏族长。”“吴家兄弟,我家娃给你们当学徒吧,尽管使唤。”“吴家大嫂,你家闺女长的真水灵,咱们结个亲呗......”“砰--”回答她们的是某世子殿下冷酷关门声。吴家众人:敢觊觎我家团宝?请立刻麻溜滚!为报恩而来的小狐狸本想励志带飞全家,却没想到自己被阳盛阴衰的吴家人当心肝宝贝宠上了天。
  • 神尊的宠姬

    神尊的宠姬

    “从今日起你便是本尊的宠姬!”一句话,她誓死追随他,走过千秋万载,一路降妖除魔护他周全。“回去重建神族?那你将我置于何地?”匆匆五百年过去,他的法力恢复了,而她却因为用情太深走火入魔,成为了魔界名震一时的情魔。“血魔已死,魔界缺少统治者,你留在魔界吧!”他无情的丢下她独自回神族,那一刻,她疯了:“你若执意重建神族,我便连天外天一起毁灭!”最后他们同归于尽,天外天毁了,神族也没了!
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 记忆中模糊的你

    记忆中模糊的你

    枫叶纷飞的校园幽径上,宁玥玥牵着女儿来熟悉学校的环境,不知不觉中走到这里,还遇上了一位超级无敌大帅哥……“妈妈、妈妈,前面的大哥哥好帅哇~我长大要嫁给他!”女儿扬起天真烂漫的笑脸拉着自己的白色长裙,毫无顾忌的讲。女儿看他的神情,痴迷到都快掉魂!宁玥玥抬眼审视,还没有仔细瞧,男子的面容便开始模糊。她的心脏忍不住‘砰砰砰’地快要跳出来,脑海里从此留下一个难以磨灭的高瘦笔挺又十分耀眼的男人身影……“妈妈?……妈妈你怎么了?呜呜呜,大哥哥,妈妈怎么突然倒下了?呜呜……”你是谁?觉得你好熟悉……我是不是忘记了什么?【且看一位刁蛮千金如何在魔法师的层层阻拦和破坏下奋力捍卫自己的爱情!】