【软考中级攻略站】-软件设计师(7)- 结构化开发方法(数据流图)

news2024/11/26 1:27:12

系统设计基本原理

  1. 抽象是一种设计技术,重点说明一个实体的本质方面,而忽略或者掩盖不是很重要或非本质的方面。
  2. 模块化是指将一个待开发的软件分解成若干个小的、简单的部分——模块,每个模块可独立地开发、测试,最后组装成完整的程序。模块化的目的是使程序的结构清晰,容易阅读、理解、测试和修改。
  3. 信息隐蔽 信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐藏或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理。信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。

  4. 模块独立 模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单。衡量模块独立程度的标准有两个:耦合和内聚。耦合是指模块之间联系的紧密程度。耦合度越高,则模块的独立性越差。内聚是指模块内部各元素之间联系的紧密程度。内聚度越低,则模块的独立性越差。因此,模块独立就是希望每个模块都是高内聚、低耦合的。

 

 

系统总体结构设计 

系统结构设计应遵循以下原则

  1. 分解—协调原则。
  2. 自顶向下原则。
  3. 信息隐蔽、抽象的原则。
  4. 一致性原则。
  5. 明确性原则。
  6. 模块之间的耦合度尽可能小,模块的内聚度尽可能大。
  7. 模块的扇入系数和扇出数要合理。
  8. 模块的规模适当。

子系统划分要遵循以下原则:

  1. 子系统要具有相对独立性。
  2. 子系统之间数据的依赖性尽量小。
  3. 子系统划分的结果应使数据冗余较小。
  4. 子系统的设置应考虑今后管理发展的需要。
  5. 子系统的划分应便于系统分阶段实现。
  6. 子系统的划分应考虑到各类资源的充分利用。

 

数据流图 

什么是数据流图?

数据流图是一种图形化的工具,用来描述系统中数据如何流动和处理的过程。它帮助我们理解系统的工作流程,特别是数据在系统中的移动路径。

数据流图的基本元素

数据流图通常包含以下几种基本元素:

  1. 外部实体

    • 定义:系统之外的实体,它们与系统进行交互,提供或接收数据。
    • 例子:用户、供应商、数据库等。
    • 符号:通常用矩形表示。
  2. 处理过程

    • 定义:系统中的处理步骤,它接收数据输入,并产生数据输出。
    • 例子:计算总分、生成报告等。
    • 符号:通常用圆角矩形或圆形表示。
  3. 数据流

    • 定义:数据在系统中流动的路径。
    • 例子:数据从用户传送到处理过程,再传送到数据库。
    • 符号:通常用箭头表示,箭头指向表示数据流向。
  4. 数据存储(Data Store)

    • 定义:系统中存储数据的地方。
    • 例子:数据库、文件系统等。
    • 符号:通常用双线矩形或水平线表示。

数据流图的层级结构

数据流图通常分为不同的层级,以详细描述系统的不同层面:

  1. 上下文图

    • 定义:最高级别的数据流图,只包含一个处理过程和一个外部实体。
    • 用途:提供系统的整体视图。
    • 例子:一个银行系统的上下文图可能只包含一个处理过程(银行系统)和一个外部实体(用户)。
  2. 0级图

    • 定义:展示系统的主处理过程和与之交互的外部实体。
    • 用途:细化上下文图,展示更多细节。
    • 例子:银行系统的0级图可能包含多个处理过程,如存款、取款、转账等。
  3. 低级别图

    • 定义:进一步细化主处理过程,展示更详细的处理步骤。
    • 用途:详细描述每个处理过程。
    • 例子:存款处理过程可以进一步细化为验证用户身份、记录交易、更新余额等子过程。

 

 

对图和加工编号 

父图(Parent Diagram)

父图通常是一个高层次的数据流图,它描述了系统的主要功能和数据流。父图给出了系统的大致轮廓,包括主要的处理过程、外部实体以及数据存储。

子图(Child Diagram)

子图是对父图中的某个处理过程进一步细化的图。子图提供了更详细的描述,展示了处理过程内部的详细步骤。

父图与子图的关系

父图和子图之间的关系可以用一句话概括:子图是对父图中某个处理过程的详细展开。

