一、定义

结构图(Structure Chart,简称SC图)是精确表达软件结构的图形表示方法,它以特定的符号表示模块、模块间的调用关系和模块间信息的传递。

二、主要构成

⑴模块(Module):用矩形框表示,框中写有模块的名字,说明模块的功能。
⑵调用:从一个模块指向另一个模块的箭头表示前一模块对后一模块的调用,一般是上层调用下层。
⑶数据:调用箭头边上的小箭头表示调用时从一个模块传送给另一模块的数据。通常在短箭头附近应注有信息的名字,常用尾端带有空心圆的短箭头表示数据信息,用尾端带有实心圆的短箭头表示控制信息,如:

(4)两种符号:当模块A有条件地调用另一个模块B时,在模块A的箭头尾部标以一个菱形符号,当一个模块A反复地调用模块B、和模块D时,在调用箭头尾部则标以一个弧形符号,如图所示。在结构图中这种条件调用所依赖的条件循环调用所依赖的循环控制条件通常无需注明。

三、常用的四种模块

1.传入模块

从下属模块取得数据,进行某些处理,再将其结果传给上级模块。在此,将它传送的数据流称为逻辑输入数据流

2.传出模块

从上级模块获得数据,进行某些处理,再将其结果传给下属模块。在此,将它传送的数据流称为逻辑输出数据流

3.变换模块/加工模块

它是从上级模块获得数据,进行特定的处理,将其转换为其他形式,再传回上级模块它所加工的数据流叫做变换数据流

4.协调模块

对所有下属模块进行协调和管理的模块。在一个好的软件结构图中,协调模块应在较高层出现

四、面向数据流的设计方法概述

概念:SD以数据流图为基础,它定义了把DFD(数据流图)变换成软件结构的不同映射方法。即把问题结构(DFD)映射成软件系统的结构。

分类:在软件设计开始之前,首先要分清DFD图所显示的系统特征,所有系统均可以纳入两种典型的形式:①变换型结构、②事务型结构。

①变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,通过系统变换中心,经过加工处理以后再沿输出通路变换成外部形式离开软件系统。
②事务流:数据沿输入通路到达一个处理,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,即“以事务为中心”

五、如何将DFD映射为软件结构

1.变换型

具有“变换型”的数据流图,明显可以分割为“导入” 、“加工变换”和“导出” 三部分,对应软件结构的“传入子系统”、“中心变换子系统”和“传出子系统”三部分。

步骤

(1)找出边界,进行一级分解,设计上层模块。为每个输入设计一个输入模块,为每个输出设计一个输出模块,同时为每个主加工设计一个处理模块。

(2)进行二级分解,设计中下层模块。自顶向下,逐步细化,为第一层的每一个输入模块、输出模块、处理模块设计它们的从属模块,设计下层模块的顺序一般从设计输入模块的下层开始,即展开CI、CT、CO

(3)进一步细化

2.事务型

步骤

(1)在DFD上确定事务中心、接收部分和发送部分。
(2)画出SC框架,把DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块,如下图所示
(3)分解细化接收分支和发送分支

3.总结

机械地遵循变换分析或事务分析的映射规则,很可能会得到一些不必要的控制模块,如果它们确实用处不大,应该把它们合并。
反之,如果一个控制模块功能过分复杂,则应该分解为两个或多个控制模块,或者增加中间层次的控制模块。
所以,对初始映射得到的软件结构还应该进行结构优化
优化:1)尽可能建立功能模块 2)消除重复功能 3)注意模块的作用范围与控制范围 4)模块的大小适当

六、具体例子

例:对小型图书管理信息的 还书子系统数据流图描述如下:

转换成软件结构图如下所示:

对后台程序进行拆分如下:

留言:此次博客整体写的不太好,见谅吧,发出来是对自己所学的一个总结,也是想将学校所学开源出来。注:对例题答案有补充或有任何疑惑欢迎评论区留言

