面向数据流图的软件结构设计

是一种结构化的设计方法
研究、分析和神擦好数据流图,确保数据流图符合实际,必要时细化数据流图
确定数据流图的类型,即变换型的数据流或事物型的数据流
(变换型把数据变成另一种形状,事务型根据事物的不同类型做处理)
变换分析方法还是事务分析方法
最后一句软件设计原理和一些优化策略改进系统初始软件结构

软件结构图(程序结构图)

在结构化设计方法,反映了系统模块的层析结构和整个系统的功能及其之间的关系
软件结构图的主要内容:模块(矩形框)、模块之间的调用关系和模块之间传递的信息
1、模块:传入模块(从下层取到数据,传给上层),传出模块、变换模块(处理、回传)、协调模块(控制模块)、源模块(传数据到上层模块,不调用其他模块)和漏模块(不调用其他模块,处理上层数据)
2、调用关系
顺序调用:从左至右顺序调用
选择调用:菱形
循环调用:循环箭头
3、数据或控制信息

空心⭕️:数据
实心圆:控制信息

数据流变换分析法





事务分析法





得到软件结构图

从上而下三层,“读用户命令”是源模块,第三层是漏模块,其他是控制模块

软件结构图的改进

  • 模块的大小要适中:

    • 模块大小影响了模块的可理解性;
    • 限制模块大小也是减少软件复杂性的手段之一;
    • 对于篇幅较大的模块要检查其包含的功能,从中分离出一些功能构成软件结构图中的同层或下一层的其他模块;
    • 对于篇幅较小的模块,应考虑是否可以同它上层调用模块合并
  • 模块的扇入扇出合理:
    • 模块的扇出:模块直接调用了多少其他的模块(数量)
    • 模块的扇入:有多少个模块直接调用本模块
    • 模块的扇出过大,表明该模块过分复杂,需要协调和控制过多的下层模块;
    • 模块的扇入过大,而它又不是公用模块,一般来说说明该模块可能具有多个功能;
    • 经验表明,良好的软件结构图,上层模块(主要是控制模块)往往具有较高的删除,底层的模块(主要是功能型模块)具有较高的扇入,呈两头小,中间大状。(控制扁平化是好的)
      模块的作用域应在控制域之内
  • 模块的作用域:模块中判定的作用范围,它是指所有受这个判定影响的模块。
  • 模块的控制域:模块本身及其直接或间接调用的模块;
  • 如果模块的作用与不在控制域之内,则会增加模块间数据的传递量,使模块之间出现控制耦合。

【软件工程基础复习整理】第五章概要设计(3) 面向数据流图的软件结构设计相关推荐

  1. 【软件工程基础复习整理】第四章需求分析(2)数据流建模

    数据流建模 是一种结构化方法(指导思想:自顶向下.逐步求精,一直到单入口到单出口的数据结构:顺序.选择.循环) 原则上可以用于分析任何应用系统的需求,特点是利用数据流图来对用户需求进行分析 尤其是大型 ...

  2. 【软件工程基础复习整理】第四章需求分析(3)功能建模

    IDEF0功能建模 IEDF方法是一套对复杂系统进行建模分析和设计的系统方法,:IDEF0进行功能建模,IDEF1X用来建立数据模型,IDEF4方法则用于面向对象设计等等. IDEF0方法用严格的自顶 ...

  3. 【爆肝更新】Python基础教程:第五章_Python函数

    原创:公众号 数据说话 [爆肝更新]Python基础教程:第五章_Python函数 函数介绍 学习目标: 快速体验一下函数的使用 了解函数的作用. 函数:是组织好的,可重复使用的,用来实现特定功能的代 ...

  4. 软件工程复习提纲——第五章

    软件工程复习提纲,期末.考研的学霸笔记 第五章--详细设计 第五章详细设计 详细设计阶段的根本目标:确定应该怎样具体地实现所要求的系统. 结构程序设计: 1)如果一个程序的代码块仅仅通过顺序.选择和循 ...

  5. 鸟哥的Linux私房菜(基础篇)- 第十五章、磁碟配额(Quota)与进阶文件系统管理

    第十五章.磁碟配额(Quota)与进阶文件系统管理 最近升级日期:2009/09/10 如果您的 Linux 服务器有多个用户经常存取数据时,为了维护所有使用者在硬盘容量的公平使用,磁碟配额 (Quo ...

  6. 计算机网络复习(第五章)

    目录 第五章 运输层 5.1 运输层协议概述 运输层协议: UDP和TCP区别: 运输层的端口: 5.2 用户数据报协议UDP UDP的特点: UDP的首部格式: 5.3 传输控制协议TCP概述 TC ...

  7. 网络工程师知识点整理—第五章:无线通信网

    目录 1.移动通信网 1.1第一代蜂窝通信系统 1.2第二代移动通信系统 1.3第三代移动通信系统 1.4第四代移动通信系统 1.5第五代移动通信系统 2.无线局域网 2.1 WLAN基本概念 2.2 ...

  8. 鸟哥的Linux私房菜(基础版)第五章学习笔记

    第五章 启动关机.在线求助与执行命令的方式 学习笔记 首次登入FC图形界面 KDE的简单操作 切换X Window与命令行模式 用命令行登入Linux 在命令行模式执行命令 基础命令操作 重要的热键 ...

  9. SCAU软件工程基础复习笔记

    前言:本笔记基于某SCAU师兄笔记完善,仅供学习参考,祝大家考试顺利! 原博客:(29条消息) SCAU软件工程期末复习_Throb001的博客-CSDN博客https://blog.csdn.net ...

最新文章

  1. 简述Linux 文件系统的目录结构
  2. 2021“MINIEYE杯”中国大学生算法设计超级联赛(1)zoto(二维数颜色)
  3. win8.1 计算机 桌面快捷方式,win8.1操作系统中我的电脑在哪里?win8.1我的电脑快捷键添加方法介绍...
  4. 面试官重点考察求职者这5项能力
  5. 程序员真是一门苦差事!
  6. python 字典排序 lambda_Python使用lambda表达式对字典排序操作示例
  7. 活跃在企业信息化特别是制造业PLM领域的国外咨询公司
  8. javascript单元测试工具- -QUnit
  9. 隆冬寒骨,风吹十一豪迈
  10. OpenSplice DDS 分布式DDS网络架构(DDS 6.9.0+VS 2013+Qt 5.8.0 )
  11. Iridient Developer的设置和预设文件
  12. Java学习心得——整数太大的错误
  13. 招投标信息爬虫 (只上最简单的版本,仅用于技术交流)
  14. Playful MySQL 2: Transactions and some of its potential problems
  15. BurpSuite CA证书安装(拦截HTTPS协议)
  16. 字节跳动大裁员,测试工程师差点遭团灭:大厂招人背后的套路,有多可怕?
  17. 深入CSS vertical-align属性
  18. excel表格计算机二级销售,计算机二级excel真题:制作产品销售情况表
  19. java内省的意思_java内省和反射的区别
  20. 蚂蚁金服二面————终结

热门文章

  1. ERROR: Conflicting configuration : ‘arm64-v8a‘ in ndk abiFilters cannot be present when split...
  2. 51Nod1414-冰雕-【思维】
  3. 新宝总结过年红包行情来了
  4. 登录页面如何去掉浏览器默认记住密码
  5. python中pop函数用法
  6. leetcode怎么用时间刷_大家都是如何刷 LeetCode 的?
  7. 关于社会强势人群和弱势人群的“交流”的讨论
  8. 公钥加密算法-RSA
  9. CF821C Okabe and Boxes
  10. android的nfc卡模拟开发