第七章 详细设计

news2024/10/7 19:21:48

在这里插入图片描述
结构化程序设计的基本结构包括 顺序结构、选择结构、循环结构 三种。

详细设计层

详细设计概览

详细设计的任务:定义每一模块
三种控制结构:顺序、选择、循环

伪码

伪码是一种混合语言。外 部采用形式语言定义控制 结构和数据结构,内部使 用自然语言。

顺序
begin s1;s2; ….sn end;
选择
if 条件表达式 then  s1
else       s2;
循环
while 条件表达式 do s;

优点:

PDL不仅可以作为设计工具,而且可作为注释工具,直接插在源程序中间,以保持文档和程序的一致性,提高了文档的质量.

缺点

  1. 不如图形工具那样形象直观.
  2. 当描述复杂的条件组合与动作间的对应关系时,不如 判定表和判定树那样清晰简单加粗样式.

程序流程图

在这里插入图片描述

优点

对控制流程的描绘很直观,便于初学者掌握.

缺点

1.不是一种逐步求精的工具,程序员过早地考虑程序的控制流程,而不是全局结构.
2. 所表达的控制流,可以不受约束随意转移
3. 不易表示数据结构.

PAD图

在这里插入图片描述

优点:

  1. 支持自顶向下、逐步求精的结构化详细设计,可使 用 "def"符号逐步增加细节.
  2. PAD 图最左边的竖线是程序的主线,随着程序层次的增加,逐步向右延伸,每增加一个层次,图形向右扩展一条竖线,从而使PAD图所表现的处理逻辑易读、易懂和易记。

N-S图

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

优点

支持自顶向下逐步求精的结构化详细设计,并且严格限制了控制从一个处理到另一个处理的转移.

判定表

当算法中包含多重嵌套的条件选择时, 用程序流程图、盒图、PAD图、PDL 都不易清楚描述, 这时可以选择判断表来表达复杂的条件组合与应做的动作之间的对应关系.
在这里插入图片描述
判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系
判定表的四个部分:
·左上部列出所有条件
·左下部是所有可能做的动作
·右上部表示各种条件组合
·右下部是和每种条件组合相对应的动作

判定表的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。

判定树

在这里插入图片描述

优点

形式简单,不需任何说明,易看出含义,易于掌握和使用

缺点

· 简洁性不如判定表,
·相同的数据元素往往要重复写多遍,而且越接近树的叶端重复次数越多。

例题

在这里插入图片描述

软件设计规约(软件设计说明书)

概念和组成

什么是软件设计规约?

软件设计规约对软件的组织或其组成部分的内部结构的描述,满足系统需求规约所指定的全部功能及性能要求

软件设计规约的组成

软件设计规约通常有概要设计规约详细设计规约,分别为相应设计过程的输出文档。

概要设计规约

概要设计规约指明软件的组织结构

(1)系统环境
硬件、软件接口与人机界面
外部定义的数据库
与设计有关的限定条件
(2)设计描述
数据流和主要数据结构
软件模块的结构
模块之间的接口
(3)对每个模块的描述
处理过程外部行为
界面定义
数据结构
必要的注释
(4)文件结构和全局数据
文件的逻辑结构、记录描述以及访问方式
交叉引用信息

软件概要设计是面向软件开发者的文档,主要作为软件项目管理人员、系统分析人员与设计人员之间交流的媒体。

详细设计规约

详细设计规约是对软件各组成部分内部属性的描述,它是概要设计的细化。即在概要设计规约的基础上,增加:
① 各处理过程的算法
② 算法所涉及的全部数据结构的描述,特别地,对主要数据结构往往 包括与算法实现有关的描述

软件设计规约主要作为软件设计人员与程序员之间交流的媒体。

设计规约格式

  1. 引言
    1.1 编写目的
    1.2 背景说明
    1.3 术语定义
    1.4 参考资料
  2. 总体设计
    2.1 需求规定
    2.2 运行环境
    2.3 处理流程
    2.4 软件结构
  3. 总体设计
    2.1 需求规定
    2.2 运行环境
    2.3 处理流程
    2.4 软件结构
  4. 系统出错处理
    4.1 系统输出信息的格式和含义
    4.2 出错处理方法及补救措施
  5. 模块设计说明
    (1)模块的一般说明,包括名称、编号、设计者、所在文件、所在库、 调用本模块的模块名和本模块调用的其他模块名;
    (2)功能概述;
    (3)处理描述,使用伪码描述本模块的算法、计算公式及步骤;
    (4)引用格式;
    (5)返回值;
    (6)内部接口
    (7)外部接口,说明本软件同其他软件及硬件间的接口关系
    (8)用户接口,说明将向用户提供的命令和命令的语法结构,以及软件 的回答信息

