软件工程 第五章 详细设计

2023-11-13

1 详细设计的内容是什么

内容
(1)确定每个模块的算法。
(2)确定每一个模块的数据组织。
(3)为每个模块设计一组测试用例。
(4)编写详细设计说明书。

原则
(1)模块的逻辑描述正确可靠、清晰易读。
(2)采用结构化程序设计方法,改善控制结构,降低程序复杂度,提高程序的可读性、可测试性和可维护性。

结构程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。

2 详细设计的工具有哪些。都有哪些优缺点

工具:程序流程图、N-S图、PAD图、PDL语言

  • 程序流程图

    • 程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具
    • 优点:独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握
    • 缺点
      1.使程序员容易过早地考虑程序的具体控制流程,而忽略了程序的全局结构
      2.程序流程图中用箭头代表控制流,这样使得程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制
      3.在表示数据结构方面存在不足
    • 流程图的五种基本控制结构:
      流程图的五种基本控制结构1
      流程图的五种基本控制结构2
  • 盒图(N-S图)
    盒图结构表示

    • 优点
      1.形象直观,功能域明确,具有良好的可见度
      2.很容易确定局部和全局数据的作用域
      3.很容易表示嵌套关系及模块的层次关系
      4.它的控制转移不能任意规定,必须遵守结构化程序设计的要求

    • 缺点
      1.复杂度接近代码本身,修改需要重画整个图,如果是手工作图,就会不容易修改。因此建议用计算机软件作图。
      2.控制关系和循环次数比较隐含

  • pad图
    pad图

    • PAD是用结构化程序设计思想表现程序逻辑结构的图形工具。
    • PAD允许使用递归。
    • 优点
      1.PAD图描绘的程序清晰度和结构化程度高
      2.用PAD图表现程序逻辑,易读、易懂、易记
      3.利用PAD图设计出的程序必定是结构化的程序
      4.容易将PAD图转化成高级语言源程序
      5.PAD图支持自顶向下逐步求精的方法(利用扩充结构)
      6.既可以用于表示程序逻辑,也可以用于描绘数据结构
    • 缺点
      不如流程图易于执行(找了好久只找到一个缺点)
  • 伪代码PDL(过程设计语言)

    • PDL是所有非正文形式的过程设计工具的统称,具有“非纯粹”的编程语言的特点
    • PDL也称伪码
    • PDL具有严格的关键字外部语法,用于定义控制结构和数据结构
    • PDL表示实际操作和条件的内部语法通常是灵活自由的,以便可以适应各种工程项目的需要
    • 是一种“混杂”语言,它使用一种语言(某种自然语言)的词汇,同时,却使用另一种语言(某种结构化的程序设计语言)的语法。
    • 优点
      1.可以使评审工作变得更加容易
      2.可以帮助实现逐步细化的思想
      3.使变动工作变得很容易
      4.减少了注释工作量
      5.比其他形式的设计文件更容易维护
    • 缺点
      不如图形工具形象直观

3 什么是环形复杂度,与算法复杂度有何异同?

定义:环形复杂度是一种为程序逻辑复杂性提供定量测度的软件度量。

算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。

异同:
异:算法复杂度侧重程序的,用于在时间和空间的维度上评价算法或程序的效率。环形复杂度侧重程序的逻辑复杂性。
同:环形复杂度与算法复杂度都用来评价程序的复杂性,定量度量,只是侧重不同维度。

4 如何计算程序的环形复杂度。

画出程序图对应的控制流图

  • V ( G ) = E − N + 2 V(G) = E-N+2 V(G)=EN+2
  • V ( G ) = P + 1 V(G) = P+1 V(G)=P+1
  • V ( G ) = 区域数 V(G) = 区域数 V(G)=区域数

E E E为流图的边数, N N N是流图中的节点数, P P P为判定节点数
V ( G ) < = 10 V(G)<= 10 V(G)<=10的模块规模是比较好的

5 环路复杂度对编程有什么指导意义。

程序的环路复杂度则取决于程序控制流的复杂度,也就是取决于程序结构的复杂程度。当程序内分支或循环个数增加时,则相应地环域复杂度也随之增加。因此,它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。

6 补充

程序复杂程度的定量度量

一 McCabe方法(环形复杂度)
   见上
