一、实验目的:
掌握传统结构化分析方法中功能建模的基本思想,即数据流分析技术。数据流图DFD是软件系统的逻辑模型,描绘数据在系统中从输入到输出所经历的变换(即加工处理)。
同时,了解变换型和事务型数据流图的基本特征,掌握面向数据流的结构化设计方法,运用变换分析或事务分析将数据流图映射成模块结构图SC。
二、实验仪器及实验环境:
计算机,Windows 7,MS Office Visio
三、实验原理:
结构化分析方法中的功能模型与结构化设计方法中的模块结构。
四、实验内容及结果:
内容1:根据以下题目中的问题描述,使用数据流分析技术建立系统的功能模型。从问题描述中分析提取数据流图的四种基本成分,包括外部实体(即数据源点或终点)、数据加工、数据存储和数据流,然后依据“自顶向下,逐步细化”的基本原则进行功能分解,使用MS Office Visio绘制分层数据流图。
题目:某职业高中进行信息系统建设与维护。现在,财务科长提出一个建议:学校一直由会计人工计算工资并编制财务报表,随着学校规模逐渐扩大,目前,每个月都需要两名会计紧张工作半个月才能完成,不仅效率低,而且成本高。现在考虑并研究使用学校现有的计算机生成工资明细表和各种财务报表,实现一个基于计算机的自动化的“工资支付系统”。
通过访问具体处理工资事务的两名会计,得知处理工资事务的大致过程是:每月月末,教师把他们当月实际授课时数登记在课时表上,由各系汇总后交给财务科。职工把他们当月完成承包任务的情况登记在任务表上,汇总后交给财务科。两名会计根据这些原始数据计算每名教职工的工资,编制工资表和工资明细表。然后,把记有每名教职工工资总额的工资表报送银行,再由银行把钱打到每名教职工的工资存折上,同时把工资明细表发给每名教职工。
通过反复询问财务人员,得知现有的人工系统计算工资和编制报表的流程为:接到课时表和任务表之后,首先审核这些数据,然后把审核后的数据按教职工编号排序并抄写到专用的表格上,该表格预先印有教职工编号、姓名、职务、职称、基本工资、生活补贴等数据。接下来,根据当月课时数或完成承包任务的情况,计算课时费或岗位津贴。算出每个人的工资总额后,再计算应该扣除的个人所得税、应该交纳的住房公积金和保险费,最后算出每个人当月的实发工资数。把算出的上述各项数据登记到前述的专用表格上,就得到了工资明细表。工资表只是简化的工资明细表,它只包含工资明细表中的教职工编号、姓名和实发工资这三项内容。如图1-1所示的系统流程图,描绘了现有的人工工资支付系统的业务流程。
图1-1 现有的人工工资支付系统的业务流程(系统流程图)
当前准备设计一个能完成与现有人工系统同样功能的基于计算机的工资支付系统,建议基本上复制现有人工系统的主要功能。课时表和任务表交到处理工资事务的专用机房,财务人员把这些数据通过计算机终端输入系统,系统接收并审核这些数据。然后,系统根据所存储的这些数据,计算工资,打印输出工资表、工资明细表。
假设,这里使用“事务数据”代表课时表和任务表中包含的所有数据信息,使用“处理工资事务”笼统地代表计算课时费或岗位津贴、工资总额、个人所得税、住房公积金、保险费、实发工资等一系列功能。
(1)根据当前的分析结果,描绘出工资支付系统的高层数据流图。
图1-2 工资支付系统的初始高层数据流图
通过对财务科长以及处理工资事务的两位会计进一步的调查走访,得知:通常,课时费或岗位津贴对于同一个人来说可能每个月都有所变化。但是,每位教职工的基本工资、生活补贴等数额,在一段时间内对于同一个人来说,是稳定不变的,会计说:“这些数据属于人事数据,所以我们不需要每次都从外面输入这些数据。”即事实上,输入的“事务数据”中并不包含这些数据信息,它们应该被保存在另外的某个数据存储中。后来,又经询问得知:这些数据的来源是人事科,一旦出现人事变动,或者某位教职工晋升,则这些数据将会被更新。
接下来,讨论计算课时费和岗位津贴的方法。会计告诉分析员:课时费等于教师当月的授课时数乘上每课时的课时费,再乘上职称系数和授课班数系数;岗位津贴由职工的职务和完成当月任务的情况决定。通过讨论还进一步了解到:应在每年年末计算超额课时费,即如果教师一年的累计授课时数超过学校规定的定额量,则超出部分每课时的课时费按正常值的1.2倍计算,并且算出的超额钱数将打到12月份的工资总额中。因此,为了计算超额课时费,还需要保存每位教师当年完成的累计授课时数。
接下来,在与会计讨论住房公积金的算法时了解到:根据国家制定的《住房公积金管理条例》的规定:职工住房公积金的月缴存额为职工本人上一年度月平均工资乘以职工住房公积金缴存比例。因此,还需要存储每位教职工的年度月平均工资。
(2)根据上述进一步的分析结果,对高层数据流图1-2进行修改完善(考虑是否需要再增添哪些外部实体、数据加工、数据存储、数据流等)。
图1-3 工资支付系统修改后的高层数据流图
(3)细化高层数据流图1-3,对其中的“处理工资事务”这个数据加工进行分解,形成子图。
图1-4 分解数据加工“处理工资事务”形成的子图
(4)画出工资支付系统的完整数据流图。
图1-5 工资支付系统的完整数据流图
(5)数据字典:
事务数据 = 教职工编号-姓名-[课时数-任务量]-年份-月份
人事数据 =教职工编号-姓名-性别-出生日期-岗位类型-岗位等级-职务
年度数据 =教职工编号-姓名-年份-本年度累计工资总额-本年度累计授课时数-本年度累计实发工资额-
工资明细表 =教职工编号-姓名-基本工资-生活补贴-[课时费 岗位津贴]-工资总额-个人所得税-住房公积金-保险费-实发工资额-发放日期
工资表 =教职工编号-姓名-实发工资额-银行账号-发放日期
内容2:结合内容1中的题目,在其数据流图的基础上,使用结构化设计方法,合理划分功能模块,并形成模块的层次结构,运用MS Office Visio完成结构图SC的绘制。
(1)确定数据流图的类型:根据所完成题目的数据流图,分析其数据流的基本特征(变换型或事务型)。
变换型
(2)标出流的边界:如果是变换型数据流图,在数据流图上用虚线标出输入部分、变换中心、输出部分之间的分界线;如果是事务型数据流图,在数据流图上用虚线标出输入部分、事务中心、发送部分之间的分界线。
图1-6 标有边界的数据流图
(3)根据变换分析或事务分析的映射过程,将数据流图映射成变换型结构或事务型结构,并绘制模块结构图SC。
图1-7 模块结构图SC