- 1、本文档共120页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章结构化分析与设计精选
M A 图3.34 瓮形结构 ●总的考虑是: 顶层扇出数低一些,中间层扇出数高一些,底层扇入数高一些,形成瓮形结构。 B J K N L * 软件工程 3.3.6 教材购销系统的总体结构 例3.11 从高校教材销售子系统的DFD图导出SC图。 第一步:细化并修改DFD图。 (1) 在图3.15(p52)中,加工1(销售)和加工2(采购)之间的数据流“进书通知”替换为:增加一个“进书登记表”文件,供销售子系统和采购子系统之间交换信息。 (2) 把图3.16中加工1.4(登记售书和打印领书单)分解为两个加工(加工1.4—登记售书、加工1.7—打印领书单)。 (3)把图3.16中加工1.6的输入流“进书通知”改为从数据文件“进书登记表”读入的数据流。 * 软件工程 1 销售 2 采购 学生 书库保管员 进书登记表 教材存量表 缺书登记表 购书单 领书单 无效书单 发票 缺书单 进书通知 修改后的第二层DFD图 * 软件工程 1.1 审查 有效性 1.2 购书数量 审核 进书登记表 F1教材存量表 F2 缺书登记表 购书单 领书单 无效书单 F3 学生用书表 暂缺书单 第三层图:图1 修改后的销售子系统 1.6 产生补 售书单 1.5 登记缺书 1.7 打印领书单 F4 售书登记表 发票 有效购书单 补售书单 1.4 登记售书 * 软件工程 第二步:鉴别DFD图的类型。 1. 分析该系统的第二层图,它有2个功能:销售和采购,这2个处理可并行工作,因此从整体上可按事务型数据流图来设计。 2. 分析该系统的第三层图的销售子系统,初看起来它具有变换型结构。 它的传入部分含有2个加工:1个(加工1.1)用于初次出售,1个(加工1.6)用于补售。一次售书只能执行一种功能,要么是初售,要么是补售。因此,图中加工1.2的左方应添加一个 号, 表示“选择”。由此可见,销售子系统实际上属于事务型结构。 2. 类似地,分析采购子系统,它也是具有2个动作分支的事务型结构。一个动作分支是“统计缺书”,另一个动作分支是“登记进书”。 * 软件工程 第三步:画出SC图的上层框架。 教材购销系统 读用户选择 销售 采购 初售 补售 统计缺书 登记进书 图3.35 教材购销系统SC图的上层框架 初售命令 补售命令 统计命令 登记命令 用户命令 销售命令 采购命令 * 软件工程 第四步:分解初售、补售、统计缺书和登记进书4个动作分支,补充动作层与细节层。销售子系统和采购子系统的初始SC图见图3.36和图3.37。 第五步:改进SC图,获得最终的SC图。 * 软件工程 采购子系统 统计缺书 登记进书 按书号 汇总 图3.37 采购子系统的SC图 按出版社 汇总 打印 缺书单 审查 取款单 打印 取款清单 * 软件工程 3.4.1 目的与任务 1. 过程设计的目的: 为SC图中的每一个模块确定采用的算法和模块内的数据结构,用选定的表达工具给出清晰的描述。 2. 过程设计的主要任务: (1)为每个模块确定采用的算法; (2)确定每个模块使用的数据结构; (3)确定模块接口的细节(模块接口通常指模块的输入数据和输出数据)。 3.4 模块设计(详细设计,过程设计) * 软件工程 3.4.2 模块设计的原则与方法 1. 清晰第一的设计风格 结构化程序设计应遵循“清晰第一、效率第二(Clarity the first, Efficiency the next)” 的原则。 * 软件工程 2. 结构化的控制结构 ●每个模块只使用单入口、单出口的3种基本控制结构,即:顺序、选择和循环结构。 A B T S C F (a)顺序 (b)选择 (C)循环(DO-WHILE) A B C 图3.40 3种基本控制结构的流程图 T F * 软件工程 ●补充说明 ① 允许补充使用DO-UNTIL 和 DO-CASE控制结构。 F S C T (a)循环(DO-UNTIL) CASE1 C =1 CASE2 =2 CASEn =n (b)多分支选择 (DO-CASE) 两种常用的扩充结构 * 软件工程 ② 在PDL语言中允许使用UNDO语句提前退出循环。 ( UNDO语句相当于C语言的break语句) DO WHILE C1 … IF C2 UNDO;
文档评论(0)