二 Halstead方法
Halstead方法是根据程序中运算符和操作数的总数来度量程序的复杂程度
    N = N 1 + N 2 N=N1+N2 N=N1+N2
    N 1 :运算符出现的总次数 N1:运算符出现的总次数 N1:运算符出现的总次数
    N 2 :操作数出现的总次数 N2:操作数出现的总次数 N2:操作数出现的总次数
   预测程序长度的公式为:
    H = n 1 l o g 2 n 1 + n 2 l o g 2 n 2 H=n1log2n1+n2log2n2 H=n1log2n1+n2log2n2

什么是SD

结构化设计(SD)<–>面向对象设计(OOD)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件工程 第五章 详细设计 的相关文章

  • 正确的认识乱码与编码

    文章目录 编码的本质 乱码的几个例子及思考解决方案 浏览器输入到后端乱码 后端返回浏览器乱码 java 枚举类乱码 数据库存储乱码 Linux系统显示乱码 总结 编码的本质 编码将内存字节作用于磁盘文件或者网络文件的过程 是将磁盘文件 网络
  • 软件工程-第七章-实现

    软件工程 第七章 实现 7 实现 7 2 软件测试基础 7 2 3 测试方法 7 2 4 测试步骤 7 3 单元测试 7 3 2 代码审查 7 4 集成测试 7 4 1 自顶向下集成 7 4 2 自底向上集成 7 5 确认测试 7 5 3
  • 目前支持CUDA的nVIDIA的显卡型号 驱动及其 修改过后的 inf文件

    下载169 21 forceware winxp 32bit english whql exe NVIDIA Driver for Microsoft Windows XP with CUDA Support 169 21 我们在运行它的时
  • 计网学习记录,burp抓包等学习记录

    攻防实验室 网安学习记录 1 学习到html的基础架构及其简单用法 1 html基础架构 2 table 定义表格 2 学会用phpstudy创建网站 3 用wordpress对phpstudy创建的网站进行了编辑修改 4 仅通过phpst
  • 软件设计师--结构化开发

    结构化开发 耦合 真题 内聚 真题 设计原则 真题 系统文档 真题 数据流图 数据流图基本数据元素 外部实体 数据存储 加工 数据流 父图子图平衡 加工既要有输入数据流也要有输出数据流 数据守恒 真题 数据字典 真题 杂题精选 耦合 真题
  • 软件设计(十四)-UML建模(上)

    软件设计 十三 原码 反码 补码 移码https blog csdn net ke1ying article details 129115844 spm 1001 2014 3001 5501 UML建模包含 用例图 类图与对象图 顺序图
  • JAVAWEB编程题

    1 登陆验证代码
  • 小米盒子打开adb调试模式

    1 先打开开发者模式 进入小米电视设置 gt 进入关于 gt 找到产品型号 gt 在产品型号上面连续多次按ok 确认 键 gt 然后就会提示 您已处于开发者模式 2 开启adb 经过第一步开启开发者模式之后 现在可以返回到设置页面 进入 账
  • 软件项目管理

    目录 前言 项目管理概述 项目与软件项目 项目管理与软件项目管理 项目管理知识体系 过程管理与软件项目管理的关系 软件项目管理过程 项目初始 项目确立 项目立项 项目招投标 项目授权 敏捷开发总结 scrum模型 迭代式增量软件开发过程 术
  • 软件工程期末试题及答案(史上最全)

    软件工程期末试题及答案 文章目录 软件工程期末试题及答案 一 填空题 二 选择题 三 判断题 四 简答题 五 分析题 六 画图题 一 填空题 在信息处理和计算机领域内 一般认为软件是 文库 程序 文档 和 数据 数据流图的基本组成部分有 数
  • 程序员要不断学习

    2016 10 20 计算机技术的发展速度还是很快的 当个人电脑赶上10年前的超算时 我们不得不感叹硬件的发展编程开发带来了很大的影响 对世界带来了很大的影响 知识和工具的更新速度还是比较快的 这就要求程序员始终需要学习 我在知乎上看到一个
  • Go 语言输出文本函数详解

    Go语言拥有三个用于输出文本的函数 Print Println Printf Print 函数以其默认格式打印其参数 示例 打印 i 和 j 的值 package main import fmt func main var i j stri
  • 【车载开发系列】FlashMemory基本概念

    车载开发系列 FlashMemory基本概念 车载开发系列 FlashMemory基本概念 车载开发系列 FlashMemory基本概念 一 FlashMemory的特征 二 常见的FlashMemory 1 NOR FlashMemory
  • 软件开发流程分析

    软件开发流程分析 相关概念 1 原型设计 2 产品设计 3 交互设计 4 代码实现 详细步骤 相关概念 前端 自研API 调用第三放API 后端 自研API 第三方API 数据库 Mysql 数据采集 数据迁移 服务器 JAVA Nginx
  • DEVOPS 持续部署的例子:IMVU

    持续部署的例子 IMVU IMVU是一家社交娱乐公司 它的产品允许用户以一种3D阿凡达式的体验互相连接起来 本节内容改编自一位IMVU工程师所写的博客 IMVU采用了持续集成 开发人员尽早提交并经常提交 每次提交都触发测试套件的执行 IMV
  • thinkphp+vue教学互动课程资源网站

    软件工程课程建设通篇文章的撰写基础是实际的应用需要 然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程 以软件工程课程建设的实际应用需要出发 架构系统来改善现软件工程课程建设工作流程繁琐等问题 不仅如此以操作者的角度来
  • thinkphp+vue教学互动课程资源网站

    软件工程课程建设通篇文章的撰写基础是实际的应用需要 然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程 以软件工程课程建设的实际应用需要出发 架构系统来改善现软件工程课程建设工作流程繁琐等问题 不仅如此以操作者的角度来
  • C++ 中 const 和 constexpr 关键字解析:常量、函数和指针

    很多 C 的初学者看到 const 这个关键字的第一反应都是一头雾水 主要是因为 const 可 以出现在很多的位置 以及后面加入的 constexpr 更是常常感到困惑 今天就为大家一一解释出现它们的含义和以及作用 const 关键字 c
  • C# 介绍、应用领域、入门、语法、输出和注释详解

    什么是 C C 发音为 C Sharp 是一种由 Microsoft 创建的面向对象的编程语言 运行在 NET Framework 上 源于 C 家族 与流行的语言如 C 和 Java 相近 首个版本发布于 2002 年 而最新版本 C 1
  • Go 语言运算符详解:加法、算术、赋值、比较、逻辑和位运算符全面解析

    运算符用于对变量和值执行操作 加号运算符 将两个值相加 如下面的示例所示 示例代码 package main import fmt func main var a 15 25 fmt Println a 尽管加号运算符通常用于将两个值相加