模块说明表

在这里插入图片描述

在这里插入图片描述

软件设计评审

设计评审

设计评审就是对设计文档的评审。对设计 进行评审是为了尽早发现软件的欠缺,尽可能把这些缺欠 在进入下一阶段工作之前,予以纠正,从而避免后期付出 更多的代价。

设计评审方法

  1. 非正式评审
  2. 正式技术评审

软件设计评审的指南

  1. 概要设计评审和详细设计评审应该分开进行,不允许合并为一次复审
  2. 建立一个议事日程并遵循它
  3. 评审设计文档,不评审设计者
  4. 限制参与人数和坚持充分准备
  5. 为设计文档开发一个检查表,以帮助评审人员集中在重要问题上
  6. 为了提高评审的效率,所有评审的参加者应接受一定的正规的培训

评审检查表

概要设计评审检查表:

● 软件体系结构是否反映了软件需求?
● 达到高的模块化吗?模块功能独立吗?
● 模块与外部系统元素接口定义了吗?
● 数据结构与软件需求一致吗?
● 考虑了可维护性吗?
● 是否直接评价了质量因素?

详细设计评审检查表:

● 算法能完成所要求的功能吗?
● 算法逻辑正确吗?
● 接口与体系结构设计一致吗?
● 逻辑的复杂性合理吗?
● 是否规定了错误处理和反故障处理?
● 正确地定义了局部数据结构吗?
● 都使用了结构化变成构造吗?
● 设计的细节适用于实现语言吗?
● 用的是哪个操作系统或语言独立性质?
● 考虑到可维护性吗?

结构化方法总结

  1. 结构化方法的世界观:
    一切系统都是由信息流构成的每一个信息流都有自己的起点-数据源有驱动信息流动的加工所谓信息处理主要表现为信息的流动.

  2. 基于的基本原理/原则

  1. 自顶向下功能分解
  2. 数据抽象
  3. 功能/过程抽象
  4. 模块化
  1. 结构化方法是一种系统化的软件系统建模方法
    在这里插入图片描述

  2. 该方法的组成
    在这里插入图片描述

例题

在这里插入图片描述

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

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

相关文章

OpenGL光照之投光物

