第二章 会计信息的开发步骤
为了能够更清楚地了解数据流图,必须了解数据流图对系统的分解过程以及数据流图的使用方法。下面就以一般企业的会计核算系统为例来说明。
(1)首先从会计核算系统的最高层次开始绘制数据流图,在这个层次上把系统视为一个整体进行处理,以便能够清楚地看出系统与外部的接口情况。会计核算系统顶层数据流图如图2-5所示。
(2)对会计核算系统的处理过程进行分解。要对系统进行分解,就需要假设数据处理的细节情况,将系统划分为若干子系统,如图2-6所示。
图2-5 会计核算系统顶层数据流图 图2-6 会计核算系统分解数据流图
(3)如果对分解后数据流图中需要的加工还比较复杂,对其处理工作并十分清楚,则需要更多的细节,这时就需要对其中的各个子系统再进行分解。如图2-7所示是以账务处理加工的再分解数据流图。
图2-7 账务处理数据流图
(4)为了能够更清楚地了解账务处理过程中的银行对账和清理往来账的加工过程,对这两个部分又进一步进行了分解,如图2-8所示是对银行对账分解的数据流图,如图2-9所示是对清理往来账分解的数据流图。
图2-8 银行对账数据流图
图2-9 清理往来账数据流图
2.3 开发会计信息系统的系统分析
对会计信息系统进行了需求分析后,就可以得到计算机会计信息系统的逻辑模型,知道了该系统应该“做什么”,现在就是我们解决系统“怎么做”问题的时候了。系统设计就是根据逻辑模型提出一个“怎么做”的具体方案,即物理模型,解决如何用计算机实现逻辑模型的全部功能。通常情况下系统设计分为两步走,即先进行总体设计,然后再进行详细设计。
2.3.1 总体设计
1.总体设计的任务
总体设计又称概要设计或结构设计,它是软件开发过程中的又一个十分重要的阶段。总体设计阶段的基本任务是:
● 将系统划分成模块;
● 决定每个模块的功能;
● 决定模块的调用关系;
● 决定模块间的接口。
总体设计的四项任务综合在一起,实际上就是决定软件系统由哪些部分(模块)组成,各部分的功能是什么?它们之间的关系又如何?一般来说,对于一个较复杂的软件系统都要将它分解成许多模块,然后由这些模块共同动作来完成特定的任务。
总体设计是在需求分析的基础上进行的,总体设计中所用的基本方法称为结构化设计(Structured Design,SD)方法,结构化设计的方法是与结构化分析的方法相衔接的,通常可直接根据会计信息系统的逻辑模型导出会计信息系统的结构。
2.总体设计的基本方法
下面对结构化设计方法的含义、特点、使用的工具等内容进行简单介绍。
(1)SD方法的含义与特点
结构化设计方法与结构化分析方法用于从需求分析数据流图中导出系统模块结构图。在导出系统模块结构图的过程中,以低耦合、高内聚作为模块划分的准则,先将系统划分为若干个大模块,再将各大模块继续划分成若干个较小的模块,每个模块实现其中一部分功能,如此下去,直至得到使程序足够简单且能够实现某种功能、具有相对独立性的小模块,若干个模块相互联系,相互配合,完成系统的全部功能。因此结构化设计遵循由大到小、自上而下、层层分解的基本原则。
(2)模块划分的独立性原则
为设计高质量的软件,必须要把软件系统划分为多个模块,该过程称为模块化。但模块的划分并不是随意的,从软件系统的可维护性、可靠性和可理解性等要求来看,模块应具有独立性。如果一个功能的有关各部分是分散在多个模块中,那么这些模块之间的关系是谈不上独立的,必然会相互依赖。因此,一个系统的各模块之间要相对独立,才符合信息隐藏和信息局部化的原则。
信息隐藏是指在设计和确定模块时,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说是不可访问的。信息局部化是指把一些关系密切的软件元素,在物理意义上放得彼此靠近。关系密切是指这些软件元素(数据和所有有关过程)是共同解决某问题或实现某功能所需的。
信息隐藏和信息局部化是保证模块独立的有力措施。因为信息隐藏能保证一个模块内的信息让不需要知道这个信息的其他模块访问无法访问,信息局部化能让关系密切的软件元素物理上互相靠近(最好在同一个模块中),自然使得模块之间关联性降低,独立性提高。具体要求为:模块间关联和依赖程度要尽量小,也就是要使模块之间的接口尽量简单,并通过耦合性和内聚性来衡量模块的独立性。
① 耦合是对模块之间相互关联程度的一种量度,它表现了模块的外部特征。模块间的耦合程度越低,说明模块的独立性越好。模块间接口的复杂程度决定了耦合性的强弱。在进行模块划分时,可能遇到的模块耦合有以下几种:
● 数据耦合:两个模块之间是数据调用关系,相互传递的信息以参数形式给出。它是模块之间耦合性最弱的一种形式。
● 共公耦合:一些模块需要引用全局变量,其相互依赖,相互影响。因此,对于个别模块的修改和再利用必然带来许多不方便。
● 内容耦合:一个模块对另一个模块作直接引用,也许通过非正常入口进入另一个模块或对另一模块的内容进行直接的修改。这样的耦合关系使得模块间的联系过分紧密,常常给后期的开发和维护工作带来不便。
● 控制耦合:一个模块明显地控制着另一模块的执行顺序,它们之间便是控制耦合的关系。对于这种耦合情况,发送控制信息的模块必须对接收信息的模块有十分具体的了解,一旦接收模块有了变动,势必会影响到这种控制关系。
【小技巧】
采用结构化设计获得的结构图,其模块间必然发生联系,结构图模块之间的联系保持低耦合性,才能设计出具有良好结构的软件系统。如果模块间要发生联系,建议尽量采用“数据耦合”形式。
② 内聚是指一个模块内部的各成分之间(如语句之间或语句段之间)的联系。内聚性是对模块内部各成分联系强弱的一种定性度量。通常情况下,如果模块的内聚性越好,模块内部各成分的联系强度越大,则该模块与其他模块之间的关联程度也就相对较弱,增加了可理解性、可维护性和可靠性。
(3)结构化设计方法中使用的图形工具
在总体设计阶段,为了描述软件系统的结构,需要 使用图形工具,其中使用比较广泛的是层次图和HIPO图,以及结构图。