码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 第五章 结构化设计


    文章目录

    • 结构化设计的概念
      • 1. 设计的定义
      • 2. 整体框架
        • 体系结构设计(MSD)
        • 接口设计
        • 数据设计
      • 3. 对设计方法的需求
      • 4. 总体设计层概述
        • (1)在总体设计层
          • ① 引入了两个术语/符号
          • ② 引入了模块结构图 (MSD)
          • ③ 过程指导
          • 总体设计三个阶段
    • 初始模块结构图的设计
      • 1. 数据流图的分类
        • 变换型DFD
        • 事务型DFD
        • 事务型DFD和变换型DFD的区别
      • 变换设计的基本步骤
      • 事务设计的基本步骤
    • 模块和模块化
      • 常见的启发式规则
    • 切记:高内聚低耦合
    • 启发式规则
      • 常见的启发式规则
      • 输入部分的精化
      • 输出部分的精化
      • 变换部分的精化
    • 接口设计

    结构化设计的概念

    1. 设计的定义

    一种软件开发活动,定义实现需求规约所需的软件结构。
    结构化设计分为:
    (1)总体设计:确定系统的整体模块结构,即系统实现所需要的软件模块以及这些模块之间的调用关系。
    (2)详细设计:详细描述模块。

    2. 整体框架

    在这里插入图片描述

    体系结构设计(MSD)

    在这里插入图片描述

    接口设计

    在这里插入图片描述

    数据设计

    在这里插入图片描述

    3. 对设计方法的需求

    实现软件设计的目标对结构化设计方法的需求
    (1) 提供可体现**“原理/原则”的一组术语(符号),形 一个特定的抽象层,用于表达设计中所使用的部件。
    (2)依据术语所形成的“空间”, 给出
    表达软件模型工具**。
    (3)给出设计的过程指导。

    4. 总体设计层概述

    (1)在总体设计层

    ① 引入了两个术语/符号

    在这里插入图片描述

    ② 引入了模块结构图 (MSD)

    在这里插入图片描述

    ③ 过程指导

    将DFD转化为MSD
    第一步:如何将DFD转化为初始的MSD
    分类:变换型数据流图、事务型数据流图、变换设计、事务设计
    第二步:如何将初始的MSD 转化为最终可供详细设计使用的MSD

    总体设计三个阶段

    第一阶段:初始设计。在对给定的数据流图进行复审和精化的基础上,将其转化为初始的模块结构图。 根据穿越系 统边界的数据流初步确定系统与外部的接口。

    第二阶段:精化设计。依据模块"高内聚低耦合"的原则, 精化初始的模块结构图, 并设计其中的全局数据结构和每一模块的接口。

    第三阶段:设计复审阶段,对前两个阶段得到的高层软件 结构进行复审,必要时还可能需要对软件结构做一些精化 工作。

    初始模块结构图的设计

    1. 数据流图的分类

    变换型DFD

    具有较明显的输入部分和变换部分之间的界面、变换部分和输出部分之间界面的数据流图。
    在这里插入图片描述
    在这里插入图片描述

    事务型DFD

    数据到达一个加工,该加工根据输入数据的值,在其后的若干动作序列(称为一个事务)中选出一个来执行,这类数据流 图称为事务型数据流图。
    在这里插入图片描述
    1)接受输入数据
    2)分析并确定对应的事务
    3)选取与该事务对应的一条活动路径

    事务型DFD和变换型DFD的区别

    1. 原则上所有DFD都可以看成是变换型DFD
    2. 一般而言,接受1个输入数据,分成多条路径

    变换设计的基本步骤

    ①第1步:设计准备—复审并精化系统模型
    ②第2步:确定输入、变换、输出这三部分之间的边界
    在这里插入图片描述

    ③第3步:第一级分解—系统模块结构图顶层和第一层的设计
    S
    ④ 第4步:第二级分解— 自顶向下,逐步求精
    在这里插入图片描述

    事务设计的基本步骤

    ① 第1步:设计准备— 复审并精化系统模型
    ②第2步:确定事务处理中心
    ③第3步:第一级分解—系统模块结构图顶层和第一层的设计
    在这里插入图片描述
    ④ 第4步:第二级分解一自顶向下,逐步求精
    在这里插入图片描述

    模块和模块化

    常见的启发式规则

    模块:执行一个特殊任务的一组例程和数据结构
    接口:给出可由其他模块和例程访问的对象
    实现:接口的实现(模块功能的执行机制)
    模块化:把系统分解成若干模块的过程

    切记:高内聚低耦合

    启发式规则

    从长期的软件开发实践中,总结出来的规则。

    常见的启发式规则

    改进软件结构,提高模块独立性;
    模块规模适中-每页60行语句;
    深度、宽度、扇入和扇出适中;
    模块的作用域力争在控制域之内;
    降低模块接口的复杂性;
    模块功能应该可以预测。

    输入部分的精化

    在这里插入图片描述

    输出部分的精化

    在这里插入图片描述
    在这里插入图片描述

    变换部分的精化

    在这里插入图片描述

    接口设计

    (1)模块或软件构件间的接口设计;
    (2)软件与其他软硬件系统之间的接口设计;
    (3)软件与人(用户)之间的交互设计。

  • 相关阅读:
    NFT游戏开发 链游开发 区块链游戏开发
    游戏中的语音聊天方案
    企业为什么需要通过低代码平台实现知识文档管理系统
    视频增强修复工具Topaz Video AI mac中文版安装教程
    OpenStack-train版安装之环境准备
    【开学季征文】即将入学,谈谈我对计算机专业的认识
    2-3.spring源码--BeanFactoryPostProcessor
    条件变量解决生产者消费者问题
    C++官网 Tutorials C++ Language Basics of C++:Variables and types
    从零开始 Spring Boot 17:MyBatis Plus 续
  • 原文地址:https://blog.csdn.net/weixin_62190821/article/details/131144631
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号