文章目录 平行光点光源衰减实现衰减 聚光手电筒平滑/软化边缘完整代码 我们目前使用的光照都来自于空间中的一个点。它能给我们不错的效果,但现实世界中,我们有很多种类的光照,每种的表现都不同。将光投射(Cast)到物体的光源叫做投光物(Light…

算法提高-图论- 最小生成树的扩展应用

最小生成树的扩展应用 最小生成树的扩展应用AcWing 1146. 新的开始AcWing 1145. 北极通讯网络AcWing 346. 走廊泼水节AcWing 1148. 秘密的牛奶运输 最小生成树的扩展应用 AcWing 1146. 新的开始 利用虚拟源点建图和原题的题意是等价的,因此我们使用虚拟源点建图套…

主从架构lua脚本-Redis(四)

上篇文章介绍了rdb、aof持久化。 持久化RDB/AOF-Redis(三)https://blog.csdn.net/ke1ying/article/details/131148269 redis数据备份策略 写job每小时copy一份到其他目录。目录里可以保留最近一个月数据。把目录日志保存到其他服务器,防止机…

服务器网站搭建(一)

文章目录 环境搭建域名购买和解析创建网站环境搭建 一台服务器,我买的腾讯云新加坡的。根据需求选择配置。 重置密码: 自己设置的密码要记住: 登录: 安装宝塔(centos系统),参考官网: https://www.bt

Python 接口测试框架

目录结构定义 首先来看一下项目整体的结构 框架结构 代码结构 Excel 文件结构 代码详细解析 1.工具包 tools 封装操作 excel 方法 excel_operation.py import xlrd from config.config import PROJECT_PATHclass OperationExcel:def __init__(self, file_nameNone, sheet_…

县村快递物流小程序 v1.2.63+前端(本站修复版)

🎈 限时活动领体验会员:可下载程序网创项目短视频素材 🎈 🎉 有需要的朋友记得关赞评,文章底部来交流!!! 🎉 ✨ 源码介绍 核心功能: 1、县分拣中心入库出库 2…

什么是Vue的脚手架(Vue CLI)?

什么是Vue的脚手架(Vue CLI)? Vue.js 是一款流行的 JavaScript 框架,用来构建现代的单页面应用程序(SPA)。Vue.js 的核心库提供了丰富的功能和 API,但是创建一个完整的应用程序需要更多的工具和…

浏览器插件 | Font Picker - 网页字体识别工具

目录 软件简介 Font Picker插件背景 Font Picker插件离线安装教程 Font Picker 小结 软件简介 Font Picker 插件是一款用于 Chrome 浏览器的字体选择器,这种网页字体识别工具看起来非常的干净,使用起来也十分的简单。本文提供Font Picker网页字体…

d3dcompiler_43.dll文件丢失怎么修复,最新修复方法分享

本教程操作系统:Windows系统、 d3dcompiler_43.dll是电脑文件中的dll文件(动态链接库文件)。如果计算机中丢失了某个dll文件,可能会导致某些软件和游戏等程序无法正常启动运行,并且导致电脑系统弹窗报错。 在我们打开…

【LeetCode】110. 平衡二叉树

110. 平衡二叉树(简单) 思路 对二叉树做先序遍历,从底至顶返回子树最大高度,若判定某子树不是平衡树则“剪枝”直接向上返回。 递归返回值: 当节点 root 左、右子树的高度差 > 1:返回 -1,代…

吴恩达471机器学习入门课程1第1周

文章目录 1加载数据集2计算COST(均值平方差,1/2m(y_pre - y))3计算梯度4画出成本曲线5梯度下降 import math, copy import numpy as np import matplotlib.pyplot as plt plt.style.use(./deeplearning.mplstyle) from lab_utils_uni import plt_house_x, plt_conto…

OpenMMLab-AI实战营第二期——4-2.MMDetection代码课

文章目录 1. MMDetection介绍(vs MMSegmentation,mmdetection3d)2. 代码2.1 使用pycocotools配合exif可视化图像2.2 mmdetection中config的继承2.3 mmdet的数据集可视化问题(VISUALIZERS)2.4 pin_memory参数设置2.5 ma…

康佳液晶电视(非智能)Mstar V56 芯片

    2023/6/11 下午8:10:01 康佳用的地面波数字电视解码芯片是?  2023/6/11 下午8:10:08 康佳电视使用的地面波数字电视解码芯片可能因不同的产品型号而有所不同。然而,根据…

【AI作画】使用DiffusionBee with stable-diffusion在mac M1平台玩AI作画

DiffusionBee是一个完全免费、离线的工具。它简洁易用,你只需输入一些标签或文本描述,它就能生成艺术图像。 DiffusionBee下载地址 运行DiffusionBee的硬性要求:MacOS系统版本必须在12.3及以上 DBe安装完成后,去C站挑选自己喜欢…

ur机器人在moveit中运行环境搭建(保姆级)

ur机器人在moveit中运行环境搭建 我的系统是ubuntu20.04 rosb版本: noetic 1.安装运动学插件 sudo apt-get install ros-noetic-trac-ik-kinematics-plugin 2.安装 eigenpy 需要单独编译,EigenPy是一个用于在Python中使用Eigen库的绑定库 git clone https://github.com/…

[MAUI]写一个跨平台富文本编辑器

文章目录 原理创建编辑器定义实现复合样式选择范围字号字体颜色与背景色字体下划线字体加粗与斜体 序列化和反序列化跨平台实现集成至编辑器 创建控件使用控件最终效果已知问题项目地址 富文本编辑器是一种所见即所得(what you see is what you get 简称 WYSIWYG)文本编辑器&am…

visual studio 2022,ADO.NET 实体数据模型添加 sqlite数据库对象

文章目录 前言前期环境博客github 文档解析文件安装说明文件下载省流版nuget环境配置成功标志sqlite连接测试 前言 我们知道ADO.NET 实体数据模型特别适合动态开发数据库。因为ADO.NET可以使用DB First 开发 我们在开发一个程序的时候,经常会动态更新数据库字段&a…

Python的基础语法知识

1、变量 变量是一个代号,它代表的是一个数据。 在Python中,定义一个变量的操作包含两个步骤: ①为变量起一个名字 ②为变量指定其所代表的数据 这两个步骤在同一行代码中完成。 1.1 变量的命名规则 变量名可以由任意数量的字母、数字、下划…

Unity 简易UI管理器

首先我们需要先定义这么一个UIManager类。 public class UIManager { } UI管理器嘛,顾名思义肯定是用来管理我们游戏中的UI的,而我们游戏当中的UI呢一般是以面板为单位来进行划分的。所以我们还需要一个UI面板类。然后通过我们的UI管理器来管理我们的U…

Linux——创建容器并将本地调试完全的前后端分离项目打包上传docker运行

前言 在上传之前需要有一个已经搭建好的前后端分离的项目,下面是后端的项目结构图和前端页面图 在服务器上利用准备好的docker镜像配置一个新的容器 创建容器 这里使用的docker镜像的OS是ubuntu20.04.需要自备。 注意好端口映射: 通常前端项目使用的端口号一般都…