第五章 结构化设计

这篇具有很好参考价值的文章主要介绍了第五章 结构化设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

结构化设计的概念

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步:第一级分解—系统模块结构图顶层和第一层的设计
第五章 结构化设计
④ 第4步:第二级分解— 自顶向下,逐步求精
第五章 结构化设计

事务设计的基本步骤

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

模块和模块化

常见的启发式规则

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

切记:高内聚低耦合

启发式规则

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

常见的启发式规则

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

输入部分的精化

第五章 结构化设计

输出部分的精化

第五章 结构化设计
第五章 结构化设计

变换部分的精化

第五章 结构化设计

接口设计

(1)模块或软件构件间的接口设计;
(2)软件与其他软硬件系统之间的接口设计;
(3)软件与人(用户)之间的交互设计。文章来源地址https://www.toymoban.com/news/detail-478787.html

到了这里,关于第五章 结构化设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 指令模板:技术文档设计与结构化内容架构 | AIGC实践

    【题外话】 在上一篇文章中,有朋友反馈说,【见睿思齐】的字号设置得太小了,读起来有点儿费劲。 首先,特别感谢这位热心读者,开诚布公地与我分享感受,提出宝贵意见,帮助我做得更好。 因此在这篇文章中,我尝试将字号调大1号。大家看看是否还有其他问题,欢迎

    2024年02月09日
    浏览(48)
  • Prompt进阶系列1:LangGPT(从编程语言反思LLM的结构化可复用提示设计框架)

    大语言模型 (Large Language Models, LLMs) 在不同领域都表现出了优异的性能。然而,对于非AI专家来说,制定高质量的提示来引导 LLMs 是目前AI应用领域的一项重要挑战。现有的提示工程研究已经提出了一些零散的优化原则,也有些研究设计了基于经验的提示优化器。然而,这些研

    2024年03月11日
    浏览(122)
  • 结构化数据、非结构化数据、半结构化数据

    结构化的数据一般是指可以使用关系型数据库表示和存储,可以用二维表来逻辑表达实现的数据。例如:需要多少个属性,每个属性什么类型,每个属性的取值范围等等,类似下图所示, 提前定义好了一个二维矩阵的元数据 ,包含有列名称、列的类型、列的约束等:   可见

    2024年02月09日
    浏览(67)
  • 【numpy基础】--结构化

    目前为止,介绍的 numpy 数组基本都是关于数值的,其实, numpy 本身就是一个用于数值计算的基础库。 不过,除了数值计算之外, numpy 也能够支持 结构化数组 。 numpy 的数组为了提高计算性能,要求数组的数据类型要一致。 但是现实情况下,我们经常遇到不是纯数值的数组

    2024年02月12日
    浏览(45)
  • elasticsearch结构化查询

    在上一篇中我们介绍了DSL相关的知识,接下来我们将会学习elasticsearch的结构化查询,同时也实践一下上一篇的DSL的查询用法 从《Elasticsearch权威指南》上摘取部分解释如下: 从上面的定义我们可以看出来结构化查询最重要的就是是否匹配么人并不是很关心相关性和分值计算。

    2024年02月01日
    浏览(49)
  • elasticsearch结构化查询(一)

    在上一篇中我们介绍了DSL相关的知识,接下来我们将会学习elasticsearch的结构化查询,同时也实践一下上一篇的DSL的查询用法 从《Elasticsearch权威指南》上摘取部分解释如下: 从上面的定义我们可以看出来结构化查询最重要的就是是否匹配么人并不是很关心相关性和分值计算。

    2024年02月05日
    浏览(63)
  • 结构化流的介绍

    目录 有界数据和无界数据 有界数据  无界数据  结构化流 基本介绍 入门案例 结构化流的编程模型 数据结构 数据源(Source) File Source Kafka Source(Spark 和 Kafka 整合) 整合Kafka准备工作 从kafka中读取数据 流式处理 批处理  数据写入Kafka中 流式处理 批处理 有界数据 数据有固定的开

    2024年01月15日
    浏览(63)
  • SQL:结构化查询语言

    创建一张表并插入数据: 以下常用函数以MySQL为例,其它数据库类似

    2024年02月06日
    浏览(50)
  • WPF 界面结构化处理

    WPF 框架是开源的,但是不能跨平台,可以使用MAUI,这个框架可以跨平台,WPF源码可以在github上下载,下载地址:https://gitbub.com/dotnet/wpf。 框架结构 如图 XAML:eXtensible Application Markup Language的英文缩写,相应的中文名称为:可扩展应用程序标记语言。 命名空间 默认 映射:x/

    2024年02月13日
    浏览(62)
  • Structured Concurrency:结构化并发

    https://ericniebler.com/2020/11/08/structured-concurrency/ 是什么:一种确保子操作在父操作之前完成的方式,类似函数在调用函数之前完成。 最典型的结构化并发:C++20的协程 意义:它通过使异步生存期与普通C++词法作用域相对应,为异步程序带来了现代C++风格,并且不需要引用计数(

    2024年02月05日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包