随机推荐

  • windows上 nginx 配置好了access.log路径后,但是访问日志并没有记录

    windows 上配置 nginx access log 日志 1 问题 2 解决方案 2 1 为当前文件夹配置权限 3 结果 1 问题 之前 本机上配置了 nginx access log 日志 但是 并没有 记录 当时因为太忙了 就没有
  • 【Mybatis源码分析】动态标签的底层原理,DynamicSqlSource源码分析

    DynamicSqlSource 源码分析 一 DynamicSqlSource 源码分析 DynamicContext源码分析 SqlNode源码分析 动态SQL标签 Mybatis 动态SQL标签 举例 调试 SqlNode源码分析 M
  • Ubuntu/Linux下安装DosBox配置汇编环境

    Ubuntu Linux下安装DosBox配置汇编环境 微信关注公众号 夜寒信息 致力于为每一位用户免费提供更优质技术帮助与资源供给 感谢支持 一 首先我们去DosBox官网下载DosBox 0 73 或者直接启用终端命令行输入以下代码 s
  • leveldb深度剖析-查询流程

    至此 将插入流程以及压缩流程都已介绍完毕了 本篇主要介绍查询流程 一 查询流程 首先来看一下查询接口具体实现内容 查询 param options 查询选项 param key 查询key param value 输出参数 如果找到则赋值给
  • TypeScript 基础教程,适合新手

    TypeScript 基本用法 本章介绍 TypeScript 的一些最基本的语法和用法 最全教程 https tut qzxdp cn typescript 在线工具 https tools qzxdp cn 类型声明 TypeScrip
  • 本地部署IIS服务及MQTT服务

    本地部署IIS服务及MQTT服务 概述 配置IIS 安装windows功能 配置应用程序 打开IIS服务 安装aspnetcore runtime 安装dotnet hosting 检查 添加网站 配置应用程序 配置IIS通过外部IP访问
  • YOLOv5 or YOLOv8 快速划分训练集 验证集 测试集

    该脚本实现了将原始数据集自动划分为yolo训练数据集排列形式 import os import random import shutil 该脚本实现了将原始数据集自动划分为yolo训练数据集排列形式 目录排序如下 old root data
  • 【mind+】机器人对话互动游戏编程

    目录 前言 不要多言 请看下面的代码 一 代码 1 机器人回答问题 2 机器人互动和状态改变 前言 应用mind 软件写一个机器人互动的程序 程序要求 1 提出问题 机器人做出相对应的回答 2 点击机器人 它做出随机语录回复 提前准备 添加
  • 【SSL_1232】雷达覆盖

    思路 以一个点作为平角 计算几何统计 c o d e code code include
  • 在虚拟机中win10启用远程桌面的方法

    1 打开虚拟机 选择此电脑 右键属性 2 选择远程桌面 开启服务 3 打开cmd 输入ipconfig 查看IP 4 在宿主机上按住win r快捷键 输入matsc 打开远程桌面连接 输入虚拟机的ip 5 输入虚拟机的用户名和密码 6 连接
  • 虚拟机网络桥接,详细操作步骤,本地连接虚拟机

    虚拟机网络桥接 文章目录 虚拟机网络桥接 一 首先查看主机连接网络的网关 二 打开虚拟机的worksation服务 三 修改主机的VMnet8的IPV4属性 四 修改虚拟机的workstation的虚拟网络 五 修改VMnet8的IP 网关
  • ATK&ck靶场系列二

    信息收集 nmap sP 192 168 111 0 24 nmap sS T4 A v p 192 168 111 80 nmap sS T4 A v p 192 168 111 80 Starting Nmap 7 93 https n
  • 录音时分离左右声道的数据

    平台录音默认为8通道数据 保存到文件中取左右声道数据 当mic 1时 取左声道数据 当mic 2时 取右声道数据 private byte splitStereoPcm byte data int monoLength data lengt
  • Spring Bean基础

    Spring Bean基础 1 1 定义Spring Bean 1 1 1 什么是BeanDefinition 1 2 通过BeanDefinition构建Bean 1 3 注册Bean BeanDefinition 注册 1 4 实例化S
  • SQL中按分隔符拆分字符串

    一 Oracle数据库按分隔符拆分字符串 1 应用函数 REGEXP SUBSTR 2 语法 REGEXP SUBSTR String pattern position occurrence modifier 3 参数解释 srcstr 需
  • 【计算机操作系统】第三章 处理机调度与死锁

    在多道程序环境下 主存中有着多个进程 其数目往往多于处理机数目 这就要求系统能按某种算法 动态地把处理机分配给就绪队列中的一个进程 使之执行 分配处理机的任务是由处理机调度程序完成的 由于处理机是最重要的计算机资源 提高处理机的利 用率及改
  • spring boot引入mybatis plus,使用通用mapper、service

    一 mybatis plus官方文档 mybatis plus官方文档 二 spring boot 引入mybatis plus 在指定项目的pom xml文件下添加以下代码
  • JMeter 5.3/MeterSphere v1.1.2接口测试工具安装

    最近工作需要对web服务接口进行压力测试 由于完全没有测试相关经验 就只能走一步看一步了 由于主要是测试接口的并发性能 因而需要一个能并发产生请求的工具 最开始想到用postman 毕竟对这玩意儿比较了解 但是结果是 这个东西虽然能够在短时
  • 从零开始学Python(4) -----用Jupyter绘制各种图形

    在上一次学习中 我们介绍了如何加载CSV文件 并在Jupyter笔记本上绘制条形图 这次 我们将介绍如何从CSV文件中提取任意数据并绘制各种图形 让我们看看股票是涨还是跌 之前 我们已经体验了用Pandas库来读取读取CSV数据并绘制图表
  • 软件工程 第五章 详细设计

    1 详细设计的内容是什么 内容 1 确定每个模块的算法 2 确定每一个模块的数据组织 3 为每个模块设计一组测试用例 4 编写详细设计说明书 原则 1 模块的逻辑描述正确可靠 清晰易读 2 采用结构化程序设计方法 改善控制结构 降低程序复杂