编号:

  1. 顶层图只有一张,图中的加工也只有一个,所以不必编号。
  2. 0层图也只有一张,图中的加工号可以分别是0.1.0.2、...或者1.2...
  3. 子图号就是父图中被分解的加工号。
  4. 图的加工号由图号、圆点和序号组成。

应注意的问题 

(1) 适当地为数据流、加工、数据存储、外部实体命名,名字应反映该成分的实际含义,避免空洞的名字。

(2) 画数据流而不画控制流。

(3) 每条数据流的输入或者输出都是加工。

(4) 一个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同。

(5) 允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工。

(6)保持父图与子图平衡。也就是说,父图中某加工的输入/输出数据流必须与它的子图的输入/输出数据流在数量和名字上相同。值得注意的是,如果父图的一个输入(或输出)数据流对应子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。

(7)在自顶向下的分解过程中,若一个数据存储首次出现时只与一个加工有关,那么这个数据存储应作为这个加工的内部文件而不必画出。

(8)保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工产生的数据中获得。

(9)每个加工必须既有输入数据流,又有输出数据流。

(10)在整个数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但在某一张子图中,可能是只有读没有写,或者是只有写没有读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2124836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线下ERP与电商平台集成:点三API深度解析——优化电商订单数据同步的实践方案

随着电商市场的快速发展,线上订单与线下运营的无缝衔接成为了商家和企业提升运营效率的关键环节。尤其对于依赖ERP和WMS系统的企业而言,如何高效、快速地实现与电商平台的数据对接,确保订单、库存、物流等信息的实时同步,是优化供…

基于Spring Boot的电子请柬私人定制销售平台的设计与实现---附源码78900

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.1.1技术可行性 2.1.2经济可行性 2.1.3社会可行性 2.1.4法律可行性 2.2 系统流程分析 2.2.1 数据流程 2.2.2 业务流程 2.3 系统功能分析 2.3.1 功能性…

Android 11 访问/mnt/media_rw下的U盘文件,使用File.listFiles()方法列出U盘文件,始终错误返回null,已解决。

背景介绍:我做的launcher有一个功能,就是检测U盘中是否有update.zip文件,有的话就拉起升级程序,没有就弹窗提示没有。使用File.listFiles()列出/mnt/media_rw下的U盘文件列表,明明U盘有文件,代码逻辑也没错…

【JVM】类加载过程|双亲委派模型

目录 四、类加载过程 1.类加载过程 2.双亲委派模型(经典面试题) 什么是双亲委派模型 双亲委派模型的优点 破坏双亲委派模型 四、类加载过程 1.类加载过程 咱们写的java代码,是.java文件(硬盘),一个j…

手动用梯度下降法和随机梯度下降法实现一元线性回归

手动用梯度下降法实现一元线性回归 原文链接:https://www.cnblogs.com/qimoxuan/p/18407823 实验目的 本次实验旨在通过手动实现梯度下降法和随机梯度下降法来解决一元线性回归问题。具体目标包括: 生成训练数据集,并使用matplotlib进行可视化。设计一个`LinearModel`类来…

Mac清理其他文件:释放存储空间的高效指南

每个Mac用户都可能遇到存储空间不足的问题,尤其是当“其他”文件积累到一定体积时。在Mac上,“其他”文件通常包括各种系统文件、缓存、文档以及不被归类为应用程序、照片、电影或音乐的其他类型的文件。这些文件往往不易被注意,但逐渐占用了…

Java-idea小锤子图标

这一版的idea小锤子图标其实就在这里 点进去就找到了~

基于C#+SQL Server2008 开发三层架构(CS界面)图书管理系统

图书管理系统 一、项目背景及意义 当今由于信息技术的飞速发展,图书馆作为社会知识信息媒介的功能日益重要,网络环境下的信息资源建设知识仓库的设计,开放存取学术交流模式,知识管理系统,智能检索,数字参…

unocss 一直热更新打印[vite] hot updated: /__uno.css

控制台持续打印了几千条这条信息,页面逐渐卡死 client.ts:450 [vite] hot updated: /__uno.css 找出的原因是:依赖出问题了,重新安装unocss, 执行命令 npm i unocss 后修复。 但奇怪的是,删除node_modules重新全部安装…

