宁波工程学院航空机票预订系统面向数据流设计作业题目:航空机票预订系统面向数据流设计学院名称:电信学院学号:134010102**班级:计科13-2姓名:***授课教师:李庆风航空机票预订系统面向数据流设计项目概述:为方便旅客,某航空公司拟开发一个机票预订系统。旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号、旅行时间、旅行目的等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。设计步骤:第1步复查基本系统模型。复查的目的是确保系统的输入数据和输出数据符合实际。第2步复查并精化数据流图。应该对需求分析阶段得出的数据流图认真复查,并且在必要时进行精化。不仅要确保数据流图给出了目标系统的正确的逻辑模型,而且应该使数据流图中每个处理都代表一个规模适中相对独立的子功能。需求分析阶段产生的航空机票预订系统的数据流图如下图所示:无无有旅客提出预订要求向航空公司查询旅行社航班可行安排及余票数量航空公司航班机票信息选择航班旅行社显示余票信息是否有列入等候队列航空公司办理订票手续网上支付提取机票信息打印出取票通知和账单旅行社航空公司旅行社得到取票通知旅客图1.航空机票预订系统的数据流图这个数据流图对于软件结构设计的“第一次分割”而言已经足够详细了,因此不需要精化就可以进行下一个设计步骤。第3步确定数据流图具有变换特性还是事务特性。一般地说,一个系统中的所有信息流都可以认为是变换流,但是,当遇到有明显事务特性的信息流时,建议采用事务分析方法进行设计。在这一步,设计人员应该根据数据流图中占优势的属性,确定数据流的全局特性。此外还应该把具有和全局特性不同的特点的局部区域孤立出来,以后可以按照这些子数据流的特点精化根据全局特性得出的软件结构。从图1看出,数据信息以外部形势进入软件系统,经过处理以后再以外部形势离开系统,没有明显的事务中心。因此可以认为这个信息流具有变换流的总特征。第4步确定输入流和输出流的边界,从而孤立出变换中心。输入流和输出流的边界和对它们的解释有关,也就是说,不同设计人员可能会在流内选取稍微不同的点作为边界的位置。当然在确定边界时应该仔细认真,但是把边界沿着数据流通路移动一个处理框的距离,通常对最后的软件结构只有很小的影响。对于航空机票预订系统,确定的流的边界如下图2所示:无有图2.具有边界的数据流图旅客提出预订要求向航空公司查询旅行社航班可行安排及余票数量航空公司航班机票信息选择航班旅行社显示余票信息是否有列入等候队列航空公司办理订票手续网上支付提取机票信息打印出取票通知和账单旅行社航空公司旅行社得到取票通知旅客第5步完成“第一级分解”。软件结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程。对于变换流的情况,数据流图被映射成一个特殊的软件结构,这个结构控制输入、变换和输出等信息处理过程。图3说明了第一级分解的方法。位于软件结构最顶层的控制模块Cm协调下述从属的控制功能:输入信息处理控制模块Ca,协调对所有输入数据的接收;变换中心控制模块Ct,管理对内部形式的数据的所有操作;输出信息处理控制模块Ce,协调输出信息的产生过程。虽然图3意味着一个三叉的控制结构,但是,对一个大型系统中的复杂数据流可以用两个或多个模块完成上述一个模块的控制功能。应该在能够完成控制功能并且保持好的耦合和内聚特性的前提下,尽量使第一级控制中的模块数目取最小值。图3.第一级分解的方法对于航空机票预订系统,第一级分解得出的结构如图4所示。每个控制模块的名字表明了为它所控制的那些模块的功能。图4.航空机票预订系统的第一级分解航空机票预订系统客户需求数据控制分析显示信息输入控制输出控制变换控制第6步完成“第二级分解”。所谓第二级分解就是把数据流图中的每个处理映射成软件结构中一个适当的模块。完成第二级分解的方法是,从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中Ca控制下的一个低层模块;然后沿输出通路向外移动,把输出通路中每个处理映射成直接或间接受模块Ce控制的一个低层模块;最后把变换中心内的每个处理映射成受Ct控制的一个模块。图5表示进行第二级分解的普遍途径。虽然图5描绘了在数据流图中的处理和软件结构中的模块之间的一对一的映射关系,但是,不同的映射经常出现。应该根据实际情况以及“好”设计的标准,进行实际的第二级分解。对于航空机票预订系统,第二级分解的结果分别用图5.1,5.2和5.3描绘。这3张图表示对软件结构的初步设计结果。虽然图中每个模块的名字表明了它的基本功能,但是仍然应该为每个模块写一个简要说明,描述以下内容。图5.第二级分解的方法图5.1未经精化的输入结构客户需求预订要求选择航班退订要求数据控制分析图5.2未经精化的变换结构图5.3未经精化的输出结构.进出该模块的信息(接口描述);.模块内部的信息;.过程陈述,包括主要判定点及任务等;.对约束和特殊特点的简短讨论。这些描述是第一代的设计规格说明,在这个设计时期进一步的精化和补充是经常发生的。第7步使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化.第一次分割得到的软件结构,总可以根据模块独立原理进行精化。为了产生合理的分解,得到尽可能高的内聚、尽可能松散的耦合,最重要的是,为了得到一个易于实现、易于测试和易于维护的软件结构,应该对初步分割得到的模块进行再分解或合并。具体到数字仪表板的例子,对于从前面的设计步骤得到的软件结构,还可以做许多修改。下面是某些可能的修改:.输入结构中的模块“转换成rpm”和“收集sps”可以合并;.模块“确定加速/减速”可以放在模块“计算mph”下面,以减少耦合;.模块“加速/减速显示”可以相应地放在模块“显示mph”的下面。经过上述修改后的软件结构画在图6中。航班安排控制余票机票信息显示信息取票信息账单显示网上订票航空机票预订系统图6精化后的航空机票预订系统的软件结构上述7个设计步骤的目的是,开发出软件的整体表示。也就是说,一旦确定了软件结构就可以把它作为一个整体来复查,从而能够评价和精化软件结构。在这个时期进行修改只需要很少的附加工作,但是却能够对软件的质量特别是软件的可维护性产生深远的影响。客户需求数据控制分析显示信息预订要求选择航班退订要求航班安排控制余票机票信息取票信息账单显示网上订票