软件工程—软件结构图笔记详谈相关推荐

  1. 软考-软件设计师 笔记十(软件工程)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  2. [软件工程]软件生存周期过程与管理————(2020.6.29学习笔记)

    目录 第一节 软件生存周期过程概述 第二节 过程描述 第三节 应用说明 第四节 软件生存周期模型 第五节 过程规划与管理 第一节 软件生存周期过程概述 软件生存周期(SDLC,软件生命周期) 是软件的 ...

  3. 软考中级软件设计笔记

    为备考2022上半年软考所做的笔记,祝愿自己顺利通过! 软考笔记 知识点速记 操作系统 1.CUP中的寄存器 2.中断&DMA 3.系统可靠地计算 4.存储器 4.1 Cache 4.2 存储 ...

  4. 软件工程——软件总体设计

    一.选择题 1.软件设计包括概要设计和详细设计两个阶段. 2.SA方法的基本思想是自项向下逐步分解. 3.结构化方法的基本原则是功能的分解和抽象. 4.软件概要设计结束后得到优化后的软件结构图. 5. ...

  5. 软考-软件设计师 笔记一(计算机组成与体系结构)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  6. 软考-软件设计师 笔记九(多媒体基础)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  7. 软考-软件设计师笔记【原创无样式版】需要笔记请联系

    越努力,越幸运!!! 计算机系统基础 (一)CPU的功能 (1)程序控制功能.CPU通过执行指令来控制程序的执行顺序. (2)操作控制. (3)时间控制. (4)数据处理.CPU最根本的任务. (二) ...

  8. 软考-软件设计师 笔记十二(数据流图)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  9. 【软件工程】学习笔记(二)

    [软件工程]学习笔记 三.可行性研究与项目开发计划 3.1.可行性研究 3.1.1.技术可行性 3.1.2.可行性研究的任务 3.1.3.可行性研究的步骤 3.2.制定项目开发计划 四.结构化分析 4 ...

最新文章

  1. ArcGIS API for Silverlight 入门学习笔记(三):基础地图实例
  2. Windows的驱动开发模型
  3. 印章WinForm自定义控件封装,提供源码下载
  4. 美团在Redis上踩过的一些坑-3.redis内存占用飙升
  5. Android SQLite 数据库详细介绍
  6. React个Vue的对比
  7. Hibernate Query数据查询
  8. openstack虚拟机迁移live-migration中libvirt配置
  9. 实验总结:Java+oracle数据库实现图书馆管理系统
  10. Java新职篇:一维数组
  11. 词形变换和词干提取工具(英文)
  12. 华师计算机考研英语过线,华师大学长:考研英语我是如何考到77分的!
  13. 友盟用户反馈自定义UI-Android
  14. 操作系统银行家算法计算机四级,【NCRE四级网络工程师】操作系统多选题
  15. 苹果地图副总裁_看完这篇文章 或许你会再给“苹果地图”一次机会
  16. jy-12-SPRINGMYBATIS02——云笔记01-刘苍松
  17. Matlab计算状态转移频数,matlab统计频数
  18. Android SDK 2.1 下载与安装教程
  19. 初中教资计算机考试知识点,教资考试初中物理电学知识点总结来了
  20. VUE项目报错:[Vue warn]: Error in render: “TypeError: Cannot convert object to primitive value“

热门文章

  1. (16) 基于图卷积神经网络的轨道交通流量预测
  2. 方舟服务器延迟n a什么意思,留存分析
  3. 全球与中国氢化苯乙烯-异戊二烯嵌段共聚物市场现状及未来发展趋势
  4. fedora19下修复grub——生命不息,折腾不止
  5. sin cos tan c语言,sin cos tan在前端的应用
  6. 1小时等于36000毫秒的计算方法
  7. 宅男必备福利壁纸大全自动采集微信小程序源码带动态壁纸支持多种流量主
  8. python--生成随机数
  9. RestTemplate post提交方式的一些总结
  10. vue中的方法 methods 定义时不要使用箭头函数