一个简约的uniapp登录界面,基于uniapp+vue3+uview-plus

uniapp-vue3-template 一个简约的uniapp登录界面,基于uniappvue3uview-plus 页面主要包括:用户登录,手机验证码登录,用户注册,重置密码等页面 登录进去后为空白模板 源码在文末 界面 源码 uniapp登录界面源码

CyberDAO·S级市场旅游研讨会:川西之行圆满落幕

穿越人海 走进川西 在这个特别的秋天,CyberDAO组织了一场集结S级精英的“川西之旅”。此次研讨会不仅是DAO成员的一次盛大聚会,更是一场集会议、团队凝聚力提升和文化生活体验为一体的全方位旅程。2024年9月7日-10日,这支团队横跨山川湖海&a…

AttackGen - AI 网络安全事件响应测试工具,附下载链接

为了提高我们团队在安全活动中的响应效率,我关注到了一款叫 AttackGen 的工具,我们需要的是一个既能快速生成场景又能准确反映现实威胁的工具。 在红蓝对抗中,我们经常要模拟各种攻击场景,以测试我们的防御水平。这不仅仅是为了“…

【 C++ 】模板初阶

目录 ​编辑 一、泛型编程 二、函数模板 1.概念 2.格式 3.原理 4.匹配原则 三、类模板 1.定义格式 2.类模板的实例化 一、泛型编程 泛型编程是一种编程范式,它允许在编写代码时使用一种通用的数据类型或算法,以便在不同的数据类型上进行操作&…

如何将QAD系统EDI模块无缝迁移到知行之桥?

什么是QAD系统? QAD(Quality, Applications, Development)系统,是专为制造业设计的一款ERP软件,主要包含供应链管理、生产管理、财务和客户管理等业务功能,这家公司1979年成立于美国,目前在汽车…

STM32高级定时器实现:两路互补PWM输出,精准死区时间控制

目录 1. 实验目的: 2. 理论知识储备 2.1什么是互补输出? 2.2什么是死区控制,有什么用? 2.3参考手册的介绍 2.4了解死区寄存器(TIMx_BDTR) 3. 软件实现 3.1GPIO配置: 3.2TIM1初始化: 3.3主函数(main) 4. 实验…

NASA数据集:ASTER L2 地表辐射率 - VNIR 和串扰校正 SWIR V003

目录 简介 摘要 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ASTER L2 Surface Radiance - VNIR and Crosstalk Corrected SWIR V003 简介 ASTER 地表辐射度可见近红外和串扰校正 SWIR (AST_09XT) 是一个多文件产品 (https://lpdaac.usgs.gov/documents/996/A…

第二证券:这一板块大幅吸金!

9月10日,华为、苹果两大手机品牌的新机型一起发布,A股通讯设备板块获资金大幅流入。 在9月10日的新品发布会上,苹果推出了最新的iPhone 16系列,而华为则发布了新品Mate XT特殊大师。两大科技巨子几乎一起发布新品,灵敏…

基于Linux和C++实现的RabbitMQ风格消息队列:设计与实现

文章目录 0. 前言1. 需求分析① 核心部分② 核心API③ 交换机类型④ 持久化⑤ 网络通信⑥ 消息应答 2. 模块划分Ⅰ 服务端模块① 持久化数据管理中心模块② 虚拟机管理模块③ 交换机路由模块④ 消费者管理模块⑤ 信道管理模块⑥ 连接管理模块⑦ Broker Server模块 Ⅱ 客户端模块…

Android 生成so库 并调用

第一步:创建so库 第二步:看一下Native的项目结构 自动生成引用文件build.gradle(app) externalNativeBuild {cmake {path file(src/main/cpp/CMakeLists.txt)version 3.22.1}} //每个版本的开发工具不一样 我这个是自动生成的so库…

揭秘消防电动开窗机:一键开启生命通道

揭秘消防电动开窗机:一键开启生命通道 在城市的钢铁森林中,高楼大厦如雨后春笋般涌现,为现代生活带来了前所未有的便利与繁华。然而,当火灾等突发事件来临时,这些高耸的建筑也成了逃生与救援的巨大挑战。在这关键时刻&…